![將VPN連線路由到同一伺服器上的socks代理](https://rvso.com/image/1567462/%E5%B0%87VPN%E9%80%A3%E7%B7%9A%E8%B7%AF%E7%94%B1%E5%88%B0%E5%90%8C%E4%B8%80%E4%BC%BA%E6%9C%8D%E5%99%A8%E4%B8%8A%E7%9A%84socks%E4%BB%A3%E7%90%86.png)
我正在運行具有 OpenVPN 服務的 VPS。在同一台伺服器上,我還設定了一個本地襪子代理程式(它是Tor,但我認為這對於這種情況並不重要)。
我能否以某種方式將我的 VPN 連接路由到該襪子代理,而不需要對本地瀏覽器/設備設定進行任何更改?
我想要建立的連線看起來像
(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 等。將所有流量路由至Internet 的常規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 網路切換到常規網路連線。無需客戶端配置。