Настройка DNS в CentOS

 

Настройка DNS в CentOS

Шаг 1: Инсталляция необходимых пакетов

Перед началом рассмотрения следующих инструкций хотим отметить, что на нашем сайте уже имеется общее руководство по конфигурации стандартного DNS в Linux. Мы рекомендуем задействовать именно тот материал, если следует выставить настройки для обычного посещения интернет-сайтов. Далее же мы покажем, как инсталлируется основной локальный DNS-сервер с клиентской частью.

В качестве средства создания локального DNS-сервера рекомендуем задействовать bind9. Настройка последующих конфигурационных файлов тоже будет базироваться на общих принципах поведения этого компонента. По умолчанию bind9 отсутствует в операционной системе, поэтому начнем с ее добавления.

  1. Запустите консоль удобным для вас способом. Она находится в разделе «Приложения» — «Избранное» или же открывается через стандартную комбинацию клавиш Ctrl + Alt + T.


  2. Здесь потребуется ввести команду sudo yum install bind bind-utils -y и нажать на Enter для ее активации.


  3. Данное действие выполняется от имени суперпользователя (sudo), поэтому придется подтвердить учетную запись, введя пароль в появившуюся строку.


  4. Ожидайте завершения скачивания и установки пакетов.


  5. По окончании данного процесса вы будете уведомлены о том, что все пакеты успешно добавлены в систему. После этого переходите к следующему шагу.

    Шаг 2: Глобальная настройка DNS-сервера

    Сейчас хотим продемонстрировать, каким именно образом редактируется главный конфигурационный файл, а также какие строки туда добавляются. Не будем останавливаться на каждой строке отдельно, поскольку это займет очень много времени, к тому же все нужные сведения имеются в официальной документации.

    1. Для редактирования конфигурационных объектов можно использовать любой текстовый редактор. Предлагаем инсталлировать удобный nano, введя в консоли sudo yum install nano.


    2. Все необходимые пакеты будут загружены, а если они уже присутствуют в дистрибутиве, вы получите уведомление «Выполнять нечего».


    3. Приступим к редактированию самого файла. Откройте его через sudo nano /etc/named.conf. При необходимости замените желаемый текстовый редактор, тогда строка получится примерно такой: sudo vi /etc/named.conf.


    4. Ниже мы приведем содержимое, которое нужно вставить в открывшийся файл или сверить его с уже существующим, добавив недостающие строки.

      1. После этого нажмите на Ctrl + O, чтобы записать изменения.



    5. Менять название файла не нужно, достаточно просто нажать на Enter.


    6. Покиньте текстовый редактор через Ctrl + X.


    7. Как уже было сказано ранее, в конфигурационный файл потребуется вставить определенные строки, задающие общие правила поведения DNS-сервера.

      //
      // named.conf
      //
      // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
      // server as a caching only nameserver (as a localhost DNS resolver only).
      //
      // See /usr/share/doc/bind*/sample/ for example named configuration files.
      //

      options {
      listen-on port 53 { 127.0.0.1; 192.168.1.101;}; ### Master DNS IP ###
      # listen-on-v6 port 53 { ::1; };
      directory "/var/named";
      dump-file "/var/named/data/cache_dump.db";
      statistics-file "/var/named/data/named_stats.txt";
      memstatistics-file "/var/named/data/named_mem_stats.txt";
      allow-query { localhost; 192.168.1.0/24;}; ### IP Range ###
      allow-transfer{ localhost; 192.168.1.102; }; ### Slave DNS IP ###

      /*
      - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
      - If you are building a RECURSIVE (caching) DNS server, you need to enable
      recursion.
      - If your recursive DNS server has a public IP address, you MUST enable access
      control to limit queries to your legitimate users. Failing to do so will
      cause your server to become part of large scale DNS amplification
      attacks. Implementing BCP38 within your network would greatly
      reduce such attack surface
      */
      recursion yes;

      dnssec-enable yes;
      dnssec-validation yes;
      dnssec-lookaside auto;

      /* Path to ISC DLV key */
      bindkeys-file "/etc/named.iscdlv.key";

      managed-keys-directory "/var/named/dynamic";

      pid-file "/run/named/named.pid";
      session-keyfile "/run/named/session.key";
      };

      logging {
      channel default_debug {
      file "data/named.run";
      severity dynamic;
      };
      };

      zone "." IN {
      type hint;
      file "named.ca";
      };

      zone "unixmen.local" IN {
      type master;
      file "forward.unixmen";
      allow-update { none; };
      };
      zone "1.168.192.in-addr.arpa" IN {
      type master;
      file "reverse.unixmen";
      allow-update { none; };
      };

      include "/etc/named.rfc1912.zones";
      include "/etc/named.root.key";

      Убедитесь, что все выставлено в точности так, как показано выше, а уже потом переходите к следующему шагу.

      Шаг 3: Создание прямой и обратной зоны

      Для получения информации об источнике DNS-сервер использует прямые и обратные зоны. Прямая позволяет получать IP-адрес по имени хоста, а обратная через IP выдает доменное имя. Корректная работа каждой зоны должна быть обеспечена специальными правилами, созданием которых мы и предлагаем заняться далее.

      1. Для прямой зоны создадим отдельный файл через тот же текстовый редактор. Тогда строка будет выглядеть так: sudo nano /var/named/forward.unixmen.


      2. Вы будете уведомлены о том, что это пустой объект. Вставьте туда указанное ниже содержимое:

        $TTL 86400
        @ IN SOA masterdns.unixmen.local. root.unixmen.local. (
        2011071001 ;Serial
        3600 ;Refresh
        1800 ;Retry
        604800 ;Expire
        86400 ;Minimum TTL
        )
        @ IN NS masterdns.unixmen.local.
        @ IN NS secondarydns.unixmen.local.
        @ IN A 192.168.1.101
        @ IN A 192.168.1.102
        @ IN A 192.168.1.103
        masterdns IN A 192.168.1.101
        secondarydns IN A 192.168.1.102
        client IN A 192.168.1.103


        1. Сохраните изменения и закройте текстовый редактор.


        2. Теперь перейдем к обратной зоне. Для нее требуется файл /var/named/reverse.unixmen.


        3. Это тоже будет новый пустой файл. Вставьте туда:

          $TTL 86400
          @ IN SOA masterdns.unixmen.local. root.unixmen.local. (
          2011071001 ;Serial
          3600 ;Refresh
          1800 ;Retry
          604800 ;Expire
          86400 ;Minimum TTL
          )
          @ IN NS masterdns.unixmen.local.
          @ IN NS secondarydns.unixmen.local.
          @ IN PTR unixmen.local.
          masterdns IN A 192.168.1.101
          secondarydns IN A 192.168.1.102
          client IN A 192.168.1.103
          101 IN PTR masterdns.unixmen.local.
          102 IN PTR secondarydns.unixmen.local.
          103 IN PTR client.unixmen.local.


          1. При сохранении не изменяйте название объекта, а просто нажмите на клавишу Enter.


  6. Теперь указанные файлы будут использованы для прямой и обратной зоны. При необходимости следует редактировать именно их, чтобы изменить какие-то параметры. Об этом вы тоже можете прочесть в официальной документации.

    Шаг 4: Запуск DNS-сервера

    После выполнения всех предыдущих указаний можно уже запустить DNS-сервер, чтобы в будущем легко проверить его работоспособность и продолжить настройку важных параметров. Осуществляется поставленная задача следующим образом:

            1. В консоли введите sudo systemctl enable named, чтобы добавить DNS-сервер в автозагрузку для автоматического запуска при старте операционной системы.


            2. Подтвердите это действие, введя пароль суперпользователя.


            3. Вы будете уведомлены о создании символической ссылки, а значит, действие выполнено успешно.


            4. Запустите утилиту через systemctl start named. Остановить ее можно так же, только заменив опцию start на stop.


            5. При отображении всплывающего окна с подтверждением подлинности введите пароль от root.

  7. Как видно, управление указанной службой осуществляется по такому же принципу, как и всеми остальными стандартными утилитами, поэтому с этим не должно возникнуть никаких проблем даже у начинающих пользователей.

    Шаг 5: Изменение параметров межсетевого экрана

    Для корректного функционирования DNS-сервера потребуется открыть порт 53, что осуществляется через стандартный межсетевой экран FirewallD. В «Терминале» потребуется ввести всего три простых команды:

    1. Первая имеет вид firewall-cmd --permanent --add-port=53/tcp и отвечает за открытие порта TCP-протокола. Вставьте ее в консоль и нажмите на Enter.


    2. Вы должны получить уведомление «Success», что свидетельствует об успешном применении правила. После этого вставьте строку firewall-cmd --permanent --add-port=53/udp для открытия порта протокола UDP.


    3. Все изменения будут применены только после перезагрузки межсетевого экрана, что производится через команду firewall-cmd --reload.

    1. Больше никаких изменений с брандмауэром производить не придется. Держите его постоянно во включенном состоянии, чтобы не возникло проблем с получением доступа.

      Шаг 6: Настройка прав доступа

      Сейчас потребуется выставить основные разрешения и права доступа, чтобы немного обезопасить функционирование DNS-сервера и оградить обычных пользователей от возможности изменять параметры. Сделаем это стандартным способом и через SELinux.

      1. Все последующие команды должны быть активированными от имени суперпользователя. Чтобы постоянно не вводить пароль, советуем включить перманентный рут-доступ для текущей терминальной сессии. Для этого в консоли введите su.


      2. Укажите пароль доступа.


      3. После этого поочередно впишите указанные ниже команды, чтобы создать оптимальную настройку доступа:

        chgrp named -R /var/named
        chown -v root:named /etc/named.conf
        restorecon -rv /var/named
        restorecon /etc/named.conf


      4. На этом общая конфигурация главного DNS-сервера закончена. Осталось только отредактировать несколько конфигурационных файлов и произвести тестирование на ошибки. Со всем этим мы и предлагаем разобраться в следующем шаге.

        Шаг 7: Тестирование на ошибки и завершение настройки

        Рекомендуем начать с проверок на ошибки, чтобы в будущем не пришлось менять и оставшиеся конфигурационные файлы. Именно поэтому мы и рассмотрим все это в пределах одного шага, а также приведем образцы правильного вывода команд для тестирования.

        1. Введите в «Терминале» named-checkconf /etc/named.conf. Это позволит проверить глобальные параметры. Если в результате никакого вывода не последовало, значит, все настроено корректно. В противном случае изучите сообщение и, отталкиваясь от него, решите проблему.


        2. Образец вывода выглядит следующим образом: zone unixmen.local/IN: loaded serial 2011071001 OK.


        3. Примерно то же самое осуществляем и с обратной зоной через named-checkzone unixmen.local /var/named/reverse.unixmen.


        4. Правильный вывод должен быть таким: zone unixmen.local/IN: loaded serial 2011071001 OK.


        5. Теперь перейдем к настройкам основного сетевого интерфейса. В него потребуется добавить данные текущего DNS-сервера. Для этого откройте файл /etc/sysconfig/network-scripts/ifcfg-enp0s3.


        6. Проверьте, чтобы содержимое было такое, как показано ниже. При необходимости вставьте параметры DNS.

          TYPE="Ethernet"
          BOOTPROTO="none"
          DEFROUTE="yes"
          IPV4_FAILURE_FATAL="no"
          IPV6INIT="yes"
          IPV6_AUTOCONF="yes"
          IPV6_DEFROUTE="yes"
          IPV6_FAILURE_FATAL="no"
          NAME="enp0s3"
          UUID="5d0428b3-6af2-4f6b-9fe3-4250cd839efa"
          ONBOOT="yes"
          HWADDR="08:00:27:19:68:73"
          IPADDR0="192.168.1.101"
          PREFIX0="24"
          GATEWAY0="192.168.1.1"
          DNS="192.168.1.101"
          IPV6_PEERDNS="yes"
          IPV6_PEERROUTES="yes"


          1. После сохранения изменений переходите к файлу /etc/resolv.conf.


          2. Здесь нужно добавить всего одну строку: nameserver 192.168.1.101.


    2. По завершении остается только перезагрузить сеть или компьютер, чтобы обновить конфигурацию. Служба сети перезапускается через команду systemctl restart network.


  8. Шаг 8: Проверка установленного DNS-сервера

    В завершении конфигурации остается только проверить работу имеющегося DNS-сервера после его добавления в глобальную службу сети. Эта операция так же выполняется при помощи специальных команд. Первая из них имеет вид dig masterdns.unixmen.local.



  9. В результате на экране должен появиться вывод, имеющий схожее представление с указанным ниже содержимым.


  10. ; <> DiG 9.9.4-RedHat-9.9.4-14.el7 <> masterdns.unixmen.local
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25179
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;masterdns.unixmen.local. IN A

    ;; ANSWER SECTION:
    masterdns.unixmen.local. 86400 IN A 192.168.1.101

    ;; AUTHORITY SECTION:
    unixmen.local. 86400 IN NS secondarydns.unixmen.local.
    unixmen.local. 86400 IN NS masterdns.unixmen.local.

    ;; ADDITIONAL SECTION:
    secondarydns.unixmen.local. 86400 IN A 192.168.1.102

    ;; Query time: 0 msec
    ;; SERVER: 192.168.1.101#53(192.168.1.101)
    ;; WHEN: Wed Aug 20 16:20:46 IST 2014
    ;; MSG SIZE rcvd: 125

    Дополнительная команда позволит узнать о состоянии локальной работы DNS-сервера. Для этого в консоль вставьте nslookup unixmen.local и нажмите на Enter.


  11. В результате должно отобразиться три разных представления адресов IP и доменных имен.

    Server: 192.168.1.101
    Address: 192.168.1.101#53

    Name: unixmen.local
    Address: 192.168.1.103
    Name: unixmen.local
    Address: 192.168.1.101
    Name: unixmen.local
    Address: 192.168.1.102


  12. Если вывод соответствует тому, который указали мы, значит, конфигурация завершена успешно и можно переходить к работе с клиентской частью DNS-сервера.

    Настройка клиентской части DNS-сервера

    Мы не будем разделять эту процедуру на отдельные шаги, поскольку она выполняется путем редактирования всего одного конфигурационного файла. В него необходимо добавить информацию обо всех клиентах, которые будут подключены к серверу, а пример такой настройки выглядит так:

    1. Откройте файл /etc/resolv.conf через любой удобный текстовый редактор.


    2. Добавьте туда строки search unixmen.local nameserver 192.168.1.101 и nameserver 192.168.1.102, заменив необходимое на клиентские адреса.


    3. При сохранении не изменяйте имя файла, а просто нажмите на клавишу Enter.


    4. После выхода из текстового редактора в обязательном порядке перезагрузите глобальную сеть через команду systemctl restart network.


    5. Это были основные моменты настройки клиентской составляющей DNS-сервера, о которой мы хотели рассказать. Все остальные нюансы предлагаем изучить, прочитав официальную документацию, если это требуется.

      Тестирование DNS-сервера

      Последний этап нашего сегодняшнего материала — завершающее тестирование DNS-сервера. Ниже вы видите несколько команд, позволяющий справиться с поставленной задачей. Используйте одну из них, активировав через «Терминал». Если в выводе не наблюдается никаких ошибок, следовательно, весь процесс выполнен верно.

      dig masterdns.unixmen.local
      dig secondarydns.unixmen.local
      dig client.unixmen.local
      nslookup unixmen.local



    6. Сегодня вы узнали все о настройке главного DNS-сервера в дистрибутиве CentOS. Как видите, вся операция сосредоточена на вводе терминальных команд и редактировании конфигурационных файлов, что может вызвать определенные трудности у начинающих пользователей. Однако вам требуется всего лишь точно следовать указанным инструкциям и читать результаты проверок, чтобы все прошло без каких-либо ошибок.