我的 ubuntu 电脑上已连接 openVPN,但我想让几个应用程序通过我的家用路由器非隧道运行。它们在端口 22 和 32400(ssh 和 plex)上运行。
因此,我对如何设置特定策略路由做了一些研究。
问题是,尽管我尽了最大努力,但似乎所有内容仍然通过 VPN 路由
我所做的事情的总结
我的rp_filter
设置为 0。我修改了我的 mangle 表以向目标端口为 32400 和 22 的数据包添加标记。我有一条规则将标记的数据包发送到自定义表“notunnel”,而 notunnel 表的默认路由是我的路由器网关。
(请注意,我使用端口 80 作为测试端口,因为通过网站查看我的公共 IP 比 ssh 进入我的家庭网络测试配置更容易)。
以下是表格
user@host:~$ ip rule show
0: from all lookup local
32765: from all fwmark 0x1 lookup notunnel
32766: from all lookup main
32767: from all lookup default
user@host:~$ ip route show table main
default via 10.158.1.5 dev tun0 proto static
10.158.1.1 via 10.158.1.5 dev tun0 proto static
10.158.1.5 dev tun0 proto kernel scope link src 10.158.1.6
172.98.67.18 via 192.168.0.1 dev wlan0 proto static
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.10 metric 9
user@host:~$ ip route show table notunnel
default via 192.168.0.1 dev wlan0
user@host:~$ sudo iptables -t mangle -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
CONNMARK all -- anywhere anywhere ctstate RELATED,ESTABLISHED CONNMARK restore
RETURN all -- anywhere anywhere ctstate RELATED,ESTABLISHED
CONNMARK tcp -- anywhere anywhere tcp dpt:http CONNMARK set 0x1
CONNMARK tcp -- anywhere anywhere tcp dpt:32400 CONNMARK set 0x1
CONNMARK all -- anywhere anywhere CONNMARK save
CONNMARK tcp -- anywhere anywhere tcp spt:32400 CONNMARK set 0x1
CONNMARK tcp -- anywhere anywhere tcp spt:http CONNMARK set 0x1
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
因此,一如既往,我们会热烈欢迎任何建议。