今天在公司调设备碰到一个奇怪的问题,设备可以ping通同一台交换机上的其他设备,但是没办法连接外网,$ ping www.baidu.com
的时候,提示 connect: Network is unreachable
因为调试的设备上搭载的Ubuntu20.04,我根据自己以往使用ubuntu的经验,理所当然的就往/etc/network这方面去想,认为问题是出在网络的配置文件没写好。但是一番仔细检查后没有发现任何问题,ip,网关,子网掩码等配置一应俱全, 并且也没有单词拼写错误。然后我就考虑是不是DNS配置有问题,毕竟能设备ping的通其他的设备,说明网络的物理链路是没什么问题的,或许是因为DNS服务没有配置好,导致无法识别?检查了一下/etc/reslove.conf,发现里面只有一个127.0.0.53,我就想是不是因为这个DNS不行,所以我就在文件里又加了一个DNS
#阿里云DNS
$ nameserver 233.5.5.5
使用systemctl restart networking.service重启网络,再次去ping百度,依旧提示connect: Network is unreachable,检查了一下其他的设备,发现其他设备的reslove.conf中也是只有一条nameserver语句,并且也都是127.0.0.53,我就估计可能找错方向了。尝试直接ping IP地址吧, ping 8.8.8.8
无法ping通,提示和上面没有任何区别。 好吧,排除DNS的配置问题。
既然IP地址没问题,DNS没问题,子网掩码255.255.255.0正常情况下不会出错, 我就在考虑是不是网关的问题了。
然后我就使用命令$route -n
查看网关,结果发现路由表下就一条数据, 网关那里0.0.0.0是那么的醒目,问题多半就出在网关这里了。
敲出命令 $ route add default gw 192.168.50.254
,按下回车, 再输入$ ping 8.8.8.8
,再次回车
### 这些信息是打在屏幕上,喜在我心里。
64 bytes from 8.8.8.8: icmp_seq=1 ttl=112 time=68.6 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=112 time=72.7 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=112 time=68.8 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=112 time=73.4 ms
再回想这个问题,我明明已经在/etc/network/interfaces中配置了网关,但是用route -n的时候还是找不到,这不由又让我想起来ubuntu下面既可以用$ /etc/init.d/network restart
重启网络,又可以用$ systemctl restart network.service
重启网络,还可以用$ service network-manager restart
重启网络,总之有时候网络出问题,想要重启一下网络,试了一种命令后不行,再试试其他命令或许就又好了,真是让人有些理不清头绪。
也或许是我学艺不精,或许以后哪一天彻底理解这些东西,懂得他们真正的用途和实现的方式,再回来看这篇文章嘲笑当时的自己吧。