Linux Couldn’t resolve host 解決辦法

SunnyD發表於2017-12-14

問題描述

所有域名無法正常解析。

  • 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 已經能正常解析

相關文章