您的位置:首页 > 大数据 > 人工智能

解决:connect Network is unreachable 和 ping unknown host www.baidu.com

2017-11-25 16:20 1026 查看
问题:

在虚拟机上加载了两个linux系统,一个Ubuntu,一个TD-EXPRESS。很纳闷,Ubuntu那边的网络顺畅,ping外面的主机,ping www.baidu.com 都可以ping通,而TD-EXPRESS 那边只能ping 同一个网段内的,ping 其他ip 像 8.8.8.8就出现了connect Network is unreachable错误,ping 其他主机像 www.baidu.com 就出现了 ping unknown host www.baidu.com 错误。

问题分析

只能ping通内网: 说明网关没有设置好,不能通过网关将请求转发到路由器

ping其他远程主机出现unknown host:说明DNS服务器有问题,不能将主机名解析成ip地址,所以更不用说访问了

问题解决

虚拟机上的网络配置

打开虚拟网络编辑器



做如下设置,选用NAT方式共享主机IP,记住,我们的子网号是192.168.8.0,那么子网下面的主机,理论上应该从192.168.8.1~192.168.8.254 这个范围里面选 (因为192.168.8.0表示网络号,而192.168.8.255表示广播地址,不可以用做子网主机的ip)



点击“NAT设置”,设置网关为192.168.8.2 ,后面需要用到



列表内容

两个主机的IP设置

第一个主机(Ubuntu)ip的设置

ubuntu配置的信息主要在/etc/network/interfaces这个文件下,具体配置方法这里省略,可参考其他博客

下面展示配置好的结果:



重要的一点是:其ip必须满足我们之前的说的那个子网的范围内,我们设置为192.168.8.130

第二台主机(TD_EXPRESS)ip的设置

编辑这个 /etc/sysconfig/network/ifcfg-eth0 文件,将ip设置为192.168.8.143,子网号设置为255.255.255.0



连通性测试

使用ping命令测试连通结果,发现Ubuntu正常访问外部主机,而TD-EXPRESS出现以上谈及的两个错误,即:connect Network is unreachable 和 ping unknown host www.baidu.com

route命令查看两个主机的路由表,发现问题主机缺少默认的路由器,即图片中的default那一条





按照个人理解:默认网关/路由就是,当主机想访问某个网络是,就去路由表寻找对应的网关,主机把数据交给网关,网关代为把请求转发给对应的路由器。

像第二个路由表中的第一条,192.168.8.0 * 255.255.255.0 U 0 0 eth0 ,表示的就是在访问192.168.8.0 这个网络时,需要把它提交给网关*,而*表示就是在本网络内访问,可以直接访问,不需要路由器代为转发。

而像第一个路由表中的第一条 ,表示主机在路由表中查找不到其相想要访问的网络是,就采用这个网关,即先把数据交给192.168.8.2这个网关,其代为转发到路由器,这样子才能访问外网。只有通过路由器的转发才可以访问外网。

在第二主机中之所以出现只能ping通内网的主机,而访问外网失败,就是因为主机在路由表中找不到对应的网络,比如8.8.8.8就不在其路由表内容,拿它找不到,它就不知道怎么做了。而有了一条default之后,它找不到对应的网关时,就会默认提交给default后面的网关!

有关路由的知识可参见博客,写得很详细:

http://blog.csdn.net/chenlycly/article/details/52141854

添加默认路由/网关

route add default gw 192.168.8.2


添加完成后,我们再次查看路由表:



发现多了一条默认路由。

ping 8.8.8.8



可以成功ping通

但是值得注意的是,这样子添加路由之后,重启之后又会没有的。所以采用如下这个方法在机器启动时自动添加路由:

http://www.phpernote.com/linux/1247.html

这个博客将到的是3种开机启动的方法,我用的是第二种:

将写好的脚本(.sh文件)放到目录 /etc/profile.d/ 下,系统启动后就会自动执行该目录下的所有shell脚本。



脚本的内容很简单,主要就是刚才那条命令:



写完保存就可以了,之后重启就好自动添加默认路由!

解决unknown host www.baidu.com 问题

之前测试了ping 8.8.8.8 可以ping通,但是ping www.baidu.com 却出现了unknown host的问题

在网上查找相关的问题解决方法,大同小异,基本上都是在/etc/resolv.conf 下加入常见的域名服务器

nameserver 202.98.96.68
nameserver 61.139.2.69


但是依旧不能解决问题……

最后在某度知道 里面找到了一个问答,居然把问题解决了。

在那个文件中第一行加上

nameserver 192.168.8.2


这个192.168.8.2 也就是跟我们刚刚设置的默认网关相同

最后最后,所有问题都解决了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐