Назад | Перейти на главную страницу

Как мне узнать IP-адрес шлюза Linux?

У меня CentOS 6.7 с двумя подключениями к Интернету

eth0 - динамический IP-адрес и динамический шлюз через DHCP (контролируется 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;

Как узнать динамический шлюз $ IP2 для ppp0?

Для ppp0 устройства вы можете запросить IP-адрес сверстник с участием ip addr show ppp0.

Однако он вам даже не нужен, поскольку для устройств точка-точка, таких как ppp0 вы можете просто установить маршрут только к интерфейсу, опуская IP-адрес маршрутизатора.

Для 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

Как упоминает @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 установка где угодно.

Эта команда предоставит вам все маршруты, установленные на вашем компьютере Linux, включая шлюз:

route -n