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

时间:2020-03-24 03:39:36

标签: server firewall minecraft nat windows-firewall

https://i.stack.imgur.com/DBAaT.png

概述

这是一个普遍错误,但我无法找到问题所在,因此也无法找到解决方案。我在端口192.168.0.2上的 localhost 25565)上托管了Minecraft服务器。可以通过主机的内部IP localhost 192.168.0.2)从主机访问它,但不能从< strong>外部IP (101.xxx.xx.xx)。

您是否尝试过将其打开和关闭?

是的。我已经重新启动主机。服务器也说

[14:32:14] [Server thread/INFO] [net.minecraft.server.dedicated.DedicatedServer]: Starting Minecraft server on *:25565

所以它必须是真的。

端口已转发?

我可以通过设备上托管的简单Node.JS服务器验证端口 已打开 。可以通过同一网络上我的移动设备上的101.xxx.xx.xx:25565来访问此 ,但可以在主机浏览器上通过 times-out 进行访问。此外,它同时在 TCP UDP 上转发。

Proof of UDP and TCP forward

const { createServer } = require('http')

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

防火墙

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

Wireshark和Nmap

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

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

25565/tcp open minecraft Minecraft 1.12.2 (Protocol: 127, Message: Rebirth of the Night! (Optifine 1.12.2), Users: 0/6)

另外,相同命令,但目标(WAN IP)不同,返回相同的消息。

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

25565/tcp filtered minecraft

主机-本地地址

Host Local

主机-外部地址

Host Foreign

Raspberry Pi-当地地址

RasPi Local

Raspberry Pi-国外地址

RasPi Foreign

摘要

我怀疑这一定是由于我对 nmap wireshark 进行的试验导致了防火墙的入站连接问题。可悲的是,我找不到它。我想念什么吗?

更新

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

脚语

  • 服务器为 Rebirth of the Night v2.76.2

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

  • 此局域网上还有其他服务器

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

  • This article提供了内部到外部到内部到内部连接的问题的可能性。

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

  • 在进行以下测试时,我没有同时调用Node.JS和MC服务器。

  • 这有点类似于我无法从外部ip SSH到我的树莓派101.xxx.xx.xx)的问题。我只能通过内部ip(192.168.0.69连接到它。 PuTTY error

  • 这是Minecraft游戏输出中的日志 Minecraft Game Log - io.netty.channel

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

对于从具有VPN的移动设备访问的 Node.JS HTTP服务器,其输出 enter image description here

对于从主机设备访问的 Node.JS HTTP服务器,其输出 enter image description here

对于 Minecraft 服务器,其输出 enter image description here

1 个答案:

答案 0 :(得分:1)

NAT回送(发夹)

我的路由器(Telstra Arcadyan LH1000)不支持NAT环回,可以从内部IP访问网络的外部地址。它将连接直接重写为客户端拒绝的其他网络地址(在我的情况下为我自己),因为它不希望重写。

解决方案

有两种解决方案:大多数路由器不支持的伪装NAT规则使用内部IP 。此外,升级路由器固件可以解决此问题,但不太可能。就我而言,Technicolor调制解调器具有 full NAT loop back support ,但我无法获得。

Solution 1

此规则应添加到路由器(可通过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

解决方案2

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

解决方案?

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

TL; DR

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