控制使用哪个网络接口作为默认接口

控制使用哪个网络接口作为默认接口

我有一个系统(内核 4.4),它有两个与外界相连的网络接口 - 以太网(例如通过 ADSL 路由器)和 ppp。两者均经过 NAT。 (顺便说一句,我不需要接受传入连接,并且没有 ipv6)以太网连接很容易出现故障 - 也许只是本地电缆,但也可能是 ADSL 路由器(例如关闭)甚至 ISP/ADSL 线路。我可以通过专门 ping 该接口来检测到这一点;在这种情况下我想做的是将 ppp 设置为系统的默认值,这样当应用程序打开新连接时,它不需要知道或指定要使用哪个接口。我不想简单地关闭 eth 接口,因为我需要不断对其进行 ping 操作以了解它何时再次处于活动状态。

路线信息如下:

route -n

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.254  0.0.0.0         UG    100    0        0 eth0
0.0.0.0         10.68.55.242    0.0.0.0         UG    700    0        0 ppp0
10.68.55.242    0.0.0.0         255.255.255.255 UH    700    0        0 ppp0
192.168.10.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0

ip route

default via 192.168.10.254 dev eth0  proto static  metric 100
default via 10.68.55.242 dev ppp0  proto static  metric 700
10.68.55.242 dev ppp0  proto kernel  scope link  src 10.68.55.242  metric 700
192.168.10.0/24 dev eth0  proto kernel  scope link  src 192.168.10.125  metric 100

[I'm unsure about there being two 'default', or indeed why there are...]

ip address

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:c6:7f:e5:50 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.125/24 brd 192.168.10.255 scope global dynamic eth0
       valid_lft 75591sec preferred_lft 75591sec
3: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 3
    link/ppp
    inet 10.68.55.242/32 scope global ppp0
       valid_lft forever preferred_lft forever

我认为我可以通过删除/重新添加其中一条路由来获得我想要的结果,为其指定高于或低于其他接口的度量。但这意味着脚本中的解析有点曲折。

所以我想知道是否有一种“更灵活”的方法来做到这一点?我已经阅读了很多有关 iptables 和规则的页面,但是对于略有不同的场景,我正在努力使这些原则适应我的特定(更简单?)情况。也不确定他们最终是否会变得更加光滑。

我也在这里搜索过,我觉得更改路由度量实际上可能是最直接的方法。但是还有其他快速干净的方法可供我研究吗?它提供了一个非常简单的命令来来回推动物体。谢谢。

相关内容