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