有一个应用程序使用VPN而其他人不在Linux?

我希望一个应用程序使用VPN连接,而另一个则不需要。

我使用的Xubuntu(从而XFCE),但我想要一个命令行/静态configuration解决scheme,如果可能的话。

有没有可能做到这一点,如果是的话如何?

一旦我想这样做,我在虚拟机(我喜欢VirtualBox)中运行该应用程序,并configuration来宾操作系统实例,使其所有的stream量完全是VPN路由。 可以说是相当矫枉过正,但是这意味着你不必担心所有的应用程序(以及任何产生的)数据包是否真正被路由到了你想要的位置。 现代虚拟机的无缝窗口和共享文件夹function意味着在虚拟机中使用应用程序也可以非常轻松。

最简单的方法是使用可以将自身暴露为SOCKS服务器的VPN,然后使用任何袜子包装工具(例如tsocks)都可以做到这一点。

否则iptables可以通过使用数据包标记,然后使用它来进行pathselect。

如果只是通过让VPN只为其添加相关路由而轻松实现的一个特定目的地。

当然,如果它只是一个应用程序,我会试图使它使用SSL,所以根本不需要VPN。

如果您需要使用的应用程序仅连接到特定地址(即:到工作机器的RDP会话),则可以使用路由表强制该通信量的目的地通过VPN链接,或使用iptables作为build议。

你可以尝试使用iptables的owner模块,如果你可以让有问题的应用程序作为一个特定的用户运行( man iptables ,searchowner并想到你可以做什么开始,我没有现成的解决scheme,我都不记得语法除此之外它使用--uid-owner命令行选项)。

由timday提出的解决scheme(使用openvz,xen或virtualbox在guest虚拟机实例中运行的应用程序)也应该可以工作,但是如果可以的话,您可能可以将有问题的进程限制为特定的用户。

定制应用程序在同一networking(子网)上所需的所有资源? 如果你可以把你的自定义应用程序所需的资源放在自己的网站上,那么使用一个中继VPN将很容易。 作为VPN链接的唯一资源将是自定义应用程序。 所以只有那个应用程序的stream量才会通过VPN,其他所有的stream量都会清空。

如果您使用的是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中。 上面的(完全组成的,未经testing的)示例通过VPN强制stream量到TCP端口4000。