Dns сервер своими руками

Содержание

Введение

Иногда необходимо иметь доступ к своей машине, или машине клиента, которые имеют динамический IP адрес. Для этих целей существует масса сервисов, но бесплатных становится все меньше и меньше. Вот для этого и предназначена данная статья. Если у вас есть под рукой сервер (VDS, VPS или дедик), из которого можно сделать ДНС сервер, то с помощью данной статьи вы сможете сделать для себя такой сервис и пользоваться им как вам удобно и сколько вам хочется. В ходе создания сервиса было перерыто множество страниц в интернете, зачастую противоречащих друг другу. Поэтому, ссылки на исходники указаны не будут. Это статья как бы компиляция всех сведений, нарытых в сети.

Начало работы

Для начала работы по созданию сервиса предполагается, что у вас настроен на сервере BIND, установлены пакет dnsutils и программа Curl. Если обнаружилось вдруг, что у вас этого нет, почитайте, что написано в этой статье. Для простоты сразу договоримся, что оперировать будем доменом dyndns.my и поддоменом с динамическим IP dhost. Полный адрес получится dhost.dyndns.my. В домене должна быть запись A ns с IP вашего сервера. Или не ns, тут кому как нравится, но в этом примере дело обстоит именно так. Ну и для полной ясности, и сервер, и клиент — компы с Ubuntu. Версия уже принципиального значения не имеет.

Он сказал, поехали!

Настройка клиентской части

Создадим отдельный каталог в /etc.

Перейдем в него.

Генерируем пару ключей для обмена информацией между клиентом и сервером.

В результате этой операции в каталоге появляются два файлика — Kdyndns.my.+157+48025.key и Kdyndns.my.+157+48025.private. Из первого файла нам будет необходим только набор символов после «157 ». Именно после пробела начинается тело ключа. Создаем скрипт обновления доменных зон.

Вставляем туда текст.

Сохраняем. Затем даем права на исполнение.

Создаем символическую ссылку в каталог /usr/sbin, чтобы не добавлять в пути скрипт обновления зон. Это не обязательно, будет просто не лишним для того, чтобы из консоли набирать команду без путей.

Раз добавили, то в /etc/crontab будем использовать его.

Настройка серверной части

Настройка сервера имен заключается в прописывании домена и установке разрешения на обновления записей A доменных имен с динамическими IP. Переходим в каталог bind.

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

Добавляем в файл /etc/bind/named.conf строчку с указанием файла, где определен ключ.

Следующим шагом необходимо в файл /etc/bind/named.conf.local прописать доменную зону, которой мы оперируем.

Необходимо будет создать и файл /etc/bind/pri.dyndns.my с различными записями для домена. Он обычный, с минимально необходимым набором записей для функционирования домена, потому и нет необходимости рассматривать его в данной статье. Рестартуем сервер имен для завершения и применения настроек.

Теперь в каталог, предназначенный для веб страниц, помещаем очень простой скрипт на php.

Вставляем туда код.

Если вы обратитесь к этому файлу через веб, к примеру, http://dyndns.my/ip.php, то, кроме своего IP адреса ничего не увидите. Что нам и требовалось. Клиент, с помощью curl, его и получает и обновляет информацию на сервере.

Вот и все телодвижения по настройке серверной части.

Настройка заключительная

Это означает, что раз в 15 минут скрипт будет запускаться. На этом настройка клиентской части закончена. Можно подождать 15 минут и убедиться, что наш хости работает пингом со стороннего сервера. А можно и выполнить команду.

Для чего, собственно, мы и делали симлинк в /usr/sbin. Если вы не получили в ответ выхлоп со словом REFUSED, значит вы все сделали правильно и можете быть счастливы.

Выводы

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

Большая просьба, при перепечатке данной статьи, указывать источник, в частности, этот ресурс.

10.1. Настройка сервера DNS

Учитывая, что на обращение к серверу DNS провайдера требуется 10…15, а иногда и все 30 секунд (это зависит от загрузки сети и от скорости соединения), установка сервера DNS в локальной сети с выходом в Интернет является просто необходимой. Обычно сервер DNS устанавливается на шлюзе, который используется для выхода в Интернет. Прежде чем приступить к настройке сервера, нужно определить, запущен ли он:

Читайте также:  Монитор asus vg248qe отзывы

ps –ax | grep named

Если сервер DNS запущен, то его нужно остановить (командой kill или ndc), а если он вообще не установлен, то вам придется установить пакет bind. Обратите внимание, что исполнимый файл называется named, а сам пакет — bind. BIND (Berkley Internet Nameserver Daemon) — это наиболее известный и используемый DNS-сервер, настраиваемый в Linux. Для работы сервера должен быть активизирован сервис network. Я надеюсь, вы не забыли, как это сделать?

Теперь приступим к непосредственной настройке сервера и рассмотрим ее на примере. Для этого обратимся к файлу /etc/named.conf, в котором содержится основная информация о параметрах сервера (см. листинг 10.1).

Листинг 10.1. Файл named.conf

Основной рабочий каталог сервера — /var/named. Указанные без начального обратного слэша имена файлов будут искаться относительно этого каталога. То есть именно в нем сервер будет искать файлы dhsilabs.com, named.local, 192.168.1, named.ca (см. листинги 10.1, 10.3, 10.4). Обслуживаемая сервером зона (домен) — dhsilabs.com.

Давайте рассмотрим поподробнее листинг 10.1. Сначала в нем были определены опции протоколирования — блок logging. Затем идет задание параметров самого сервера — блок options. Параметр directory определяет корневой каталог сервера – /var/named. Помимо параметра directory в блоке options могут задаваться и другие параметры (такие, как forwarders, forward и др.), о которых сказано будет несколько позже (см. п. 10.2). Для функционирования сервера достаточно и одного параметра directory.

После блока параметров должны быть перечислены зоны, обслуживаемые сервером. Мы будем обслуживать зону (домен) dhsilabs.com. Информация об этой зоне хранится в файле /var/named/dhsilabs.com. Позже мы займемся созданием этого файла. С помощью него наш сервер будет преобразовывать имена компьютеров в IP-адреса. Для обратного преобразования служит файл /var/named/192.168.1.

Зоны "." и "0.0.127.in-addr.arpa" — особые. Я не буду их подробно описывать: их назначение вы поймете из дальнейшего текста книги. Файл named.local — это файл обратного соответствия, предназначенный для преобразования IP-адресов в имена, то есть, в частности, он используется для преобразования адреса 127.0.0.1 в имя localhost.

Файл named.ca — это файл, в котором перечислен начальный набор корневых DNS-серверов. Он содержит информацию о корневых серверах DNS. При разрешении имени в IP-адрес или наоборот, полученная информация кэшируется и остается в памяти сервера определенное время. В свой работе, если нужно разрешить имя в IP-адрес (или наоборот), ваш DNS-сервер сначала будет искать необходимую ему информацию в кэше. Если ее там не окажется, то сервер обратится к одному из корневых серверов DNS, IP-адреса которых находятся в файле named.ca. Файл named.ca необходимо регулярно обновлять, чтобы он всегда содержал свежие данные (первый раз его нужно обновить сразу же после установки сервера, несмотря на то, что этот файл будет только что создан). Немного позже я отдельно опишу его обновление.

Файл dhsilabs.com непосредственно служит для преобразования имен в IP-адреса (см. листинг 10.2).

Листинг 10.2. Файл dhsilabs.com

@ IN SOA den.dhsilabs.com. hostmaster.dhsilabs.com. (

93011120 ; серийный номер

10800 ; обновление каждые 3 часа

3600 ; повтор каждый час

3600000 ; хранить информацию 1000 часов

86400) ; TTL записи — 2 4 часа

IN NS den.dhsilabs.com.

IN MX 150 den.dhsilabs.com.

den IN A 192.168.1.1

IN HINFO INTEL CELERON (LINUX)

IN MX 150 evg.dhsilabs.com.

ns IN CNAME den.dhsilabs.com.

www IN CNAME den.dhsilabs.com.

ftp IN CNAME den.dhsilabs.com.

mail IN CNAME den.dhsilabs.com.

evg IN A 192.168.1.2

IN MX 100 den.dhsilabs.com.

localhost IN A 127.0.0.1

Попробую объяснить все как можно быстрее и проще. Свое объяснение оформлю в виде табл. 10.1.

Записи DNS Таблица 10.1

Запись Описание
NS Обозначает сервер имен (name server)
А Задает IP-адрес, соответствующий имени компьютера
PTR Задает имя компьютера, соответствующее IP-адресу
MX число Определяет почтовик, который будет обслуживать наш домен. Числовой параметр возле записи MX является приоритетом данного почтового сервера. Чем меньше число, тем выше приоритет
CNAME Определяет каноническое имя узла, то есть, если вы в окне браузера введете http://www.dhsilabs.com, то обращение будет произведено к den.dhsilabs.com
HINFO Сведения об аппаратном обеспечении. Рекомендую не заполнять эту запись или использовать заведомо неправильные данные. Чем меньше информации имеет о вашей сети злоумышленник, тем сложнее ему будет атаковать ее
TXT Прочие сведения. Содержит произвольный текст

Обратите внимание на точку в конце

@ IN SOA den.dhsilabs.com. hostmaster.dhsilabs.com. (

Если точка не указана, то к имени будет добавлено имя домена (то есть dhsilabs.com).

Листинг 10.3. Файл named.local

@ IN SOA dhsilabs.com. root.dhsilabs.com. (

199609203 ;серийный номер

28800 ;обновление каждые 8 часов

7200 ;повтор каждые 2 часа

604800 ;хранить информацию 168 часов (1 неделю)

86400) ;TTL записи – 24 часа

1 PTR localhost.

Файл 192.168.1 или файл обратного соответствия представлен в листинге 10.4.

Листинг 10.4. Файл обратного соответствия

@ IN SOA den.dhsilabs.com. hostmaster.dhsilabs.com. (

93011120 ; серийный номер

10800 ; обновление каждые 3 часа

3600 ; повтор каждый час

3600000 ; хранить информацию 1000 часов

86400 ) ; TTL записи – 24 часа

@ IN NS den.dhsilabs.com

1 IN PTR den.dhsilabs.com

2.1.168.192 IN PTR evg.dhsilabs.com

Запись PTR используется для преобразования IP-адреса в имя. Если указан не весь IP, например:

Читайте также:  Bluestacks как настроить управление мышью

1 IN PTR den.dhsilabs.com

то к нему будет добавлен адрес подсети 1.168.192. IP-адреса указываются в обратном порядке!

Для установки файла корневого кэша следует установить пакет caching-nameserver, но я рекомендую получить и установить самую новую версию. Для этого подключитесь к Интернет, запустите сервер DNS, а затем выполните команду:

# nslookup | tee ns

В ответ на приглашение программы nslookup введите две команды

> set q=ns (или set type=ns)

На экране вы увидите список корневых серверов DNS, который будет помешен в файл ns. Для преобразования файла ns в формат named.ca воспользуйтесь следующей программкой на awk (см. листинг 10.5).

Листинт 10.5. Сценарий reformat

Использовать ее нужно как reformat , то есть:

reformat ns named.ca

Теперь осталось скопировать named.ca в каталог /var/named и на этом — все.

А теперь покажу, как то же самое можно было сделать проще. Для этого следует воспользоваться программой dig, выполнив команду:

dig @e.root-servers.net.ns > root.hints.new

После этого остается просто заменить старый файл named.ca новым

файлом named.ca.new. Как видите, второй способ намного проще, но и

первый знать не помешает.

Обычно файл named.ca содержит примерно такую информацию:

. 6D IN NS G.ROOT-SERVERS.NET.

. 6D IN NS J.ROOT-SERVERS.NET.

. 6D IN NS K.ROOT-SERVERS.NET.

. 6D IN NS L.ROOT-SERVERS.NET.

. 6D IN NS M.ROOT-SERVERS.NET.

. 6D IN NS A.ROOT-SERVERS.NET.

. 6D IN NS H.ROOT-SERVERS.NET.

. 6D IN NS B.ROOT-SERVERS.NET.

. 6D IN NS C.ROOT-SERVERS.NET.

. 6D IN NS D.ROOT-SERVERS.NET.

. 6D IN NS E.ROOT-SERVERS.NET.

. 6D IN NS I.ROOT-SERVERS.NET.

. 6D IN NS F.ROOT-SERVERS.NET.

G.ROOT-SERVERS.NET. 5w6dl6h IN A 192.112.36.4

J.ROOT-SERVERS.NET. 5w6dl6h IN A 198.41.0.10

K.ROOT-SERVERS.NET. 5w6dl6h IN A 193.0.14.129

L.ROOT-SERVERS.NET. 5w6dl6h IN A 198.32.64.12

M.ROOT-SERVERS.NET. 5w6dl6h IN A 202.12.27.33

A.ROOT-SERVERS.NET. 5w6dl6h IN A 198.41.0.4

H.ROOT-SERVERS.NET. 5w6dl6h IN A 128.63.2.53

B.ROOT-SERVERS.NET. 5w6dl6h IN A 128.9.0.107

C.ROOT-SERVERS.NET. 5w6dl6h IN A 192.33.4.12

D.ROOT-SERVERS.NET. 5w6dl6h IN A 128.8.10.90

E.ROOT-SERVERS.NET. 5w6dl6h IN A 192.203.230.10

I.ROOT-SERVERS.NET. 5w6dl6h IN A 192.36.148.17

F.ROOT-SERVERS.NET. 5w6dl6h IN A 192.5.5.241

Если вы настраиваете сервер DNS только для своей внутренней сети (intranet), которая не имеет выхода в Интернет, не спешите обновлять файл кэша! Он вам вообще не нужен. Вы также должны удалить зону, описывающую корневой кэш в файле named.conf.

Теперь остается сделать пару завершающих штрихов. Отредактируйте файл /etc/resolv.conf таким образом: с помощью директивы search укажите домены для поиска, а в качестве сервера по умолчанию — 127.0.0.1. Можно также указать и адрес реального интерфейса:

search subdomain.domain.com domain.com

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

том случае, если указано только имя узла без домена. Например, если вы введете в окне браузера http://host, сначала будет выполнена попытка обращения к узлу host.subdomain.domain.com, а потом, если узел не будет найден, к узлу host.domain.com. Если и этот узел не будет найден, вы получите соответствующее сообщение. И еще: проверьте порядок разрешения имен в файле /etc/hosts.conf. Порядок должен быть задан так: order hosts,bind. Несмотря на то, что сейчас мы используем DNS, лучше сначала все же искать в файле hosts.

Похожие главы из других книг

8.1.1. Настройка сервера inetd

8.1.1. Настройка сервера inetd Для начала разберемся с настройкой inetd. Этот сервер использовался в дистрибутиве RedHat до версии 7, в более новых версиях он заменен на xinetd (описание этого суперсервера приведено далее в п. 8.1.4…8.1.7). При конфигурирования inetd вам потребуется

8.6.1. Настройка сервера NFS

8.6.1. Настройка сервера NFS Напомню, что если у вас не установлена поддержка NFS, то для сервера необходимо установить пакет nfs-utils-0.2.1-2mdk.i586.rpm.Для настройки сервера сетевой файловой системы NFS используется файл конфигурации /etc/exports. В нем указываются файловые системы, которые

10.1. Настройка сервера DNS

10.1. Настройка сервера DNS Учитывая, что на обращение к серверу DNS провайдера требуется 10…15, а иногда и все 30 секунд (это зависит от загрузки сети и от скорости соединения), установка сервера DNS в локальной сети с выходом в Интернет является просто необходимой. Обычно сервер DNS

10.3. Настройка дополнительного сервера DNS

10.3. Настройка дополнительного сервера DNS Вы когда-нибудь обращали внимание, что у любого уважающего себя провайдера есть два сервера DNS — первичный (primary или master) и вторичный (secondary или slave)? Так вот сейчас и мы займемся настройкой вторичного сервера DNS. Примечание.

Настройка сервера Kerberos

Настройка сервера Kerberos Основой сети Kerberos является сервер Kerberos, или KDC. Как и для большинства серверов Linux, для настройки KDC используется текстовый файл, находящийся в каталоге /etc. Зная формат этого файла, вы можете устанавливать конфигурацию сервера Kerberos и, следовательно,

Настройка сервера BSD LPD

Настройка сервера BSD LPD Среди средств настройки сервера BSD LPD наиболее важны два файла: /etc/hosts.lpd и /etc/printcap. В первом из них указываются клиенты, которые могут обращаться к серверу для выполнения сетевых операций. Во втором определяются принтеры, доступные как для локальных,

Настройка сервера LPRng

Настройка сервера LPRng С точки зрения пользователя система печати LPRng работает так же, как и BSD LPD. Это вполне закономерно, так как средства LPRng были разработаны для замены BSD LPD. LPRng использует файл /etc/printcap, в котором содержится такая же информация, как и в одноименном файле BSD

Читайте также:  Adobe photoshop характеристика программы

Настройка сервера CUPS

Настройка сервера CUPS Система печати CUPS, предназначенная для использования в Unix и Linux, обеспечивает чрезвычайно высокую степень гибкости. Вместо того чтобы вносить изменения в пакет BSD LPD (что по сути надо было сделать при создании LPRng), разработчики CUPS создали полностью

Настройка сервера NTP

Настройка сервера NTP Из протоколов, обеспечивающих работу временных серверов, наиболее популярен NTP (Network Time Protocol — сетевой протокол времени), который описан в документе RFC 1305 (http://www.ietf.org/rfc/rfc1305.txt). Рассмотрению более старых версий этого протокола посвящены документы RFC 958,

Настройка ведомого сервера

Настройка ведомого сервера Если вы собираетесь зарегистрировать домен, вам необходимо настроить два сервера DNS. Обычно один сервер конфигурируют как ведущий, а другой — как ведомый. Как и ведущий, ведомый сервер хранит информацию о зоне в отдельных файлах. Различие между

Настройка сервера FreeS/WAN

Настройка сервера FreeS/WAN Сервер FreeS/WAN выполняет те же функции, что и сервер PPTP, но он ориентирован на работу в системе Linux. Как и сервер PPTP, Frees/WAN поддерживает защищенные соединения в незащищенном сетевом окружении, например в Internet. Первое, что надо сделать для обеспечения

12.1.2. Настройка сервера NFS

12.1.2. Настройка сервера NFS Сервер NFS экспортирует файловые системы, то есть делает их доступными для использования с другого компьютера. Обслуживанием экспорта занимаются следующие демоны:? rpc.mountd, обрабатывающий запрос на монтирование;? rpc.nfsd, обеспечивающий доступ к

13.3. Настройка сервера DNS

13.3. Настройка сервера DNS Локальная сеть с выходом в Интернет может пользоваться сервером имен, работающим на компьютере провайдера. Но, учитывая типичную для бывшего СССР скорость соединения, при которой на обращение к серверу DNS провайдера требуется от 10 до 30 секунд,

Глава 15 Настройка сервера FTP

Глава 15 Настройка сервера FTP FTP (File Transfer Protocol) — один из старейших протоколов Интернета — используется для обмена файлами между системами. Обычно на FTP-сервере размещают свободно распространяемое программное обеспечение, документацию, обновления программ, драйверы и

18.10.2. Настройка сервера SOCKS5

18.10.2. Настройка сервера SOCKS5 Популярный прокси-сервер, работающий по протоколу SOCKS5, поддерживает компания Permeo (www.socks.permeo.com). Я пользуюсь socks5 v1.0 release 11 и настройку рассмотрю на его примере. Этот сервер не в полной мере некоммерческий (лицензия — не GPL), поэтому вам может быть

26.4. Быстрая настройка FTP-сервера

26.4. Быстрая настройка FTP-сервера Рассмотрим настройку FTP-сервера ProFTPD. На мой взгляд, этот сервер наиболее гибкий в настройке. Установите два пакета: proftpd-basic и gadmin-proftpd. Первый содержит FTP-сервер, а второй — графическую программу для его настройки.После установки сервер

В исходных данных:
1) локальная сеть выходящая в мир по 1 белому ip (стандартная звезда с коровым компом на линухе в роли шлюза)
2) сервер dns (Linux) в локальной сети
3) сервер с lamp раздающий сайт
4) возможно другие сервера для которых тоже пригодится в будущем доменное имя

Вопрос: в качестве мысленного эксперимента, какова должна быть последовательность действий, если я хочу завести свой собственный домен (купить? украсть? арендовать? продать душу АДминскому дьяволу?) на имеющийся белый адрес (например mneprostointeresno.ru ), после разрешить на своём dns, локальные сервера (что-то типа ftp.mneprostointeresno.ru или lamp.mneprostointeresno.ru ) и обеспечить доступ к ним из глобальной сети.
Для трутЪ админов просьба сильно камнями не кидать, буду крайне признателен если даже скинете ссылки на учебные материалы (если конечно в тему)

  • Вопрос задан более трёх лет назад
  • 4396 просмотров

arkitekt: Зачем .
Например в BIND, делаете

Вуаля, ваш DNS сервер в локалку отдает "один мир" а в интернет "Другой мир"

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

одна запись класса а: *.mneprostointeresno.ru и все идет к твоему ип

Задача распадается как минимум на две.

1. Регистрация доменного имени mneprostointeresno.ru. Это делается у любого регистратора. Для того, чтобы настроить имена ftp, www, ns и т.д. подымать свой DNS не обязательно — регистраторы оказывают услуги Primary-DNS. У этого решения есть плюсы и минусы. Плюсы — ничего не подымать, все редактируется в более-менее дружественном интерфейсе. Минусы — при отсутствии связи и необходимости что-то поменять придется обламываться до тех пор пока связь не появится. Поэтому лучше всего сделать:

2. Запуск собственного DNS. Запускается bind, формируются необходимые записи (SOA, NS, A, MX и т.д.) и IP севера с bind (белый, если он за NAT) указывается у регистратора в качестве адреса primary DNS. Secondary DNS рекомендую брать прямо у регистратора — так проще настраивать.

Статьи по настройке DNS для небольшой конторы. Старые, еще 2006 года, но в DNS мало что поменялось с тех пор :)Создание и управление зонами DNS, часть 1 и Создание и управление зонами DNS, часть 2