一、什麼是 Linux network is unreachable 錯誤
在 Linux 系統中,當我們嘗試連接一個不可達的網絡地址時,可能會遇到 “network is unreachable” 的錯誤提示。這通常是由於路由表中沒有到達目標地址的正確策略導致的。
路由表是一個保存在操作系統中的指導網絡流量傳輸的信息表。它可以告訴系統哪些網卡可用、哪些網卡接受和發送哪些網絡流量、如何將數據包轉發到下一跳等等。
如果發送方 IP 地址和目標 IP 地址在同一子網中,則主機將直接嘗試發送數據包,而無需使用路由。否則,主機將使用路由表來判斷如何將數據包發送到目標主機。
二、路由表的創建
在 Linux 中,我們可以使用路由命令對路由表進行操作,例如添加、刪除、修改、查看路由表等等。以下是一個簡單的路由表示例:
Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 192.168.2.0 192.168.1.2 255.255.255.0 UG 0 0 0 eth0
這張路由表告訴我們:
- 默認網關是 192.168.1.1;
- 目標 IP 地址為 192.168.1.0 子網的所有流量使用 eth0 網卡直接發送;
- 目標 IP 地址為 192.168.2.0 子網的所有流量都必須通過網關 192.168.1.2 發送。
三、造成 “network is unreachable” 的原因
以下是可能導致 “network is unreachable” 錯誤的原因:
- 網卡沒有連接到網絡;
- IP 地址、子網掩碼或網關不正確;
- 路由表中沒有到達目標 IP 地址的正確策略;
- 防火牆或 SELinux 配置阻止了網絡連接。
四、如何解決 “network is unreachable” 錯誤
以下是一些有用的方法來解決這個錯誤:
1、檢查網卡是否連接到網絡
如果網卡沒有連接到網絡,那麼它將不能發送或接收網絡流量。我們可以使用以下命令來檢查網卡連接狀態:
ip link
如果網卡狀態為 DOWN,則需要使用以下命令將其啟動:
ip link set eth0 up
2、檢查 IP 地址、子網掩碼和網關
我們可以使用以下命令來查看當前 IP 地址、子網掩碼和網關設置:
ip addr show ip route show
如果這些設置不正確,我們可以使用以下命令來修改它們:
ip addr add 192.168.1.100/24 dev eth0 ip route add default via 192.168.1.1
3、檢查路由表
我們可以使用以下命令來查看當前路由表:
ip route show
如果路由表中沒有到達目標 IP 地址的正確策略,我們需要使用以下命令來添加新的路由條目:
ip route add 192.168.2.0/24 via 192.168.1.2
4、檢查防火牆和 SELinux 配置
有時防火牆或 SELinux 配置可能阻止網絡連接。我們可以使用以下命令來檢查它們的狀態:
systemctl status firewalld getenforce
如果它們正在運行,停止它們以允許網絡連接:
systemctl stop firewalld setenforce 0
五、總結
當我們遇到 “network is unreachable” 錯誤時,最好的方法是按照以上步驟一步步排查問題。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/194114.html