如何强制“ip route get”忽略特定设备?

如何强制“ip route get”忽略特定设备?

我该怎么做ip route get,但强制它忽略特定的设备?

当我启动 VPN 时,我会运行ip route get <vpn_server_ip>以确定使用哪个接口连接到 VPN。然后,我添加一个优先级最高的默认路由,将所有流量发送到我的 VPN tun 设备。默认路由不会捕获 VPN 流量,因为它的套接字绑定到从 ip route get 获得的接口。

一切都很好,但如果网络发生变化并且传出接口关闭,我需要开始使用下一个接口。但由于 VPN 正在运行,我无法调用,ip route get <vpn_server_ip>因为那样会返回 tun 设备。我不想暂时删除 VPN 路由,因为那样会泄露流量。

答案1

ip route get命令使用实际路由信息并使用最长前缀匹配算法。没有办法忽略特定接口。但是,如果您有几条具有各种度量的合适路由,则可以使用另一个命令 - ip route list match <ip>。它将返回特定 IP 地址的所有合适路由,而不仅仅是最佳路由。

相关内容