我尝试在家里设置 Minecraft 服务器。我有一个 pppoe 连接。我的理解是我的路由器连接到 ISP 的路由器。
我的路由器设置上显示的 IP 与我的公共 IP 不同。
当我尝试访问服务器时,我只能从路由器上显示的 IP 访问,而不能从公共 IP 访问。因此,只有住在我家楼里并使用相同 ISP 的人才能连接,其他人则不能。
我的理解正确吗?
有解决方法吗?例如,一个外部服务器充当中介,客户端将数据发送到服务器,服务器将数据重定向到我的电脑,然后我的电脑处理数据并将数据发送回外部服务器,外部服务器再将数据发送到客户端(可能存在类似的东西,但我不知道它叫什么)。
答案1
我的路由器设置上显示的 IP 与我的公共 IP 不同。
这通常意味着您的 ISP 没有足够的公共 IP 供其所有客户使用(和/或认为这是向您收取公共 IP 地址费用的好机会)。因此,您的路由器位于第二层 NAT 之后,并与大楼内的其他客户共享公共地址 - 这种做法称为运营商级 NAT。
(或者,这可能意味着您的 PPPoE 连接实际上并没有完全连接到 ISP,而只是连接到了建筑物自己的中央路由器 - 该路由器再次只有一个 IP 地址并强制建筑物内的每个人共享。通常不称为 CGNAT,但最终几乎是同一件事。)
无论如何,这种行为实际上并不是 PPPoE 的一般特征——它特定于如何你的 ISP配置其 PPPoE 服务。
有办法解决这个问题吗?例如,一个外部服务器充当中介,这样客户端将数据发送到服务器,服务器将数据重定向到我的电脑,然后我的电脑处理数据并将数据发送回外部服务器,外部服务器又将数据发送给客户端
好吧,如果它需要成为任何基于 IP 的应用程序的通用解决方案,那么您基本上就是在描述 VPN 服务器。每个 VPN 连接都会建立一个允许双向交换数据包的隧道。
大多数商业 VPN 提供商不允许传入连接(因为他们更注重隐私),但是一些确实有销售此类服务,甚至可以提供专用于您的 VPN 连接的公共 IP 地址。(尽管租用通用 VPS / 云服务器并在其上设置自己的 VPN 通常更简单。)
或者,如果 Minecraft 只需要 TCP,您也可以使用任何 SSH 服务器作为中继(如果您拥有该服务器的管理员权限)。只要服务器配置为允许它(GatewayPorts 选项),您就可以使用大多数 SSH 客户端中的“远程转发”功能来配置中继连接。
还有特定于应用程序的中继服务,这些服务(与承载任意 IP 数据包的 VPN 不同)仅支持特定协议,例如仅支持 TCP,甚至仅支持 HTTP。例如,多人游戏通常使用中继服务器。一种通用协议是 TURN,但仍然需要编写程序才能使用它;它不能简单地固定在上面。