仅为选定的应用程序使用 VPN 连接

仅为选定的应用程序使用 VPN 连接

我可以访问 VPN,但只想将其用于某些应用程序,而不是全部。

例如:
如果我连接到 VPN,我只希望 Opera 和 Newsbin 应用程序使用该 VPN 连接。所有其他应用程序(例如 Outlook)都应使用正常的互联网连接(当 VPN 已连接/打开时)。

据我所知这是不可能的,但我也不太确定。所以我的问题是:这可行吗?

答案1

不是。不是使用正常方法。路由就是路由。路由在 OSI 模型的较低层运行。您需要做的是让它在应用程序级别(更高层)了解情况,以便它可以检测到您正在使用的程序等。普通路由器不允许您根据应用程序或端口号配置路由。

不过我认为这是可能的。路由器可以看到端口,因此您可以按端口号过滤它们,并将流量发送到不同的路由。我确信我之前读过一些关于思科路由器的文章,它们可以做到这一点。但它们并不便宜,而且它们是需要大量配置的商用路由器,我猜你想要一些简单的家用路由器。

总结来说,路由器需要这个功能,而普通家用路由器甚至商用路由器都不支持这些功能。只有 Cisco 和 Sonicwall 的高级产品线才提供这些功能。

答案2

至少在 Linux 上可以实现这一点(我也在考虑 BSD 和 OS X)。你可以这样做:

  • 为所有 VPN 流量创建一个额外的用户。
  • 通过 VPN 创建一个包含 1 条默认路由的额外路由表。
  • 通过 Iptables 配置 Netfilter,以便对来自特定用户 ID 的所有流量使用另一个路由表。
  • 以自己的用户身份运行应使用 VPN 的应用程序。例如使用“sudo”。

有脚本可以完成上述步骤这里或者有其他指南这里

这里有一个详细指南用于通过 VPN 路由传输(使用您自己的 VPN 服务器)。

答案3

您可以使用 Windows 防火墙来实现这一点(前提是您使用的是 Win 7 或 Vista)-我写了一篇关于这个的指南

  1. 像平常一样连接到您的 VPN。

  2. 打开网络和共享中心 - 右键单击​​任务栏中的 Internet 连接图标,然后选择“打开网络和共享中心”(见下文)

  3. 您应该看到“查看您的活动网络”下列出了(至少)两个网络 - 您的 VPN 连接和一个名为“网络”的网络 - 也就是您的 ISP 连接。确保您的 VPN 是“公共网络”,而您的 ISP 连接是“家庭网络”。如果您需要更改任一连接,请单击它,然后会出现一个选项窗口(见下文)。

  4. 转到控制面板并单击系统和安全(见下文)。

  5. 在出现的窗口中,单击 Windows 防火墙(见下文)。

  6. 在 Windows 防火墙窗口中,单击左侧窗格中的“高级设置”(如下所示)。注意:您必须以管理员身份登录才能更改防火墙设置。

  7. 您应该会看到一个标题为“高级安全 Windows 防火墙”的窗口。在此窗口中,单击“入站规则”(见下文)。

  8. 在右侧窗格中,您将看到一个新规则的选项。单击它(见下文)。

  9. 在新入站规则向导(应该会出现)中,执行以下操作:

    • 选择程序并单击下一步。

    • 选择您希望阻止除 VPN 连接之外的所有流量的程序,然后单击“下一步”。

    • 选择阻止连接。

    • 勾选“域”和“私人”。确保“公共”未勾选。

  10. 对出站规则重复步骤 9。

答案4

我在 Windows 上做过这个。这个想法是将传出的网络包绑定到 VPN 的接口。有人建议强制绑定IP为此,但多亏了这个答案我有一个使用代理的想法。这种方法的缺点是,要么你的应用必须有代理支持,要么你必须使用代理程序(请参阅这里这里)。这样做的好处是,您可以使用 FoxyProxy 或类似的附加组件将浏览器中 VPN 的使用限制在特定域中。

我用3代理采用SOCKS模式,并将外部接口绑定到VPN的IP,VPN连接采用OpenVPN。

在我的 .ovpn 文件(clientdev tun,我添加了以下几行:

route-nopull
route 0.0.0.0 0.0.0.0 vpn_gateway
pull-filter ignore "dhcp-option DNS "
script-security 2
up 'c:\path\to\up.cmd'
down 'c:\path\to\down.cmd'

route-nopull忽略从服务器推送的路由。对于你的情况,你可能需要注释掉 redirect-gateway。

route为这个接口添加一条路由,如果没有此行,即使应用程序绑定到该接口,也不会使用。

pull-filter保留推送的 DNS,否则它将route-nopull与推送的路由一起被丢弃。从 OpenVPN 2.4 开始支持此选项,如果您必须坚持使用 OpenVPN 2.3(适用于 Windows XP 的最新版本),则必须添加两dhcp-option DNS x.x.x.x行硬编码 IP。

script-security 2允许编写脚本。

up脚本:

cd %~dp0
echo auth none> 3proxy-openvpn.conf
echo internal 127.0.0.1>> 3proxy-openvpn.conf
echo external %4>> 3proxy-openvpn.conf
echo socks>> 3proxy-openvpn.conf
start /b 3proxy.exe 3proxy-openvpn.conf

down脚本:

taskkill /f /im 3proxy.exe

因此,使用此配置连接到 VPN 后,3proxy.exe将启动进程,并且在端口上运行具有 DNS 解析功能的本地主机限制的 SOCKS5 代理1080,现在只需将您的应用程序配置为使用localhost:1080SOCKS 代理。

相关内容