Нет маршрута по умолчанию после возврата из соединения 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
Другие вопросы по тегам