设置使用 vpn 连接的代理服务器

Sto*_*ojg 8 linux vpn proxy

我的想法是这样的:

我有要连接的外部 vpn 服务。但是我是否可以设置一个使用该 vpn 连接的本地代理服务器,以便通过该代理连接的应用程序使用 vpn?这适用于 Linux 系统。

欢迎提供提示和链接!

编辑:用例:也许还有另一种方法可以做到这一点。

Router #1 - Connects by the default net provided by ISP
Router #2 - Connects by PPTP VPN to another 'ISP'
Run Code Online (Sandbox Code Playgroud)

网络中的客户端默认连接到普通路由器 #1,所有流量都由它处理。客户端有一个不同的浏览器(opera),它通过路由器 #2 上的代理连接,并在 VPN 隧道的末端结束。

这清楚吗?

小智 8

六年后,我遇到了这个问题,根据接受的答案几乎让它失望了。截至今天,它并不复杂,使用策略路由。所有详细信息都可以在同一站点上获得,网址https://serverfault.com/a/389004/70774

就我而言,我必须首先确保 vpn 不是默认路由。您将如何实现这一点取决于您使用的连接管理器类型。

代理 (tinyproxy) 以其自己的用户运行,因此我使用以下命令标记来自该用户的所有包

iptables -t mangle -A OUTPUT -m owner --uid-owner 125 -j MARK --set-mark 2
Run Code Online (Sandbox Code Playgroud)

其中125是 tinyproxy 用户的 uid,2是一个任意数字,稍后匹配。

然后我指示路由系统使用一个特定的表来路由所有标有2.

ip rule add fwmark 2 table 3
Run Code Online (Sandbox Code Playgroud)

同样,这3只是一个任意数字。只是祈祷注意选择一个未使用的桌子(看看桌子上是否有你选择的东西ip route list table 3)。

然后我3用我的默认路由填充表:

ip route add default dev ppp0 via proto static scope link metric 1024
Run Code Online (Sandbox Code Playgroud)

最后一步是制定一个伪装规则,我不完全理解其必要性:

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

等等!

  • 一些有用的信息来理解这个答案: - ppp0 是隧道接口,通常它被命名为 tun0 ;- “ip route add default dev ppp0 via proto static scope link metric 1024”是错误的。您应该删除“via”关键字并在末尾添加“table 3”以避免更改所有系统的默认路由。 (3认同)

asd*_*min 0

尽管您描述的情况是不可能的(正在运行的应用程序无法覆盖系统路由表),但您可能有多种选择:

\n\n
    \n
  • 在您通过 VPN 连接的网络上设置代理,并让您的应用程序默认使用该代理。根据您的应用程序使用的协议,您可以选择多种代理
  • \n
  • ssh 到给定网络上的主机并利用称为动态转发的ssh-s 服务。这基本上是一个由 ssh 客户端组成的 SOCKS 代理。然后,您可以使用此代理设置您的应用程序或使用 tsocks(透明袜子)对其进行调整
  • \n
\n\n

人 ssh_config

\n\n
\n DynamicForward\n 指定通过安全通道转发本地计算机上的 TCP 端口,然后使用应用程序协议来确定从远程计算机连接到的位置。\n\n 该参数必须是[bind_address:]端口。可以通过将地址括在方括号中或使用替代的 syn\xe2\x80\x90\n 税收:[bind_address/]端口来指定 IPv6 地址。默认情况下,本地端口与 GatewayPorts 设置绑定在 accor\xe2\x80\x90\n dance 中。但是,可以使用显式的bind_address\n 将连接绑定到特定地址。\xe2\x80\x9clocalhost\xe2\x80\x9d 的bind_address 表示监听端口仅限本地使用,空地址或\xe2\x80\x98*\xe2\x80\x99 表示该端口\n 应可从所有接口使用。\n\n 当前支持 SOCKS4 和 SOCKS5 协议,并且 ssh(1)\n 将充当 SOCKS 服务器。可以指定多个转发,并且可以在命令行上给出附加转发。只有超级用户\n 可以转发特权端口。\n
\n