我过去曾为几款游戏设置过服务器,其中既可以有本地网络之外的玩家加入,也可以有本地网络内的玩家加入,但不能同时加入。先加入的玩家会阻止另一个玩家加入。本地和“远程”(Internet)连接都连接到服务器主机上的同一网络接口。与第一个加入的玩家属于同一“类型”(本地或 Internet)的其他玩家可以连接,但其他“类型”的玩家则无法连接。如果所有这些玩家都断开连接,那么之前无法连接的其他“类型”的玩家将能够连接。
我故意省略了具体游戏的名称,因为我问的不是这些游戏。如果游戏软件是原因,那就这样吧。这个问题是关于可能造成问题的潜在网络问题。
- 能否解释一下网络为何会如此表现?
- 如果这是网络问题,有解决办法或解决方法吗?
- 如果这是软件/服务器问题,那么能否解释它是如何导致这种网络行为的?是否有任何不太具侵入性的解决方法,不需要更改拓扑?也许某种隧道/转发可以“欺骗”服务器?
细节
免责声明:我不是网络专家。
我有两个“链接”的 NAT 路由器。我将它们视为“内部”和“外部”。每个路由器都运行 DHCP,创建两个子网。(192.168.1-2.x)请注意,目前网络没有已知问题。每个人都可以访问互联网以及我期望的所有地址/服务。
服务器通常位于内部路由器后面。本地用户位于外部路由器后面,并通过端口转发进行连接(他们与服务器位于不同的子网中)。远程/互联网用户也通过端口转发通过外部路由器。 再次注意,每个场景都是独立运作的。只有当远程和“本地”客户端同时尝试连接时,才会有人被阻止。
使这变得更加奇怪的是(也许将软件视为罪魁祸首)是,如果我没有记错的话,本地连接和远程连接由于都是从不同的子网转发的,所以在服务器上看起来应该是相同的。
答案1
双重 NAT 是你的问题。
您的配置应该可以正常工作,但您遇到问题并不奇怪。真正的路由器在您的设置中可以正常工作,但 NAT 网关“路由器”堆叠在一起时可能会引发各种不必要的行为。
对此寻求解释是合理的,但是在配置“应该”工作的情况下,解释将在每个路由器如何实现 NAT 和/或端口转发中找到,甚至设备的用户指南也不会提供足够的技术细节。
如果您将游戏服务器移动到单个面向 Internet 的路由器/网关后面的子网,您的问题就会消失。