Как сделать dns сервер в локальной сети

Обновлено: 03.07.2024

Для обеспечения безопасности и надежности интернет-соединения, а также для бесперебойного доступа к веб-сайтам, социальным сетям и онлайн-сервисам, можно использовать сторонние DNS-серверы, которые работают на первом рубеже доступа к сети Интернет.

Популярные DNS-серверы представлены на нашем сайте в разделе Безопасные DNS-сервисы. Чаще всего настройка DNS помогает эффективнее работать VPN и прокси, обеспечивая более высокий уровень защиты вашей конфиденциальности и анонимности.

Предлагаем вашему вниманию подробные инструкции, как настроить DNS на компьютере с операционными системами Windows 10, 8.1, 8, 7, Vista и XP.

Настройка DNS с помощью DNS Jumper

DNS Jumper – удобный портативный инструмент для быстрого переключения DNS на вашем компьютере. Утилита работает со следующими операционными системами: Windows 10, 8.1, 8, 7, Vista, XP и не требует дополнительных настроек в системе.

Запустите утилиту, выберите в списке DNS сервер предпочтительный сервер (например, Google Public DNS) и нажмите кнопку Применить DNS.

Центр управления сетями и общим доступом в Windows 10

Настройка DNS с помощью YogaDNS

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

YogaDNS

Настройка DNS в Windows 10, 8.1, 8

1. Чтобы открыть Центр управления сетями и общим доступом (также доступен в меню Панель управления > Сеть и Интернет), нажмите сочетание клавиш Windows + R и в окне «Выполнить» введите следующую команду и нажмите ОК:

2. В разделе Просмотр основных сведений о сети и настройка подключений, выберите пункт сеть для Подключения.

3. В открывшемся окне выберите пункт Свойства.

Состояние сети

4. В окне свойств подключения в списке Отмеченные компоненты используются этим подключением выберите пункт IP версии 4 (TCP/IPv4) в Windows 10 или Протокол Интернета версии 4 (TCP/IP) и нажмите кнопку Свойства.

Протокол Интернета версии 4 (TCP/IP)

5. В открывшемся окне на вкладке Общие выберите пункт Использовать следующие адреса DNS-серверов.

Использовать следующие адреса DNS-серверов

6. Введите выбранные вами адреcа DNS, например Comss.one DNS или Google DNS, в поля Предпочитаемый DNS-cepвep и Альтернативный DNS-cepвep (в зависимости от выбранного сервиса поле может оставаться пустым).

7. Поставьте галочку для Подтвердить параметры при выходе и нажмите OK, чтобы сохранить изменения.

Обновите DNS-кэш следующим образом:

  • Нажмите правой кнопкой мыши по значку Windows (меню Пуск) и выберите Командная строка (администратор) или Windows PowerShell (администратор)
  • Введите команду ipconfig /flushdns и нажмите клавишу Enter (Ввод)
  • Сделайте перезагрузку компьютера.

Обновите DNS-кэш в Windows 10

Настройка DNS в Windows 7

1. Нажмите правой кнопкой мыши на значок интернета в трее, выберите Центр управления сетями и общим доступом.

Центр управления сетями и общим доступом в Windows 7

2. В разделе Просмотр активных сетей, выберите пункт справа от Подключения:

Подключения

3. На вкладке Общие в окне Состояние Подключения нажмите кнопку Свойства.

Состояние Подключения

4. На вкладке Сеть окна свойства подключения, прокрутите вниз и выберите Протокол Интернета версии 4 (TCP/IPv4), нажмите кнопку Свойства.

Протокол Интернета версии 4 (TCP/IPv4)

5. На вкладке "Общие" окна Свойства, в нижней части, выберите Использовать следующие адреса DNS-серверов, а затем введите IP-адреса выбранного DNS-сервиса, например, Google DNS.

Использовать следующие адреса DNS-серверов

6. Поставьте галочку для Подтвердить параметры при выходе и нажмите OK, чтобы сохранить изменения.


С каждым годом скорость интернета — как последней мили, так и магистральных каналов становится все выше. Лишь одно неизменно — латентность уже уперлась в физические ограничения: скорость света в оптоволокне — около 200тыс километров в секунду, и соответственно, быстрее чем за

150ms ответ от сервера через атлантический океан не получить в обозримой перспективе (хотя конечно есть изыски, вроде оптоволокна с воздушной сердцевиной или радиорелейной связи, но это для простых смертных едва-ли доступно).

Когда мы пытаемся например из России открыть web-сайт, расположенный в США (его NS сервера вероятно там же), и домен не нашелся в DNS-кэше вашего провайдера — то ждать придется долго даже на гигабитном интернете, возможно даже целую секунду: пока мы через океан получим имена NS серверов домена, пока разрезолвим их IP, пока отправим и получим собственно сам DNS запрос…

Пару лет назад Google завела свои публичные DNS сервера, а для агитации перехода на них — они разработали утилитку NameBench, которая прогоняет тесты DNS по вашей истории серфинга и показывает, насколько Google DNS быстрее DNS сервера вашего провайдера.

Но мне удалось сделать свой DNS сервер, который работает быстрее Google Public DNS, и в этой краткой заметке хочу поделится результатами.

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

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

Ставится в Ubuntu — банальным apt-get.

Пара моментов в конфиге


В принципе, кэширование можно сделать менее агрессивным (min_ttl=1m например), но за год работы проблем особых не возникло. В случае проблем — при желании можно вытереть одну запись из кэша:
или сразу все:

Результаты тестирования в NameBench



Видим, что для 50% запросов ответ мы получаем менее чем за 10мс, для 85% быстрее Google Public DNS, ну а дальше результаты естественно совпадают с гуглом.

gost-main-dns

Proxmox

В прошлый раз мы установили и настроили Систему виртуализации Proxmox-VE.
Список цикла статей:

Предисловие

В данной статье мы установим отдельный контейнер LXC, я кратко расскажу чем контейнеры отличаются от обычных виртуальных машин.
Установим и настроим сервис для обработки доменных имен в своей локальной сети BIND9
Настроим роутер(MikroTik) и сеть для того, чтобы наши устройства в локальной сети могли находить наши доменные имена.
И для примера настроим наш PVE1(сам сервер) для доступа к нему по доменному имени, а не IP адресу

Вроде ничего не упустил 🙂 Кому интересно прошу далее под кат!
Текста много, предупреждаю сразу 😉

Установка контейнера LXC в Proxmox-VE

Для того, чтобы наш DNS сервис работал самостоятельно и не зависел от наших попыток, что-то сломать сделать, я его установил в отдельный LXC контейнер(виртуальную среду).

Начнем мы с добавления в наш сервер специального шаблона(Template) операционной системы. В Proxmox их можно скачать из своих репозиториев.
Откроем панель управления через WEB по IP адресу. И перейдем к нашему хранилищу Local(pve1), потом переходим к содержимому(Content) и нажмем кнопку Шаблоны(Templates)
Добавление шаблона Т.к. наш Proxmox основан на ОС Debian, то я принял для себя решение использовать LXC Debian 9 версии. Мне с ними удобнее работать.
Находим нужный шаблон и грузим его.
Находим наш шаблон и загружаем его Нам остается только подождать окончания загрузки.
Окончание загрузки

gost-proxmox-4

Начинаем установку.
Нажимаем нужную кнопку Проводим действия по настройке контейнера

ID оставляем по умолчанию, вводим Hostname и пароль доступа к системе контейнера Я отключаю Firewall т.к. он тут не нужен и указываю получать IP адрес автоматически Указываю свой домен как основной и IP адрес основного роутера для DNS запросов Еще раз проверяем все параметры, если что-то не нравится меняем

Установка и настройка DNS сервиса BIND9

Ждем окончания установки и пока останавливаем сервис

Для того, чтобы все работало как нужно в моей нашей сети, необходимо продумать как будут проходить запросы от сети с другим шлюзом и другим роутером обрабатывающим основные DNS запросы не относящиеся к нашей локальной сети.
Согласно статьи: Создание домашней сети на базе устройств MikroTik: Часть 7 – Firewall правильное перенаправление портов в сети с двумя шлюзами

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

Все файлы настроек и зон в bind9 находятся по пути /etc/bind/

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

Т.к я пока не планирую выводить работу BIND9 на IPv6, то я запустил службу только для IPv4. Для этого необходимо добавить опцию запуска в файл /etc/default/bind9
Добавляем опцию -4 в параметр OPTIONS

Правим основной файл настроек named.conf:

Файл named.conf.options уже есть, проводим некоторые настройки:

Создаем отдельный файл named.conf.logging:
В этом разделе описывается условие ведения журнала.

На файле named.conf.local-zones я бы хотел остановится немного подробнее. Именно в данном файле мы определяем направления. Именно в этом файле указываются сами зоны с доменными именами и правила их обработки. Как я уже писал, у меня всего две зоны и именно для двух зон мне необходимо сделать идентичные описания, но с различными параметрами.

Переименуем стандартный файл named.conf.local в named.conf.local-zones

И отредактируем файл named.conf.local-zones:

Файл rndc.conf создавать не обязательно, но если вы хотите изменить ключ rndc.key, то можно воспользоваться данным механизмом.
Необходимо подать команду:

Содержимое файла выглядит так:

С файлами настроек разобрались, теперь необходимо создать нужные папки и переместить туда базовые файлы с описанием зон.
Создаем папки:

Переносим файлы с описанием базовых зон:

Переносим базовые файлы ключей:

Теперь самое интересное, а именно описание доменных зон!

Описание локальных доменных зон

У нас уже есть базовые доменные зоны и мы указали в файле конфигурации наши локальные зоны. Возможно вы это заметили в файле named.conf.local-zones
Пункты:

Представляю вам файл зоны прямого просмотра:

Остался файл зоны обратного просмотра:

Сохраняем все наши файлы и пробуем запустить сервис BIND9

Для проверки работает или нет, сначала проверяем сервис

Если видим что-то похожее значит все ок

После правки файлов зон, необходимо обнулить кеш и обновить файлы зон:

И не забывайте менять строку Serial при каждом внесении изменений!

Теперь проверим, как резолвится доменное имя:

Если вы установили пакет dnsutils, вы можете проверить свою установку используя обзорную утилиту DNS dig После установки BIND9 примените dig к интерфейсу обратной петли (loopback), чтобы убедиться, что порт 53 прослушивается. Из терминала наберите:

В ответ получите, что-то такое:

Очистить кеш данных DNS сервиса можно командой rndc flush
Для нормальной обработки доменных имен обычно необходимо подождать некоторое время, от минуты до десяти минут.

Все хорошо. Займемся настройкой сети, ведь мы хотим, чтобы локальные доменные имена работали на всех наших локальных устройствах (умеющих работать с DNS)

Настройка локальной сети для обработки внутренних DNS запросов

Локальная сеть настраивается достаточно просто.
Вам необходимо указать IP адрес LXC контейнера, как основной DNS сервер. Его будут получать клиенты через DHCP.
Для устройств со статическими IP настройками, необходимо DNS прописать вручную.

Я покажу, как добавить DNS в DHCP сервер, на примере своего роутера MikroTik

gost-winbox-1

Открываем Winbox или терминал, подключаемся к нашему роутеру и идем по пути: IP -> DHCP Server вкладка Networks
Добавляем IP адрес нашего BIND9 выше IP роутера Консольно:

/ip dhcp-server network set dns-server=192.168.88.7,192.168.88.1

Далее обновляем аренду для всех клиентов или какого-то одного для проверки.

Например в Windows 10 можно запустить командную строку(cmd) и проверить получение DNS:

Видим строку DNS-серверы. . . . . . . . . . . : 192.168.88.7 значит наш ПК получает DNS корректно.

Настройка открытия WEB интерфейса Proxmox-VE по доменному имени

Для того, чтобы запрос к доменному имени был обработан корректно, нам необходимо настроить специальный сервис, который будет за это отвечать.
Этот сервис nginx. Очень мощная штука по которой пишут не маленькие мануалы. Поэтому мы ограничимся самым простым функционалом.

gost-nginx-1

Переходим к консоли хост машины:
Нам нужна консоль хостовой машины

Проверка IP адреса

Для начала давайте поставим nginx:

Файлы nginx хранит по пути /etc/nginx/:

Давайте удалим базовую WEB страницу, она нам не нужна

Ничего страшного это всего лишь simlink, оригинал лежит тут: /etc/nginx/sites-available/default

Все файлы дополнительных конфигураций можно располагать в папке /etc/nginx/conf.d/
Она как раз подключена в основном файле конфигурации.

Создадим файл настройки для нашего PVE1:

Заполним его такими настройками

gost-browser-1

Открытый WEB через доменное имя

По данному мануалу, локальные доменные имена не доступны из Интернета!

Если вы столкнулись с ошибкой "401 no token":
Необходимо отредактировать файл запуска сервиса nginx

и добавить такие строки

Не забудем перезапустить нужные службы

Спасибо за наводку комментатору: Pavel !

Заключение

Статья получилась достаточно большой. Хотя это еще не все, вы могли заметить закомментированные строки связанные с SSL сертификатами.
Возможно позже я разберусь с этим и дополню статью, а пока приходится мириться с паникой браузера в отношении непроверенных сертификатов.

Существуют и системы альтернативные BIND. Например PowerDNS, Unbound, djbdns, Dnsmasq.
Вы можете рассмотреть их для реализации похожего функционала.

Мне остается только напомнить про дальнейшие шаги по реализации своего домашнего сервера:

  1. Torrent Transmission - качалка торрентов. Домашний Сервер: Часть 4 – Настройка Transmission daemon в контейнере LXC Proxmox-VE
  2. Plex Mediaserver - домашний медиа сервер.
  3. The Dude - мониторинг девайсов в домашней сети.
  4. openHAB 2 - домашний IoT.
  5. FreePBX (Asterisk) - IP телефония.

Делитесь своими методиками и способами реализации доменной системы. Читателям будет интересно узнать про альтернативы! 🙂

Благодарю за ваше время!
Всего хорошего на просторах Интернета 😉

Если Вам не безразлична судьба блога или Вы просто хотите отблагодарить Автора за его труд, смело переходите на страницу Поддержки, там описана вся информация, по тому, как это сделать. Заранее благодарен вам за данную инициативу!

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Мир интересен, если вы достаточно любопытны.

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

Ребят, можно просить помощи у Вас?

Я так же держу на темплейте дебиана 9го в lxc.
Домен выбрал home.site.

Если я ковыряю bind и он например отключен, то все запросы идут на роутер и проблем с DNS нет

Если из интернета доступен, а из дома, где bind9 нет, то нужно создать аналогичную CNAME для поддомена в bind9.
Считайте, что DNS в bind9 и DNS хостера у вас должны быть почти одинаковыми. Тогда будете одинаково ходить и в локалке и из интернета.

Спасибо большое, заработало =)

Кстати такой проблемы не будет если вынести Nginx на отдельный LXC.
Спасибо за ваш интерес и найденное решение! Добавлю в статью!

Здравствуйте, подскажите пожадуйста, при запуске bind9 выдет ошибку:
root@DNS:

Ну и пока нет информации. Как ставили, как запускали, что еще есть в логах и т.д.

Нет, сертификаты же у Вас закомментированы и в статье про генерацию их вроде бы ничего не было, поэтому сделано всё согласно статье.

Проверяйте логи bind, как резолвится доменное имя, проверяйте логи nginx, как он реагирует на запрос. При необходимости включите более расширенное логирование
Вам нужно проверить весь путь прохождения запроса

Григорий, если это возможно помогите и мне
root@DNS:

db.root находится тут:
root@DNS:

А что дает проверка командой?

У вас при запуске показывает, что bind не может найти файл db.root по пути /etc/bind когда у вас, как вы говорите, файл лежит по пути /etc/bind/zone
Если делали по моей статье, этот файл зоны подключается в файле конфигурации /etc/bind/named.conf.default-zones

Вот это подключение

Как видите путь указан /etc/bind/zone

Оставьте в options только строчку
dnssec-validation no;
а ‘dnssec-enable no;’ удалите

Григорий, вот спасибо.
Вопрос решен
Так мучительно я не через одну науку не продирался.
С уважением

Видите разницу?
Подайте команду

И перезапустите bind

;; QUESTION SECTION:
;1.0.0.127.in-addr.arpa. IN PTR

;; ANSWER SECTION:
1.0.0.127.in-addr.arpa. 360362 IN PTR localhost.

Проверьте права на папки(и вложенные тоже) куда пишет bind
/etc/bind
/var/log/bind
Должны быть
bind bind
или
root bind

У меня небольшая домашняя сеть, которая только что стала больше (новая соседка по комнате, моя соседка по комнате получила ноутбук (поверх ее компьютера), мои друзья пришли с ноутбуками и т. Д.).

Я хотел бы, чтобы запустить локальный сервер DNS для поиска в моих локальной сети (вещи fileserver.local , windowsTV.local , machineA.local , machineB.local , appletv.local ). Раньше у меня была бизнес-линия со статическим IP, и я запускал bind / named изнутри. Однако сейчас у меня нормальный аккаунт.

DNS-серверы моего интернет-провайдера постоянно меняются (по каким-либо причинам мой интернет-провайдер не любит долго сохранять один и тот же диапазон IP-адресов). Мне нужно, чтобы мой локальный DNS автоматически обновлялся, чтобы использовать DNS моего интернет-провайдера для внешнего трафика, но иметь возможность поддерживать внутренний DNS-сервер (получение обновления файла hosts является проблемой с каждой новой машиной в дополнение к перестройке существующих машин с win7 или Ubuntu 9.04).

Кроме того, DNS-серверы моего провайдера часто дают сбой или перестают отвечать. Существуют ли надежные открытые DNS-серверы (я не хочу переконфигурировать каждый день), которые я мог бы использовать в качестве основного, а затем, если они потерпят неудачу, использовать моих интернет-провайдеров?

ОБНОВЛЕНИЕ: также ищет каждую рабочую станцию, чтобы иметь возможность использовать dhcp для подключения, но вместо того, чтобы получить DNS-серверы ISP, получить мой внутренний .

Здесь есть как минимум 2 вопроса: локальная конфигурация DNS, публичные DNS-серверы. Отправьте 2 вопроса в следующий раз. Я согласен, но я ищу общее решение. на каждый свой вопрос будет правильный ответ, но он может не совпадать, я пытаюсь найти решение обеих проблем, которые работают вместе. @RoyRico Вы когда-нибудь находили хорошее решение? Я пытаюсь сделать то же самое с помощью томатного маршрутизатора и бегу в стены во всех направлениях. Новые DNS-серверы Google - это 8.8.8.8 и 8.8.4.4 на случай, если кому-то будет интересно .

Если вы хотите, чтобы внутренние поддельные домены работали, вы не можете настроить свои рабочие станции на какие-либо DNS-серверы, кроме ваших собственных. После того, как вы настроили BIND, он может работать сам по себе, и вам вообще не нужны ваши интернет-провайдеры или другие неавторизованные DNS-серверы.

Однако хороший пользователь сети по возможности перенаправит кеши DNS своего провайдера. Нагрузка на корневые DNS-серверы ужасна. Особенно для небольших сайтов, таких как этот, потому что он не будет масштабироваться, если каждое домохозяйство решит пойти прямо. (Если вас беспокоит взлом ISP, используйте DNSSEC). @sourcejedi, вы неправильно понимаете, что на самом деле делает кеширующий DNS-сервер . он, конечно, не работает на корневых серверах, он беспокоит их, может быть, только раз в неделю. Есть другая причина, почему вы должны перенаправлять на свои DNS-серверы интернет-провайдера . вы будете выглядеть для них как обычный клиент. Если вы этого не сделаете, и они увидят, что у вас есть система, которая отправляет DNS-запросы по всему миру, они предположат, что вы используете DNS-сервер, и, возможно, просто бросят вам правила брандмауэра и будут вас раздражать. Вы будете изо всех сил пытаться выяснить, что сломалось и, вероятно, потратить часы, пытаясь выяснить, если / когда это произойдет. В дополнение к точке зрения @ milli, DNS вашего интернет-провайдера может также переопределить разрешение некоторых доменов на их частных компьютерах с более быстрым / кэшированным / неизмеренным контентом. Использование публичного DNS может сломать эти услуги или стоить вам дороже.

В основном вам нужно запустить свой собственный сервер DHCP и DNS. Вы уже используете свой собственный сервер DHCP, если у вас есть типичный маршрутизатор, который выдает частные IP-адреса.

Ваш DHCP-сервер должен быть настроен на передачу IP-адреса вашего маршрутизатора в качестве адреса шлюза, а IP-адрес вашего DNS-сервера - в качестве адреса DNS-сервера.

Ваш DNS-сервер должен быть настроен для локального разрешения неофициального домена верхнего уровня, такого как .local , а затем пересылать любые другие запросы другому DNS. В BIND вам нужно добавить forwarders < >в ваш файл /etc/bind/named.conf.options раздел, содержащий общедоступные DNS-серверы, которые вы хотите использовать для разрешения нелокальных адресов. Как показывают другие комментарии, если вы не хотите пересылать данные на DNS-серверы вашего интернет-провайдера, вы можете использовать OpenDNS, общедоступные DNS-серверы Google или 4.2.2.1/4.2.2.2 (я забыл, кто это делает).

Если вы используете свой собственный DNS-сервер, вам нужен ящик, который будет включен все время, так как все DNS-запросы в вашей домашней сети будут проходить через него. Для этого поля требуется фиксированный IP-адрес в вашей домашней подсети. Удостоверьтесь, что это не может быть снесено бульдозером по DHCP, и сам ящик не должен получать IP через DHCP. Если ваш DHCP настроен на раздачу адресов, например, от 192.168.1.1 до 192.168.1.100, тогда присвойте вашему DNS-серверу IP 192.168.1.101. В обычной ситуации домашних маршрутизаторов вам просто нужно сообщить маршрутизатору, что DNS-сервер 192.168.1.101, и перезагрузиться.

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

Читайте также: