我管理几个 OpenWrt(嵌入式 Linux)路由器,我为它们编写了 bash 脚本来运行 Openconnect VPN 客户端。客户端使用“vpnc-script”来设置路由,这取代了最初 DHCP 提供的默认路由。
我的问题是,当隧道崩溃或进程被终止时,默认路由不会重置,从而使路由器没有用于重新连接的默认路由。
到目前为止,我一直通过手动设置带有网关 IP 地址的变量来解决这个问题。但是,我认为这没有必要;此外,当路由器移动时(在另一个网关后面提供 VPN 连接),必须在脚本中手动更改网关变量。
由于默认路由是在路由器启动时正确(自动)设置的,因此我确信以后一定有一种简单的方法来触发它,但我一生都找不到它!
有没有一种简单的方法来告诉 Linux 系统重置默认路由?
答案1
呃。不知道为什么在我所有的脚本中我以前从未想到过这一点,但一种简单的方法是重置界面:
ip link set eth0 down
ip link set eth0 up
答案2
默认路由只是另一条路由。如果删除它,内核就无法保留它。只是运行时配置可以更改。
如果您在某处配置了界面,您可以尝试重新启动界面(正如您在自己的答案中提到的那样)。但是,如果您还没有这样做,您将需要另一个解决方案。
我可以看到两个选项:
- 当您在 VPN 配置脚本中配置接口时,首先读取旧的默认路由并将其存储在其他位置。然后,当隧道出现故障时,您可以启动另一个脚本来读取您存储的内容并再次应用它。
- 让 vpn 配置脚本使用单独的路由表(您将其设为默认值)。然后,当接口关闭时,您所需要做的就是再次切换路由表。