Linux-Networking

如何找出linux網關IP地址?

  • July 21, 2016

我有兩個 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 and $ IP2?

更新:

從這個答案https://unix.stackexchange.com/a/124341/157086

在文件 /var/lib/dh​​client/dhclient.leases 我可以找到通往 eth0 的網關

option routers 12.34.59.28;

如何找出 ppp0 的動態網關 $IP2?

正如@Alex 提到netstat -r的那樣,如果那不可用,還有另一種方法:

$ ip route list dev eno1
default via X.X.X.X  proto static  metric 100 
X.X.X.X/24  proto kernel  scope link  src X.X.X.X  metric 100 
$ 

更換eno1為您的設備。

dhclient -R routers- 我無法測試它,因為我沒有dhcp在任何地方進行設置。

對於設備,您可以使用 查詢對方的ppp0IP 地址。ip addr show ppp0

但是,您甚至不需要一個,對於像您這樣的點對點設備,ppp0您只需將路由設置為介面即可,省略路由器 IP。

引用自:https://serverfault.com/questions/773689