Начало здесь.
Давайте попробуем сделать ping домена вместо IP. Что-то вроде этого:
ping google.com
Вы должны получить сообщение о том, что хост неизвестен. Вы можете догадаться, почему? Да, нет DNS.
DNS будет необходим для разрешения доменов на IP-адреса. bind9 — опция по умолчанию для серверов на основе Debian.
sudo apt-get install bind9
Это заставит ваш DNS-сервер работать, но вам все равно нужно будет вручную добавить этот сервер к вашему клиенту (опять же, потому что не работает DHCP):
sudo echo "nameserver 192.168.25.1" > /etc/resolv.conf
И сейчас:
ping google.com
Волшебство снова, это (может) работать. Если этого не произойдет, вам может потребоваться открыть файл /etc/bind/named.conf и настроить маршрутизатор (192.168.0.1) в качестве сервера пересылки, а затем перезапустить сервер.
Конечно, это довольно скучно. Если вы собираетесь установить DNS, вы также можете создать собственный TLD для своей локальной сети.
До сих пор в серии о том, как установить маршрутизатор на основе Linux, мы настроили маршрутизатор Linux с NAT и базовым DNS. Теперь мы настроим пользовательский TLD, чтобы вы могли иметь собственные домены для вашей локальной сети. Например, если вы хотите, чтобы у вашего маршрутизатора было удобное имя, а не просто IP.
Давайте начнем с добавления локальной зоны в файл /etc/bind/named.conf.local для домена, который мы назовем «lan»:
zone "lan" { type master; file "/home/router/named/lan.db"; };
Теперь нам нужно добавить обратную зону. Обратите внимание, как имя меняется на IP:
zone "10.168.192.in-addr.arpa" { type master; file "/home/router/named/rev.10.168.192.in-addr.arpa"; };
Нам все еще нужно создать оба файла (lan.db и rev.10.168.192.in-addr.arpa), но мы сделаем это позже. Давайте установим место для регистрации всех запросов DNS (необязательно):
logging { channel query.log { file "/home/router/named/dns.log"; severity debug 3; print-time yes; }; category queries { query.log; }; };
Для записи журнала мы выбрали /home/router/named в качестве каталога журнала, просто потому, что для этого проекта мы храним все вместе (config и logs), так что людям, не привыкшим администрировать Linux, легко, но, конечно, это означает, что apparmor должен быть настроен на чтение и запись для привязки в этом каталоге. Мы вернемся к этому через секунду, во-первых, давайте создадим необходимые файлы зон для нашего нового TLD.
Помните наши два файла зоны? Мы помещаем их в /home/router/named, но обычно они находятся в/etc/bind. Опять же, сделали это, чтобы смогли собрать все файлы конфигурации вместе. Это наши два файла:
Для lan.db
<
lan. IN SOA ns1.lan. admin.lan. ( 2006081401 28800 3600 604800 38400 ) lan. IN NS ns1.lan. wiki IN A 192.168.0.66 ns1 IN A 192.168.0.1 router IN A 192.168.0.1
Для rev.10.168.192.in-addr.arpa @ IN SOA ns1.lan. admin.example.com. ( 2006081401; 28800; 604800; 604800; 86400 ) IN NS ns1.lan. 1 IN PTR lan
Большинство этих строк — чёрная магия, и поскольку объяснение DNS и Bind выходит за рамки (не стесняйтесь читать RFC, если вам нужна дополнительная информация), давайте просто скажем, что вы можете добавлять новые записи DNS, добавляя такие строки:
NICE_NAME IN A REAL_IP
Это заставит bind перевести NICE_NAME.lan в REAL_IP. Конечно, это будет зависеть от TLD, который вы определили. Теперь перезапустите bind, чтобы получить массу ошибок. Он будет жаловаться на невозможность загрузить мастер-файл в/home/router/named. Помните ту вещь, которую мы упомянули?
Apparmor — это сервис, который работает в фоновом режиме, проверяя, что другие двоичные файлы могут и не могут делать. Например, это позволит bind9 открыть прослушивающий сокет на порту 53 (DNS), но запретит попытку открытия прослушивающего сокета на порту 64. Это мера безопасности для ограничения ущерба скомпрометированному двоичному файлу bind9, работающему от имени root может сделать. И поскольку мы собираемся использовать нестандартную конфигурацию, нам нужно сообщить apparmor, что все в порядке.
После установки bind9 мы должны получить новый файл в /etc/apparmor.d/usr.sbin.named. Добавьте следующие строки внизу:
/home/router/named/** rw, /home/router/named/ rw,
И перезапустите сервис apparmor:
/./etc/init.d/apparmor restart
Поскольку мы модифицировали apparmor, чтобы разрешить нестандартную установку bind, теперь перезапустите bind. На этот раз он запустится без каких-либо ошибок, и вы сможете подключить -f /home/router/named/dns.log для просмотра DNS-запросов в режиме реального времени. Если это не так, проверьте, что/home/router/named доступен для записи пользователю bind (мы сделали chgrp -R bind named).
В нашем пользовательском маршрутизаторе Linux у нас пока есть DNS и NAT, но конфигурация клиента была абсолютно ручной. У нас не может быть много клиентов с такой настройкой, поэтому давайте автоматизируем настройку клиента с помощью DHCP-сервера. Начните с установки isc-dhcp-server.
Отредактируйте /etc/dhcp/dhcpd.conf, установите доменное имя и серверы доменных имен, например, так:
option domain-name "lan"; option domain-name-servers 192.168.25.1 192.168.0.1; default-lease-time 86400; max-lease-time 172800; authoritative;
Два других установят DNS-серверы для ваших клиентов. Кроме того, рекомендуется увеличить время аренды, мы использовали один день для аренды по умолчанию. Установили DHCP-сервер в качестве приоритетного сервера. Если это ваш роутер, это, вероятно, то, что вы хотите.
Теперь нам нужно определить топологию сети:
# Это сеть WAN, и мы не будем предоставлять услуги здесь subnet 192.168.0.0 netmask 255.255.255.0 { } # Определите услугу, которую мы предоставляем для локальной сети subnet 192.168.25.1 netmask 255.255.255.0 { range 192.168.25.100 192.168.25.200; option routers 192.168.25.1; }
Теперь нам нужно перезапустить ISC:
sudo /./etc/init.d/isc-dhcp-server restart
И теперь нам нужно проверить, все ли работает в клиенте. В этот раз легко, мы просто просим IP:
sudo dhclient ifconfig
Если все прошло хорошо, теперь у нас должен быть IP в диапазоне 100-200, а также DNS-сервер в /etc/resolv.conf. Сейчас мы настроили очень простой маршрутизатор и должны иметь возможность обслуживать несколько клиентов для базовых возможностей просмотра.
В следующий раз мы увидим, как все привести в порядок, чтобы упростить администрирование.
Другие части: