将 VPN 连接路由到同一服务器上的 socks 代理

将 VPN 连接路由到同一服务器上的 socks 代理

我正在运行一个带有 OpenVPN 服务的 VPS。在同一台服务器上,我还设置了一个本地 socks 代理(它是 Tor,但我认为在这种情况下它并不重要)。

我是否可以以某种方式将我的 VPN 连接路由到该 Socks 代理,而无需更改我的本地浏览器/设备设置?

我想要设置的连接看起来像

(my device) -> VPN tunnel -> (VPN server -> Tor SOCKS proxy) -> Tor network
                             (this connection is inside VPS)

我看到两个选择

1)路由完全在服务器上进行,对客户端透明

2)VPN 推送 socks 代理选项(因为它可以推送路由、DNS 服务器等)

但我不知道如何实现这两者。

我经常使用 OpenVPN 来绕过阻止,并且我想使用相同的例程从 Windows 和 Android 设备连接到 Tor 网络,而不必费心更改代理设置、运行本地 tor/orbot 等。理想情况下,我计划将它与常规 VPN 连接一起运行,将所有流量路由到互联网(这已经设置好并且运行良好),但在不同的端口上。

答案1

终于到了。

首先,您需要运行另一个 OpenVPN 实例。只需复制 openvpn/server.conf 并更改

port [some free port]
server [another subnet, if your first instance was on 10.8.0.0, set it to 10.8.1.0] 255.255.255.0
push "dhcp-option DNS [we will use TOR DNS, so this will be TOR proxy IP, e.g. 10.8.1.1]"

您可能需要生成另一个密钥对。

然后以透明代理模式启动 TOR(请注意,官方文档将此模式列为潜在不安全模式,请参阅https://trac.torproject.org/projects/tor/wiki/doc/TransparentProxy了解详情)。它将充当您的网关和 DNS 服务器。更改默认torrc文件附加此配置

VirtualAddrNetworkIPv4 10.192.0.0/10
AutomapHostsOnResolve 1
TransPort [address in your subnet, e.g. 10.8.1.1]:9040 
DNSPort [same, 10.8.1.1]:53

最后将所有子网请求路由到 TOR 代理(DNS 流量的特殊配置)

iptables -t nat -A PREROUTING -s [your subnet, e.g. 10.8.1.0/24] -p udp -m udp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -A PREROUTING -s [your subnet, e.g. 10.8.1.0/24] -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040

确保防火墙允许内部 10.8.1.0 子网流量。

连接到不同的端口将允许您通过 VPN 从 TOR 网络切换到常规互联网连接。无需客户端配置。

相关内容