1. 程式人生 > >couldn't resolve host api.weixin.qq.com

couldn't resolve host api.weixin.qq.com


從這個報錯,可以很明顯的發現是域名解析不了。於是做如下排查。 
1. 故障排除 
1. 1 測試域名是否能解析到 
簡單的使用ping來測試,發現DNS解析是否OK。

ping -c 1 api.weixin.qq.com


1.2 測試curl是否有故障 
因為php程式呼叫的是curl,所以我們測試一下curl是否能夠正常解析dns 
curl  api.weixin.qq.com 
竟然真的不行, 
2. 解決問題 
嘗試解決方法: 
修改dns 
cat /etc/resolv.conf | grep names 
nameserver 114.114.114.114

nameserver 8.8.8.8 
重新測試curl,問題得到解決。 
修改/etc/resolv.conf又恢復到原來的狀態? 
設定一次可以,過一會或者重啟一下伺服器,重啟一下network都不能解析了。發現/etc/resolv.conf又恢復到原來的狀態,裡面什麼都沒有了。手動加入nameserver也不行。 
後來到網上查詢,發現有人與我同樣的問題。原來在CentOS5.4下面直接修改/etc/resolv.conf不行。必須要在/etc /sysconfig/network-scripts/ifcfg-eth0裡面最後加上dns的設定。要不然,重啟後,肯定使用eth0設定中沒有設 dns的相關資訊,使/etc/resolv.conf恢復到原來的狀態。 
開啟/etc/sysconfig/network-scripts/ifcfg-eth0,為了保險起見,可以同樣修改eth1的設定 
DEVICE=eth0 
  BOOTPROTO=none 
  HWADDR=00:xx:19:xx:xx:xx 
  ONBOOT=yes 
  TYPE=Ethernet 
  USERCTL=no 
  IPV6INIT=no 
  PEERDNS=yes 
  NETMASK=255.255.255.0 
  IPADDR=xxx.xxx.xxx.xxx 
  GATEWAY=xxx.xxx.xxx.xxx 
  DNS1=202.96.209.5 #上海dns,根據實際情況更換 
  DNS2=202.96.209.133 #上海dns,根據實際情況更換 
這樣設定後,/etc/resolv.conf裡面根本就不需要設定。service network restart 後,可以發現/etc/resolv.conf裡面就有兩個dns的解析ip了。配置好以後重啟網路,cat /etc/resolv.conf,可以看到如下引數: 
# Generated by NetworkManager 
  nameserver 202.96.209.5 
  nameserver 202.96.209.133 
  search localdomain 
DNS解析設定成功。 
  在此要強調一點的是,直接修改/etc/resolv.conf這個檔案是沒用的,網路服務重啟以後會根據/etc/sysconfig /network-scripts/ifcfg-eth0來過載配置,如果ifcfg-eth0沒有配置DNS,那麼resolv.conf會被沖掉,重 新變成空值。
 
更多