首页 文章

Linux:我以编程方式将我的默认路由更改为eth0,但现在我无法ping通,有什么建议吗?

提问于
浏览
0

我正在为我的嵌入式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 回答

  • 1

    您的默认网关IP地址未定义 .

    输入 route add default gw <gateway ip> 作为root(或sudo)

    注意:使用dhcp分配ip设置将是我认为解决问题的最佳方式,否则您将必须静态定义默认路由 .

  • 0

    您必须在 ppp0 配置中添加 DEFROUTE=no .

相关问题