Я успешно настроил DynDNS на своем маршрутизаторе, и теперь я могу подключиться к своему домашнему серверу за пределами моей локальной сети, используя мой пользовательский домен.

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

Я думал, что этого было достаточно, чтобы гарантировать, что сетевой трафик остается в локальной сети для запросов на мой домашний сервер.

Но я сделал простой тест, который, кажется, опровергает это.

Я изменил файл /etc /hosts моего ноутбука (подключенного к локальной сети), чтобы разрешить мой домен DynDNS в качестве локального IP-адреса моего сервера (например, 192.168.1.2)

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

Мой ноутбук не единственное устройство, которое будет использовать сервер. Кроме того, изменение туда и обратно файла hosts внутри / вне моей сети не является приемлемым вариантом. На самом деле я не понимаю, почему маршрутизатор недостаточно интеллектуален для перенаправления запросов.

Я что-то пропустил?

Единственный способ решить эту проблему - развернуть DNS-сервер в моей локальной сети?

1 ответ1

0

Нет, ваш маршрутизатор не выполняет "NAT loopback".

Есть два случая. Вы можете увидеть, что применимо, посмотрев на IP-адрес внешнего сетевого интерфейса вашего маршрутизатора (который может отличаться от вашего общедоступного IP-адреса, см. Ниже).

1) Ваш Интернет-провайдер выполняет NAT операторского уровня (очень вероятно, в Германии это почти наверняка).

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

Таким образом, он покинет вашу домашнюю сеть, но не покинет сеть вашего провайдера.

Существует механизм ICMP REDIRECT, чтобы сделать это быстрее в следующий раз, но ваш интернет-провайдер может или не может использовать его, а Fritzbox может или не может подчиниться.

OTOH, когда вы напрямую используете адрес вашего сервера, вот куда он пойдет.

2) Ваш провайдер не выполняет NAT операторского уровня. Пакет с вашим общедоступным IP-адресом будет направлен на ваш маршрутизатор, он определит, что это локальный IP-адрес, но все равно будет применять правила переадресации портов и отправит его обратно на ваш сервер.

Это все еще медленнее, чем отправка его непосредственно на сервер, но не так много, как в случае (1).

3) Ваш Fritzbox вполне способен управлять статическими IP-адресами. И это уже работает DNS-сервер. Вы можете отредактировать имя устройства в графическом интерфейсе, установить флажок «всегда один и тот же IP-адрес», и сервер будет доступен в xyz.fritz.box , всегда с одним и тем же IP-адресом.

Чего он не сделает, так это переопределит разрешение имен для имен за пределами своего домена (по крайней мере, я не думаю, что это может, возможно, стоит попробовать).

Поэтому, если вы хотите, чтобы ваше доменное имя DDNS разрешалось по разным IP-адресам, в зависимости от того, находитесь ли вы в домашней сети или за ее пределами, вам придется развернуть второй DNS-сервер. Или создайте скрипт для автоматического изменения /etc/hosts зависимости от того, к какому SSID он подключен и т.д.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .