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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.