本座是使用一个家用路由器连接到长城宽带的。
以前上网一直好好的,突然有一天,通过自己的路由器能够获得IP地址,却不能上网,所有的程序报告的错误都是“Network is unreachable”。本座当时不知道是什么原因,使用惯用的“重启网络服务”大法service network restart也不能修复,并且执行这个命令的时候还会报告这样的错误:
bash-4.0# service network restart
正在关闭接口 eth0: [确定]
关闭环回接口: [确定]
弹出环回接口: [确定]
弹出界面 eth0:
正在决定 eth0 的 IP 信息...RTNETLINK answers: No such process
完成。
RTNETLINK answers: Network is down
[确定]
去古鸽查咯一下“RTNETLINK answers: No such process”也没找到原因,于是就放下咯,好在本座还有另一条线是直接连接到长城宽带的,可以上网,而且那一条线不会出现这样的问题。只是当本座准备在局域网内联机打DotA时需要换线,有点麻烦。
昨天在研究DHCP的配置时,发现其中有“路由表”项,配置的是此DHCP服务器向客户机输出的路由表项。本座突然就想,也许就是路由表的问题勒。如果本座没猜错的话,家用路由器上的DHCP服务器要向客户机吐出一条默认路由(就像这样:-net 0.0.0.0 gw 192.168.2.1),但是路由器出咯某种问题导致它没有吐出这一条信息,而本座的电脑也没有自动加上这样一个默认路由,于是所有向外的数据包都找不到出口。
试验之后,发现果然是路由表有问题:
直接执行route看到的路由表:
bash-4.0# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.0 * 255.255.255.0 U 0 0 0 eth0
这个时候无法上网。
手动加上一条默认路由之后,就可以上网咯:
bash-4.0# route add -net 0.0.0.0 gw 192.168.2.1
bash-4.0# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.2.1 0.0.0.0 UG 0 0 0 eth0
192.168.2.0 * 255.255.255.0 U 0 0 0 eth0
只是本座仍然不知道,这个路由表问题是MagicLinux本身的问题还是家用路由器的问题,到目前为止更偏向于是家用路由器的问题。如果确实是家用路由器的问题,本座觉得MagicLinux也可以考虑在这种情况下自动地加上一条默认路由,这样更健壮。
反正,在有任何组织宣布对这起事件负责之前,本座还是先手动改一下网络服务的代码,让它自己加一条默认路由吧,以免以后每次都要手动加路由。
HxLauncher: Launch Android applications by voice commands