我该怎么做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 地址的所有合适路由,而不仅仅是最佳路由。