我有两个互联网连接的CentOS 6.7
eth0 – 通过DHCP(由NetworkManager控制)的dynamicIP地址和dynamic网关
ppp0 – dynamicIP地址和dynamic网关(使用rp_pppoeconfiguration)
我想编写脚本,将在某些情况下更改默认网关,如下所示:
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
如何找出dynamic网关$ IP1和$ IP2?
更新:
从这个答案https://unix.stackexchange.com/a/124341/157086
在文件/var/lib/dhclient/dhclient.leases我可以findeth0的网关
option routers 12.34.59.28;
如何findppp0的dynamic网关$ IP2?
对于ppp0设备,可以使用ip addr show ppp0查询对端的IP地址。
但是,你甚至不需要一个,像ppp0这样的点对点设备,你可以简单地将路由设置到接口,省略路由器IP。
这个命令会给你所有在你的Linux机器上设置的路由,包括网关:
route -n
作为@Alex提到netstat -r ,如果这不可用,还有另一种方法:
$ ip route list dev eno1 default via XXXX proto static metric 100 XXXX/24 proto kernel scope link src XXXX metric 100 $
用您的设备replaceeno1 。
dhclient -R routers – 我无法testing,因为我没有在任何地方设置dhcp 。
对于eth0:
#!/bin/bash gwip=$(nmcli dev list iface eth0 | grep IP4-SETTINGS.GATEWAY: | awk '{ print $2}') ip route replace default scope global via $gwip dev eth0
对于ppp0:
#!/bin/bash gwip2=$(/sbin/ip addr show ppp0 | grep peer | awk ' { print $4 } ' | sed 's/\/32//') ip route replace default via $gwip2 dev ppp0