最近給公司一台伺服器做ftp服務,安裝的是centos下的vsftpd,各種配置後用戶端用filezilla登入centos系統賬戶,發現了一個很奇怪的問題,輸完賬号密碼登入後,在filezilla狀态清單上發現會停留在密碼驗證這欄内容,如下:
---------------
指令: PASS ******************
然後停留大概5秒左右才會正常登入到該賬戶FTP宿主目錄下
想了想,之前使用SSH服務遠端登入系統SHELL對系統賬戶密碼驗證時也出現過類似延遲,當時解決辦法是到/etc/ssh/sshd_config下,去掉該行注釋,并将yes改成no,如下:
----------------
UseDNS no
順着這個思路去網上找了關于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的時候,就會跳過域名解析正常驗證.
好記心不如爛筆頭,寫點個人心得僅供大家參考..呵呵
本文轉自 showerlee 51CTO部落格,原文連結:http://blog.51cto.com/showerlee/1172735,如需轉載請自行聯系原作者