使用 OpenVPN 客户端进行端口转发

使用 OpenVPN 客户端进行端口转发

我遇到了所描述的相同问题使用 VPN 客户端进行端口转发,但没有成功。

我有一个 OpenVPN 访问服务器版本 2.5 和一个配置了站点到站点路由的客户端。客户端和服务器都可以使用私有IP地址相互通信。在客户端,有一个 Apache 服务器监听端口 8081。

目标是能够连接到OpenVPN服务器的公网IP,并让它把连接转发给客户端,这样用户就可以访问后面的Apache服务器了

我当前的设置是:

在此输入图像描述

sysctl -w net.ipv4.ip_forward=1

iptables -t nat -A PREROUTING -d 50.xxx.xxx.xxx -p tcp --dport 8081 -j DNAT --to-dest 192.168.2.86:8081

iptables -t nat -A POSTROUTING -d 192.168.2.86 -p tcp --dport 8081 -j SNAT --to-source 10.0.2.42

有什么简单的事情我做错了吗?谢谢。

答案1

该问题与 iptables 规则有关。通过添加以下规则,一切都会按预期进行:

iptables -t nat -I PREROUTING 1 -d {SERVER_LOCAL_IP_ADDRESS} -p tcp --dport {CLIENT_PORT} -j DNAT --to-dest {CLIENT_LOCAL_IP_ADDRESS}:{CLIENT_PORT}

iptables -t nat -I POSTROUTING 1 -d {CLIENT_LOCAL_IP_ADDRESS} -p tcp --dport {CLIENT_PORT} -j SNAT --to-source {VPN_GATEWAY_IP}

iptables -I FORWARD 1 -d {CLIENT_LOCAL_IP_ADDRESS} -p tcp --dport {CLIENT_PORT} -j ACCEPT

答案2

您的 SNAT 与不同的端口号 DNAT 和图表相匹配,因此只有当 OpenVPN 客户端作为路由器通过 OpenVPN 服务器返回互联网时,此设置才有效。

您可能应该将 32400 替换为 8081。

相关内容