我有一台 Ubuntu 服务器,我通过 ssh 对其进行远程控制,我需要在此服务器上运行 OpenVpn 客户端,因此所有流量都将通过 VPN 隧道,除了两件事,1. 来自我这里的计算机的 ssh 连接,2. 另一个程序使用自定义端口 43210。
这是我尝试过的。我为所有不想使用 VPN 的流量创建了一个新的 IP 规则表:
# reserved values
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
206 passvpn
我定义了 passvpn 表的行为以使用本地无 VPN 设备:
ip route add default via xxx.xxx.xxx.xxx dev eth0 table passvpn
其中 xxx.xxx.xxx.xxx 是我的网关
我添加了一条新的 IP 规则,将那些标记的流量引导至表:
ip rule add fwmark 66 table passvpn
我使用这个 66 掩码标记 SSH 和其他程序的流量,使用端口号:
iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 66
当我运行 OpenVpn 时,我的 ssh 连接终止,并且无法建立任何新连接,错误为“timedout”。我想也许我的电脑的连接请求无法到达正在运行 VPN 的服务器,所以我添加了另一条 iptables 规则:
iptables -t mangle -A INPUT -p tcp --sport 22 -j MARK --set-mark 66
但仍然不起作用。
有人能告诉我我这里做错了什么吗?任何建议都会很感激,谢谢!