Jump to content
Калькуляторы

Необходима настройка DNS, 5 тысяч FreeBSD 10, NSD + Unbound

Есть DNS-сервер под управлением FreeBSD 10.

На нем работает авторитетный сервер NSD на порту 5353 и ресолвер (кеширующий+рекурсивный) Unbound на порту 53.

 

Авторитетный обслуживает две зоны, mydomain.ru (интернет) и mydomain.local (интранет) и соответствующие им обратные зоны в подсетях xx.yy.0.0/16 и 10.0.0.0/8, настроен примерно так:

server:
       port: 5353
zone:
       name: "mydomain.local."
       zonefile: "zones/zone-service"
zone:
       name: "mydomain.ru."
       zonefile: "zones/zone-public"
zone:
       name: "10.in-addr.arpa."
       zonefile: "zones/reverse-service"
zone:
       name: "in-addr.arpa."
       zonefile: "zones/reverse-public"

Запросы из внешних сетей поступают на авторитетный сервер; файрвол пакеты на порт 53 транслирует на порт 5353, а ответы с порта 5353 транслирует с порта 53.

 

Ресолвер внешние подсети не обслуживает, только свои подсети (публичные и приватные), настроен примерно так:

server:
       port: 53
       root-hints: "/etc/named/named.cache"
       access-control: 0.0.0.0/0 refuse
       access-control: 10.0.0.0/8 allow
       access-control: xx.yy.0.0/16 allow
       do-not-query-address: 127.0.0.0/8
       do-not-query-address: ::1
       do-not-query-localhost: yes
       #private-domain: "mydomain.local."
       local-zone: "10.in-addr.arpa." nodefault
       local-zone: "yy.xx.in-addr.arpa." nodefault
       local-zone: "mydomain.local." nodefault
       local-zone: "mydomain.ru." nodefault
stub-zone:
       name: "mydomain.local."
       stub-addr: 10.1.128.12@5353
stub-zone:
       name: "10.in-addr.arpa."
       stub-addr: 10.1.128.12@5353
stub-zone:
       name: "mydomain.ru."
       stub-addr: 10.1.128.12@5353
stub-zone:
       name: "yy.xx.in-addr.arpa."
       stub-addr: 10.1.128.12@5353

Запросы на свои зоны пересылаются в NSD (10.1.128.12:5353), все остальное ресолвится и кешируется.

Ресолвер работает, но его ответы для своей зоны не авторитетны. Вот вывод dig:

# dig @10.1.128.12 srv-test.mydomain.local

; <<>> DiG 9.9.4-P2 <<>> @10.1.128.12 srv-test.mydomain.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21207
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;srv-test.mydomain.local.       IN      A

;; ANSWER SECTION:
srv-test.mydomain.local. 3600   IN      A       10.1.128.9

;; AUTHORITY SECTION:
mydomain.local.         3600    IN      NS      ns.mydomain.local.
mydomain.local.         3600    IN      NS      ns01.mydomain.local.
mydomain.local.         3600    IN      NS      ns02.mydomain.local.

;; ADDITIONAL SECTION:
ns.mydomain.local.      3600    IN      A       10.1.128.12
ns01.mydomain.local.    3600    IN      A       10.1.128.11
ns02.mydomain.local.    3600    IN      A       10.1.128.12

;; Query time: 5 msec
;; SERVER: 10.1.128.12#53(10.1.128.12)
;; WHEN: Sat Nov 01 16:09:47 MSK 2014
;; MSG SIZE  rcvd: 171

 

А вот ответ от авторитетного сервера (установлен флаг aa):

# dig @10.1.128.12 -p 5353 srv-test.mydomain.local

; <<>> DiG 9.9.4-P2 <<>> @10.1.128.12 -p 5353 srv-test.mydomain.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56000
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;srv-test.mydomain.local.       IN      A

;; ANSWER SECTION:
srv-test.mydomain.local. 3600   IN      A       10.1.128.9

;; AUTHORITY SECTION:
mydomain.local.         3600    IN      NS      ns.mydomain.local.
mydomain.local.         3600    IN      NS      ns01.mydomain.local.
mydomain.local.         3600    IN      NS      ns02.mydomain.local.

;; ADDITIONAL SECTION:
ns.mydomain.local.      3600    IN      A       10.1.128.12
ns01.mydomain.local.    3600    IN      A       10.1.128.11
ns02.mydomain.local.    3600    IN      A       10.1.128.12

;; Query time: 2 msec
;; SERVER: 10.1.128.12#5353(10.1.128.12)
;; WHEN: Sat Nov 01 16:20:07 MSK 2014
;; MSG SIZE  rcvd: 171

 

Необходимо сделать так, чтобы Unbound возвращал авторитетные ответы для своей зоны, которые он получает от авторитетного сервера (прописывание local-data не подходит).

 

Бюджет 5 тысяч.

Доступ к серверу предоставить не могу. Могу предоставить полный набор настроечных файлов для NSD и Unbound (полная конфигурация, файлы зон, окружение и т.п.).

Бесплатные советы приветствуются — я бы сам такое сделал, если бы понял, почему local-zone не работает так, как указано в документации.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this