
Кажется, этот вопрос очень похож наЯ внезапно не могу получить доступ к своему веб-серверу в локальной сети через внешний IP-адрес WAN.но мне ничего не помогло, поэтому я пробую снова.
У меня есть маршрутизатор с WAN-адресом 1.2.3.4 и локальной сетью 192.168.1.1/24. У меня есть веб-сервер, работающий на 192.168.1.100.
В настройках маршрутизатора я изменил порт панели управления с 80 на 81, чтобы не мешать веб-серверу. Затем я добавил правило переадресации портов для TCP 80 -> 192.168.1.100:80. Наконец, я назначил доменное имя example.com на 1.2.3.4, чтобы доступ к example.com корректно направлялся на мой веб-сервер. Из мира.
Однако, когда я пытаюсь войти на example.com с любого из устройств, подключенных к 192.168.1.1/24, это не работает.
Я попытался диагностировать это с помощью ping, и домен правильно преобразуется в IP-адрес, так что, похоже, проблема не в DNS:
root@linux:~# ping example.com
PING example.com (1.2.3.4) 56(84) bytes of data.
64 bytes from 1.2.3.4.ip4.feromedia.eu (1.2.3.4): icmp_seq=1 ttl=63
Также traceroute останавливается на маршрутизаторе:
root@linux:~# traceroute example.com
traceroute to example.com (1.2.3.4), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 0.350 ms 0.256 ms 0.195 ms
2 * * *
3 * * *
4 * * *
Я не нашел ни NAT Loopback, ни NAT reflect settings в моем маршрутизаторе, как предлагалось в вопросе, ссылка на который приведена выше. Я ничего не настраивал в статической маршрутизации и не могу вспомнить ничего, что я мог бы сделать, чтобы вызвать такое поведение.
Мой роутер — DrayTek Vigor2925.
решение1
Ваш маршрутизатор, вероятно, не поддерживает NAT Loopback (AKA NAT Hairpinning). Обновите прошивку до дистрибутива стороннего производителя (например, LEDE) или замените маршрутизатор на что-то с заводской прошивкой, поддерживающее NAT Loopback (например, базовую станцию Apple AirPort).
решение2
Как предположил @Spiff, проблема, вероятно, в отсутствии поддержки NAT Loopback.
Однако мне удалось справиться с этой ситуацией с помощью статической записи DNS в конфигурации моего маршрутизатора. В DrayTek это известно какDNS-сервер локальной сетифункция и AFAIU, это похоже на запись в hosts
файле на машине.
После добавления 192.168.1.100 example.com
записи мой маршрутизатор начал отвечать адресом LAN 192.168.1.100
на example.com
запрос DNS для каждого устройства в моей сети. Таким образом, они могут достичь локального веб-сервера по доменному имени, хотя мой маршрутизатор не поддерживает NAT Loopback глобально.