我在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
使用
设置PPPpacman -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
我错过了什么?
答案 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