DNS-сервер для домашней сети без использования resolv.conf, google dns и переносов

454
dboggs95

Я пытался использовать bind9 и dnsmasq. Я также настроил сервер на статический IP-адрес. ОС Ubuntu 18.04. Я хочу получить доступ к домену на машинах Windows 7 и 10. Я проверил, и мой ноутбук может получить доступ ко всему, используя IP-адрес, но я не могу получить его для доступа к доменному имени .local. По сути, я не могу понять, как получить наполовину рабочую конфигурацию на любом программном обеспечении DNS-сервера.

Большинство уроков говорят мне, чтобы я поставил Google DNS и использовал resolv.conf. Я не хочу использовать внешний сервер для маршрутизации имен, которые должны быть только в моей сети, может быть, я параноик, но для меня это проблема конфиденциальности.

Учебники, которые отключают пересылку с помощью Google и с помощью resolv.conf для серверов имен, сбивают с толку, поскольку язык подсказывает, что я пытаюсь создать свой собственный DNS-сервер для доступа к внешним сайтам, таким как Facebook. Я не пытаюсь перехватить DNS-регистратор моей сети или что-то в этом роде, я просто хочу, чтобы некоторые домены .local имели доступ к нескольким приложениям, размещенным на одной машине.

Все учебники имеют ns1.example.com, ns2.example.com, host1.example.com, host2.example.com, каждый со своим соответствующим IP-адресом. Может быть, я неправильно понимаю, что это такое, но похоже, что они хотят, чтобы у меня были отдельные машины для всего. Мне нужна только одна машина, на которой работает мой DNS-сервер, мой сервер CUPS, мой FTP-сервер, мой PXE-сервер и любое другое веб-приложение или сетевое приложение, которое я решу установить на эту машину.

Я хочу иметь name.local: port или app.name.local для доступа к этим приложениям на каждой машине вместо ipaddress: port, и я не хочу указывать это в файле hosts каждой машины.

Я, наконец, отказался от использования bind9 после того, как не смог заставить его обслуживать машину, на которой работал, и попробовал dnsmasq. Мне сказали, что эта волшебная программа сделает все на одном дыхании. Инструкции сказали мне изменить файл hosts, что создало временную иллюзию того, что он работает. Когда я подключил свой ноутбук к сети и попробовал его, я понял, что файл hosts - ЕДИНСТВЕННАЯ вещь, которая работает. Еще одна конфигурация DNS, которая абсолютно ничего не делает. Моя конфигурация выглядит следующим образом. Я попытался добавить и удалить различные параметры, такие как no-dchp-interface, но все они не имели никакого эффекта. ipaddress - это IP-адрес моей машины, а modemip - это IP-адрес моего модема, который используется в качестве настройки маршрутизатора и шлюза.

port=5353 #domain-needed #bogus-priv no-dhcp-interface=yes no-resolv no-poll server=/name.local/ipaddress local=/name.local/ expand-hosts domain=name.local dhcp-range=iprange,72h # subnet mask dhcp-option=1,255.255.255.0 # gateway dhcp-option=3,modemip # dns dhcp-option=6,modemip 

Вот мои etc / bind / named.conf.options.

acl "trusted" { ipaddress; modemip; localhost; localnets; }; options { directory "/var/cache/bind"; recursion no;  allow-query { trusted; };  listen-on { ipaddress; }; allow-transfer { none; };  dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 }; 

У меня есть ощущение, что учебники, возможно, пренебрегают, чтобы сказать мне то, что я должен знать, но проблема в том, что если это так, я не знаю, как понять, что это такое. Например, сегодня утром я понял, что должен включить и запустить bind9 с помощью systemctl. Только одна из четырех или пяти статей, которые я прочитал, сказала мне это.

Я предоставлю более актуальную информацию, если потребуется.

Со всеми деталями из пути. Как создать DNS-сервер без использования resolv или внешнего DNS, такого как Google 8.8.8.8 (как если бы не было доступа к Интернету, другими словами), только с одной машиной, и где ко всему можно получить доступ, набрав name.local: port или app.name.local? Это вообще возможно?

Благодарю.

1
Вы рассматривали использование многоадресного DNS? Для этого даже не понадобится сервер, хотя иногда бывает немного сложно правильно работать в Windows. Austin Hemmelgarn 5 лет назад 0
Да, это возможно. Можете ли вы показать нам снимок экрана «ipconfig / all» с одного из компьютеров Windows, который не может разрешить локальные адреса DNS? Tim_Stewart 5 лет назад 0

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

0
Moshe Katz

ПРИМЕЧАНИЕ. Хотя технически возможно настроить несколько DNS-серверов на компьютере, на самом деле это не сработает. Большинство компьютеров используют только один DNS-сервер из этого списка и выбирают другой, только если первый не отвечает. Однако, если первый ответит, что нет результата ( NXDOMAIN), компьютер не будет пробовать другой.

ПОЭТОМУ, вам нужно настроить свои компьютеры, чтобы указать на этот DNS - сервер только, а не к вашему ISP / сети.

Имея это в виду, см. Объяснение ниже для того, что вам нужно сделать.


Чтобы понять учебники, которым вы следуете, чтобы настроить это, вам просто нужно помнить, что DNS-сервер может выполнять две функции:

  • Авторитетный DNS
  • Рекурсивный DNS

Авторитетный DNS-сервер отвечает за ответы на запросы, которые «принадлежат ему». В вашем случае это ваши *.localдомены.

Рекурсивный DNS-сервер отвечает за прием запросов, которые не «принадлежат ему», и переадресацию их в обратном направлении на другой сервер, который может ответить на них, а затем возвращает ответ. Обычно рекурсивный сервер кеширует ответ в течение некоторого времени, чтобы его не нужно было запрашивать снова. (Время кеша вызывается TTL, и его длина устанавливается вышестоящим сервером.) Причина, по которой это «рекурсивно», заключается в том, что может существовать длинная строка DNS-серверов, которые обрабатывают ответ, пока он, наконец, не вернется обратно к Авторитетный сервер. Однако ответ может дать любой сервер кеша в цепочке.

Начальные учебники, которые вы видели, которые говорят вам использовать Google DNS, просто говорят вам использовать его для настроек рекурсивного поиска. Однако любой запрос, для которого ваш сервер считает, что он является полномочным сервером, никогда не будет отправлен на вышестоящий сервер.

Если вы хотите иметь доступ к Интернету в этой сети, вам нужно, чтобы сервер выступал в качестве авторитетного сервера для ваших собственных доменов и рекурсивного сервера для всего остального. Это конфигурация, которую вам говорят настроить.

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

Если вы не хотите использовать Google, у вас есть несколько других вариантов апстрима, включая следующие:

  • DNS-серверы, запущенные вашим провайдером
  • OpenDNS - 208.67.222.222 и 208.67.220.220
  • Cloudflare - 1.1.1.1 и 1.0.0.1

Если вы действительно не хотите иметь доступ к Интернету в этой сети, вам следует обратиться к учебнику по настройке «авторитетного» DNS-сервера, который не является рекурсивным.