如何使用ssh收入为Openvpn运行控制台设置iptables

我有一个Ubuntu服务器,我通过SSH远程控制它,我需要在这台服务器上运行一个OpenVpn客户端,所以所有的stream量将通过VPN隧道,除了两件事情,1.从我的电脑在这里的SSH连接, 2.另一个程序使用自定义端口43210。

这是我所尝试过的。 我为所有不想使用VPN的stream量创build了一个新的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规则来引导这些标记的stream量到表中:

 ip rule add fwmark 66 table passvpn 

我用这个掩码标记SSH和其他程序的stream量,使用端口号:

 iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 66 

当我运行OpenVpn时,我的ssh连接终止了,并且不能build立任何新的连接,错误为“timedout”。 我想也许从我的电脑的连接请求不能到达VPN运行的服务器,所以我添加另一个iptables规则为:

 iptables -t mangle -A INPUT -p tcp --sport 22 -j MARK --set-mark 66 

但仍然没有工作。

有人可以告诉我,如果我在这里做错了什么? 任何build议将不胜感激,谢谢!