На главную

Запуск DNS-сервера под Windows


Введение

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

Встроенный DNS-сервер существует в серверной версии Windows, но благодаря стараниям маркетологов Microsoft его нет в десктоп-редакции (Windows 2000/XP/Vista), поэтому, как это часто бывает, обратимся к щедрому миру Unix. Самые известные DNS-сервера – это BIND, djbdns, PowerDNS, MaraDNS и Unbound. BIND рассматривать нет желания, djbdns в силу своих особенностей жестко привязан к Unix, у PowerDNS Windows-версия не обновляется, поэтому остаются MaraDNS и Unbound. Вы можете попробовать или один или другой, однако, следует помнить, что одновременно они работать не будут.

Руководство будет в стиле краткого HowTo для подготовленного пользователя (скорее, системного администратора), поэтому, если ничего не понятно – позовите знакомого «компутерщика».

Если вы не особо разбираетесь как работает DNS, но очень хочется понять, что мы тут делаем (запускаем DNS-кэш, способный принимать рекурсивные запросы и отсылать итеративные), можете почитать главу The Big Picture руководства Жизнь с djbdns (на русском).


Unbound

Заходим на сайт http://unbound.net/ в раздел Downloads, находим строки:

Windows 32-bit version compiled from the source.
Installer:

По ссылке (на момент написания статьи – unbound_setup_1.3.0) скачиваем дистрибутив. Запускаем файл, нажимаем «Next», читаем лицензионное соглашение, если согласны нажимаем «I Agree», убираем галочку с «DLV – dlv.isc.org» (проверять DNSSEC-сигнатуры нам не нужно), нажимаем «Next», «Next», «Install», «Finish». Сервис автоматически устанавливается и стартует. Все что нужно для работы (включая README.txt) находится в C:\Program Files\Unbound.


MaraDNS

Запуск MaraDNS под Windows, как оказалось, довольно нетрививальное занятие, поэтому, если очень хочется – можете попробовать сами.


Настройка Windows

Итак, DNS-сервер мы установили и запустили, необходимо теперь настроить Windows.

В свойствах соединения с интернетом («Пуск», «Настройка», «Сетевые подключения», нужное соединение, контекстное меню, «Свойства») на вкладке «Общие» открываем «Протокол интернета TCP/IP», если стоит настройка «Получить адрес DNS-сервера автоматически» необходимо сменить её на «Использовать следующие адреса DNS-серверов» и прописать адрес 127.0.0.1. В случае если у вас активирован параметр «Использовать следующие адреса DNS-серверов» и указаны адреса DNS-серверов провайдера, удалить или оба или один из них (предварительно записав на бумажку) и прописать тот же 127.0.0.1. Указывать один и тот же адрес (127.0.0.1) два раза нет необходимости. Нажимаем «OK», «OK», ждем пока все сохранится и пробуем открыть какой-нибудь сайт. Другой метод проверки – для настоящих админов. Заходим в консоль, запускаем nslookup, далее выполняем:

> server 127.0.0.1
Default Server:  localhost
Address:  127.0.0.1

> www.mail.ru
Server:  localhost
Address:  127.0.0.1

Non-authoritative answer:
Name:    www.mail.ru
Addresses:  194.67.57.26, 194.67.57.126, 194.67.57.226, 194.67.57.20

> exit

В данном случае у нас успешно разрешилась запись (A-типа) для www.mail.ru.

Если не получается, проверяем что у вас подключен интернет, сделав ping на шлюз провайдера (узнать можно через ipconfig /all). Если подключен, смотрим в Диспетчере задач, чтобы был запущен процесс DNS-сервера. Если не запущен, смотрим оснастку «Службы» (в консоли запустить services.msc): пробуем запустить сервис и проверяем, чтобы стоял автоматический запуск. Если не помогает – либо читаем документацию (DNS-сервера), включаем лог и проверяем свой firewall и конфигурационный файл DNS-сервера (хотя, он должен быть по умолчанию уже настроен), либо зовем кого-то более квалифицированного, либо удаляем программу, возвращаем настройки назад, и [грустим | идем гулять | пить пиво | ...].

Однако, теоретически ничего сложного в описанном процессе нет, поэтому должно заработать (как у автора).


Примечания:

  • Обычно все сервера идут со сравнительно безопасными настройками по-умолчанию, но нелишним будет проверить, что ваш DNS-сервер слушает 53 порты TCP и UDP на 127.0.0.1, а не на 0.0.0.0 (все локальные адреса). Сделать это можно с помощью TCPView. В «Options» активируйте параметр «Show Unconnected Endpoints» и деактивируйте «Resolve Adresses». Найдите процесс DNS-сервера, для него должно быть две записи: TCP с Local Adress 127.0.0.1:53 и State LISTENING и UDP с тем же адресом и пустым полем State.
  • Автор не пользуется DNS-серверами под Windows, и соответственно материалом этой статьи на практике, поэтому просьба не писать писем в стиле «у меня не работает, что делать?».
  • Для написания статьи автор использовал Windows XP, если у вас другая версия Windows – адаптируйте пути и команды под свою версию ОС.
  • Если вы пытаетесь сделать это на компьютере в организации, то лучшим решением будет попросить вашего сисадмина настроить офисный шлюз в Интернет под GNU Linux/*BSD с настоящим (под Unix) DNS-сервером, а если он этого не может – найти такого человека.
  • Статья предельно упрощена, поэтому если вы нашли ошибку, неточность или неясный момент – пишите, если вам кажется, что материал раскрыт недостаточно широко (например, не описано в чем разница между рекурсивными и авторитетным/полномочным/authoritative DNS-сервером) – писать не стоит, в Интернете достаточно руководств по устройству DNS (включая документацию на сайтах программ).
  • Windows – не лучшая платформа для работы DNS-сервера (как минимум – портированного из Unix) поэтому все это может работать не идеально (в первую очередь, в плане скорости).
  • В обычном случае общения «десктоп – DNS-сервер провайдера» для разрешения имени в подавляющем большинстве случаев отсылается один запрос и получается один ответ. В нашем случае запросов и ответов будет в несколько раз больше, т. к. мы берем функции провайдерского DNS-сервера на себя. На общем трафике это скажется незначительно, поскольку DNS-запросы и ответы очень маленькие, но может сказаться на скорости начала открытия сайтов. Но, поскольку запросы кэшируются, заметно это будет, скорее всего, только в первые минуты работе в Интернете.

Вот и все, спасибо за внимание.



По всем вопросам пишите на articles <at> lithium.opennet.ru
Рейтинг@Mail.ru