我一直在尝试正确端口转发我的 VPN 服务器,但没有成功。我运行一个 OpenVPN 访问服务器(按照指南制作这里)在 Azure 上,并希望用户连接到 VPN 公共 IP,这会将他们转发到我的实际服务器公共 IP(最后有直观的解释)。
已经有非常类似的帖子了这里和那里。因此,我之前尝试了很多事情并研究了很多问题,即这,这,这,这(甚至可能更多),以及某些文章,例如这,这和那,其他人也可能如此。我尝试过跑步这根据我的情况,也无济于事。
我尝试在访问服务器的用户权限中添加VPN服务器的公共IP,但没有成功:
51.x.x.x:tcp/63394
51.x.x.x:udp/63394
51.x.x.x:tcp/23394
51.x.x.x:udp/23394
51.x.x.x:tcp/29339
51.x.x.x:udp/29339
我也尝试过在公共IP和局域网IP上运行游戏服务器,但这并没有什么区别。我可以通过 10.0.1.4 访问 OpenVPN AS 管理 Web UI,这让我认为设置是正确的。我还在路由器上添加了端口转发和流量规则进行测试,但这也没有效果(tun0 接口端口转发到 PC 的 lan 接口 lan IP,流量规则 vpn 区域到 lan 区域 - 接受)。
我还在 Azure 中为 VM 添加了入站和出站规则。这也没有帮助。我不确定这是由于操作系统还是Azure造成的。我也不确定 OpenVPN 是否侦听端口 63394,但即使该端口上有 DMZ,我也无法连接到该端口。
可以查看当前路由器和VPN Server路由这里。
信息量有点大,我似乎无法再独自思考。
编辑:我已经能够从外部(通过 ping VPN 服务器的公共 IP)和从 VPN 服务器内部(通过 ping 10.0.2.25)对游戏服务器 PC 执行 ping 操作。我也可以使用 10.0.2.25 IP 连接到服务器,但是无法连接到 VPN 服务器的公共 IP。有什么想法吗?
答案1
正如一些帖子中提到的这里和那里,显然我所要做的就是通过添加以下内容在客户端用户权限上启用 DMZ:
{Router_Public_IP}:{tcp or udp}/{port}
{VPN_Public_IP}:...
{VPN_Private_IP}:...
{VPN_Client_Private_IP}:...
它一开始不起作用的原因是因为我没有意识到(准确地说 - 我没有找到任何相关信息)从游戏服务器 PC 连接游戏客户端到 VPN 公共 IP,我会无法建立连接(由于超出我知识范围的原因)。
帮助我理解问题的是,我意识到我应该 ping 这个方案的每个部分,看看我的问题出在哪里。通过从 VPN 服务器 ping 10.0.2.25 和从 PC/路由器 ping 10.0.2.4,我了解到连接正常。使用 nmap 从 VPN 服务器到 10.0.2.25,我发现端口是否打开,并更改了路由器端口转发以使它们正常工作。通过使用 nmap 从路由器/VPN 服务器到 VPN 服务器公共 IP,我大致了解了游戏服务器运行时端口是否被过滤/打开。当我发现 ping 确实到达了游戏服务器时,我明白问题出在我这边。
回到最初,我最终做了的是这样的:
89.xx.xx.xx:{tcp or udp}/63394
51.xx.xx.xx:{tcp or udp}/63394
10.0.2.4:{tcp or udp}/63394
10.0.2.25:{tcp or udp}/63394
我不知道为什么,但这解决了我的端口问题。
感谢大家的帮助和提供建议。也感谢论坛之外的朋友们对我的帮助。
答案2
听起来您还没有设置路由,因此来自 OpenVPN SERVER 的流量不知道如何到达游戏服务器 PC。
在 OpenVPN 服务器上,您需要扩展 OpenVPN 配置以提供到 192.168.xx/24 的路由。同样,除非您的 OpenWRT 设备处理 Game Server PC 的默认路由,否则您需要通过 10.0.1.25 在 Game Server PC 10.0.1.0/24 上添加路由。此外,您还要确保游戏服务器 PC 始终连接到相同的隧道 IP 地址(示例中为 10.0.1.25)。
服务器配置:
route 192.168.x.x 255.255.255.0 10.0.1.25
如果基于 Linux,游戏服务器 PC 配置可能是这样的。替换?.?
为 OpenWRT 设备的适当地址八位字节,
route add 10.0.1.0/24 gw 192.168.?.?