isc-dhcp-server + BIND9 + Unbound + dnscrypt & DDNS Не работает

1626
M Afifi

оригинал

У меня сложная настройка DNS на домашнем маршрутизаторе, на котором работают серверы Ubuntu. Моя цель - быть в состоянии,

  1. Запрос DNS моего локального интернет-провайдера для поиска, чувствительного к геолокации, о котором я забочусь
  2. dnscrypt-proxyдля большинства поисков. Для определенных доменов (некоторые из них я знаю), многие из которых я не знаю, и, как таковые, кроме определенных доменов, мой провайдер отравляет поиски ложными адресами трафика черной дыры. Я хочу, чтобы это был сервер поиска DNS по умолчанию
  3. Минимизируйте интернет-поиск DNS. У меня нет надежного интернет-соединения, и в определенное время в течение дня вероятность того, что поиск DNS за пределами страны достигнет 50/50, будет минимальной.
  4. У меня есть собственный внутренний домен, преимущественно для обратного поиска.

Решение, которое я должен был реализовать для достижения этих целей,

  1. unbound в качестве основного DNS-сервера моей локальной сети для кэширования поиска, агрессивного сохранения этого кеша и пересылки адресов на соответствующий DNS-сервер в случае пропадания кеша
  2. dnscrypt-proxyна 127.0.2.1:53как forward-addrдля "."в несвязанном
  3. bindтолько на 192.168.1.1:40официальном для моего локального домена
  4. isc-dhcp-server для раздачи IP-адресов и вставки прямого и обратного поиска.

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

Я подозреваю, isc-dhcp-serverчто отправляет обновления DDNS, unboundкоторые не имеют ни малейшего представления, что с ними делать. Как попросить isc-dhcp-serverотправить его 192.168.1.1:40, bindдаже если я хочу, чтобы сервер DNS для моих клиентов был 192.168.1.1:53, unboundили чтобы я unboundзнал, как пересылать обновления DDNS bind?

Пример сообщения об ошибке

Sep 29 08:01:10 ubuntu dhcpd[7057]: DHCPREQUEST for 192.168.1.101 from 28:18:78:7c:d5:a1 (Xbox-SystemOS) via enp2s0 Sep 29 08:01:10 ubuntu dhcpd[7057]: DHCPACK on 192.168.1.101 to 28:18:78:7c:d5:a1 (Xbox-SystemOS) via enp2s0 Sep 29 08:01:22 ubuntu dhcpd[7057]: Unable to add forward map from Xbox-SystemOS.mydomain.ddns.net. to 192.168.1.101: timed out 

Соответствующие строки в dhcpd.conf

ddns-updates on; ddns-update-style interim; key rndc-key { algorithm hmac-md5; secret MIND_YOUR_BUSINESS; }  subnet ...... { .... option domain-name-servers 192.168.1.1; ... ddns-domainname "mydomain.ddns.net."; ddns-rev-domainname "in-addr.arpa."; } 

Соответствующие строки из /etc/bind/named.conf.local

zone "mydomain.ddns.net" { type master; file "/etc/bind/zones/db.mydomain.ddns.net"; # Zone file path allow-update { key rndc-key; }; # allow for dynamic updates };  zone "168.192.in-addr.arpa" { type master; file "/etc/bind/zones/db.192.168"; # 192.168.0.0/16 subnet allow-update { key rndc-key; }; # allow for dynamic updates }; 

Обновление 1

Покопавшись, dhcpd.confя пришел к выводу, что не могу указать в нем номер порта для сервера bind. Однако есть волшебная опция, ddns-local-address4которая позволяет мне указать IP-адрес сервера для DDNS, отличный от domain-name-server option.

Я изменил bind для прослушивания, 127.0.0.1и это в основном работает (по крайней мере, теперь bind получает обновление). Однако это срабатывает от разрешений.

Sep 29 19:21:40 ubuntu named[31415]: client 127.0.0.1#2824/key rndc-key: signer "rndc-key" approved Sep 29 19:21:40 ubuntu named[31415]: client 127.0.0.1#2824/key rndc-key: updating zone 'mydomain.ddns.net/IN': adding an RR at 'iPhone.mydomain.ddns.net' A 192.168.1.104 Sep 29 19:21:40 ubuntu named[31415]: client 127.0.0.1#2824/key rndc-key: updating zone 'mydomain.ddns.net/IN': adding an RR at 'iPhone.mydomain.ddns.net' TXT "316a52934f2adcaf4c95004e870a4c0f70" Sep 29 19:21:40 ubuntu named[31415]: /etc/bind/zones/db.mydomain.ddns.net.jnl: open: permission denied Sep 29 19:21:40 ubuntu named[31415]: client 127.0.0.1#2824/key rndc-key: updating zone 'mydomain.ddns.net/IN': error: journal open failed: unexpected error Sep 29 19:21:40 ubuntu kernel: [212079.779512] audit: type=1400 audit(1475148100.710:25): apparmor="DENIED" operation="open" profile="/usr/sbin/named" name="/etc/bind/zones/db.mydomain.ddns.net.jnl" pid=31419 comm="named" requested_mask="w" denied_mask="w" fsuid=110 ouid=0 

Однако мои лучшие попытки дать bind достаточные права для обновления этого файла не работают. Что дает?

ps aux | grep named bind 31415 0.0 0.2 429564 19572 ? Ssl 19:10 0:00 /usr/sbin/named -f -u bind  ls -la /etc/bind/zones total 16 drwxrwsr-x 2 root bind 4096 Sep 29 19:21 . drwxr-sr-x 3 root bind 4096 Sep 29 19:07 .. -rw-r--r-- 1 root bind 340 Sep 28 08:01 db.192.168 -rw-r--r-- 1 root bind 514 Sep 27 07:40 db.mydomain.ddns.net -rw-rw-r-- 1 bind bind 0 Sep 29 19:21 db.mydomain.ddns.net.jnl 

Обновление 2

Я изменил свой профиль apparmor для named и больше не получаю ошибки разрешения.

Когда я запрашиваю bindнапрямую на 127.0.0.1, все работает.

Однако, когда я запрашиваю его через ubuntu, он не перенаправляет поиск bindправильно.

Что я делаю не так сейчас?

От unbound.conf

 local-zone: "1.168.192.in-addr.arpa." nodefault local-zone: "168.192.in-addr.arpa." nodefault  stub-zone: name: "168.192.inaddr.arpa." stub-addr: 127.0.0.1  stub-zone: name: "1.168.192.inaddr.arpa." stub-addr: 127.0.0.1  stub-zone: name: "mydomain.ddns.net." stub-addr: 127.0.0.1 
4
У BIND должен быть доступ на запись в каталог ** ** / etc / bind / zone / для создания файлов журнала. Обычно достаточно `chown bind: bind / etc / bind / zone` (сделать пользователя BIND владельцем каталога). milli 7 лет назад 0

1 ответ на вопрос

0
M Afifi

Был дополнительный файл, /etc/unbound/unbound.d/который нарушал разрешение mydomain.ddns.net.. Как только файл был удален, это решило проблему.

Окончательная настройка

  1. dnscrypt-proxyслушаю дальше 127.0.2.1.
  2. bindслушаю дальше 127.0.0.1.
  3. unboundпрослушивает 192.168.1.1, вперед, mydomain.ddns.netчтобы с bindпомощью stub-zoneзаявления в вопросе, имеет по умолчанию вперед к dnscrypt-proxy.
  4. isc-server-dhcpобновления bindс использованием ddns*параметров вdhcpd.conf