在 Linux 下使用 telnet 连接慢,常见原因和排查思路如下:
telnet 在建立连接时,默认会尝试对客户端 IP 做反向 DNS 解析(PTR 记录)。
如果:
就会明显卡顿(通常 5~30 秒)。
time telnet ip地址 端口
如果直接连 IP 慢,但 ssh -o StrictHostKeyChecking=no 正常,多半是 DNS。
1. 服务端关闭反向解析(推荐)
# /etc/hosts
客户端IP 客户端主机名
2. telnet 服务端(通常是 inetd/xinetd)关闭日志解析
# xinetd 服务
service telnet
{
disable = no
log_on_success -= HOST
log_on_failure -= HOST
}
3. 临时测试(客户端)
telnet -N ip 端口
(-N 禁用反向 DNS,部分版本支持)
top
uptime
systemctl status xinetd
telnet ip 端口
# 一直卡住,多半是 DROP
ping -M do -s 1472 ip
telnet 可能先尝试 IPv6 再 IPv4。
telnet ipv4地址 端口
# /etc/gai.conf
precedence ::ffff:0:0/96 100
如果是登录后慢,不是连接慢:
pam_loginuid# /etc/nsswitch.conf
hosts: files dns
1. telnet IP 端口 # 是否慢
2. ssh IP # 是否慢
3. 看服务端 DNS 是否通
4. 关掉反向解析
5. 抓包
tcpdump -i any port 端口
如果你愿意,可以告诉我:
我可以直接给你对应配置文件。