该ip
命令仅允许使用数字表名。但我发现有些默认表的名称是字母(local
, main
)。有没有办法给它一个字母别名?
主页
/
user-1164580
slowcoder's questions
slowcoder
Asked:
2024-12-16 09:18:36 +0800 CST
我在服务器上运行了以下代码,这样即使服务器连接到 VPN,我也可以通过 SSH 进入服务器。以下代码在启动后作为服务运行。
ip addr add 192.168.1.113 dev enp1s0 label enp1s0:0
ip rule add from 192.168.1.113 table 402
ip route add default via 192.168.1.1 dev enp1s0:0 table 402
这适用于 openvpn,但不适用于 wireguard,因为我的 wireguard 客户端在上述规则前面添加了一些规则。
0: from all lookup local
32761: from all lookup main suppress_prefixlength 0
32762: not from all fwmark 0xca6c lookup 51820
32763: from 192.168.1.113 lookup 402
32766: from all lookup main
32767: from all lookup default
如果我在 wireguard 连接后添加规则from 192.168.1.113 lookup 402
,那么我就可以通过 SSH 进入服务器。所以我认为这是一个优先级问题。
32763
即使在 wireguard 连接并添加了那几条规则( 32761
, )之后,如何确保我的规则( )仍然保持优先权?32762
失败的解决方案:
我了解到左边的数字是优先级。然后我尝试将规则的优先级调低。
ip rule add from 192.168.1.113 table 402 prio 300
.. 但是在我连接到 wireguard vpn 之后,wireguard 客户端只是将他们的规则优先级放在我的规则之下299
,然后298
。
298: from all lookup main suppress_prefixlength 0
299: not from all fwmark 0xca6c lookup 51820
300: from 192.168.1.113 lookup 402
有什么办法可以防止这种情况发生吗?我想我可以PostUp
在 wireguard conf 文件中放置一个命令来改变优先级,但我觉得必须有一个更干净的解决方案。