Linux CentOS Network unreachable 處理解決方式

最近在 VMware VMPlayer 的虛擬機器上安裝 CentOS 7,準備進行需 Docker 環境測試與研究,但卻發現沒有網路……跟以前安裝 CentOS 6 情況不同,當時可是直接有網路的,花點時間整理啟用網路的筆記,對 Linux 不熟悉就得花上許多時間研究啊。

注意:以下均採用 root 權限操作,使用 su 切換成 root

先嘗試 ping Google Nameserver 來檢查網路,卻發現無法連結 (Network is unreachable):

[root@localhost ~]$ ping 8.8.8.8
connect: Network is unreachable

檢查 Network 設定,使用 ifconfig

[twsiyuan@localhost ~]$ ifconfig
ens33: flags=4163  mtu 1500
        ether 00:0c:29:0d:22:19  txqueuelen 1000  (Ethernet)
        RX packets 67  bytes 9752 (9.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

有網路設定但卻沒有被啟用?嘗試手動啟用網路 ens33 (注意該網路介面名稱在不同電腦上可能不一樣):

[root@localhost ~]$ ifup ens33
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)

然後就有網路連線能力了:

[root@localhost ~]$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=3.62 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=3.98 ms
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 3.629/3.806/3.983/0.177 ms

不過當該虛擬機器重新開機後,網路介面卻沒有跟著重新啟動,得手動輸入 ifup 來重新啟動網路,這有點麻煩,於似乎找到修改 network-script,設定 OnBoot 自動啟動網路的方法。

修改檔案 /etc/sysconfig/network-scripts/ifcfg-ens33,調整內容,將 ONBOOT 從 no 修改成 yes:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=7b3f81aa-c66b-450a-b1af-f8fca4aa3a8f
DEVICE=ens33
ONBOOT=yes

儲存後嘗試重新啟動網路,之後重新開機後,網路都將會自動啟用:

systemctl restart network  // CentOS 7 and above
service network restart // CentOS 6 and below

Reference