Нет маршрута по умолчанию после возврата из соединения PPP
Я здесь на Arch Linux с рабочим ETH0 (фиксированный IP) и PPP соединением через 3G USB флешку (ttyUSB0). После перезагрузки ETH0 работает нормально. Установление соединения PPP тоже работает нормально. Но после использования poff для отмены PPP-соединения я не получаю маршрут по умолчанию снова. Я знаю, как установить маршрут по умолчанию вручную, но поскольку ящики Linux будут зарегистрированы в различных сетях, я должен найти автоматизированный процесс получения маршрута по умолчанию после использования соединения PPP.
ETH0 был настроен в /etc/conf.d/net-conf-eth0:
address = 10.0.1.30
netmask = 24
broadcast = 10.0.1.255
gateway = 10.0.1.1
PPP был настроен с использованием
pacman -S ppp
... и следующие конфигурационные файлы:
/ И т.д. / ррр / IP предварительно до
#!/bin/sh
/usr/bin/route del default
/ И т.д. / ррр / варианты мобильных
ttyUSB0
921600
lock
crtscts
modem
passive
novj
defaultroute
noipdefault
usepeerdns
noauth
hide-password
persist
holdoff 10
maxfail 0
debug
Таблица маршрутизации до соединения PPP:
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default router.intern 0.0.0.0 UG 0 0 0 eth0
default router.intern 0.0.0.0 UG 1024 0 0 eth0
10.0.1.0 * 255.255.255.0 U 0 0 0 eth0
router.intern * 255.255.255.255 UH 1024 0 0 eth0
Таблица маршрутизации после успешного соединения PPP:
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.1.0 * 255.255.255.0 U 0 0 0 eth0
router.intern * 255.255.255.255 UH 1024 0 0 eth0
Что мне не хватает?
1 ответ
Чтобы ответить на мой собственный вопрос: ключом является /etc/ppp/ip-down. (Я пытался поместить скрипт в /etc/ppp/ip-down.d/, но иногда он не запускается. Ip-down слишком рано получает SIGTERM из pppd.) Поэтому я изменил / etc / ppp / ip -вниз:
!/bin/sh
#
# This script is run by pppd after the connection has ended.
#
ETH_Gateway=$(/usr/bin/cat /etc/conf.d/net-conf-eth0 | /usr/bin/grep 'gateway' | /usr/bin/grep -oE '[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+')
/usr/bin/route del default
/usr/bin/ip route add default via $ETH_Gateway
# Execute all scripts in /etc/ppp/ip-down.d/
for ipdown in /etc/ppp/ip-down.d/*.sh; do
if [ -x $ipdown ]; then
# Parameters: interface-name tty-device speed local-IP-address remote-IP-address ipparam
$ipdown "$@"
fi
done