如何防止 pppd 删除默认路由?

如何防止 pppd 删除默认路由?

我们使用多个提供商,其中一个通过 ubuntu 14.04 上的 pppd 守护进程使用 pppoe 创建连接。

早期没有多个提供商 pppd 自行管理默认路由(建立连接时创建,pppoe 关闭时删除)。但现在我使用以下选项禁用了它peers/rt

nodefaultroute
noreplacedefaultroute

因为我需要针对多个提供商的运行方案制定更复杂的 IP 规则。

我研究了 pppd 脚本 ip-up、ip-down、ip-up.d、ip-down.d,但没有找到删除默认路由的方法。

因此我假设它在他们的代码中实现了这一点。

我可以post-down在提供程序配置/etc/network/interfaces文件中添加指令,如下所示:

ip route add default dev ppp60 table default

作为一个技巧。

我计划在单独的初始化脚本中管理默认路由。

有没有解决方法可以防止 pppd 管理(删除)默认路由?

更新1:

default dev ppp60 scope link当连接重新启动或断开时,我想禁止 pppd 删除默认路由。

我使用接口(pppd 由 ifup 和 ifdown 命令管理)和标准 debian/ubuntu 网络子系统配置工具,如下所示:

auto rt
iface rt inet ppp
provider rt
pre-up /sbin/ifconfig ethtop up
post-up until ip a | grep -q ppp60; do sleep 1 > /dev/null; done
post-up ip route add default via "$( ip -4 a show dev "ppp60" |   grep -E '\<peer\>' | sed -r 's/.*peer ([^ /]*).*/\1/' )" table isc-rt
post-up ip rule add pref 30001 fwmark "0x$( gethostip -x "$(ip -4 a show dev "ppp60" | grep -E '\<inet\>' | sed -r 's/.*inet ([^ /]*).*/\1/')" )" lookup isc-rt
post-up ip rule add pref 30002 from "$( ip -4 a show dev "ppp60" | grep -E '\<inet\>' | sed -r 's/.*inet ([^ /]*).*/\1/' )" lookup isc-rt
post-up ip rule add pref 30003 to "$( ip -4 a show dev "ppp60" | grep -E '\<peer\>' | sed -r 's/.*peer ([^ ]*).*/\1/'  )" lookup isc-rt
post-up /etc/init.d/fw restart
post-down ip route flush table isc-rt
post-down ip rule del pref 30001
post-down ip rule del pref 30002
post-down ip rule del pref 30003
post-down /etc/init.d/fw restart

这是我的主要路线:

root@gate:/etc/ppp# ip route list
default dev ppp60  scope link 
10.0.3.0/24 dev lxcbr0  proto kernel  scope link  src 10.0.3.1 
10.8.0.0/24 via 192.168.128.13 dev br-eth0 
83.Y.Y.196 dev ppp60  proto kernel  scope link  src 93.Y.Y.67 
95.X.X.0/24 dev ethmiddle  proto kernel  scope link  src 95.X.X.40 
192.168.128.0/24 dev br-eth0  proto kernel  scope link  src 192.168.128.1 

我还有每个提供商及其默认网关的表格

这是我的 pppd 选项:

root@gate:/etc/ppp# awk '!/^ *#/ && NF' /etc/ppp/options 
asyncmap 0
noauth
crtscts
lock
hide-password
modem
lcp-echo-interval 30
lcp-echo-failure 4
noipx

这是我当前的提供商对等配置:

user "gsdf6sg84"
noipdefault
defaultroute
unit 60
hide-password
lcp-echo-interval 20
lcp-echo-failure 3
noauth
persist
mtu 1492
maxfail 0
plugin rp-pppoe.so ethtop
debug

答案1

当相应的接口被删除时,内核(不是 pppd)会自动删除所有相关路由。

相关内容