我有两个 Internet 连接的 CentOS 6.7
eth0 - 通过 DHCP 的动态 IP 地址和动态网关(由 NetworkManager 控制)
ppp0 - 动态 IP 地址和动态网关(使用 rp_pppoe 配置)
我想编写脚本,它会在某些情况下更改默认网关,如下所示:
ip route replace default scope global via $IP1 dev eth0
# or
ip route replace default scope global via $IP2 dev ppp0
# or
ip route replace default scope global nexthop via $IP1 dev eth0 weight 8 nexthop via $IP2 dev ppp0 weight 10
如何找出动态网关 $IP1 和 $IP2?
更新:
从这个答案https://unix.stackexchange.com/a/124341/157086
在文件 /var/lib/dhclient/dhclient.leases 我可以找到通往 eth0 的网关
option routers 12.34.59.28;
如何找出 ppp0 的动态网关 $IP2?
正如@Alex 提到
netstat -r
的那样,如果那不可用,还有另一种方法:更换
eno1
为您的设备。dhclient -R routers
- 我无法测试它,因为我没有dhcp
在任何地方进行设置。对于设备,您可以使用 查询对等方的
ppp0
IP 地址。ip addr show ppp0
但是,您甚至不需要一个,对于像您这样的点对点设备,
ppp0
您只需将路由设置为接口即可,省略路由器 IP。此命令将为您提供 Linux 机器中设置的所有路由,包括网关:
对于 eth0:
对于 ppp0: