Deleted Asked: 2009-08-21 03:42:27 +0800 CST2009-08-21 03:42:27 +0800 CST 2009-08-21 03:42:27 +0800 CST 在 Linux 中是否有一个应用程序使用 VPN 而其他应用程序不使用? 772 我希望一个应用程序使用 VPN 连接,而其他应用程序不使用。 我正在使用 Xubuntu(因此是 XFCE),但如果可能的话,我想要一个命令行/静态配置解决方案。 是否有可能实现它,如果可以,如何实现? vpn linux networking 6 个回答 Voted timday 2009-08-21T04:25:47+08:002009-08-21T04:25:47+08:00 一旦我想这样做并且我在虚拟机中运行应用程序(我喜欢 VirtualBox)并配置来宾操作系统实例,因此它的所有流量都完全通过 VPN 路由。可以说是矫枉过正,但这意味着您不必担心所有应用程序(以及它产生的任何东西)数据包是否实际上都按照您的意愿进行路由。现代 VM 的无缝窗口和共享文件夹功能意味着在 VM 中使用该应用程序也可以相当轻松。 LapTop006 2009-08-21T04:00:28+08:002009-08-21T04:00:28+08:00 最简单的方法是使用可以将自己暴露为 SOCKS 服务器的 VPN,然后任何 socks 包装工具(例如 tsocks)都可以做到这一点。 否则 iptables 可以通过使用数据包标记然后使用它进行路径选择来完成它。 如果它只是到一个特定的目的地,可以通过让 VPN 只添加相关路由而不添加其他路由来轻松完成。 当然,如果它只是一个应用程序,我会尝试让它使用 SSL,所以根本不需要 VPN。 Adam 2009-08-21T05:34:56+08:002009-08-21T05:34:56+08:00 如果您需要使用的应用程序仅连接到特定地址(即:与工作机器的 RDP 会话),您可以使用路由表强制该流量的目的地通过 VPN 链接,或使用 iptables 作为建议。 Michael Krelin - hacker 2009-08-21T04:41:55+08:002009-08-21T04:41:55+08:00 owner如果您可以使有问题的应用程序以特定用户身份运行,您可以尝试使用 iptables模块 ( man iptables,搜索owner并考虑您可以从那里开始做什么,我没有现成的解决方案,我也不记得它使用的语法--uid-owner命令行选项)。 timday 提出的解决方案(让应用程序在使用 openvz、xen 或 virtualbox 的来宾实例中运行)也应该可以工作,但如果你可以这样做,你可能可以将有问题的进程限制为特定用户。 Laura Thomas 2009-08-21T05:41:20+08:002009-08-21T05:41:20+08:00 定制化 App 所需的所有资源是否都在同一个网络(子网)上?如果您可以自己将自定义应用程序所需的资源放在网络上,那么使用中继 VPN 会很容易。由于 VPN 链接上的唯一资源是自定义应用程序。因此,只有该应用程序的流量会通过 VPN,而所有其他流量都会以明文方式流出。 Gerald Combs 2009-08-21T08:22:21+08:002009-08-21T08:22:21+08:00 如果您使用 IPSEC,您应该能够添加与特定 TCP 或 UDP 端口匹配的安全策略。对于 Xubuntu,您必须安装 ipsec-tools 并放置类似 spdadd 10.1.1.0/24 10.2.2.0/24[4000] tcp -P in ipsec esp/tunnel//require; 在 /etc/ipsec-tools.conf 中。上面的(完全虚构,未经测试)示例强制流量通过 VPN 到 TCP 端口 4000。
一旦我想这样做并且我在虚拟机中运行应用程序(我喜欢 VirtualBox)并配置来宾操作系统实例,因此它的所有流量都完全通过 VPN 路由。可以说是矫枉过正,但这意味着您不必担心所有应用程序(以及它产生的任何东西)数据包是否实际上都按照您的意愿进行路由。现代 VM 的无缝窗口和共享文件夹功能意味着在 VM 中使用该应用程序也可以相当轻松。
最简单的方法是使用可以将自己暴露为 SOCKS 服务器的 VPN,然后任何 socks 包装工具(例如 tsocks)都可以做到这一点。
否则 iptables 可以通过使用数据包标记然后使用它进行路径选择来完成它。
如果它只是到一个特定的目的地,可以通过让 VPN 只添加相关路由而不添加其他路由来轻松完成。
当然,如果它只是一个应用程序,我会尝试让它使用 SSL,所以根本不需要 VPN。
如果您需要使用的应用程序仅连接到特定地址(即:与工作机器的 RDP 会话),您可以使用路由表强制该流量的目的地通过 VPN 链接,或使用 iptables 作为建议。
owner
如果您可以使有问题的应用程序以特定用户身份运行,您可以尝试使用 iptables模块 (man iptables
,搜索owner
并考虑您可以从那里开始做什么,我没有现成的解决方案,我也不记得它使用的语法--uid-owner
命令行选项)。timday 提出的解决方案(让应用程序在使用 openvz、xen 或 virtualbox 的来宾实例中运行)也应该可以工作,但如果你可以这样做,你可能可以将有问题的进程限制为特定用户。
定制化 App 所需的所有资源是否都在同一个网络(子网)上?如果您可以自己将自定义应用程序所需的资源放在网络上,那么使用中继 VPN 会很容易。由于 VPN 链接上的唯一资源是自定义应用程序。因此,只有该应用程序的流量会通过 VPN,而所有其他流量都会以明文方式流出。
如果您使用 IPSEC,您应该能够添加与特定 TCP 或 UDP 端口匹配的安全策略。对于 Xubuntu,您必须安装 ipsec-tools 并放置类似
在 /etc/ipsec-tools.conf 中。上面的(完全虚构,未经测试)示例强制流量通过 VPN 到 TCP 端口 4000。