BIND (Berkeley Internet Name Domain) – свободно распространяемое программное обеспечение DNS-сервера, широко используемое в Unix/Linux благодаря своей надежности и отличным стандартам.
Изначально оно было создано в Калифорнийском университете в Беркли, а затем, в 1994 году, его продвижение было передано компании Internet Systems Consortium, Inc (ISC).
Он доступен на большинстве дистрибутивах Linux и предоставляет дополнительные инструменты для диагностики и тестирования DNS-сервера.
Bind может служить одновременно в качестве авторитетного DNS-сервера и DNS-резольвера. В этом руководстве мы покажем, как настроить частный DNS-сервер с Bind на AlmaLinux 9; он будет работать как локальный DNS-резольвер.
Шаг 1. Вход на сервер по SSH
Сначала необходимо войти на ваш AlmaLinux 8 VPS по SSH как пользователь root:
ssh root@IP_Address -p Port_number
Замените „IP_Address“ и „Port_number“ на соответствующие IP-адрес и номер порта SSH вашего сервера, а также замените „root“ на имя пользователя с правами sudo.
Проверить, установлена ли на вашем сервере правильная версия AlmaLinux, можно с помощью следующей команды:
cat /etc/almalinux-release
Вы должны увидеть примерно такой результат или выше:
AlmaLinux release 9.2 (Turquoise Kodkod)
В этой статье для выполнения команд мы используем „root“. Если вы хотите использовать для выполнения команд обычного пользователя с привилегиями sudo, обязательно добавьте „sudo“ перед командами.
Шаг 2. Установка Bind
Выполните следующую команду для установки Bind 9 на ваш AlmaLinux 9 из его репозитория по умолчанию. Bind 9 – это самая последняя версия, а Bind 10 – устаревший проект.
dnf update dnf install bind bind-utils
После установки мы можем проверить информацию о версии Bind.
named -v
Пример вывода:
BIND 9.16.23-RH (Extended Support Version)
Чтобы проверить номер версии Bind и параметры сборки, выполните эту команду
named -V BIND 9.16.23-RH (Extended Support Version) running on Linux x86_64 5.14.0-284.11.1.el9_2.x86_64 #1 SMP PREEMPT_DYNAMIC Tue May 9 05:49:00 EDT 2023 built by make with '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--program-prefix=' '--disable-dependency-tracking' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--with-python=/usr/bin/python3' '--with-libtool' '--localstatedir=/var' '--with-pic' '--disable-static' '--includedir=/usr/include/bind9' '--with-tuning=large' '--with-libidn2' '--with-maxminddb' '--with-dlopen=yes' '--with-gssapi=yes' '--with-lmdb=yes' '--without-libjson' '--with-json-c' '--enable-dnstap' '--enable-fixed-rrset' '--enable-full-report' 'build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'CC=gcc' 'CFLAGS= -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' 'LDFLAGS=-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 ' 'LT_SYS_LIBRARY_PATH=/usr/lib64:' 'PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig' compiled by GCC 11.3.1 20221121 (Red Hat 11.3.1-4) compiled with OpenSSL version: OpenSSL 3.0.1 14 Dec 2021 linked to OpenSSL version: OpenSSL 3.0.7 1 Nov 2022 compiled with libuv version: 1.42.0 linked to libuv version: 1.42.0 compiled with libxml2 version: 2.9.13 linked to libxml2 version: 20913 compiled with json-c version: 0.14 linked to json-c version: 0.14 compiled with zlib version: 1.2.11 linked to zlib version: 1.2.11 linked to maxminddb version: 1.5.2 compiled with protobuf-c version: 1.3.3 linked to protobuf-c version: 1.3.3 threads support is enabled default paths: named configuration: /etc/named.conf rndc configuration: /etc/rndc.conf DNSSEC root key: /etc/bind.keys nsupdate session key: /var/run/named/session.key named PID file: /var/run/named/named.pid named lock file: /var/run/named/named.lock geoip-directory: /usr/share/GeoIP
На данный момент Bind установлен, но не запущен автоматически. Выполним эту команду, чтобы запустить Bind и настроить его на автоматический запуск при перезагрузке.
systemctl enable --now named
Шаг 3. Настройка Bind
По умолчанию сервер BIND9 на CentOS/RHEL предлагает рекурсивную функциональность исключительно для localhost. Внешние запросы будут отклонены. Измените основной конфигурационный файл BIND, расположенный по адресу /etc/named.conf
.
nano /etc/named.conf
Найдите эти две строки
listen-on port 53 { 127.0.0.1; }; listen-on-v6 port 53 { ::1; };
Затем закомментируйте их, и файл должен выглядеть так
#listen-on port 53 { 127.0.0.1; }; #listen-on-v6 port 53 { ::1; };
Вы также можете изменить эту строку
allow-query { localhost; };
на такую
allow-query { localhost; 192.168.0.0/24; 10.10.10.0/24; };
Или, если вы хотите сделать несколько тестов перед разрешением определенных диапазонов IP, просто закомментируйте строки; должно получиться так:
#allow-query { localhost; };
Сохраните файл, затем выйдите и перезапустите Bind.
systemctl restart named
Теперь служба Bind прослушивает интерфейсы вашего сервера, а не только localhost.
Шаг 4. Создание зон
Добавьте следующие строки, изменив доменное имя в соответствии с вашими потребностями в конце документа.
zone "yourdomain.com" { type master; file "/var/named/yourdomain.com"; };
Сохраните файл, затем выйдите
Теперь создайте файл конфигурации зоны BIND /var/named/yourdomain.com
nano /var/named/yourdomain.com
Добавьте эти строки.
$TTL 1d
IN SOA dns1.yourdomain.com. hostmaster.yourdomain.com. (
1 ; serial
6h ; refresh after 6 hours
1h ; retry after 1 hour
1w ; expire after 1 week
1d ) ; minimum TTL of 1 day
IN NS ns1.yourdomain.com.
@IN NS ns2.yourdomain.com.
ns1 IN A 192.168.0.1
ns2IN A 192.168.0.1
yourdomain.com. IN MX 0 mail.yourdomain.com.
mail IN A 192.168.0.1
www IN CNAME yourdomain.com.
blog IN A 192.168.0.1
Сохраните файл, затем выйдите.
Пожалуйста, убедитесь, что вы всегда включаете точку в конце доменного имени, когда используете его в файле зоны. Вы можете изменять или добавлять записи в соответствии с вашими требованиями, используя предоставленный шаблон.
Эта строка означает:
– The domain mentioned in the named.conf.local file, which is yourdomain.com, will be substituted here.
IN – Records of INTERNET type in this case.
SOA – This is the Start Of Authority record, which is the authoritative record for this domain.
ns1.yourdomain.com. – The nameserver DNS record. – The server that handles the domain's DNS.
hostmaster.yourdomain.com. – The email address of the nameserver's manager. The
symbol is replaced with a dot.
Вы можете добавить больше зон и следовать шагам, описанным выше, и обратите внимание, что каждый раз, когда вы изменяете файлы конфигурации Bind, обязательно выполняйте эту команду:
named-checkconf
Если после выполнения команды нет сообщения, то конфигурация в порядке, и мы можем перезапустить службу Bind.
systemctl restart named
На данный момент вы должны иметь возможность использовать ваш сервер в качестве DNS-сервера. Например, мы можем попробовать запросить mail.yourdomain.com
dig mail.yourdomain.com @127.0.0.1
Вышеприведенная команда выдаст следующее сообщение:
; <<>> DiG 9.16.23-RH <<>> mail.yourdomain.com @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 933 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: 86b765bc5dc202110100000064a7606f61c60bf02ed52508 (good) ;; QUESTION SECTION: ;mail.yourdomain.com. IN A ;; ANSWER SECTION: mail.yourdomain.com. 86400 IN A 192.168.0.1 ;; Query time: 2 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Thu Jul 06 19:46:39 CDT 2023 ;; MSG SIZE rcvd: 92
Как видно, mail.yourdomain.com указывает на 192.168.0.1
Шаг 5. Настройка Systemd
Для того чтобы служба Bind всегда работала, мы можем внести изменения в файл systemd.
systemctl edit named
Добавьте эти две строки в файл и убедитесь, что они находятся в правильном месте.
[Service] Restart=always RestartSec=5s
Сохраните файл, затем выйдите.
Теперь давайте перезагрузимся и попробуем убить службу Bind
systemctl daemon-reload pkill named
Потом проверьте статус Bind. Вы увидите, что служба Bind автоматически перезапустилась.
systemctl status named
Поздравляем! Вы успешно установили частный DNS-сервер с Bind на AlmaLinux 9.
Комментарии (0)