![如何仅将浏览器流量传递给 openvpn 连接](https://linux22.com/image/1352888/%E5%A6%82%E4%BD%95%E4%BB%85%E5%B0%86%E6%B5%8F%E8%A7%88%E5%99%A8%E6%B5%81%E9%87%8F%E4%BC%A0%E9%80%92%E7%BB%99%20openvpn%20%E8%BF%9E%E6%8E%A5.png)
我已成功建立 openvpn 连接。通过使用参数
redirect-gateway def1
dhcp-option DNS 10.8.0.1
所有流量都将通过 VPN,但我只希望特定应用程序(如浏览器(例如 Firefox))使用 openvpn 连接。所有其他流量都应通过常规网关。
我可以使用 socks/proxy 设置以某种方式将其指向 openvpn 链接吗?也许我可以使用 putty 来创建此链接?如果可以,该怎么做?
顺便说一句,这是在 Windows 操作系统上。
答案1
我遇到了这个问题,但找不到一个易于使用的解决方案。基本上,方法仍然是在 VPN 服务器中设置 SOCKS 服务器。我制作了这个 Docker 映像,使其真正可用
https://hub.docker.com/r/kizzx2/openvpn-client-socks/
启动它,然后将浏览器设置为使用 SOCKS 代理local.docker:1081
即使没有内置代理配置,大多数应用程序也可以强制执行此操作。请参阅代理链
答案2
是的,您可以使用 SOCKS 代理(或常规代理),只需确保到该代理的流量通过 VPN 即可。[当然,如果您使用 SSH,VPN 是多余的]。您可能希望删除“redirect-gateway def1”语句,可能将其完全删除或用“redirect-private”替换。
您需要注意,如果您的名称服务器不在 VPN 的另一端,DNS 流量可能会泄漏到您现有的网络中。
可以使用 Putty 来创建袜子连接。
Unix 方式(显然也适用于 Putty)- 从命令行
putty -D 8080 用户名@远程主机
(其中 8080 是 SOCKS 端口)
Windows 方式:从http://vectrosecurity.com/content/view/67/26/(如果该网站消失,请在此重复)
- 打开 PuTTY。
- 其中显示“主机名(或 IP 地址)”并且其下方有一个框,在框中输入您的 SSH 主机的名称。
- 在“已保存的会话”下输入此连接的名称,以便您以后记住它。例如,您可以将其命名为“SSH 代理”,这样您就知道这将是代理连接。
- 在左侧的“类别:”菜单中,如果“连接”菜单列表尚未展开,请展开它。如果“SSH”菜单列表尚未展开,请展开它。单击“隧道”(在“SSH”下方)。这将打开选项,您将在其中输入 PuTTY 的设置以创建隧道。
- 在“添加新转发端口:”下输入 9853
- 将“目的地”字段留空,但一定要选择其下方的“动态”选项。
- 单击‘添加’按钮添加此端口。
- 在左侧的“类别:”菜单中,单击“连接”。
- 在“保持连接间隔秒数(0 表示关闭)”框中输入 5。这样即使您离开计算机一段时间,您的连接仍会保持活动状态,并防止超时。
- 在左侧的“类别:”菜单中,单击最顶部的“会话”返回第一个屏幕。
- 单击“保存”按钮保存您刚刚输入的所有设置。以后您无需再次输入这些设置,每次想要连接到代理时,只需加载您保存的配置文件(打开 PuTTY 后双击即可)。
- 单击“打开”按钮打开与代理的连接。
- 连接后,系统会要求您输入用户名和密码。输入您帐户的用户名和密码。连接后,隧道将打开。使用完隧道后,输入 logout 并按 Enter。
答案3
如果您确实特别要求支持代理服务器的应用程序,那么答案很简单:使用代理服务器!
必须配置您的 VPN 连接,使其不会修改客户端的默认网关。这样,所有流量都会使用常规路由到达互联网。
我假设您的 VPN 连接使用10.20.30.0/24
子网,作为10.20.30.1
服务器的 IP 地址。
在 VPN 服务器上配置代理(squid,或者更轻量级的代理),并将其设置为监听 上的客户端10.20.30.1
。将浏览器(或其他任何程序)指向 上的代理10.20.30.1
。到此 IP 地址的流量将始终通过您的 VPN 连接路由。