問題描述
所有域名無法正常解析。
- ping www.baidu.com 等域名提示 Couldn’t resolve host 錯誤。
- curl www.baidu.com 等網址提示 Couldn’t resolve host ‘www.baidu.com’ 錯誤
嘗試解決
網上查資料,有說修改 /etc/resolv.conf
檔案,新增 nameserver 8.8.8.8
的解決方案,但嘗試後發現重啟網路卡後 /etc/resolv.conf
檔案會恢復到原來的狀態。
重新查詢資料發現:
原來在 CentOS 下面直接修改
/etc/resolv.conf
不行,因為該檔案呼叫了/etc/sysconfig/network-scripts/ifcfg-eth0
的配置預設,既然知道了這兩個檔案的工作原理,那麼我們必須要在/etc/sysconfig/ network-scripts/ifcfg-eth0
裡面最後加上 dns 地址讓resolv.conf
來呼叫。否則重啟後,因為 eth0 中沒有預設 dns 的相關資訊,就會使/etc/resolv.conf
恢復到原來的狀態,解析還是不成功。
此時, /etc/resolv.conf
檔案內容如下
# No nameservers found; try putting DNS servers into your
# ifcfg files in /etc/sysconfig/network-scripts like so:
#
# DNS1=xxx.xxx.xxx.xxx
# DNS2=xxx.xxx.xxx.xxx
# DOMAIN=lab.foo.com bar.foo.com
複製程式碼
其實,這裡的提示已經很清楚了。提示沒有找到域名伺服器,請在 /etc/sysconfig/network-scripts
裡面的配置檔案新增 DNS 伺服器。
解決方案
修改 /etc/sysconfig/network-scripts/ifcfg-eth0
檔案(這裡是第一塊網路卡 eth0)
原來的內容是:
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=xxx.xxx.xxx.xxx
NETMASK=255.255.224.0
GATEWAY=xxx.xxx.xxx.x
複製程式碼
在最後加上兩行
DNS1=8.8.8.8
DNS2=8.8.4.4
複製程式碼
改完後重啟網路卡
service network restart
複製程式碼
重啟後再檢視 /etc/resolv.conf
檔案是這樣的:
# Generated by NetworkManager
search webhostbox.net
nameserver 8.8.8.8
複製程式碼
再嘗試 ping www.baidu.com 已經能正常解析