端口转发至 VPN 客户端

端口转发至 VPN 客户端

我遇到了一个似乎无法解决的问题。我在 VPS 上有一个 VPN 服务器。我可以连接我的客户端电脑(家庭局域网)。它按其应有的方式工作。我在客户端 PC 上获取 VPS IP 地址。

不过,我希望能够使用特定端口通过 VPN 连接到客户端 PC。我有一个 MineCraft 服务器,我希望能够通过 VPN 连接到 MC 服务器。

我启用了IP转发:

sysctl -w net.ipv4.ip_forward=1

尝试转发特定端口:

iptables -t nat -A PREROUTING -d 50.x.x.x -p tcp --dport 25565 -j DNAT --to-dest 10.98.0.2:25565

50.xxx 是我的 VPN 公共 IP 地址。 10.98.0.2 是客户端的本地(tun0) IP 地址。

由于某种原因它不起作用。tcpdump port 25565当我尝试连接到客户端时,VPN 服务器上会显示以下内容:

20:49:58.345498 IP MyInternetPublicIP.62336 > VPNPublicIP.25565: Flags [S], seq 2320085851, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
20:50:01.344059 IP MyInternetPublicIP.62336 > VPNPublicIP.25565: Flags [S], seq 2320085851, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
20:50:07.342439 IP MyInternetPublicIP.62336 > VPNPublicIP.25565: Flags [S], seq 2320085851, win 8192, options [mss 1460,nop,nop,sackOK], length 0

在客户端什么也没有显示。我确信我错过了一些东西,只是不知道是什么。

答案1

您必须允许在过滤器表中(在FORWARD链中或从那里调用的链中)进行转发,如下所示:

iptables -I FORWARD 1 -d 10.98.0.2 -p tcp --dport 25565 -j ACCEPT

如果客户端没有特殊配置来确保响应数据包通过 VPN 发送,您还必须配置 SNAT:

iptables -t nat -A POSTROUTING -m conntrack --ctstate DNAT -d 10.98.0.2 -p tcp --dport 25565 -j SNAT --to-source 10.98.0.1

假设10.98.0.1是VPS VPN地址。

相关内容