У меня 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