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

Server 无法从外部IP访问Minecraft服务器,server,firewall,minecraft,nat,windows-firewall,Server,Firewall,Minecraft,Nat,Windows Firewall,概述 这是一个一般性错误,但我无法找到问题,因此无法找到解决方案。我正在我的本地主机(192.168.0.2)上的端口25565上托管Minecraft服务器。它可以通过其内部IP(localhost和192.168.0.2)从主机访问,但无法从外部IP访问(101.xxx.xx.xx) 你有没有试过再把它打开或关闭? 对。我重新启动了主机。服务器还说 [14:32:14][Server-thread/INFO][net.minecraft.Server.dedicated.DedicatedS

概述 这是一个一般性错误,但我无法找到问题,因此无法找到解决方案。我正在我的本地主机(
192.168.0.2
)上的端口
25565
上托管Minecraft服务器。它可以通过其内部IPlocalhost
192.168.0.2
)从主机访问,但无法从外部IP访问(
101.xxx.xx.xx

你有没有试过再把它打开或关闭? 对。我重新启动了主机。服务器还说

[14:32:14][Server-thread/INFO][net.minecraft.Server.dedicated.DedicatedServer]:在*上启动minecraft服务器:25565

所以这一定是真的

转船港? 我可以通过设备上托管的简单Node.JS服务器验证端口是否对HTTP开放。此可以通过
101.xxx.xx.xx:25565
在同一网络上的我的移动设备上访问,但在主机的浏览器上超时。此外,它在TCPUDP上转发

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

Wireshark和Nmap 我怀疑内部连接是问题所在,所以我使用了nmap。我在主机和网络上的另一个设备上运行它,我的Raspberry Pi(192.168.0.69)

在我的Raspberry Pi上
nmap-p 25565-T4-Pn-A-v 192.168.0.2
在我的Raspberry Pi上(
192.168.0.69
)返回

25565/tcp开放式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)返回了
过滤后的
。这就是为什么我认为有一个防火墙的方式

25565/tcp过滤地雷船

主机-本地地址

主机-外部地址

树莓皮-本地地址

树莓皮-外国地址

总结 我怀疑这一定是因为我试用了nmapwireshark后出现了防火墙入站连接问题。遗憾的是,我找不到它。我错过什么了吗

更新 答案可能是。虽然我不确定。这可能是一个NAT环回问题

脚注
  • 服务器正在运行

  • 当我尝试从外部地址连接时,没有服务器日志记录,即没有连接尝试的证据

  • 此LAN上还有其他服务器

  • 返回正确的信息。(服务器可见)

  • 给出了内部到外部到内部连接是问题所在的可能性

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

  • 在执行下面的测试时,我没有同时调用Node.JS和MC服务器

  • 这有点类似于我无法从外部ip ssh到我的raspberry pi的问题(
    101.xxx.xx.xx
    )。我只能通过内部ip连接到它(
    192.168.0.69

  • 这是Minecraft游戏输出的日志

  • 作为旁注,Wireshark和过滤器
    udp.port==25565 | | tcp.port==25565
    有三种不同的输出

对于从带有VPN的移动设备访问的Node.JSHTTP服务器,它会输出

对于从主机设备访问的Node.JSHTTP服务器,它会输出

对于Minecraft服务器,它输出

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

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

应将此规则添加到路由器(可在类似于
192.168.0.1
的位置访问)

解决方案2 这并不是解决问题,而只是回避问题。Minecraft服务器可以通过
localhost
192.168.0.2
访问,但不能通过外部IP访问

解决方案 可以从其他适配器访问网络地址。如果端口转发到Wi-Fi(与以太网适配器不同),则尝试从以太网连接访问该端口可能会使您绕过错误

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

NAT环回(发夹) 我的路由器(Telstra Arcadyan LH1000)不支持NAT环回,即可以从内部IP访问网络的外部地址。它直接将连接重写到另一个网络地址(在我的例子中是它自己),客户端拒绝了这个地址,因为
const { createServer } = require('http')

createServer((req, res) => {
    console.log('Request', req.url)
    res.end('Ok')
}).listen(25565)
/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