Невозможно получить собственное доменное имя из внутренней сети LAN

371
fracz

Кажется, что этот вопрос очень похож на то, что я внезапно не могу получить доступ к своему веб-серверу в локальной сети через внешний IP-адрес в глобальной сети, но мне ничего не помогло, поэтому я пытаюсь снова.

У меня есть маршрутизатор с адресом 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, ни настройки отражения NAT в моем маршрутизаторе, как это было предложено в вопросе, связанном выше. Я не настроил ничего в статической маршрутизации, и я не могу вспомнить, что я мог сделать, что вызвало бы такое поведение.

Мой роутер DrayTek Vigor2925.

1

2 ответа на вопрос

2
Spiff

Возможно, ваш маршрутизатор не поддерживает петлю NAT (AKA NAT Hairpinning). Обновите дистрибутив встроенного программного обеспечения (например, LEDE) или замените маршрутизатор на то, что имеет заводскую прошивку, поддерживающую Loopback NAT (например, базовую станцию ​​Apple AirPort).

AFAIU, NAT Loopback - это расширение, которое позволяет не выходить за пределы моей сети LAN, если целевое устройство уже существует. Если нет NAT Loopback - запрос должен выйти и потом вернуться. Я что-то пропустил? fracz 7 лет назад 0
@fracz Когда ваш маршрутизатор выполняет исходящий NAT для пакета, оба адреса источника и назначения пакета устанавливаются на общедоступный IP-адрес WAN вашего маршрутизатора. Ваш маршрутизатор нигде не «снаружи» для отправки. Ваш маршрутизатор должен быть достаточно умным, чтобы выполнять исходящий и входящий NAT на одном и том же пакете, потому что никто другой не сделает это за вас. Вот что такое NAT Loopback. Это не улучшение, это единственный способ, которым это может работать. Spiff 7 лет назад 2
1
fracz

Как предположил @Spiff, проблема, вероятно, заключается в отсутствии поддержки NAT Loopback.

Однако мне удалось справиться с этой ситуацией с помощью статической записи DNS в конфигурации моего маршрутизатора. В DrayTek он известен как функция LAN DNS и AFAIU, он похож на запись в hostsфайле на машине.

После добавления туда 192.168.1.100 example.comзаписи мой маршрутизатор начал отвечать 192.168.1.100адресом локальной сети на example.comзапрос DNS для каждого устройства в моей сети. Поэтому они могут связаться с локальным веб-сервером по доменному имени, хотя мой маршрутизатор не поддерживает глобальную петлю NAT.

Похожие вопросы