Возможно ли иметь авторитетный ответ Bind для локальных доменов?

430
Y Treehugger Cymru

Как и в заголовке: возможно ли, чтобы Bind ( именованный сервис) на компьютере с Linux (Fedora 27, Server Edition) отвечал авторитетно для локальных доменов или, по крайней мере, отвечал так, чтобы что-то спрашивало о них? принять ответ сервера поверх любого другого?

Я знаю, что предполагается, что это возможно (теоретически, по крайней мере), но я не могу заставить его работать, даже если службы named и rndc работают, и хотя мои файлы проходят проверки как по имени-checkconf, так и по имени-checkzone .

Мне нужно иметь возможность получить ответ от сервера Bind для моего локального домена (запросы, исходящие от ПК с Windows 7), который указывает на мой локальный домен (в отличие от официального или неавторизованного ответа в другом месте в Интернете), аналогично на этот пост: BIND9 не может разрешить локальный домен . Я также хотел бы сделать возможным добавление других (интернет) доменных имен позднее (таким образом, поддельный корень, вероятно, не будет работать в качестве решения), но, как он есть, ответ nslookup таков :

** сервер не может найти vpntest.it: NXDOMAIN **

Я также переустанавливал дистрибутив (минимальная установка), модифицировал файлы в соответствии с Руководством администратора Fedora и проверил (плюс тщательно экстраполировал) этот пост: https://serverfault.com/questions/838380/dns-use- public-domain-name-for-internal-use ... и по- прежнему получают вышеуказанную ошибку. Grrrrrrrrrrrrrrrr!

Мои файлы в настоящее время выглядят следующим образом:

Значение /etc/nsswitch.conf :

files dns myhostname 

/etc/resolv.conf:

# Generated by NetworkManager nameserver 64.83.128.50 nameserver 64.20.192.50 nameserver 2001:4860:4860::8888 # NOTE: the libc resolver may not support more than 3 nameservers. # The nameservers listed below may not be recognized. nameserver 2001:4860:4860::8844 

/ и т.д. / хосты:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 

etc / named.conf (ключ RNDC удален из этого поста):

options { listen-on port 53 { 10.200.0.1; }; // 127.0.0.1 // 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";  recursion no; dnssec-enable yes; dnssec-validation auto;  auth-nxdomain no; allow-query { localhost; }; version "Damned If I Know"; allow-recursion { 10.200.0.1/24; };  managed-keys-directory "/var/named/dynamic";  pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key";  include "/etc/crypto-policies/back-ends/bind.config"; };  logging { channel default_debug { file "data/named.run"; severity dynamic; }; };  zone "." IN { type hint; file "named.ca"; };  include "/etc/named.rfc1912.zones"; # include "/etc/named.root.key";  key "rndc-key" { algorithm hmac-md5; secret ""; };  controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; };  zone "vpntest.it" IN { type master; file "vpntest.it.zone"; };  zone "0.200.10.in-addr.arpa" IN { type master; file "10.200.0.zone"; allow-update { none; }; }; 

/var/named/vpntest.it.zone:

$ORIGIN vpntest.it. $TTL 86400 @ IN SOA ns1.vpntest.it. hostmaster.vpntest.it. ( 100 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of 1 day ; IN NS ns1.vpntest.it. ; ns1 IN A 10.200.0.1 ; www IN A 10.200.0.6 

/var/named/10.200.0.zone:

$ORIGIN 0.200.10.in-addr.arpa. $TTL 86400 @ IN SOA ns1.vpntest.it. hostmaster.vpntest.it. ( 100 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of 1 day ; @ IN NS ns1.vpntest.it. ; 1 IN PTR ns1.vpntest.it. 6 IN PTR www 
0
Какой IP-адрес у вашего сервера имен? Если это не 10.200.0.1, это ваша проблема. Кроме того, вам нужно разрешить рекурсию для него, чтобы обрабатывать другие домены. davidgo 6 лет назад 0
`nslookup vpntest.it` отличается от` nslookup vpntest.it 127.0.0.1` или такого? thrig 6 лет назад 0
@davidgo: Я сейчас проверю и посмотрю, решит ли это проблему, спасибо. Y Treehugger Cymru 6 лет назад 0
@davidgo: извините, - исправить не удалось (** сервер не может найти vpntest.it: NXDOMAIN **). - Я обновил запись NS A в файле vpntest.it.zone и добавил AAAA для FE80 :: 1, поэтому IP-адреса сервера имен совпадают с указанными в resolv.conf (где я также изменил FE80 :: / 64 в FE80 :: 1). , Рекурсия также теперь включена в named.conf. Y Treehugger Cymru 6 лет назад 0
Изменен формат файла в соответствии с соглашениями об именах, поэтому vpntest.it.zone изменился на named.vpntest.it; аналогично с файлом PTR. Также удалена рекурсия нет; (чтобы избежать потенциального конфликта с директивой allow-recursion), и использовал var / named / named.empty для создания раздетого, условно правильного, named.vpntest.it. Результат: все еще NXDOMAIN. Y Treehugger Cymru 6 лет назад 0
Проверен var / named / data / named.run на наличие ошибок (найдено 2: ошибка записи NTA-файла для представления «_default»: разрешение отклонено ... и… ошибка записи NTA-файла для представления «_bind»: разрешение запрещено). Я не уверен, важны ли они или нет, или где их исправить, так как я не могу найти ничего полезного в ошибках. Y Treehugger Cymru 6 лет назад 0
Применение DNSSEC на маршрутизаторе вызывало некоторые проблемы, но это было изменено и больше не влияет на проверки DNS. К сожалению, это также не решило проблему NXDOMAIN (то есть: BIND _still_ не допустит, что vpntest.it является локальным доменом. Y Treehugger Cymru 6 лет назад 0
Обновил файл адаптера Ethernet, изменив адрес ноутбука на (локальный) статический адрес, чтобы исключить любые проблемы с DHCP, назначающим неожиданный или неоднозначный IP-адрес и сопоставляющим адрес с тем, который уже есть в файлах конфигурации. У _still_ есть NXDOMAIN ... Y Treehugger Cymru 6 лет назад 0
Исключил satanforce, извините _setenforce_, _firewalld_, межсетевой экран маршрутизатора и защиту от подделки. Y Treehugger Cymru 6 лет назад 0
Обновлен файл данных корневых ссылок, перезаписав содержимое файла named.ca так: ftp://ftp.rs.internic.net/domain/db.cache. _rndc reload_ не выдал ошибок, _systemctl status named.service_ не показывает ошибок, NXDOMAIN остается ... (по-прежнему нет разрешения для внутреннего (локального) домена vpntest.it). Y Treehugger Cymru 6 лет назад 0
Добавлены и перенаправители, и первая директива forward для адреса шлюза (ns1). Теоретически для этого следует сначала попробовать запросить имена серверов ISP, а затем вернуться к внутреннему запросу. На практике vpntest.it остается в NXDOMAIN. Y Treehugger Cymru 6 лет назад 0
Ознакомьтесь с руководствами по использованию поддельного корня и можете подтвердить, что это, по сути, то, что у меня сейчас есть в любом случае, поскольку использование поддельного корня в первую очередь связано с блокировкой сервера имен для обслуживания локальных доменных имен, которые могут или не могут отражать другие домены, уже существующие на интернет. Y Treehugger Cymru 6 лет назад 0
Перебрал логи, пинг проверок, nmap, снова. - BIND определенно разговаривает с нашим провайдером, и, безусловно, существует двусторонняя связь. У меня нет дальнейших идей по этому поводу, и я могу только сделать вывод, что последняя версия BIND каким-то образом повреждена. В соответствии с каждым прочитанным мною руководством (на одном только английском языке должно быть не менее тысячи), моя конфигурация должна определенно разрешать, даже если она не авторизована, мой локальный домен (ы), и, безусловно, это не так, даже если все удалено , сбросить, очистить, согласовать соглашение и т. д .. Y Treehugger Cymru 6 лет назад 0
@thrig: мои извинения, - я не смог увидеть, что вы делали с этой проверкой, когда я впервые посмотрел на нее, но да, nslookup vpntest.it 127.0.0.1 действительно возвращает: Имя: vpntest.it Адрес: 127.0.0.1 Y Treehugger Cymru 6 лет назад 0
Вы не указываете, как именно вы проверяете. Но `nslookup` (tip1: вместо этого используйте` dig`, но к нему применимо следующее) без сервера имен, к которому вы хотите обратиться, выполнит нормальное разрешение. Так правильно ли делегирован ваш домен? Протестируйте с помощью онлайн-инструментов, таких как ZoneMaster или DNSViz. Попробуйте `dig` с` @ `+ IP вашего сервера имен и сравните результаты, если вы не укажете. Теперь не стоит иметь привязку как рекурсивную, так и авторитетную. Что касается моего другого комментария, `dnsmasq` может быть лучше подходит для вашей ситуации. Patrick Mevzek 5 лет назад 0
Спасибо, - я попробовал dnsmasq, но ничего с этим не получил. Для начала, я не смог найти адекватную информацию о том, как его использовать, использовать ли его в сочетании с BIND и т. Д., И он просто оказался клоном BIND, поэтому я сейчас использую подходящий домен и просто BIND ... но это дало мне головную боль от доступности только для робота Googlebot и моей локальной сети. Y Treehugger Cymru 5 лет назад 0

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

0
Anaksunaman

Я знаю, что этот вопрос немного устарел (и кажется, что у вас есть полу-рабочая конфигурация), поэтому, пожалуйста, прости меня, если я скажу что-нибудь, о чем ты уже знаешь, или это больше не относится к твоей проблеме.


Я не могу напрямую говорить о любых других проблемах, но у вас (по-видимому) нет записи для vpntest.it в вашем файле зоны:

$ORIGIN vpntest.it. $TTL 86400 @ IN SOA ns1.vpntest.it. hostmaster.vpntest.it. ( 100 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of 1 day ; IN NS ns1.vpntest.it. ; ns1 IN A 10.200.0.1 ; vpntest.it. IN A 10.200.0.6 ; http://vpntest.it - no subdomain www IN A 10.200.0.6 ; http://www.vpntest.it - subdomain 

Обратите внимание, что при внесении изменений в ваши зоны серийный номер всегда должен увеличиваться.

Другие заметки

  • .itнастоящий TLD вместе с .dev. Это может вызвать проблемы с разрешением (как и любой реальный, публичный TLD). Вы можете проверить этот список международных доменов верхнего уровня и выбрать поддельный домен верхнего уровня, которого нет в этом списке (например, .nxвозможно?). Существуют некоторые официально зарезервированные непубличные TLD (ну, частично исключая .onion), но .invalidвы можете выбрать, чтобы они были абсолютно безопасными (избегайте, .localпоскольку они используются в сочетании с сетью zeroconf ).

  • Как вы отмечаете в своих комментариях, recursion no;их следует удалить (поскольку вы уже ограничиваете рекурсию с помощью allow-recursion { 10.200.0.1/24; };).

  • Любой компьютер, с которым вы хотите vpntest.itработать, должен пропустить свой DNS-трафик через ваш сервер BIND.

  • хосты могут потенциально переопределить BIND. Хотя nsswitch.confэто и не кажется проблемой (учитывая порядок), это, вероятно, все же стоит отметить для общего устранения неполадок (т. Е. Вам не нужно vpntest.it 127.0.0.1при использовании BIND).

  • Хотя это не относится к вашей проблеме, убедитесь, что вы используете, например, vpntest.it/(обратите внимание на косую черту) доступ к пользовательским доменам в текущих версиях Chrome, Firefox и Opera (или других браузеров, производных от Chromium). Отключение может также вызвать проблемы с разрешением (в противном случае DNS работает нормально).

Похожие вопросы