Вопрос или проблема
Как я могу надежно адресовать разные машины в моей сети?
Раньше я всегда использовал суффикс .local
для общения с компьютерами в моей локальной сети. Однако с новым маршрутизатором .local
редко (хотя иногда) работает. Я обнаружил, что .home
и .lan
оба обычно работают, но не всегда.
.-------. .--------. .-----.
| модем |---| маршрутизатор |))))))(wifi))))))| foo |
.-------. .--------. v .-----.
|| | v
/_^_^_\ | \))))))).-----.
/ облако \ | | bar |
\-_-_-/ .-----. .-----.
| baz |
.-----.
Итак, из терминала на foo
, я могу попробовать:
ssh bar.local
ssh bar.home
ssh bar.lan
ssh baz.local
ssh baz.home
ssh baz.lan
иногда некоторые из этих суффиксов работают, а некоторые нет, но я не знаю, как предсказать, какие или когда.
foo
, bar
и baz
все современные системы Linux или Android, и у всех систем Linux установлен (или может быть установлен) avahi-daemon или другие reasonably-available пакеты.
(Я не хочу настраивать статические IP-адреса: я хотел бы продолжать использовать DHCP (от маршрутизатора) для каждой машины, и даже если бы я согласился на статические адреса, я хотел бы иметь возможность вводить имена хостов в неразрешенных Android-устройствах, где я не могу отредактировать файл hosts, чтобы сопоставить выбранное имя хоста с IP-адресом.)
Нет RFC, который бы указывал на .lan
и .home
. Таким образом, решение о том, какие псевдо-TLD (доменные имена верхнего уровня) по умолчанию настроены, принимает производитель маршрутизатора.
Например, производитель моего маршрутизатора (AVM) по умолчанию использует .fritz.box
.
.local
используется mDNS (мультимедийный DNS), протоколом, разработанным компанией Apple. Использование example.local
работает только на системах (и для целевых адресов), где работает daemons mDNS (например, MacOSX, современные дистрибутивы Linux, такие как Ubuntu/Fedora).
Вы можете продолжать использовать DHCP, но возможно, вам нужно немного настроить ваш маршрутизатор. Большинство маршрутизаторов позволяют настраивать такие вещи, как доменное имя для сети.
Обратите внимание, что использование псевдо-TLD может быть опасным – .lan
кажется популярным – и лучше, чем .local
(потому что он не конфликтует с .local
mDNS) – но нет никакой гарантии, что ICANN не введет его как новый TLD в какой-то момент.
Обновление 2019 года: В этом случае .box
больше не является псевдо-TLD. ICANN делегировал .box в 2016 году.
Таким образом, имеет смысл получить настоящее доменное имя – и использовать поддомены для частного использования, например, когда ваше доменное имя example.org
, вы можете использовать:
lan.example.org
internal.example.org
...
Сети, использующие “вымышленные” идентификаторы домена верхнего уровня (TLD), такие как “LAN” или “LOCAL” или “HOME”, могут добиться успеха, если хосты находятся в сегменте сети с общим локальным коллизионным доменом и реализуют mDNS (мультимедийный DNS), как указано в RFC6762, LLMNR (Link-Local Multicast Name Resolution), излагаемого в RFC4795, или “Microsoft Networking” (или SAMBA) широковещательные сообщения NetBIOS (предполагая использование B-Node или H-Node, как изложено в RFC 1001 и 1002).
Трафик будет пересекать коллизионные домены (т.е. маршрутизироваться) только в том случае, если существует локальный файл HOSTS или LMHOSTS, или если были сделаны ручные записи DNS или WINS (NBNS), чтобы указать основывающиеся IP-адреса хостов. Однако домен .LOCAL официально зарезервирован исключительно для mDNS и не должен использоваться с традиционным DNS, и все другие “вымышленные” TLD в конечном итоге загрязняют Интернет (особенно DNS-серверы) с помощью ложных, зомби-трафиков запросов, на которые никогда нельзя получить ответ.
Хосты должны на самом деле использовать доменное имя верхнего уровня “Home.ARPA”, как указано в RFC8375. Home.ARPA была специально создана для обработки запросов “домашнего” или “малого бизнеса” имен путем переправки их в “черные дыры” на ранних стадиях маршрутизации. Черные дыры, определяемые проектом AS112.Net и в настоящее время опубликованные как RFC7534, внедряются хитрыми операторами сети по всей вселенной; мне интересно, не увидим ли мы когда-нибудь интерфейсы домашних маршрутизаторов, реализующие это по умолчанию.
Я понимаю, что если вы используете один из RFC-1918 адресов частной сети, то эти адреса гарантированы “правилами” Интернета, чтобы не маршрутизироваться за пределами своей подсети.
Некоторые имена зарезервированы для специального использования ({invalid., localhost., test. в RFC6761} {local. в RFC6762} {onion. в RFC7686} iana сайт)
Результатом является то, что вы можете использовать некоторые имена, которые вам нравятся на вашей частной сети LAN. Если адреса находятся в диапазоне RFC1918: даже если люди в общественном Интернете знают ваши имена узлов, они не могут маршрутизировать по этим адресам.
Лучшие текущие практики для внутренних доменов, похоже, заключаются в использовании довольно недавно зарезервированного .internal
или в приобретении домена и использовании поддомена, однако это явно часто нежелательно для маленькой домашней сети.
Категорически не рекомендуется использовать .local
, потому что он зарезервирован для mDNS и может вызвать конфликты.
Также настоятельно рекомендуется не использовать вымышленные сейчас незарегистрированные домены верхнего уровня, такие как .lan
, .home
или что-то вроде .workshop
.
Очевидно, что еще хуже использовать зарегистрированные домены, такие как .box
, глядя на вас, AVM …
Источники:
Ответ или решение
Различия между .local, .home и .lan
При настройке сетевой инфраструктуры для использования в домашних или малых офисах, важно правильно выбрать доменные суффиксы для имен хостов. Рассмотрим подробнее, что собой представляют суффиксы .local
, .home
и .lan
, а также их особенности и потенциальные проблемы.
1. Суффикс .local
Суффикс .local
используется в протоколе Multicast DNS (mDNS), который был разработан Apple. Главной функцией mDNS является возможность обнаружения устройств в локальной сети без необходимости в централизованном DNS-сервере. Однако использование .local
связано с несколькими ограничениями:
- Конфликты: Суффикс
.local
зарезервирован для mDNS и не предназначен для традиционного DNS. Если на вашем устройстве не запущен сервис, поддерживающий mDNS (например,avahi-daemon
на Linux), вы не сможете обратиться к хосту с суффиксом.local
. - Проблемы с совместимостью: Некоторые маршрутизаторы могут не поддерживать mDNS, из-за чего запросы к устройствам с суффиксом
.local
могут не отвечать.
2. Суффикс .home
Суффикс .home
не является официально зарегистрированным TLD и используется как альтернативная опция для именования хостов внутри локальной сети. Он может быть удобным для пользователей, которые ищут простое решение для именования, но при этом приводит к ряду проблем:
- Проблема отсутствия стандартов: Поскольку
.home
не регламентирован IETF или ICANN, есть потенциальный риск, что данный суффикс может быть когда-либо зарегистрирован как официальный TLD, что может вызвать конфликты в будущем. - Совместимость: Подобно
.lan
,.home
может создавать проблемы с совместимостью на различных сетевых устройствах и не обеспечивает гарантированной работы.
3. Суффикс .lan
Суффикс .lan
также не имеет официального статуса и используется в основном для упрощения адресации внутри локальных сетей. Проблемы, сопутствующие этому суффиксу, аналогичны тем, что существуют у .home
:
- Отсутствие специальных правил: Так же, как и для
.home
, использование.lan
не поддерживается стандартами, и его конфликт с будущими TLD также остается возможным. - Непредсказуемая работа: Как вы замечали, не всегда все устройства реагируют на вызовы с использованием этого суффикса, что может привести к путанице при идентификации устройств в сети.
Рекомендации для использования доменных суффиксов
-
Избегайте использования
.local
: Если ваши устройства требуют mDNS для обнаружения, рекомендуется оставить.local
в использовании для этих устройств. Однако, если вы сталкиваетесь с проблемами, стоит рассмотреть альтернативы. -
Исключите использование
.home
и.lan
: Несмотря на их распространенность, использование этих суффиксов может в будущем привести к конфликтам. Рекомендуется избегать их для вашего личного использования. -
Рассмотрите возможность использования
.internal
или даже собственного домена: Наилучшей практикой будет регистрация собственного домена с использованием поддоменов. Например, если у вас есть доменexample.com
, вы можете создать поддомены вродеfoo.example.com
иbar.example.com
. -
Конфигурация маршрутизатора: Многие современные маршрутизаторы позволяют настраивать доменные суффиксы для локальной сети. Конфигурируя маршрутизатор, вы сможете задать более предсказуемую среду именования для своих хостов.
Заключение
Выбор правильной схемы именования для хостов в локальной сети может значительно упростить управление ресурсами и общение между устройствами. Рекомендуется избегать простых, но потенциально проблематичных суффиксов, таких как .local
, .home
и .lan
, в пользу более надежных практик, что позволит минимизировать возможные конфликты и улучшить надежность своей сетевой структуры.