Зачем?
Начну с того, зачем нам вообще потребуется кеширующий неймсервер на нашем хостинге.
Дело в том, что запускаться наш 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
[…] try { var yaCounter1813966 = new Ya.Metrika(1813966); yaCounter1813966.clickmap(true); yaCounter1813966.trackLinks(true); } catch(e){} Daily notes Ежедневные записки Перейти к содержимому ГлавнаяВовкаТанька ← Как поживает пыж ? Установка кеширующего неймсервера bind9 из репозитария &… […]
Ок
Доброго времени суток ,
у меня адреса для форвардеров выглядят так
nameserver 8.8.8.8
nameserver 8.8.4.4
как их правильно прописать ? или до этого этапа возникал ошибка ?
Перезагружал bind9 ……..fail..
Ну в вас в /etc/resolv.conf будет написано
а в /etc/bind/named.conf.options
Тут главное правильно вписать айпишники и не потерять точки с запятыми.
Спасибо получилось