在Linux實例中訪問外部網(wǎng)絡地址, 提示“Network is unreachable”錯誤怎么辦?
本文介紹在Linux實例中訪問外部網(wǎng)絡地址,提示“Network is unreachable”錯誤的解決方案。
問題描述
在Linux系統(tǒng)的ECS實例中訪問外部網(wǎng)絡地址,提示Network is unreachable
錯誤。
問題原因
該問題可能是由于實例缺失默認路由配置,導致無法為數(shù)據(jù)包確定適當?shù)陌l(fā)送目標,進而阻礙了對外部網(wǎng)絡的訪問。
解決方案
VPC網(wǎng)絡內(nèi)的ECS實例推薦優(yōu)先使用DHCP動態(tài)獲取IP配置和默認路由配置,這樣可以避免大多數(shù)由于靜態(tài)IP配置不當導致默認路由缺失引起的網(wǎng)絡不通問題。
靜態(tài)IP配置修改為動態(tài)IP配置的方法,請參見Linux實例中本地網(wǎng)卡的DHCP配置檢查與修復。
步驟一:獲取默認網(wǎng)關IP地址
如果問題實例已經(jīng)無法訪問任意的非本示例地址,那么需要從連接到同一虛擬交換機的其它實例上獲取默認網(wǎng)關的IP地址:
找到連接到同一虛擬交換機的其它實例,登錄該實例。
執(zhí)行以下命令,查看同一虛擬交換機的網(wǎng)卡并記錄其MAC地址。
ip addr
系統(tǒng)顯示類似如下,主網(wǎng)卡eth0與問題實例連接到同一虛擬交換機,其MAC地址為
00:16:52:07:**:**
。1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:**:**:**:** brd 00:00:**:**:**:** inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:16:52:07:**:** brd ff:ff:ff:ff:ff:ff inet 172.16.*.***/24 brd 172.16.2.255 scope global eth0 valid_lft 311974909sec preferred_lft 311974909sec inet6 fe80::216:52ff:fe07:1306/64 scope link valid_lft forever preferred_lft forever
通過執(zhí)行以下命令,請求實例元數(shù)據(jù)服務器,獲取默認網(wǎng)關IP地址。
說明如果問題實例還可以ping通實例元數(shù)據(jù)服務器
100.100.100.200
,也可以在問題實例中執(zhí)行以下命令,選擇需要作為默認數(shù)據(jù)包出口的網(wǎng)卡即可,通常為主網(wǎng)卡eth0。curl http://100.100.100.200/latest/meta-data/network/interfaces/macs/[$MAC_Address]/gateway
說明[$MAC_Address]
為上一步中獲取的MAC地址。
步驟二:配置默認路由
當您選擇臨時配置默認路由時,無需修改網(wǎng)卡配置和重啟網(wǎng)絡服務,但是關機或者重啟后默認路由配置會失效。
臨時配置默認路由
執(zhí)行以下命令,向路由表中添加默認路由。
ip route add default via [$Gateway_IP] dev [$Network]
說明[$Gateway_IP]
為獲取默認網(wǎng)關IP地址中獲取的默認網(wǎng)關IP地址。[$Network]
為獲取默認網(wǎng)關IP地址中與問題實例在同一虛擬交換機中查詢默認網(wǎng)關時的網(wǎng)卡。
執(zhí)行以下命令,查看路由表,可以看到已經(jīng)添加了默認路由。
ip route
系統(tǒng)顯示類似如下。
default via 172.16.2.253 dev eth0 10.64.0.0/10 via 172.16.2.253 dev eth0 169.254.0.0/16 dev eth0 scope link metric 1002 172.16.2.0/24 dev eth0 proto kernel scope link src 172.16.2.248
說明例如,配置默認網(wǎng)關為
172.16.2.253
,默認出口網(wǎng)卡為主網(wǎng)卡為eth0。
長期配置默認路由
穩(wěn)定配置默認路由需要修改網(wǎng)卡配置文件,如果需要立即生效,還需要重啟網(wǎng)絡服務,有可能引起網(wǎng)絡斷流。以下操作以CentOS 7.9系統(tǒng)為例,其它Linux發(fā)行版本需要參考對應的系統(tǒng)文檔和網(wǎng)絡配置文檔。
編輯默認數(shù)據(jù)包出口網(wǎng)卡的
/etc/sysconfig/network-scripts/ifcfg-eth0
配置文件,將以上步驟中記錄的網(wǎng)關信息填寫到該配置文件中,保存并退出。例如,以主網(wǎng)卡eth0為默認數(shù)據(jù)包出口網(wǎng)卡,網(wǎng)關IP地址為172.16.2.253
。DEVICE=eth0 TYPE=Ethernet BOOTPROTO=static ONBOOT=yes STARTMODE=auto IPADDR=172.16.2.248 NETMASK=255.255.255.0 GATEWAY=172.16.2.253
執(zhí)行以下命令,重啟網(wǎng)絡服務。
systemctl restart network