Вопрос или проблема
Я пытаюсь создать простой децентрализованный DNS для своей локальной сети.
Проблема в том, что каждый раз, когда я добавляю новую машину, другие машины в сети не могут автоматически найти её имя, потому что его нужно вручную добавить в таблицу резолвера; я хочу, чтобы это происходило автоматически.
Допустим, у меня есть компьютер с именем хоста continua
, который недавно был добавлен в сеть и имеет динамический IP-адрес, поэтому для подключения к этой машине с другой точки сети через SSH, FTP, ping
и т.д., мне сначала нужно узнать его IP, что заставляет меня сканировать сеть на наличие нового устройства или проверять таблицу DHCP на маршрутизаторе.
Так что вместо того, чтобы использовать:
ssh continua
Мне нужно делать это по его динамическому IP:
ssh 192.168.1.xxx
Самый простой способ решить эту проблему – установить новую таблицу имен хостов на DNS маршрутизатора, но это становится непрактичным, если мне нужно делать это много раз.
Я планирую сделать так, чтобы каждый компьютер в моей сети мог разрешать своё имя через простой DNS, работающий локально, а затем отправлять эту информацию на верхний DNS на моем маршрутизаторе.
Но я не знаю, как выполнить этот промежуточный шаг. На самом деле я установил dnsmasq
на одном из моих компьютеров, и он корректно разрешает себя в локальной сети, поэтому я думаю, есть ли способ добавить широковещательную рассылку как DNS-сервер в resolv.conf
? Что-то вроде 192.168.1.255
?
Одним из вариантов является установка `avahi-daemon`, если вы используете какую-либо версию Linux, или решение mDNS (Multicast DNS Service Discovery), предоставленное вашей системой.
Тогда вы можете использовать специальный домен .local
для поиска компьютеров (тех, которые запускают сервис), так что ping continua.local
будет работать сразу, без необходимости в обслуживании.
Ответ или решение
Автоматическое обновление имен хостов в локальной сети
Вопрос автоматического обновления имен хостов в локальной сети становится особенно актуальным в условиях динамически изменяющихся IP-адресов. Если вы находитесь в процессе создания децентрализованной системы DNS для своей локальной сети, стоит рассмотреть несколько подходов к решению этой задачи.
1. Использование dnsmasq
Вы уже установили dnsmasq
, что является отличным шагом к централизованному управлению локальным именованием. dnsmasq
предоставляет легкий способ настройки DNS и DHCP, позволяя автоматически регистрировать новые хосты.
Чтобы настроить dnsmasq
, вам следует выполнить следующие шаги:
-
Конфигурация
dnsmasq
: Определите файл конфигурации, обычно это/etc/dnsmasq.conf
, и добавьте следующую строку для включения DHCP:interface=eth0 # Замените на интерфейс вашей сети dhcp-range=192.168.1.50,192.168.1.150,12h
-
Регистрация имен хостов: Вы можете настроить
dnsmasq
на автоматическую регистрацию имен хостов. Это делается с помощью строки:dhcp-authoritative
Данный подход автоматически обновляет записи DNS при изменении адресов DHCP.
2. Использование Avahi
Если ваши компьютеры работают под управлением Linux, вы можете использовать avahi-daemon
, который реализует сервис mDNS (Multicast DNS). Это позволяет использовать специальные доменные имена с окончанием .local
, что позволяет находить устройства без необходимости вручную настраивать DNS.
-
Установка и запуск Avahi:
sudo apt install avahi-daemon sudo systemctl start avahi-daemon sudo systemctl enable avahi-daemon
-
Подключение с помощью mDNS: После установки, вы можете использовать название хоста с окончанием
.local
, например:ping continua.local
Таким образом, Avahi автоматически регистрирует устройства в сети, и вам не потребуется вручную вносить изменения или дополнять resolv.conf
.
3. Настройка системных резолверов
Для систем, которые не поддерживают mDNS, можно рассмотреть возможность настройки локальных резолверов. Вы можете добавить dnsmasq
или Avahi в качестве DNS-сервера в файл /etc/resolv.conf
:
nameserver 127.0.0.1 # Это для dnsmasq, если он работает локально
# или
nameserver 192.168.1.xx # IP вашего Avahi или dnsmasq сервера
Обратите внимание, что автоматизированное обновление /etc/resolv.conf
возможно, если вы используете систему управления сетевыми подключениями, такую как NetworkManager
.
Заключение
Выбор между использованием dnsmasq
и avahi
зависит от ваших потребностей и архитектуры сети. Если вам нужно управлять IP-адресами более традиционным способом, то dnsmasq
будет прекрасным выбором. Если же вы хотите более "умный" способ обнаружения устройств, рассмотрите использование avahi
. Эти решения позволят вам автоматически обновлять имена хостов в вашей локальной сети, минимизируя ручной труд и время, затрачиваемое на администрирование.