我想使用 PPTP 或 OpenVPN 作为 socks 代理,这样一来,我不用通过它来传输来自我电脑的所有流量,而是使用该连接来创建可以与任何受支持的程序一起使用的 SOCKS 或 HTTP 代理。
我该如何在 Linux 和 Windows 上执行此操作(当然不是同时执行)?
答案1
是的,你可以这样做。
您需要连接到 VPN,但不能让其接管整个网络,同时仍可使用 VPN 的界面。我已使用 OpenVPN 实现了这一点,方法是在配置文件中添加以下几行:
route-noexec # Don't add or remove routes automatically script-security 2 # Allow user-defined scripts to be called down down.sh # Run script called "down.sh" when connection goes down up up.sh # Run script called "up.sh" when connection comes up
up.sh
脚本#!/bin/sh VPN_IP=$ifconfig_local VPN_GATEWAY=$route_vpn_gateway # Route packets from the VPN's IP address to the VPN's gateway ip rule add from $VPN_IP table vpn ip route add default via $VPN_GATEWAY table vpn ip route flush cache
down.sh
脚本#!/bin/sh VPN_IP=$ifconfig_local VPN_GATEWAY=$route_vpn_gateway # Flush table and delete the rule ip route flush table vpn ip rule del from $VPN_IP table vpn ip route flush cache
- 为了使脚本正常工作,您需要
vpn
通过发出以下命令创建一个名为 的新路由表:echo 1 vpn >> /etc/iproute2/rt_tables
- 您只需执行一次。脚本实现策略路由。其目的是确保通过 VPN 隧道发送的任何数据包都被路由到适当的网关地址(即 VPN 的默认路由已正确设置,但仅由直接连接到隧道的程序使用)。
- 通过以下命令启动 VPN 连接:
openvpn config-file.conf
- 您的计算机现在将有一个可直接使用的额外接口,称为
tun0
。某些程序(例如 qBittorrent)将允许您指定要连接的接口。选择tun0
可确保程序的所有网络流量都使用 VPN。
- 您的计算机现在将有一个可直接使用的额外接口,称为
为了实现楼主要求的目标,你可以安装名为但丁。
- Dante 的部分配置是设置内部和外部接口。
- 对于内部,根据您想要连接的位置,使用环回接口(即
lo
)或主网络接口(即eth0
)。 - 对于外部,使用
tun0
,确保所有通过 socks 的网络流量都通过 VPN 路由。
- 对于内部,根据您想要连接的位置,使用环回接口(即
例子openvpn.conf
client
dev tun0
remote some-openvpn-server.somewhere.net 53 # Replace this by a real server url
proto udp
nobind
persist-key
persist-tun
tls-auth Wdc.key 1
ca ca.crt
cipher AES-256-CBC
comp-lzo
verb 1
mute 20
float
route-method exe
route-delay 2
route-noexec # Stop the connection taking over the whole machine
up up.sh # Run the script called "up" when the connection comes up
down down.sh # Run the script called "down" when the connection goes down
script-security 2 # Allow scripts to be called
auth-user-pass me # Use the login credentials from the file called "me"
auth-retry interact
explicit-exit-notify 2
ifconfig-nowarn
auth-nocache
答案2
答案3
你需要这样的东西作为 SOCKS5 服务器的 OpenVPN、L2TP 或 PPTP 客户端 | linux 可能是某个容器或虚拟机充当桥梁 - 它将具有 pptp 接口和 socks 代理服务器。您需要以某种方式通过您喜欢的任何其他工具将 socks 流量发送到为服务配置的端口(某些端口转发)