Нет доступа с чужого IP к серверу Minecraft - PullRequest
2 голосов
/ 24 марта 2020

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

Обзор

Это общая ошибка, но я не могу найти проблему и, следовательно, решение. Я размещаю сервер Minecraft на моем localhost (192.168.0.2) через порт 25565. К нему можно получить доступ с хоста по его внутреннему IP ( localhost и 192.168.0.2), но к нему нельзя получить доступ с внешнего IP (101.xxx.xx.xx).

Вы пробовали включать и выключать его снова?

Да. Я перезапустил моего хозяина. Также на сервере написано

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

, поэтому это должно быть истиной.

Порт переадресован?

Я могу проверить, что порт открыт для HTTP через простой Node.JS сервер, размещенный на устройстве. Доступ к этому можно через 101.xxx.xx.xx:25565 на моем мобильном устройстве в той же сети, но timesout в браузере хоста. Кроме того, он пересылается на 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 , который блокирует внешние нераспознанные соединения inte rnet, и следовал обоим этим урокам, чтобы добавить исключения брандмауэра для Java и исключения портов . Я позволил своему модему 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 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 - внешний адрес

Host Foreign

Raspberry Pi - локальный адрес

RasPi Local

Raspberry Pi - внешний адрес

RasPi Foreign

Сводка

Я подозреваю, что это должно быть связано с проблемой входящего соединения с брандмауэром из-за моих испытаний с nmap и wireshark . К сожалению, я не могу найти это. Я что-то упустил?

Обновление

Ответ может быть здесь . хотя я не уверен. Это может быть проблема NAT Loopback .

Сноски

  • Сервер Возрождение ночи v2.76.2

  • Когда я пытаюсь подключиться с внешнего адреса, регистрация сервера не ведется, т.е. нет доказательств попытки подключения

  • В этой локальной сети есть другие серверы

  • M C Состояние сервера возвращает правильную информацию. (Сервер видим)

  • Эта статья дает возможность того, что внутреннее-внешнее соединение является внутренней проблемой.

    «LH1000 не поддерживает NAT, что означает, что даже если порты открыты, вы не можете подключиться к устройству в вашей сети с другого устройства в вашей сети, используя адрес модема publi c и номер порта устройства. "

  • При выполнении нижеприведенного тестирования я не вызывал сервер Node.JS и M C одновременно.

  • Это несколько напоминает проблему, когда я не могу s sh своему малиновому пи с внешнего ip (101.xxx.xx.xx). Я могу только подключен к нему через внутренний ip (192.168.0.69) PuTTY error

  • Это лог с выхода игры Minecraft Minecraft Game Log - io.netty.channel

  • Как примечание, Wireshark с фильтром udp.port == 25565 || tcp.port == 25565 имел три разных выхода.

Для HTTP-сервера Node.JS, к которому обращались с мобильного устройства с VPN выводится enter image description here

Для HTTP-сервера Node.JS, к которому осуществляется доступ с хост-устройства, выводится enter image description here

Для сервера Minecraft он выводит enter image description here

1 Ответ

1 голос
/ 26 марта 2020

NAT Loopback (Hairpinning)

Мой маршрутизатор (Telstra Arcadyan LH1000) не поддерживает обратную связь NAT l oop, где внешний адрес сети может быть доступен с внутреннего IP-адреса. Он переписывает соединение напрямую на другой сетевой адрес (сам в моем случае), который клиент отклоняет, поскольку не ожидает перезаписи.

Решения

Существует два решения: правило NAT маскарада , которое большинство маршрутизаторов не поддерживают, и с использованием внутреннего IP . Кроме того, обновление прошивки маршрутизатора может решить проблему, но это маловероятно. В моем случае модем Technicolor имеет полный NAT l oop задняя поддержка , но я не могу его получить.

Решение 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

Это не разрешение проблема, но просто избегание проблемы. Доступ к серверу Minecraft возможен по localhost и 192.168.0.2, но не по внешнему IP-адресу.

Решение?

Сетевой адрес может быть получен через другой адаптер. Если переадресация порта осуществляется по Wi-Fi (в отличие от адаптера Ethe rnet), то попытка получить к нему доступ через соединение Ethe rnet может позволить вам обойти ошибку.

TL; DR

Мой маршрутизатор не поддерживает доступ к собственной сети с внутреннего адреса. Измените правило или избегайте доступа к нему с внешнего IP-адреса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...