問題現(xiàn)象
CentOS實(shí)例出現(xiàn)DNS解析超時(shí)的情況。
原因分析
因CentOS 6和CentOS 7的DNS解析機(jī)制變動(dòng)所致,2017年2月22日以前創(chuàng)建的ECS實(shí)例或使用2017年2月22日前的自定義鏡像創(chuàng)建的CentOS 6和CentOS7實(shí)例可能出現(xiàn)DNS解析超時(shí)的情況。
解決方法
下載腳本fix_dns.sh。
將下載的腳本放到/tmp目錄下。
執(zhí)行命令bash/tmp/fix_dns.sh運(yùn)行腳本。
腳本作用
判斷DNS解析文件/etc/resolv.conf中是否有options>single-request-reopen配置。CentOS 6和CentOS 7的DNS解析機(jī)制中,發(fā)送IPV4 DNS和IPV6 DNS請(qǐng)求使用了相同的網(wǎng)絡(luò)五元組,此時(shí)應(yīng)開啟single-request-reopen配置,一旦出現(xiàn)同一socket發(fā)送的兩次請(qǐng)求處理,解析端發(fā)送第一次請(qǐng)求后會(huì)關(guān)閉socket,并在發(fā)送第二次請(qǐng)求前打開新的socket。配置成功后不需要重啟實(shí)例即可生效。
腳本邏輯
判斷實(shí)例系統(tǒng)是否為CentOS系統(tǒng):
實(shí)例為非CentOS系統(tǒng),如Ubuntu和Debian,腳本停止工作。
實(shí)例為CentOS系統(tǒng),繼續(xù)工作。
查詢解析文件/etc/resolv.conf中options配置情況。
不存在single-request-reopen,在options配置中追加該項(xiàng)。
存在single-request-reopen,則腳本停止工作,不更改DNS nameserver的配置。
如果不存在options配置,默認(rèn)使用阿里云options配置:options timeout:2 attempts:3 rotate single-request-reopen。