通过 OpenVPN 服务器进行端口转发

通过 OpenVPN 服务器进行端口转发

这是我的情况:

  1. 远程 OpenVPN 服务器 v2.3.2,1 个公网 IP,CentOS 6.4,2.6.32-042stab079.6
  2. Tunnelblick(OpenVPN 客户端)

我想要做的是通过 VPN 路由所有客户端流量 - 我已经做到了。但是,我在通过 VPN 转发客户端端口时遇到了问题。

例如,我需要端口 5780 来在客户端上举办游戏比赛,但我位于 VPN 后面,因此 VPN 会获取数据包。我希望 VPN 将端口 5780 上的每个数据包转发到我的客户端 IP 地址。

我该怎么做?请注意,远程服务器运行 CSF+LFD。

答案1

您应该通过 iptables 将数据包 NAT 到您的客户端:

iptables -t nat -A PREROUTING -p tcp --dport 5780 -i $external_Interface -j DNAT --to-destination $VPN_client_IP
iptables -t nat -A POSTROUTING -o $vpn_Interface -j MASQUERADE

更新:如果您的 FORWARD 策略设置为 DROP,您还需要设置 FORWARD 规则。如您所见这里,FORWARD 发生在 PREROUTING 和 POSTROUTING 之间,因此 DNAT 已经完成。这应该可以工作:

iptables -I FORWARD -i $external_Interface -d $VPN_client_IP --dport $port -j ACCEPT

相关内容