提问者:小点点

无法从外部IP访问Minecraft服务器


这是一个一般的错误,但我无法找到问题和解决方案。我的本地主机(192.168.0.2)上的Minecraft服务器位于端口25565上。可以通过主机的内部IP(localhost和192.168.0.2)访问它,但无法通过外部IP(101.xxx.xx.xx)访问它。

是的。我重新启动了主机。服务器上还说

[14:32:14][服务器线程/信息][Net.Minecraft.Server.Deciated.DeciatedServer]:在*:25565上启动Minecraft服务器

所以这一定是真的。

我可以通过驻留在设备上的一个简单的node.js服务器来验证端口是否对HTTP开放。这可以通过101.xxx.xx.xx:25565在同一网络上的移动设备上访问,但在主机的浏览器上会超时。此外,它在TCP和UDP上转发。

const { createServer } = require('http')

createServer((req, res) => {
    console.log('Request', req.url)
    res.end('Ok')
}).listen(25565)

此外,我修改了我的防火墙:Windows和防病毒。我关闭了Avast Web Shield,它阻止了外部无法识别的internet连接,并按照这两个教程添加Java防火墙例外和端口例外。我允许我的Telstra Arcadyan调制解调器保留它的防火墙,因为我仍然可以从国外地址访问我的内部网络。

25565/TCP open minecraft minecraft 1.12.2(协议:127,消息:夜之重生!(Optifine 1.12.2),用户:0/6)

此外,相同的命令,但具有不同的目的地(WAN IP),返回相同的消息。

在我的Windows主机设备上,内部IP(192.168.0.2)的结果相同,但外部IP(101.xxx.xx.xx)返回filtered。这主要是为什么我认为有一个防火墙的方式。

我怀疑这一定是因为我试用nmap和Wireshark时出现了入站连接到防火墙的问题。很遗憾,我找不到它。我是不是漏掉了什么?

答案可能就在这里。虽然我不确定。可能是NAT环回问题。

>

  • 服务器是夜之重生v2.76.2

    这篇文章给出了内部到外部再到内部的联系是问题的可能性。

    “LH1000不支持NAT,这意味着即使端口打开,您也不能使用调制解调器的公有地址和设备的端口号从网络上的另一个设备连接到网络上的设备。”

    在进行下面的测试时,我没有同时调用node.js和MC服务器。

    作为附带说明,具有过滤器udp.port==25565 tcp.port==25565的Wireshark有三个不同的输出。


  • 共1个答案

    匿名用户

    我的路由器(Telstra Arcadyan LH1000)不支持NAT环回,网络的外部地址可以通过内部IP访问。它直接将连接重写到另一个网络地址(在我的例子中是它自己),而客户端拒绝了这个地址,因为它不期望重写。

    有两种解决方案:大多数路由器不支持的伪装NAT规则和使用内部IP。此外,升级路由器固件可能会解决问题,但不太可能。在我的情况下,Technicolor调制解调器有完全的NAT回环支持,但我无法得到一个。

    应将此规则添加到路由器(可在192.168.0.1中访问)。

    /ip firewall nat
        add chain=srcnat src-address=192.168.1.0/24 \
        dst-address=192.168.1.2 protocol=tcp dst-port=80 \
        out-interface=LAN action=masquerade
    

    这不是解决问题,而只是回避问题。可以在localhost192.168.0.2上访问Minecraft服务器,但不能在外部IP上访问。

    可以从其他适配器访问网络地址。如果端口转发是到Wi-Fi(不同于以太网适配器),则尝试从以太网连接访问它可能会允许您绕过错误。

    我的路由器不支持从内部地址访问自己的网络。更改规则或避免从其外部IP访问该规则。