我正在为我的嵌入式Debian Linux系统编写一个程序 . 它有一个单元调制解调器,它被提升为ppp0,并且还有可能插入或不插入的eth0 . 我希望系统工作的原因是它使用ppp0作为默认路由,除非它可以 Build 到在eth0之外的世界,在这种情况下,eth0应该成为默认路由 . eth0电缆可以随时拔掉 . 为此,我编写了一个C程序,它使用curl尝试通过eth0 Build 与公共Web服务器的连接 . 如果成功,则尝试继续使用默认路由eth0 . 我从Linux pppd项目中借用了一些代码来操作路由信息 . 系统启动时ppp0处于活动状态 . 然后我运行我的程序,它检测到它可以通过eth0 Build 连接(当电缆插入时),然后它将默认路由更改为eth0 . 在那个网络以某种方式停止工作之后,我再也无法ping和公共服务器了 . 不知怎的,我改变路线已经杀死了网络 . 在运行程序之前,“route”的输出是:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
80.sub-66-174-2 * 255.255.255.255 UH 0 0 0 ppp0
192.168.98.0 * 255.255.255.0 U 0 0 0 eth0
loopback * 255.0.0.0 U 0 0 0 lo
default * 0.0.0.0 U 0 0 0 ppp0
运行程序后,“route”的输出为:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
66.174.217.80 * 255.255.255.255 UH 0 0 0 ppp0
192.168.98.0 * 255.255.255.0 U 0 0 0 eth0
loopback * 255.0.0.0 U 0 0 0 lo
default * 0.0.0.0 U 0 0 0 eth0
所以我可以't see any obvious signs of what'错了 . 该代码发布于http://pastebin.com/AwKdvSf1
感谢您提供有关如何解决此问题的任何帮助或见解 .
2 回答
您的默认网关IP地址未定义 .
输入
route add default gw <gateway ip>
作为root(或sudo)注意:使用dhcp分配ip设置将是我认为解决问题的最佳方式,否则您将必须静态定义默认路由 .
您必须在
ppp0
配置中添加DEFROUTE=no
.