配置DNS后,SSH登录变慢

文章讲述了SSH登录过程中因DNS请求顺序问题导致的20秒以上延迟,分析了DNS解析器的行为并给出了解决方案:禁用sshd_config中的UseDNS选项以减少DNS查询,重启SSH服务以应用更改。
摘要由CSDN通过智能技术生成

问题描述

最近使用ssh时出现登录非常缓慢的状态,登录一般需要花费20秒以上才能正常登陆,

Connecting to *****:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

等待十秒钟后,提示登录成功

Last login: Mon Jun  3 13:19:59 2013 from ****

DNS 请求交互过程如下:

在这里插入图片描述
如上图所示,客户端访问 DNS 服务器工作流程如下:

1)主机从一个随机的源端口,请求 DNS 的 A 记录;

2)主机从同一个源端口,请求 DNS 的 AAAA 记录;

3)主机接受 dns 服务器返回 A 记录;

4)主机接受 dns 服务器返回 AAAA 记录。

上面的 3、4 并没有严格的先后顺序,实际顺序受网络和服务器环境影响。

理论上这种工作机制,效率更高,端口复用度更高。DNS 解析器对于 ipv4 和 ipv6都使用同一个 socket 连接响应,在收到应答也会按照发送的顺序对应答进行匹配,结合抓包看,卡顿时是系统先收到了 AAAA 记录,然后才收到了 A 记录,由于和程序预期不一致,从安全等各方面考虑,此时 socket 将一直处于“等待”模式,等待配置的超时时间后继续下一轮请求探测,从而出现了之前的 5S 卡顿。

解决方案

会出现这种问题是因为ssh默认有一个配置项

UseDNS(文档中解释此配置项的意思为:UseDNS Specifies whether sshd should look up the remote host name and check that the resolved host name for the remote IP address maps back to the very same IP )address. The default is “yes”.

此时查看/etc/ssh/sshd_config
1、当此项配置不开启时默认值为UseDNS yes,这样会导致ssh在有连接过来的时候进行dns解析,所以会产生较长时间的停顿,所以要解决此问题可以将此配置项打开,然后值改为no
2、重启SSH服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酱江奖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值