我有一个系统(内核 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 和规则的页面,但是对于略有不同的场景,我正在努力使这些原则适应我的特定(更简单?)情况。也不确定他们最终是否会变得更加光滑。
我也在这里搜索过,我觉得更改路由度量实际上可能是最直接的方法。但是还有其他快速干净的方法可供我研究吗?它提供了一个非常简单的命令来来回推动物体。谢谢。