connect: Network is unreachable解决方法

如题所述

第1个回答  2022-07-21
自己做实验搭建环境一般都用 VirtualBox 的虚拟主机来做的,安装好一个系统,把基本初始化都做好,然后把它作为基础镜像,需要新的主机直接复制生成就可以使用了,也比较的方便。但是复制生成新的虚拟主机会有一个 MAC 地址的问题,即使在复制生成新的虚拟主机时选择“重新初始化所有网卡的 MAC 地址”,实际上新生成的虚拟机中会有两个网卡,比如 eth0 和 eth1,eth0 是原来主机的网卡,eth1 是新生成的网卡,显然如果复制生成多个虚拟主机,那都有一个相同的 eth0 网卡,这肯定不行的,所以还要做些初始化,具体的步骤写成一个脚本了,见这个文章: 虚拟主机复制后的网络初始化设置

那个脚本可以删除多余的网卡,可以手动设置新 IP,设置主机名,它自动去修改 ifcfg-eh0 文件里的参数。不过我忘记了 NETWORK 参数和 GATEWAY 参数也需要根据外部的局域网环境做修改,这次问题就是这么产生的。

虚拟主机改好了 IP 地址(192.168.1.120),DNS 地址也正确(设置为路由器地址 192.168.1.1),从虚拟主机也可以 ping 通 DNS 地址,但ping 外网发现是不通的,执行 ping baidu.com 显示:
connect: Network is unreachable。后来发现是忘记了 ifcfg-eth0 文件里面的 NETWORK 参数和 GATEWAY 参数也需要修改,复制过来的参数是 192.168.0.0 和 192.168.0.1,应该改为192.168.1.0 和 192.168.1.1。当然这个网段地址是根据你自己机器外接的局域网来改的。

查找问题:

1,执行 route -n 查看路由表,发现没有默认网关

[root@vm2 network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0

2,检查 ifcfg-eth0,发现 GATEWAY 和 NETWORK 都不对,写的是 192.168.0.1 和 192.168.0.0,改成 192.168.1.1 和 192.168.1.0 就好了,重启一下网络 service network restart

3,再看下 route -n:

[root@vm2 network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

默认网关出来了。然后试了下可以 ping 通外网地址了。