修改DNS设置影响SSH登录速度 解决办法

今天遇到一个比较怪异的问题,修改一linux系统dns设置后发现,这台机器ssh登录其他机器超级慢,改回原来设置的dns后就马上好了,修改dns设置影响到了ssh登录速度……

具体情况是这样的:

生产环境内网有台dns服务器192.168.1.10,通过防火墙nat设置对外提供我们的域名(这里假设为aa.cn吧)解析服务,防火墙也允许这台dns服务器向公网请求其他域名dns解析,内网服务器dns设置也都指向192.168.1.10,应用什么的都正常,现在应用有需求,需要解析所有服务器主机名,服务器主机名都是xxx.aa.cn形式的,如果直接在192.168.1.10这个dns服务器上加解析,那加上后公网也能解析出,内网服务器无疑将全部暴露出去,并且内网结构,内网IP将全部暴露,很不安全,那怎么办呢?想到一个办法,那就是在内网再搭建个dns服务器192.168.1.2,建立个和192.168.1.10一样的aa.cn区域文件,除解析192.168.1.10有的域名外再加上所有内网服务器主机名解析。这个新dns服务器搭建好后,dig @192.168.1.2 xxx.aa.cn 解析什么的都没有问题,于是就改内网dns设置吧,就在192.168.1.2先改试下, vi /etc/resolv.conf  将nameserver 后面的ip改为192.168.1.2然后保存,改完后用192.168.1.2  ssh 到其他内网机器,发现极其缓慢,在出现提示输入密码前很卡,很影响工作啊,这是怎么回事呢?刚才就改了个dns设置呀,那我再改回来看一下吧,dns再改回192.168.1.10后再ssh,恢复正常,dns设置影响到了ssh登录速度,然后开始网上查找答案……

有人说“当SSH client 连接到server后,server会向/etc/resolv.conf中的nameserver请求client端IP的逆向解析,而client端IP(或者是client端IP对应的域名?)在nameserver中不存在,所以会很慢,解决方法:vi /etc/ssh/sshd_config 里面添加或修改

UseDNS no”,我这种情况好像不符合这个,我这是client端的问题,我再看了下server端和客户端/etc/ssh/sshd_config 配置文件,我这默认都是设置的UseDNS no,看来不是这个问题了

通过ssh -v 调试发现卡在GSS认证这儿了

debug1: Next authentication method: gssapi-with-mic

debug1: Unspecified GSS failure.  Minor code may provide more information

Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information

Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information

Unknown code krb5 195

于是根据网上说的把server端/etc/ssh/sshd_config 配置文件GSS认证关掉即把GSSAPIAuthentication参数改为no,重启ssh,再在192.168.1.2上ssh登录,发现好了,问题算是解决了,但为什么需要改才行呢?我要一台台都这样改一下吗?有更好的解决方法吗?192.168.1.2和192.168.1.10dns设置一样的呀?没道理改成192.168.1.10就很快,改成192.168.1.2就很慢啊,于是乎仔细比较192.168.1.2与192.168.1.10dns设置情况,发现这两个机器在防火墙上的设置不一样!

192.168.1.10在防火墙上设置了反向nat转换,并允许公网请求dns解析,192.168.1.2没设置,192.168.1.2肯定不能在防火墙上设置反向nat转换,那设置下允许它向公网请求dns解析试下吧,设置好后再测试发现ssh登录不慢了,貌似看来ssh登录缓慢与客户端设置的dns能否向外网请求dns还有关系!!我了个去!这个之间有什么关系?等有时间再探究吧,最终原因虽然没找到,但找到了解决方法,坑爹的dns,你竟然对ssh影响如此之大!!!

相关推荐