Установка кеширующего неймсервера bind9 из репозитария

Дата Автор cdb5 комментариев

Зачем?
Начну с того, зачем нам вообще потребуется кеширующий неймсервер на нашем хостинге.
Дело в том, что запускаться наш PHP будет в chroot через php-fpm, для чего нам придется в будущем скопировать несколько библиотек в подготовленные chroot-ы, а так же некоторые конфиги (в т.ч. dns) для корректной работы PHP. Hardlink создавать на файлы конфигов нельзя, т.к. в случае взлома chroot и повышения привилегий злоумышленник по ссылке может поправить конфиг сразу для всего сервера и затем все на вашем сервере пойдут «куда надо». Делать каждому chroot свою копию конфига — вариант, но что делать, когда вы вдруг решили сменить неймсервер с hetzner на какой-нибудь свой, а у вас уже сотня сайтов? Вообщем ставим Bind9 и настраиваем его как кеширующий неймсервер, а далее во все конфиги прописываем localhost и дело почти в шляпе. (Шляпа будет если bind упадет 😉 но мы этого не допустим и будем своевременно обновлять ПО?)

Как?

sudo apt-get install bind9


Далее наконфижим так, чтобы bind кешировал запросы DNS и пускал только локальные сервисы. Правим /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 {

                213.133.100.100;
                213.133.98.98;
                213.133.99.99;

                2a01:4f8:0:a102::add:9999;
                2a01:4f8:0:a111::add:9898;
                2a01:4f8:0:a0a1::add:1010;
        };

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;

        allow-query { 127.0.0.1; };
        allow-recursion { 127.0.0.1; };
        allow-transfer { none; };

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { ::1/128; };
        listen-on { 127.0.0.1; };

        version "unknown";
};


Адреса для форвардеров берем из /etc/resolv.conf Далее перезапускаем сервис bind, чтобы настройки вступили в силу:

sudo service bind9 restart

Если сервис не стартует (допустили опечатки в конфигах?), то ошибки можно прочитать в файле /var/log/daemon.log
Bind точно запустился? Тогда самое время поправить /etc/resolv.conf и прописать адрес локального неймсервера. Старые адреса не удаляем, а закомментируем, т.к. в будующем могут пригодиться!
Должно получиться примерно так:

### Hetzner Online AG installimage
# nameserver config
# nameserver 213.133.100.100
# nameserver 213.133.98.98
# nameserver 213.133.99.99
# nameserver 2a01:4f8:0:a102::add:9999
# nameserver 2a01:4f8:0:a111::add:9898
# nameserver 2a01:4f8:0:a0a1::add:1010

nameserver 127.0.0.1
nameserver fe00::0

Проверка!
Теперь если на сервере выполнить ping ya.ru то увидем привычное:

64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=1 ttl=55 time=59.6 ms
64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=2 ttl=55 time=60.0 ms
64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=3 ttl=55 time=59.2 ms
64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=4 ttl=55 time=59.2 ms
64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=5 ttl=55 time=58.9 ms
^C
--- ya.ru ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 58.989/59.434/60.006/0.468 ms

Если не увидели — скорее всего неправильно поправили конфиг bind (проверьте правильность расстановок точек с запятой), читайте лог /var/log/daemon.log чтобы установить более точную ошибку запуска. Для проверки ipv6 dns нужно использовать ping6.
P.S. Мануал по настройке bind

Если вам понравилась моя статья, пожалуйста, не поленитесь кликнуть любую кнопочку ниже, или кинуть ссылку на статью в свой блог или форум. Всегда рад ответить на ваши вопросы в комментариях. Спасибо 🙂

  1. […] try { var yaCounter1813966 = new Ya.Metrika(1813966); yaCounter1813966.clickmap(true); yaCounter1813966.trackLinks(true); } catch(e){} Daily notes Ежедневные записки Перейти к содержимому ГлавнаяВовкаТанька ← Как поживает пыж ? Установка кеширующего неймсервера bind9 из репозитария &… […]

  2. Доброго времени суток ,

    у меня адреса для форвардеров выглядят так
    nameserver 8.8.8.8
    nameserver 8.8.4.4
    как их правильно прописать ? или до этого этапа возникал ошибка ?
    Перезагружал bind9 ……..fail..

    • Ну в вас в /etc/resolv.conf будет написано

      nameserver 127.0.0.1
      

      а в /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 {
                      8.8.8.8;
                      8.8.4.4;
              };
      
              allow-query { localhost; };
              allow-recursion { localhost; };
      
              auth-nxdomain no;    # conform to RFC1035
              listen-on-v6 { none; };
              listen-on { localhost; };
      };
      

      Тут главное правильно вписать айпишники и не потерять точки с запятыми.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *