所以,我想通过VPN连接路由某些stream量,其余的通过我的普通Internet连接。 我想运行几个不同的程序,其中大多数不支持绑定到特定的networking接口(在我的情况下tun0 )。
我设法发送一个特定用户的stream量通过VPN在这里给出的答案: iptables – 目标将数据包路由到特定的接口?
但不幸的是,当我运行连接到互联网的服务器,并具有在本地IP( 127.0.0.1/192.168.0.* )上运行的Web界面时,所有Internet通信都正确通过tun0 ,但我无法以不同的用户身份从本地IP连接到Web界面。
当我作为VPN-ified用户login时,我可以访问在本地IP上运行的服务,但其他用户/机器无法访问我启动的任何服务器。
任何人都可以指向正确的方向吗?
您必须为位于VPN另一端的networking设置一个静态路由。 通常情况下,除非您指定明确的路由,否则所有内容都将被路由到默
比如说VPN后面的networking是10.10.42.0/24然后你添加一个静态路由
ip route add 10.10.42.0/24 dev tun0
这通过tun0发送这个子网的所有stream量
首先添加一个防火墙规则:
iptables -t mangle -A OUTPUT -m owner --uid USER -j MARK --set-mark 1 iptables -t nat -A POSTROUTING -m mark --mark 1 -j MASQUERADE
然后添加一个路由规则:
ip rule add fwmark 0x1 table 100
然后将路由添加到新的路由表中:
ip route add SOMEROUTE via SOMEGATEWAY table 100