我怎样才能configurationopenvpn代理stream量只有绑定到tun接口的进程?

我正在尝试configurationopenvpn,以便只有来自特定进程的stream量通过vpn,但是这些进程可以连接到任何地方。

我试图通过让openvpn不做任何路由configuration( --route-noexec )并让应用程序显式连接到tun接口(例如: curl --interface tun0 'http://www.ipchicken.com' : curl --interface tun0 'http://www.ipchicken.com' ),但connect()似乎超时。

为了使tun界面快乐,我还需要采取其他一些措施吗?

route-nopull

http://openvpn.net/index.php/open-source/documentation/manuals/69-openvpn-21.html

与–client或–pull一起使用时,接受服务器EXCEPT推送的路由选项。 在客户端上使用时,该选项可以有效地阻止服务器将路由添加到客户端的路由表中,但请注意,该选项仍然允许服务器设置客户端的TUN / TAP接口的TCP / IP属性。

所以添加route-nopull到你的OpenVPNconfiguration文件。 我写了一篇关于如何使用cURL / PHP使用OpenVPN VPN的文章 。

您可以通过对来自tun0接口的数据包使用不同的路由表来实现。

 # ip route add $VPN_NETWORK dev tun0 # ip route add default via $VPN_GATEWAY_IP table 1 # ip rule add iif tun0 table 1 

第一条路由进入缺省表(表254),第二条进入表2,第三条线将来自tun0接口的数据包绑定到第二个路由表,您可以在/etc/iproute2/rt_tables给这个表命名:

 # echo '1 vpn' >> /etc/iproute2/rt_tables 

如果您的VPN网关是10.8.0.1/16 ,您将不得不input:

 # ip route add 10.8.0.0/16 dev tun0 # ip route add default via 10.8.0.1 table vpn # ip rule add iif tun0 table vpn 

这叫做Policy Routing ,你必须在你的内核configuration中启用CONFIG_IP_MULTIPLE_TABLE才能工作。