如何配置计算机B实现流量转发,以支持计算机C通过B连接计算机A的VPN Server
如何配置计算机B实现流量转发,以支持计算机C通过B连接计算机A的VPN Server
嘿,我来帮你捋清楚这个问题!其实你完全不需要额外搭建第二个VPN,核心就是让B变成一个「流量中转站」,把C发过来的VPN请求转发到A就行。下面分Linux和Windows两种常见系统给你具体操作步骤:
一、如果计算机B是Linux系统
1. 开启IP转发功能
Linux默认禁用了IP转发,得先打开它:
- 编辑
/etc/sysctl.conf文件,找到net.ipv4.ip_forward=1这一行,去掉前面的注释符号#; - 执行命令
sudo sysctl -p让配置立即生效。
2. 设置iptables转发规则
假设你的VPN用的是常见的OpenVPN端口(UDP 1194),A的内网IP是192.168.1.100,B的内网IP是192.168.2.5,执行以下命令:
# 把到B的1194端口的UDP流量转发到A的1194端口 sudo iptables -t nat -A PREROUTING -p udp --dport 1194 -j DNAT --to-destination 192.168.1.100:1194 # 让A返回的流量能正确回到B,再转给C sudo iptables -t nat -A POSTROUTING -p udp -d 192.168.1.100 --dport 1194 -j SNAT --to-source 192.168.2.5 # 允许这个转发的流量通过B的防火墙 sudo iptables -A FORWARD -p udp -d 192.168.1.100 --dport 1194 -j ACCEPT
如果你的VPN用的是TCP端口(比如TCP 443),把上面的udp改成tcp就行。
3. 保存规则避免重启失效
不同Linux发行版保存规则的命令略有不同:
- Ubuntu/Debian:
sudo iptables-save > /etc/iptables/rules.v4 - CentOS/RHEL:
sudo service iptables save
4. 计算机C的配置
把C的VPN客户端服务器地址改成B的IP地址,端口保持原来的1194,连接后流量就会自动通过B中转到A的VPN服务器了。
二、如果计算机B是Windows系统
1. 开启IP转发功能
- 按下Win+R输入
regedit打开注册表编辑器; - 定位到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters; - 找到
IPEnableRouter键,把它的数值改成1; - 重启计算机让配置生效。
2. 设置端口转发规则
打开管理员身份的命令提示符,执行以下命令(同样假设A的IP是192.168.1.100,VPN端口1194 UDP):
netsh interface portproxy add v4tov4 listenport=1194 listenaddress=0.0.0.0 connectport=1194 connectaddress=192.168.1.100 protocol=udp
如果是TCP端口,把末尾的udp改成tcp即可。
3. 配置Windows防火墙放行流量
- 打开「Windows Defender防火墙高级设置」;
- 新建入站规则:允许UDP(或TCP)1194端口的连接;
- 同时确保防火墙允许「远程访问(IP-in-IP)」相关的流量,或者直接放行转发的端口。
4. 计算机C的配置
和Linux场景一样,把C的VPN客户端服务器地址改成B的IP,端口不变,就能通过B连接到A的VPN了。
额外注意事项
- 先确认B能正常ping通A,并且A的防火墙允许来自B的VPN端口(1194)的连接,不然转发了也没用;
- 如果B和A不在同一内网,要确保A的路由能把返回的流量送回B,Linux下的SNAT规则已经帮你处理了这个问题,Windows如果遇到返回流量不通的情况,可能需要借助第三方工具或者调整路由表。
备注:内容来源于stack exchange,提问作者Aiden
相关产品推荐
相关产品推荐

