最近给公司一台服务器做ftp服务,安装的是centos下的vsftpd,各种配置后客户端用filezilla登录centos系统账户,发现了一个很奇怪的问题,输完账号密码登录后,在filezilla状态列表上发现会停留在密码验证这栏内容,如下:
---------------
命令:PASS ******************
---------------
然后停留大概5秒左右才会正常登录到该账户FTP宿主目录下
想了想,之前使用SSH服务远程登录系统SHELL对系统账户密码验证时也出现过类似延迟,当时解决办法是到/etc/ssh/sshd_config下,去掉该行注释,并将yes改成no,如下:
----------------
UseDNS no
----------------
顺着这个思路去网上找了关于FTP登录延迟的资料
更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Servers/Ftp/
发现网站一致的解决办法是将 /etc/resolv.conf这个文件的DNS修改成一个真实可信的当地所在运营商的DNS地址,然后自己就打开本机系统的这个配置文件,发现地址没问题啊,是我们这边省电信的DNS解析地址.
随手打了个ifconfig
然后突然发现问题所在,我在给服务器设置的IP信息是出不去外网的内网地址.
立马 vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改成可路由出外网的内网地址,重新登录FTP,发现延迟问题解决.
顺着这个思路将IP信息改回不可路由出外网的地址后
vi /etc/resolv.conf
将里面的DNS信息清空,再尝试登录FTP,发现依旧0延迟.
OK,原来是DNS解析出现的问题.
这样其实就可以理解为,不管VSFTPD还是SSHD,在进行密码验证时,该服务都会先去寻找本机设置的DNS地址所在的服务器(没有设置则跳过),如果找不到,DNS会有一个自己的TTL,当TTL为0的时候,就会跳过域名解析正常验证.
好记心不如烂笔头,写点个人心得仅供大家参考..呵呵