DNS+DHCP сервер на Ubuntu
Все установки пакетов и редактирование файлов конфигурации производятся с правами суперпользователя.
0 1 2 3 |
sudo su |
Права суперпользователя действуют до следующей перезагрузки.
1. Начальные настройки сети.
Диапазон: 192.168.0.1/255.255.255.0
Диапазон DHCP: 192.168.0.101 — 192.168.0.199
Основной шлюз: 192.168.0.1
Внешние DNS-сервера: 8.8.8.8, 8.8.4.4, 204.194.232.200, 204.194.234.200
Имя нашего сервера: ns1
Статический IP-адрес сервера: 192.168.0.2
Имя домена: team.local
2. Установка bind9 и dhcp3-server
Команды для установки:
0 1 2 3 4 |
apt-get install bind9 apt-get install dhcp3-server |
3. Создание секретного ключа
После установки этих пакетов создаём секретный ключ, который понадобиться для обновления DNS-записей в зоне нашей локальной сети.
0 1 2 3 |
dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n USER DHCP_UPDATER |
После завершения команды в текущем каталоге появятся два файла один с расширением .key , другой .private .
В тексте этих файлов содержится секретный ключ вида:
0 1 2 3 |
mdgG4pTKI9sqqXUCAicNcA== |
Он нам и понадобиться в дальнейшем.
4. Настройка сетевого соединения со статическим IP
Внесите изменения в файл /etc/network/interfaces. Статический, жестко прописанный адрес, необходим хотя бы для того, чтобы сервис dhcp стартовал при перезапуске сервера. Иначе, не увидев поднятых интерфейсов во время перезапуска, dhcp не запустится.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.0.2 #hwaddress ether 00:01:2e:2c:d6:70 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1 dns-nameservers 192.168.0.2 # The secondary network interface #auto wlan1 #iface wlan1 inet static # address 192.168.0.12 # #hwaddress ether 00:25:d3:f0:c2:92 # netmask 255.255.255.0 # gateway 192.168.0.1 |
Адрес DNS сервера можно задать в файле /etc/network/interfaces , но вообще управление адресами DNS серверов в Ubuntu осуществляется через файл /etc/resolv.conf. Важно не забыть его поправить. Он должен иметь вид:
0 1 2 3 4 5 |
domain team.local search team.local nameserver 127.0.0.1 |
Перезапускаем службу networking
0 1 2 3 |
/etc/init.d/networking restart |
5. Настраиваем BIND9
Файлы конфигурации лежат в каталоге: /etc/bind
Нам нужно отредактировать два файла: named.conf.options и named.conf.local
Правим named.conf.options:
0 1 2 3 4 5 6 7 8 9 10 11 12 |
forwarders { 8.8.8.8; 8.8.4.4; 204.194.232.200; 204.194.234.200; }; listen-on { 127.0.0.1; 192.168.0.2; }; |
Этим мы указываем серверу куда передавать неизвестные нам имена «на опознание» и по каким адресам «слушать» DNS-запросы клиентов нашей сети.
Файл named.conf.local правится далее по тексту.
6. Создание прямой и обратной зоны для сети
Создаём файлы прямой и обратной зоны для нашей локальной сети.
Файлы наших локальных зон должны лежать в директории: /var/lib/bind.
Если поместить эти файлы в папку /etc/bind, где уже лежат файлы описания корневых зон,то обновление записей для локальных зон производиться не будет, так-как локальная группа [bind] по умолчанию не имеет права на запись в эту директорию.
Итак, в папке /var/lib/bind создаём файл для прямой зоны, назовём его например: forward.bind. Файл используется DNS-сервером для преобразования имени компьютеров локальной сети в ip-адрес.
forward.bind
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
$TTL 86400 ; 1 day team.local. IN SOA ns1.team.local. admin.team.local. ( 20110103 ; Serial 10800 ; Refresh 3600 ; Retry 604800 ; Expire 86400 ; Minimum TTL ) ; DNS Servers IN NS ns1.team.local. ; MX Records IN A 192.168.0.2 ; Machine Names localhost IN A 127.0.0.1 ns1 IN A 192.168.0.2 gw IN A 192.168.0.1 ; Различные клиенты сети eagle IN A 192.168.0.12 storage IN A 192.168.0.13 media IN A 192.168.0.14 crow IN A 192.168.0.200 HP IN A 192.168.0.211 ; Aliases www IN CNAME @ |
В последних строчках содержаться записи о серверах и устройствах нашей локальной сети, имеющих статические адреса, но впрочем обязательно нужно прописать только DNS-сервер. Заранее скажу, что аккуратно оформлять все не обязательно т.к. сервис DHCP все равно все перестроит.
Создаём файл для обратной зоны, назовём его : reverse.bind. Файл используется DNS-сервером для преобразования ip-адреса компьютеров локальной сети в доменное имя.
reverse.bind
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
$TTL 86400 ; 1 day 0.168.192.in-addr.arpa. IN SOA ns1.team.local. admin.team.local. ( 20110104 ; Serial 10800 ; Refresh 3600 ; Retry 604800 ; Expire 3600 ) ; Minimum IN NS ns1.team.local. 1 IN PTR gw.team.local. 2 IN PTR team.local. 2 IN PTR ns1.team.local. ; Различные клиенты сети 12 IN PTR eagle.team.local. 13 IN PTR storage.team.local. 14 IN PTR media.team.local. 200 IN PTR crow.team.local. 211 IN PTR HP.team.local. |
Последние строки, так-же содержат данные о серверах и устройствах нашей локальной сети, для которых выделены статические адреса.
7. Правка name.conf.local
Возвращаемся в директорию /etc/bind и правим файл name.conf.local
name.conf.local
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
key DHCP_UPDATER { algorithm HMAC-MD5.SIG-ALG.REG.INT; secret mdgG4pTKI9sqqXUCAicNcA== ; }; zone "team.local" IN { type master; file "/var/lib/bind/forward.bind"; allow-update { key DHCP_UPDATER; }; }; zone "0.168.192.in-addr.arpa" IN { type master; file "/var/lib/bind/reverse.bind"; allow-update { key DHCP_UPDATER; }; }; |
Вот здесь нам и понадобился созданный ранее секретный ключ
На этом настройка DNS-сервера закончена, можно перезагрузить BIND.
0 1 2 3 |
/etc/init.d/bind9 restart |
Если при перезагрузки bind9 не ругается — проверяем работу нашего DNS-сервера:
0 1 2 3 |
dig ns1 |
В ответ получаем:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
; <<>> DiG 9.7.1-P2 <<>> ns1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 34684 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;ns1. IN A ;; AUTHORITY SECTION: . 1121 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2011022001 1800 900 604800 86400 ;; Query time: 96 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon Feb 21 13:57:30 2011 ;; MSG SIZE rcvd: 96 |
Далее проверим как наш сервер преобразует своё локальное имя:
0 1 2 3 |
host ns1 |
В ответ должны получить:
0 1 2 3 |
ns1.team.local has address 192.168.0.2 |
Если что-то не так проверяем фаил forward.bind Проверим обратное преобразование:
0 1 2 3 |
host 192.168.0.2 |
В ответ получаем нечто такое:
0 1 2 3 4 |
2.0.168.192.in-addr.arpa domain name pointer ns1.team.local. 2.0.168.192.in-addr.arpa domain name pointer team.local. |
Соответственно если доменное имя сервера не определилось, проверяем файл reverse.bind. Ну и все проблемы будут отражены в логе системы /var/log/syslog.
8. Настройки DHCP сервера
Теперь dhcp3-server именуется в ubuntu isc-dhcp-server, поэтому обратите внимание на название папок и файлов.
Приступаем к настройке. Нам нужен фаил: dhcpd.conf который лежит в /etc/dhcp
На самом деле все из него можно удалить и заменить примерно таким содержимым:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
ddns-update-style interim; authoritative; log-facility local7; key DHCP_UPDATER { algorithm hmac-md5; secret "mBSiYpTKI9sqqXUCAicNcA=="; } zone team.local. { primary 127.0.0.1; key DHCP_UPDATER; } zone 0.168.192.in-addr.arpa. { primary 127.0.0.1; key DHCP_UPDATER; } subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.101 192.168.0.199; option domain-name "team.local"; option domain-name-servers 192.168.0.2; option routers 192.168.0.1; option broadcast-address 192.168.0.255; default-lease-time 43200; max-lease-time 86400; } |
Вот где нам ещё раз понадобился секретный ключ, который мы создавали.
Далее добавлены строки для раздачи адресов и параметров сети клиентам нашего DHCP-сервера:
Если в локальной сети есть сетевой принтер или сетевое многофункциональное устройство, по опыту работы их желательно сажать на статические адреса или сервер DHCP может выдавать им постоянные ip-адрес зарезервированный под них из выделенного диапазона. Для этого необходимо знать их сетевые имена и MAC-адрес.
Добавляем в файл dhcpd.conf строку к примеру для компьютера crow:
0 1 2 3 4 5 6 |
host crow { hardware ethernet 00:17:31:8f:98:2a; fixed-address 192.168.0.200; } |
Эти имена также необходимо прописывать в файлы forward.bind и reverse.bind, как и для статических адресов.
9. Настройка IP адреса DHCP сервера
Не забудьте указать сетевую карту сервера, с которой он будет раздавать клиентам ip-адреса. Файл где прописывается интерфейс DHCP-сервера в Ubuntu/Debian лежит в: /etc/default/isc-dhcp-server
Там нужно указать сетевой интерфейс, в нашем случае: eth0
0 1 2 3 |
INTERFACES="eth0" |
10. Перезапускаем, проверяем.
Перезапускаем наш DHCP-сервер.
0 1 2 3 |
/etc/init.d/isc-dhcp-server restart |
Если при перезагрузке никто не ругается, то можно включать клиентские компьютеры.
При правильной работе в директории /var/lib/bind должны появиться файлы:
forward.bind.jnl и reverse.bind.jnl а в файлах forward.bind и reverse.bind появиться строчка с ip-адресом и именем клиентского.
В директории /var/lib/dhcp появиться файл: dhcpd.leases с параметрами ip клиента. Для проверки с Windows-клиента можно дать команду из командной строки:
0 1 2 3 |
tracert ns1 |
В ответ должна пойти трассировка до ns1.team.local[192.168.0.2]
Также, обратите внимание, что если прописать в Windows «Основной DNS-суффикс этого компьютера» (Это по кнопке «Дополнительно» в окне «Изменение имени компьютера» — в нашем случае «team.local»), то прямая зона обновляться не будет, ругаясь на ошибку авторизации. Обратная будет обновляться. Как это побороть — не знаю. Проще не прописывать суффикс.
Ну вот и вся настройка. При редактировании файлов конфигурации будьте внимательны, из-за одного пропущенного или лишнего символа, можно потерять пол дня.
11. Итог
После настройки всего будут изменены файлы:
/etc/network/interfaces
/etc/bind/named.conf.local
/etc/bind/named.conf.options
/etc/resolv.conf
/var/lib/bind/forward.bind
/var/lib/bind/reverse.bind
/etc/dhcp/dhcpd.conf
/etc/default/isc-dhcp-server
...
Неправленый мной оригинал статьи: http://fgh151.blog.ru/97522339.html