从PPP连接返回后没有默认路由

时间:2015-06-01 13:31:44

标签: routing archlinux pppd

我在Arch Linux的盒子里,有一个工作的ETH0(固定IP)和通过3G USB棒(ttyUSB0)的PPP连接。重启后,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

...以及以下配置文件:

的/ etc / PPP / IP的预达

#!/bin/sh
/usr/bin/route del default

的/ etc / PPP /选项移动

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 个答案:

答案 0 :(得分:0)

回答我自己的问题:/ etc / ppp / ip-down是线索。 (我试着在/etc/ppp/ip-down.d/中放置一个脚本,但有时它不会被执行.ip-down太早从pppd获取SIGTERM。)所以我修改了/ 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