【問題描述】centos
項目中遇到一個問題,腳本中有大量的wget命令,DNS配置正常,經過nslookup解析域名速度也很快,可是腳本執行確超時。測試發現每次wget時都有5s的延時。服務器
【緣由分析】網絡
一、nslookup默認只解析A地址(也就是ipv4記錄),而wget或者curl同時解析A地址和AAAA地址。curl
二、centos6/7版本的DNS解析過程以下:測試
(圖片來源於網絡)url
1 主機從一個隨機的源端口,請求 DNS的A 記錄,
2 主機從同一個源端口,請求 DNS的AAAA 記錄,
3 主機接受dns服務器返回A記錄,
4 主機接受 dns服務器返回AAAA記錄,spa
三、上述三、4步的返回順序不必定。服務器和DNS服務器之間有防火牆的狀況下,上述第3步完成後,防火牆認爲會話已完成後面的會話被丟棄,5s後dns客戶端沒有收到結果會從新發起會話。blog
四、從抓包的內容能清楚的看到nslookup和wget的區別:
dns
nslookup抓包過程圖片
wget抓包過程
【解決方法】
一、須要用到的域名本地解析
二、在resolv.conf中加入options single-request-reopen配置