Ubuntu → Настройка кеширующего DNS сервера (BIND) для локальной сети.
Назначение DNS это перевод доменных имен, легко запоминаемых человеком в IP адреса которые понимают компьютеры, этот процесс называется-Разрешение имен.
Что нам даст установка собственного кеширующего DNS сервера?!
Это немного ускорит отклик сайтов + Linux не очень хорошо воспринимает имена NetBios, а ведь иногда приходится находить компьютеры или принтеры внутри локальной сети, а хочется это делать по именам.
Запоминать IP адреса- не удобно, а постоянно лазить к журнал работы DHCP сервера- тоже не наш метод. Вот для таких случаев и нужен DNS в локальной сети.
Сама установка пакета bind9 не отличается сложностью, затыки, обычно возникают на стадии его конфигурирования, т.к. после легко читаемых конфигурационных файлов системы, на человека сваливается непонятный синтаксис, кстати, очень похожий на язык программирования С. Т.к. сервер будет работать внутри локальной сети, то не имеет смысла переносить его в chroot окружение и вся настройка занимает совсем немного времени.
На этом, лирическую часть, можно завершить, переходим к установке и настройке.
Установим DNS сервер Bind9:
После завершения, закачки и установки, нам необходимо отредактировать его конфигурационный файл:
Находим секцию, она находится в самом начале конфигурационного файла, кроме нее там больше ничего нет…
Секция forwarders, отвечает за то, куда будет передаваться DNS запрос на разрешение имени, в случае если его нет в собственной базе. Последнее время меня совсем не радует, работа этих серверов у провайдера по этому можно подключить сторонние например гугловские, запомнить IP очень легко 8.8.8.8, на его примере я и буду вести настройку, но никто не мешает использовать, те что вам нравятся больше.
Редактируем секцию, для начала с нее нужно снять комментарии и добавить сторонние DNS, если есть необходимость добавить несколько серверов, например на тот случай если сервер google не выдержит ваших запросов и поломается :), то IP других серверов можно написать в столбик, тогда можно добиться более значительной отказоустойчивости.
В эту секцию лучше вписать IP того сервера который у вас указан в файле /etc/resolv.conf или вписать туда в секцию nameserver этот IP
Сохраняем изменения и выходим
Перезапускаем сервер и проверяем
Набираем в командной строке nslookup mail.ru
Должно выдать:
Это говорит о том, что наш сервер не является, главным в обслуживании этой зоны (mail.ru), но запросы добавил в кеш!
Теперь нужно создать ДНС зону для нашей сети чтобы машины могли находить различные сетевые сервисы — могут быть, например, сетевые принтеры, они могут быть как самостоятельными так и расшаренными на других рабочих станциях.
Нашу зону можно назвать orgname –т.е. название организации.
Первым делом создаем зону, для этого отредактируем named.conf.local
и добавим в него следующее:
Сохраняем и выходим
Теперь нам необходимо создать файл настройки зоны
и вставляем в него следующее:
(Прошу отнестись внимательно к синтаксису конфигурационного файла, даже точки имеют значение)
Теперь, при добавлении нового сетевого устройства, вам необходимо сделать 2 вещи:
1) Зарезервировать IP адрес на DHCP сервере, о том, как это сделать, можно прочитать в статье- Настройка DHCP сервера
2) Создать DNS зону для этого IP, вида devicename IN A XXX.XXX.XXX.XXX. Где: devicename-сетевое имя устройства; XXX.XXX.XXX.XXX-его IP адрес который зарезервирован на DHCP сервере.
теперь нам необходимо отредактировать файл resolv.conf
и вписать туда:
все что там было можно закоментировать поставив #
перезапускам сервер
Сделано это для того чтобы сервер искал все в собственной базе, а уже потом BIND будет перенаправлять запросы к серверу 8.8.8.8 IP которого вписан в директиве forwarders.
Теперь можно проверять работоспособность:
Если тестирование происходит из под Windows:
Если тестируем из под Linux:
Должны пойти пинги на тот IP который вы указали вместо XXX.XXX.XXX.XXX
На этом настройку DNS сервера можно завершить.
Если возникла необходимость, интегрировать работу DNS с DHCP сервером, то можно воспользоваться статьей: Настройка DNS+DHCP сервера для локальной сети+динамическое обновление DNS зон
Что нам даст установка собственного кеширующего DNS сервера?!
Это немного ускорит отклик сайтов + Linux не очень хорошо воспринимает имена NetBios, а ведь иногда приходится находить компьютеры или принтеры внутри локальной сети, а хочется это делать по именам.
Запоминать IP адреса- не удобно, а постоянно лазить к журнал работы DHCP сервера- тоже не наш метод. Вот для таких случаев и нужен DNS в локальной сети.
Сама установка пакета bind9 не отличается сложностью, затыки, обычно возникают на стадии его конфигурирования, т.к. после легко читаемых конфигурационных файлов системы, на человека сваливается непонятный синтаксис, кстати, очень похожий на язык программирования С. Т.к. сервер будет работать внутри локальной сети, то не имеет смысла переносить его в chroot окружение и вся настройка занимает совсем немного времени.
На этом, лирическую часть, можно завершить, переходим к установке и настройке.
Установим DNS сервер Bind9:
sudo apt-get install bind9
После завершения, закачки и установки, нам необходимо отредактировать его конфигурационный файл:
sudo nano /etc/bind/named.conf.options
Находим секцию, она находится в самом начале конфигурационного файла, кроме нее там больше ничего нет…
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
// forwarders {
// 0.0.0.0;
// };
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
Секция forwarders, отвечает за то, куда будет передаваться DNS запрос на разрешение имени, в случае если его нет в собственной базе. Последнее время меня совсем не радует, работа этих серверов у провайдера по этому можно подключить сторонние например гугловские, запомнить IP очень легко 8.8.8.8, на его примере я и буду вести настройку, но никто не мешает использовать, те что вам нравятся больше.
Редактируем секцию, для начала с нее нужно снять комментарии и добавить сторонние DNS, если есть необходимость добавить несколько серверов, например на тот случай если сервер google не выдержит ваших запросов и поломается :), то IP других серверов можно написать в столбик, тогда можно добиться более значительной отказоустойчивости.
forwarders {
8.8.8.8;
193.58.251.251; //Российская служба DNS -SkyDNS
};
В эту секцию лучше вписать IP того сервера который у вас указан в файле /etc/resolv.conf или вписать туда в секцию nameserver этот IP
Сохраняем изменения и выходим
Перезапускаем сервер и проверяем
Набираем в командной строке nslookup mail.ru
Должно выдать:
Non-authoritative answer:
Name: mail.ru
Addresses: 94.100.191.202
Это говорит о том, что наш сервер не является, главным в обслуживании этой зоны (mail.ru), но запросы добавил в кеш!
Теперь нужно создать ДНС зону для нашей сети чтобы машины могли находить различные сетевые сервисы — могут быть, например, сетевые принтеры, они могут быть как самостоятельными так и расшаренными на других рабочих станциях.
Нашу зону можно назвать orgname –т.е. название организации.
Первым делом создаем зону, для этого отредактируем named.conf.local
sudo nano /etc/bind/named.conf.local
и добавим в него следующее:
zone "orgname" {
type master;
file "/etc/bind/db.orgname";
};
Сохраняем и выходим
Теперь нам необходимо создать файл настройки зоны
sudo nano /etc/bind/db.orgname
и вставляем в него следующее:
(Прошу отнестись внимательно к синтаксису конфигурационного файла, даже точки имеют значение)
@ IN SOA orgname. root.orgname. (
20101015
4h ; время обновления -4 часа
1h ; повтор каждый час
1w ; как долго хранить информацию -1 неделю
1d ) ; TTL (время жизни ) записи - 1 день
@ IN NS orgname. ; имя сервера имен
@ IN A 192.168.10.1 ; A - запись - IP адрес нашего ДНС сервера который обслуживает эту зону, @ означает что это корневая зона.
* IN CNAME @
printer IN A 192.168.10.25 ; Можно создать ДНС запись сетевого принтера который находится по адресу 192.168.10.25
Теперь, при добавлении нового сетевого устройства, вам необходимо сделать 2 вещи:
1) Зарезервировать IP адрес на DHCP сервере, о том, как это сделать, можно прочитать в статье- Настройка DHCP сервера
2) Создать DNS зону для этого IP, вида devicename IN A XXX.XXX.XXX.XXX. Где: devicename-сетевое имя устройства; XXX.XXX.XXX.XXX-его IP адрес который зарезервирован на DHCP сервере.
теперь нам необходимо отредактировать файл resolv.conf
sudo nano /etc/resolv.conf
и вписать туда:
nameserver 127.0.0.1
все что там было можно закоментировать поставив #
перезапускам сервер
sudo reboot
Сделано это для того чтобы сервер искал все в собственной базе, а уже потом BIND будет перенаправлять запросы к серверу 8.8.8.8 IP которого вписан в директиве forwarders.
Теперь можно проверять работоспособность:
Если тестирование происходит из под Windows:
ping devicename.orgname
Если тестируем из под Linux:
ping devicename.orgname -c 4
Должны пойти пинги на тот IP который вы указали вместо XXX.XXX.XXX.XXX
На этом настройку DNS сервера можно завершить.
Если возникла необходимость, интегрировать работу DNS с DHCP сервером, то можно воспользоваться статьей: Настройка DNS+DHCP сервера для локальной сети+динамическое обновление DNS зон
49 комментариев
потом: /etc/bind/db.zonder
@ IN SOA zonder. root.zonder. (
20101015
4h;
1h;
1w;
1d );
@ IN NS zonder.;
@ IN A 192.168.0.1; — адрес указал который указывал dhcpd.conf option domain-name-servers 192.168.0.1; # IP DNS-сервера
* IN CNAME @
— потом:
на человека сваливается непонятный синтаксис, кстати, очень похожий на язык программирования С
согласен видел С++, написал три програмки-! ки! для консоли: комменты в С идут после косых что видно отсюда /etc/bind/named.conf.options так и есть, НО! /etc/bind/db.orgname после точек с запятой идут комменты, точки находятся в табуляции от написанных настроек.Вопрос точки с запятой являются окончанием выражения? или обозначением комментов?
Чтобы сразу было понятно -службы DNS и DHCP работают независимо друг от друга! И им безразлично что делает другая служба и работает она вообще.
Если на этот IP мы повесим не принтер, а ПК -без принтера, но при этом, оставим запись вида Printer.orgname на DNS, не изменив настройки клиентов, то отправка на печать завершится ошибкой-принтера то нет по указанному адресу. Вот для того чтобы принтер всегда получал один и тот же IP и необходимо его резервирование на DHCP, непосредственно за этим устройством.
Если мы имеем постоянный IP за этим устройством, мы можем его добавить в DNS. Cлужбе DNS, также безразлично, что за устройство висит на этом IP, она не занимается проверкой, ей даже безразлично включено это устройство в сеть или нет. Она просто сопоставляет присланное имя и сверяет его с базой, если к этому имени привязан IP то его и отправляют клиенту.
Но если IP не зарезервировать за определенным MAC адресом, то он будет доставаться, кому ни попадя, и работа службы печати будет невозможна! Пока IP не достанется нашему принтеру, а когда это произойдет-вопрос сложный.
Это что касалось взаимодействия служб.
По поводу выдачи серверов ДНС клиентам с помощью DHCP.
DHCP сервер выдает клиенту адрес DNS сервера, можно выдать адрес гугловсгого сервера, а можно и собственного. Если мы даем клиентам через DHCP, сервер гугла, то тут все понятно, все запросы идут на 8.8.8.8, но если мы даем наш DNS, то все запросы на разрешение имен начинают идти к нему. Наш сервер сверяет их со своей базой если имя и IP в ней найдены, то клиенту выдается IP и все нормально. Но если в базе ничего не найдено, то запрос пересылается (процесс называется форвардинг) более вышестоящему серверу который определяется в секции:
forwarders {
8.8.8.8;
};
Далее схема прежняя -гугловский сервер ищет в своей базе имя и если оно там есть, присылает нашему серверу IP, эти данные, в свою очередь, наш сервер добавляет в кеш и после этого начинает отдавать всем клиентам при повторном запросе. Что экономит время.
По поводу синтаксиса файла db.orgname
IN SOA orgname. root.orgname. (
20101015
4h; время обновления -4 часа
1h; повтор каждый час
1w; как долго хранить информацию -1 неделю
1d ); TTL (время жизни ) записи — 1 день
Точка с запятой- комментарий. Начало выражения – (, а его завершение — )
К сожалению мне пока не удалось найти способа добавлять данные (имена ПК) из DHCP сервера в DNS, так как это реализовано в Active Directory, в автоматическом режиме, хотя возможно плохо искал.
Очень срочно надо поднять сервер в школе, а с этим делом я не сильно знаком. Аська 443629266.
Если кому не трудно помогите.
если делать nslookup на сервере
nslookup mail.ru
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: mail.ru
Address: 94.100.191.201
nslookup HP4014
Server: 127.0.0.1
Address: 127.0.0.1#53
** server can't find HP4014: NXDOMAIN
Похоже гдето не правильно сделал в файле /etc/bind/db.orient
DHCP не подымал. Пока статикой обойдусь.
Файлы конфигурации:
/etc/bind/named.conf.local
zone «orient» {
type master;
file "/etc/bind/db.orient";
};
файл /etc/bind/db.orient
@ IN SOA orient. root.orient. (
20101015
4h; время обновления -4 часа
1h; повтор каждый час
1w; как долго хранить информацию -1 неделю
1d ); TTL (время жизни ) записи — 1 день
@ IN NS orient.
@ IN A 192.168.10.10
* IN CNAME @
HP4014 IN A 192.168.10.6
HP2605 IN A 192.168.10.4
FILE IN A 192.168.10.2
mail.orient IN A 192.168.10.5
Ubuntu Server 12.04, BIND 9.8.1-P1.
Результат работы dig:
Я полный новичок, только вчера начал осваивать BIND. Как понять в чем дело? Где можно посмотреть лог-файл DNS сервера? Конфиги для BIND уже перепроверял n-ое количество раз, 2 раза настраивал с нуля — результат один и тот же.
Теперь dig выдает следующее:
но если необходимо поддерживать свои dns-зоны, то ставлю еще и bind. но кэш, обычно, у dnsmasq.
Вам нужна строка
Туда можно добавить название своей сети, теперь к именам типа server, автоматически будет добавляться .orgname
Ответьте еще пожалуйста на пару моих вопросов:
1. Надо создать VPN туннель между сетями (Ubuntu desktop используется как сервер, то есть за ним сеть. И на другой стороне точно также.) Какое лучше программное обеспечение использовать??? Я уже и openVPN и платное… Надо что-то из бесплатного найти ((( Что порекомендуете?)
2. Удаленное управление всем этим хозяйством (сервером), либо удаленное управление рабочим столом, тоже через free ПО, либо через терминал или еще что-то можно… Сказали что OpenSSL как то используют для этого, но так я и не понял… Подскажите плз, если знаете. Заранее ОООгромное спасибо за ответ =).
А вот какие данные внутри каналла вы будете гонять- ваше дело, если сеть виндовая то RDP, если Linux то SSH вполне хватит, для удаленного управления хозяйством.
Если я не прав пусть меня поправят, но пока я не увижу нормально работающей реализации, то останусь при своем мнении.
1) Модем установить в режиме моста, тогда из интернета можно будет подключаться напрямую к серверу
2) На модеме, фаерволле, есть функция DMZ в нее добавить ваш сервер, в это случае также можно подключаться на прямую.
Вариант №2, на мой взгляд, предпочтительнее.
Если пробросить порт, то конечно будет, если это фаерволлом не запрещено
Там и без вашего DNS их навалом, а забивать память у него начнут довольно сильно…
Интересное у вас там кино происходит, а регистратору не все равно… Ну если все забанено, тогда только свой или использовать у регистратора, но DNS нужно настраивать только с возможностью ручного добавления зон и запретить трансфер зон, поместить его в чрут. В общем, там много нюансов. Но все это делается.
Первое правило-безопасность!
Будет возможность напишите про это статью )))
пошел ковырять виртуалку.
Значит нужно крутить настройки DHCP на маршрутизаторе чтобы он выдавал IP вашего внутреннего DNS.
Или вариант №2
----internet-->router(beeline)--->Шлюз ubuntu(DNS,DHCP)--->|клиентские ПК|
DNS поднял
Возможно ли так организовать хостинг сайта?
Настройка DNS-сервера BIND Master & Slave, с автоматической репликацией данных между серверами