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

  • 问题:

在虚拟机上加载了两个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 也就是跟我们刚刚设置的默认网关相同

最后最后,所有问题都解决了!

猜你喜欢

转载自blog.csdn.net/weixin_36343850/article/details/78632561