У меня есть пара ноутбуков Windows, Raspberry Pi 4 с Ubuntu и x86-бокс, также с Ubuntu. Используя резервирование DHCP на моем WiFi-роутере (Apple Airport), я дал им всем статические IP-адреса. Затем на каждой машине я отредактировал файл hosts и ввел имена и IP-адреса всех машин.
Я хотел бы улучшить последнюю часть. Я хотел бы запустить службу DNS на моем Raspberry Pi, чтобы избежать ручного редактирования и обновления файла hosts на каждой машине. Я хочу сделать это таким образом, чтобы если моя домашняя служба DNS выйдет из строя, я все равно смогу получить доступ к Интернету для просмотра веб-страниц и т. д. Другими словами, если моя Raspberry Pi выйдет из строя, это не должно забрать мой домашний Интернет с собой. Я также не хочу настраивать каждый ПК, чтобы он указывал на Raspberry Pi как на службу DNS.
По сути, я хочу запустить службу DNS на моем Raspberry Pi так, чтобы если Pi работает, все ПК с Windows и другие устройства с Ubuntu обнаруживали службу DNS и использовали ее для разрешения локальных имен, а если Pi не работает, единственное, что не будет работать, — это локальное разрешение имен.
Похоже, что это необходимо многим людям, поэтому надеюсь, что кто-то придумал решение этой проблемы.
решение1
Настройте ваш DHCP-сервер на выдачу двух адресов для DNS-сервера. Первый должен быть IP-адресом вашего Raspberry Pi. Второй должен быть IP-адресом сервера имен вашего интернет-провайдера (или публичного сервера имен, например 8.8.8.8 или 1.1.1.1).
На rpi должен быть запущен DNS-резолвер, напримернесвязанныйилиdnsmasq. Он должен быть настроен на:
- отвечать на запросы только из вашей локальной сети
- обеспечить прямой (имя) и обратный (IP-адрес) DNS-поиск для хостов в вашей локальной сети.
Если вы используете dnsmasq
, обязательно отключите его функциональность DHCP — вам не нужны два сервера DHCP в одной сети, если только они не настроены абсолютно одинаково.
Обратите внимание, что при низком rpi поиск в DNS будет выполняться значительно медленнее.
решение2
Стандартный DNS-сервер на *nix обычно реализован следующим образом BIND
:https://en.wikipedia.org/wiki/BIND
Вот пара хороших статей, подробно описывающих этот процесс: https://opensource.com/article/17/4/introduction-domain-name-system-dns и https://opensource.com/article/17/4/build-your-own-name-server