DNS+DHCP

Автор: | Июнь 17, 2019

Статья по установке и настройк DNS+DHCP (на сомом деле это называется так DminamicDNS+DHC).
Начнем с того что я опишу свою сеть:

  • Первый интерфейс смотрящий во внутрь – rl0 {10.10.10.1};
  • Второй интерфейс смотрящий наружу – rl1 {10.10.1.184};
  • DNS-сервера провайдера – {10.0.0.10; 10.0.0.1; 10.10.1.100;};
  • Доменное имя &nbsp  — &nbsp  bonh.ds.tomsk.gov.ru;
    И так первым делом нам нужно установить ДНС точнее не установить а настроить и «разрешить» так как данный демон включён по умолчанию  во FreeBSD называется он named а сама программа демона называется bind в моём случае это bind 9 (да кстати забыл сказать FreeBSD версии 5.5) перед тем как начать работу с DNS несколько общих определений из handbook’a  которые нам пригодятся:
  • Прямой запрос к DNS (forward DNS) — Преобразование имён хостов в адреса IP
  • Ориджин (origin) — Обозначает домен, покрываемый конкретным файлом зоны
  • named, bind, сервер имён — Общеупотребительные названия для обозначения пакета BIND, обеспечивающего работу сервера имён во FreeBSD.
  • Резолвер — Системный процесс, посредством которого машина обращается к серверу имён для получения информации о зоне
  • Обратный DNS (reverse DNS) — Операция, обратная прямому запросу к DNS; преобразование адресов IP в имена хостов
  • Корневая зона — Начало иерархии зон Интернет. Все зоны находятся под корневой зоной, подобно тому, как все файлы располагаются ниже корневого каталога.
  • Зона — Отдельный домен, поддомен или часть DNS, управляемая одним сервером.
    Ну и до кучи описание зон идущих по умолчанию в /etc/namedb/named.conf (тоже взятые из handbook’a) :
  • . — является корневой зоной
  • org. — домен верхнего уровня (TLD) в корневой зоне.
  • example.org. — является зоной в домене верхнего уровня (TLD) org..
  • — 1.168.192.in-addr.arpa является зоной, в которую включены все IP-адреса,   формирующие пространство адресов 192.168.1.*.
    Ну что думаю можно приступать. Файлы с которыми мы будем работать:  /etc/namedb/named.conf (главный файл демона named), /etc/namedb/bonh.ds.tomsk.gov.ru (файл в котором будет описана прямая зона моей, соответствие имя – IP-адрес ), /etc/namedb/10.10.10.rev (файв котором будет описан обратная зона моей сети, соответствие IP-адрес –имя хоста), /etc/namedb/localhost.rev (обратная зона локаль хоста), что бы до конца раскрыть тему в каталоге /etc/namedb также присутствует файл named.root который содержит адреса главных DNS (адреса не меняются годами) к которым наш DNS обращается что бы узнать какой либо адрес ,  но этот файл мы трогать не буди.
    Всё план действий известен можно начинать. Топаем в /etc/namedb и говорим:

       В результате чего в каталоге /etc/namedb/master должны появиться файлы localhost.rev для локальной адресной зоны и localhost-v6.rev для для конфигурации IPv6. Делаем:

       Всё можно приступать к главному действию!!! Редактировать файл /etc/namedb/named.conf. В показанном примере я оставил только нужное убрав всё лишнее:


    version «Вроде бы Windows WP home edition, а вообще х.з. :)»;
    //что демон будет отвечать на запрос о версии
    forwarders {
    10.0.0.10;
    10.0.0.1;
    10.10.1.100;
    }; //В данном разделе указываются авторитетные DNS-сервера на которые
    // наш сервер будет отправлять свои запросы. Я тут указал DNS’ы провайдера,
    // если вам провайдер не дал оных адресов, значит этого раздела не должно быть.

    query-source address * port 53; // нужен в случае наличия Firewall’а
    //Для того что бы DNS ходил по определённому порту по умолчанию это порт 53

    zone «.» {
    type hint;
    file «named.root»;
    }; //Прописан файл в котором указаны адреса главных DNS. Взято из default’a

    zone «0.0.127.IN-ADDR.ARPA» {
    type master;
    file «localhost.rev»;
    }; //файл содержащий описания обратной зоны локаль хоста. Взят из default’a
    //немного подкорректирована последняя строчка

    zone «bonh.ds.tomsk.gov.ru» {
    type master;
    file «bonh.ds.tomsk.gov.ru»;
    }; // Добрались до вкусненького, файл в котором будет описана моя прямая зона

    zone «10.10.10.in-addr.arpa» {
    type master;
    file «10.10.10.rev»;
    }; // А тут моя обратная зона.

    И так ещё раз пробежимся:
    forwarders
    Это должен быть разделенный точкой с запятой (не забудьте поставить
    последнюю точку с запятой) список серверов dns. Если ваш сервер dns не
    знает ответа, он будет запрашивать эти серверы dns.

    query-source address
    При помощи этой опции вы можете заставить сервер DNS использовать
    определенный порт, это очень полезно при использовании файрволла.

    zone «.»
    Это зона для доменов верхнего уровня, файл ‘named.root’ содержит все
    корневые серверы (адреса не меняются годами, так что вы можете не
    редактировать этот фыйл).

    zone «bonh.ds.tomsk.gov.ru»
    Это определяет файл, в котором сервер DNS может найти информацию о
    домене ‘bonh.ds.tomsk.gov.ru’

    zone «10.10.10.in-addr.arpa»
    Эта зона используется для обратных поисков (lookup) DNS. Как вы могли обратить внимание, адрес ip яаляется обратным и в нем пропущен последний номер. Это решение для проблемы ‘яйца и курицы’. Откуда сервер DNS знает на каком сервере он может найти информацию, которую он ищет? Он разрешает адрес ip и опрашивает ответственный за это сервер, но как он опрашивает сервер? путем разрешения имени хоста. Вы видите, это небольшая проблема. Вот почему выбран этот метод. Я не стану углубляться в подробности, поскольку для установки сервера DNS в этом нет необходимости.
    Двигаемся дальше создаём файлы зон (прямой и обратный) нашего домена:
    Прямой:

    bonh.ds.tomsk.gov.ru. IN SOA ns.bonh.ds.tomsk.gov.ru. admin.bonh.ds.tomsk.gov.ru. (
    2006240801 ; Serial (YYYYDDMM plus 2 digit serial)
    86400 ; refresh (1 day)
    7200 ; retry (2 hours)
    8640000 ; expire (100 days)
    86400) ; minimum (1 day)

    IN NS ns.bonh.ds.tomsk.gov.ru.
    IN MX 10 mx.bonh.ds.tomsk.gov.ru.

    Localhost IN A 127.0.0.1
    ns IN A 10.10.10.1
    mx IN A 10.10.10.1

       Заметьте, что все имена хостов, оканчивающиеся на ».», задают полное имя, тогда как все имена без символа ».» на конце считаются заданными относительно origin. Например, ns преобразуется в ns.bonh.ds.tomsk.gov.ru. В нашем воображаемом файле ориджином является bonh.ds.tomsk.gov.ru. (написано в самом начале).
       Записи в DNS: SOA — начало зоны ответственности, NS — авторитативный сервер имен, A — адрес хоста, MX – почта, PTR — указатель на доменное имя (используется в обратных зонах DNS). И так что же там все-таки написано:

    bonh.ds.tomsk.gov.ru – доменное имя зоны
    ns.bonh.ds.tomsk.gov.ru. – авторитетный сервер имён в данной зоне
    admin.bonh.ds.tomsk.gov.ru. — человек, отвечающий за эту зону, адрес электронной почты с символом »@» замененным на точку. (<admin@bonh.ds.tomsk.gov.ru > становится admin.bonh.ds.tomsk.gov.ru)
    2006082401 —  последовательный номер файла. При каждом изменении файла зоны это число должно увеличиваться. В настоящее время для нумерации многие администраторы предпочитают формат ггггммддвв. 2006082401 будет означать, что файл последний раз изменялся 24.08.2006, а последнее число 01 означает, что это была первая модификация файла за день. Последовательный номер важен, так как он служит для того, чтобы вторичные серверы узнавали об обновлении зоны.
    IN      NS         ns.bonh.ds.tomsk.gov.ru.
    Это NS-запись. Такие записи должны иметься для всех серверов имён, которые будут отвечать за зону.
    IN      MX      10  mx.bonh.ds.tomsk.gov.ru.Это майл сервер в данной зоне число 10 означает его приоритет (например когда не один майл сервер, 10 наивысший приоритет затем идёт 20 и т.д.)

    тут уже сопоставляется имя хоста IP-адресу, замете я тут только прописал свой сервер и всё, остальное пропишет DHCP и будет вносить коррективы при каждом изменении, неправда ли удобно.
    Всё переходим к файлу отвечающему за обратную зону:

    @ IN SOA ns bonh.ds.tomsk.gov.ru. admin. bonh.ds.tomsk.gov.ru. (
    2001220200 ; Serial (date, 2 digits version)
    86400 ; refresh (1 day)
    7200 ; retry (2 hours)
    8640000 ; expire (100 days)
    86400) ; minimum (1 day)
    IN NS ns. bonh.ds.tomsk.gov.ru.

    1 IN PTR bonh.ds.tomsk.gov.ru.

       Тут практически то же самое только как Вы уже могли заметить вместо записи A (как это было в прямой зоне) стоит запись PTRи выходит что адресу 10.10.10.1 будет соответствовать хост bonh.ds.tomsk.gov.ru. Всё сервер имён настроен «разрешаем» его:

    Разрешаем работу  DNS в firewall’е добавляя следующие строки:

    И запускаем:

       Затем проверяем как он работает:

       Если всё нормально двигаемся дальше, если что – то не так читаем handbook.
    Следующий этап устанавливаем DHCP одновременно прикручивая его к DNS. Почему то так сложилось, что во FreeBSD DHCP-сервер используется от компании ISC и называется он isc-dhcp3-server. Начнём установку DHCP с… правильно обновления портов, после обновления портов топаем /usr/ports/net/isc-dhcp3-server и говорим:

       После чего появляется синенькое окошко, ничего там не трогаем пусть устанавливается. Когда всё установится идём в /usr/local/etc/ и делаем примерно следующие:

    и рихтуем его под себя, хотя нет подождите у нас же не просто DNS и DHCP у нас с Вами DDNS&DHCP, а значит нам нужен секретный ключ, для общения этих двух серверов, а где еговзять?.. Ну… можно самому придумать, хотя все его генерируют, вот и мы с Вами не будим отделятся от стада (не тот это случай) и просто сгенерируем его, следующи образом:

    Посмотрим что он нам нагенерил:

    Ага что-то есть, ну а вот теперь то можно со спокойной совестью рихтовать конфиг, у меня получилось следующие:
    # dhcpd.conf


    key DHCP_UPDATER {
    algorithm hmac-md5;
    secret «key==»;
    }; //Тута мы вписываем вместо key== наш ключь.

    zone bonh.ds.tomsk.gov.ru.{
    primary 127.0.0.1;
    key DHCP_UPDATER;
    } //Зоны которые мы будем обновлять всё оставляем так же как и у меня, меняем
    // лишь название зоны

    zone 10.10.10.in-addr.arpa.{
    primary 127.0.0.1;
    key DHCP_UPDATER;
    } //Соответствует предыдущему

    log-facility local7; // логии &#61514;

    // А вот и локальные параметры т.е. наша с вами, точнее моя, зона

    subnet 10.10.10.0 netmask 255.255.255.0 { //сеть и её маска
    range 10.10.10.2 10.10.10.250; //Диапазон адресов
    option routers 10.10.10.1; //роутер
    option subnet-mask 255.255.255.0; // Маска сети
    option netbios-name-servers 10.10.10.1; //
    option netbios-dd-server 10.10.10.1; //
    option netbios-node-type 8; // Эти 3 параметра нужны при наличии самбы
    option broadcast-address 10.10.10.255; // широковещательный адрес
    option ntp-servers 10.0.0.10; //сервер точного времени
    }

    Всё, осталось только внести коррективы в /etc/namedb/named.conf, я его продублирую но уже со внесёнными в него изменениями и про комментирую их.


    query-source address * port 53; // нужен в случае наличия Firewall’а

    key DHCP_UPDATER {
    algorithm hmac-md5;
    secret «key==»;
    }; // Тот самый key

    zone «.» {
    type hint;
    file «named.root»;
    };

    zone «0.0.127.IN-ADDR.ARPA» {
    type master;
    file «localhost.rev»;
    };

    zone «bonh.ds.tomsk.gov.ru» {
    type master;
    file «bonh.ds.tomsk.gov.ru»;
    allow-update { key DHCP_UPDATER; };
    notify no;
    };
    zone «10.10.10.in-addr.arpa» {
    type master;
    file «10.10.10.rev»;
    allow-update { key DHCP_UPDATER; };
    };
    logging {
    channel update_debug {
    file «/var/log/named-update.log»;
    severity debug 3;
    print-category yes;
    print-severity yes;
    print-time yes;
    };
    channel security_info {
    file «/var/log/named-auth.log»;
    severity info;
    print-category yes;
    print-severity yes;
    print-time yes;
    };
    category update { update_debug; };
    category security { security_info; };
    };
    # Эти строки вставляются для протоколирования работы сервера.
    #Взято из man dhcpd.conf
    # Предварительно необходимо создать файлы, которые указаны в оции file «:»

    include «/etc/namedb/rndc.key»;

    Теперяче дописываем в /etc/rc.conf следующие строки:

    Перезапускаем DNS:

    и запускаем DHCP:

    Если всё нормально маздайки получат нужные параметры, а в директории /etc/namedb в ближайшем будущем появятся два новых файла bonh.ds.tomsk.gov.ru.jnl и 10.10.10.rev.jnl, а сами файлы bonh.ds.tomsk.gov.ru и 10.10.10.rev будут изменены.
    Вот и всё.
    Литература:
    http://opennet.ru
    http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/network-dns.html
    http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/network-dhcp.html
    http://forum.lissyara.su/viewtopic.php?t=753
    http://www.lissyara.su/?id=1138
    И прочие изыскания :)))

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *