在 Ubuntu 上 telnet 连接慢,通常不是 telnet 协议本身的问题,而是连接建立前后的系统行为导致的。下面按常见原因从高到低说明,并给出对应解决办法。
很多 telnet server(如 in.telnetd) 在连接时会尝试对客户端 IP 做 反向 DNS 解析(PTR)。
如果:
就会导致 telnet 登录前卡住几秒到几十秒。
telnet 192.168.1.10
# 连接成功,但“登录提示”很慢
如果是你自己的 telnet 服务:
# Ubuntu 使用 systemd + inetd/telnetd
编辑 /etc/xinetd.d/telnet(如果有):
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
server_args = -h
}
-h 表示 不显示主机名、不做反向解析
或 systemd 下:
systemctl edit telnet.socket
添加:
[Service]
ExecStart=
ExecStart=/usr/sbin/in.telnetd -h
telnet 192.168.1.10
# 而不是
telnet myserver.local
如果系统配置优先使用 DNS 而不是 files:
cat /etc/nsswitch.conf
典型问题行:
hosts: files dns
如果 DNS 慢,就会卡。
确保:
hosts: files dns
并且 /etc/hosts 中有对应 IP。
ufwiptablesfail2banTCP Wrappers (/etc/hosts.allow, /etc/hosts.deny)这些可能在连接时做检查或日志,导致延迟。
sudo ufw status
sudo iptables -L -n
telnet 客户端可能先尝试 IPv6,失败后再 IPv4,造成慢。
telnet -4 192.168.1.10
在 /etc/gai.conf 中优先 IPv4(取消注释):
precedence ::ffff:0:0/96 100
.bashrc 中有网络操作)top
uptime
⚠️ telnet 是明文协议,不安全
建议替代:
sshnc (netcat)socattelnet -4 IP
# 看是否快
服务端加 -h
# 看是否快
/etc/hosts 加 IP
# 看是否快
如果你愿意,可以告诉我:
我可以帮你精准定位。