BIND9 (методическое пособие) — различия между версиями

Материал из wiki
Перейти к: навигация, поиск
(NS)
(Управление)
Строка 1: Строка 1:
 +
= Архитектура DNS=
 +
root(.)
 +
 +
gTLD
 +
 +
ccTLD
 +
 +
TSIG
 +
 +
DNSSEC
 +
 +
Домены, поддомены, зоны прямые и обратные
 +
 +
Делегирование зон
 +
 +
Трансфер зон
 +
 +
Рекурсивный и нерекурсивный запрос
 +
 +
 +
= Сервер имен BIND9 =
 
== Управление ==
 
== Управление ==
 
Проверяет конфиг сервера имен
 
Проверяет конфиг сервера имен

Версия 06:18, 20 февраля 2014

Архитектура DNS

root(.)

gTLD

ccTLD

TSIG

DNSSEC

Домены, поддомены, зоны прямые и обратные

Делегирование зон

Трансфер зон

Рекурсивный и нерекурсивный запрос


Сервер имен BIND9

Управление

Проверяет конфиг сервера имен

named-checkconf

Перезагружает сервер имен

rndc reload

Перезагружает только изменившиеся зоны

rndc reconfig

Опции

Списки доступа

acl network1 {
        1.2.3.0/24;
        192.168.0.0/20;
};
acl GoodDns {
       1.2.3.4;
};

Ограничение на трансфер зон и запросы

        allow-transfer {
                localhost;
               GoodDns;
        };
        allow-query {
               any;
        };

Настройка зоны и подключение файла зоны

zone "example.com" {
        type master;
        file "/etc/bind/db.example.com.";
        allow-query {
                any;
        };
};

Зона прямого просмотра

Зоны прямого просмотра делегируются нам владельцем родительского домена.

Пример файла зоны, для которой мы являемся мастером (SOA ns1.model.local.) Сервер ns.example.com. указан в качестве вторичного.

;
$ORIGIN model.local.
$TTL 1h
;
@       IN      SOA     ns1.model.local.        hostmaster.model.local. (
                                                2014023001      ; Serial Number
                                                10800           ; refresh
                                                3600            ; retry
                                                604800          ; expire
                                                86400   )       ; min TTL
;
                        IN      NS      ns1.model.local.
                        IN      NS      ns.example.com.
                        IN      MX      10      mail1
;
gw                      IN      A       10.13.0.1
; несколько имен на один адрес
ns1                     IN      A       10.13.0.2
net-ctrl-1              IN      A       10.13.0.2
mail1                  IN      A       10.13.0.10
front2                  IN      A       10.13.0.11
back1                   IN      A       10.13.0.20
back2                   IN      A       10.13.0.21
; несколько адресов на одно имя - балансировка
back                    IN      A       10.13.0.20
                        IN      A       10.13.0.21
stor1                   IN      A       10.13.0.30
stor2                   IN      A       10.13.0.31
stor-vip                IN      A       10.13.0.40
front-vrrp              IN      A       10.13.0.50
www                     IN      CNAME   model.local.
bc                      IN      A       10.13.0.255
;
; users
user1                  IN      CNAME   back.model.local.
www.user1              IN      CNAME   back.model.local.
user2                  IN      CNAME   back.model.local.
www.user2              IN      CNAME   back.model.local.
;

Зона обратного просмотра

Зона обратного просмотра управляется владельцем диапазона ip адресов.

Пример файла зоны обратного просмотра, для которой мы являемся мастером

;
$ORIGIN 0.13.10.IN-ADDR.ARPA.
$TTL 1h
;
@       IN      SOA     ns1.model.local.        hostmaster.model.local. (
                                                2014023001      ; Serial Number
                                                10800           ; refresh
                                                3600            ; retry
                                                604800          ; expire
                                                86400   )       ; min TTL
;
                        IN      NS      ns1.model.local.
;
2                       IN      PTR     ns1.model.local.
101                     IN      PTR     netctrl-01.model.local.
255                     IN      PTR     bc.model.local.
;

Зоны по-умолчанию

Зона типа hint для домена точки со списком корневых серверов. Файл зона необходимо периодически обновлять с сервера ftp://ftp.internic.net/domain/named.cache

zone "." {
        type hint;
        file "/etc/bind/db.root";
};

Зоны замыкания на себя прямые, обратные и броадкастов.

zone "localhost" {
        type master;
        file "/etc/bind/db.local";
};

zone "127.in-addr.arpa" {
        type master;
        file "/etc/bind/db.127";
};

zone "0.in-addr.arpa" {
        type master;
        file "/etc/bind/db.0";
};

zone "255.in-addr.arpa" {
        type master;
        file "/etc/bind/db.255";
};

Пример прямой и обратной зоны замыкания на себя, входящих в дистрибутив BIND9

; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.
@       IN      A       127.0.0.1
@       IN      AAAA    ::1
;
$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.
1.0.0   IN      PTR     localhost.

Типы ресурсных записей (RR)

SOA

SOA запись в файле зоны должна быть только одна. В файле она должна стоять первой. Запись SOA определяет какой сервер является владельцем зоны и какие на зону установлены параметры. После записи SOA надо обязательно указать IN NS запись с тем-же сервером, что и в заголовке.

Пример: домен example.com обслуживается серверами ns.example.com и ns.examle.net. После указания директивы $ORIGIN сервер автоматически допишет за нас все неполные dns имена (таким образом hostmaster читается как hostmaster.example.com). Имя сервера вне зоны пишется полностью.

$TTL 2d ; zone TTL default = 2 days or 172800 seconds
$ORIGIN example.com.
@      IN      SOA   ns hostmaster (
               2003080800 ; serial number
               1d12h      ; refresh =  1 day 12 hours
               15M        ; update retry = 15 minutes
               3W12h      ; expiry = 3 weeks + 12 hours
               2h20M      ; minimum = 2 hours + 20 minutes
               )
       IN      NS  ns
       IN      NS  ns.example.net.  ; out-of-zone 
...
; A record for the NS RR above
ns     IN      A   192.168.2.1
;

Пример 2: домен example.com обслуживается двумя серверами вне зоны. Для них указаны полные имена в записях IN NS. Т.к. домен обслуживается другими серверами никакие A записи не допускаются.

$TTL 2d ; zone TTL default = 2 days or 172800 seconds
$ORIGIN example.com.
@      IN      SOA   ns.example.net. hostmaster.example.com. (
               2003080800 ; serial number
               1d12h      ; refresh =  1 day 12 hours
               15M        ; update retry = 15 minutes
               3W12h      ; expiry = 3 weeks + 12 hours
               2h20M      ; minimum = 2 hours + 20 minutes
               )
        IN     NS    ns.example.net. ; out-of-zone name server
        IN     NS    ns.example.org. ; out-of-zone name server

NS

Инфраструктурная запись, указывающая имя сервера имен для данного домена. Формат

owner-name     ttl  class   rr     target-name
example.com.        IN      NS      ns1.example.com.

Согласно стандарту, каждый публичный домен должен иметь минимум 2 сервера имен. Частный домен может обслуживаться и одним сервером.

A, AAAA

MX

Инфраструктурная запись указывающая на имя почтового сервера для домена. Если имя сервера в этом-же домене - требуется еще А-запись с ip адресом почтового сервера.

Почтовых серверов для домена можно указать несколько с разными приоритетами.

Пример: почтовые сервера для домена и поддомена в одном файле

$TTL 2d ; zone default = 2 days or 172800 seconds
$ORIGIN example.com.
example.com. IN     SOA   ns1.example.com. root.example.com. (
               2003080800 ; serial number
               2h         ; refresh =  2 hours 
               15M        ; update retry = 15 minutes
               3W12h      ; expiry = 3 weeks + 12 hours
               2h20M      ; minimum = 2 hours + 20 minutes
               )
; почтовый сервер для адресов вида user@example.com
              IN      MX 10  mail.example.com.
; почтовые сервера для поддомена user@us.example.com
us            IN      MX 10  mail.us.example.com.
us            IN      MX 20  mail.example.com.
; A-запись для основного почтового сервера
mail          IN      A      192.168.0.5
; Переключение на поддомен
$ORIGIN us.example.com.
; A-запись для почтового сервера поддомена
mail          IN      A      10.10.0.29

CNAME

PTR

SRV

Директивы сервера bind

$TTL $ORIGIN

View - ограничение видимости зон

Использование ограничения видимости позволяет применять различные опции по отношению к различным клиентам. Опция вступают в действие в зависимости от ip адреса клиента - источника запроса.

Это позволяет использовать разные данные по одной и той-же зоне для разных клиентов. Для внутренних клиентов мы должны разрешить рекурсивные запросы, для внешних - запретить.

Конфигурация зон /etc/bind/named.conf

; список доступа - наши внутренние клиенты
acl internal {
    10.13.0.0/24;
    localhost;
};

; область видимости для внутренних клиентов
view "internal-view" {
  ; клиент - соответствует списку доступа
  match-clients { internal; };
  ; разрешена рекурсия для внутренних клиентов
  recursion yes;

 ;  зона видима только для внутренних клиентов
  zone "model.local" in {
    type master;
    file "/etc/bind/db.model.local";
  };

; зона видима для внутренних клиентов иначе, чем для внешних
; файл зоны свой
  zone "model.example.net" in {
    type master;
    file "/etc/bind/db.model.example.net.internal";
  };

; обратная зона для внутренних клиентов тоже своя
  zone "0.13.10.in-addr.arpa" in {
    type master;
    file "/etc/bind/rev.10.13.0.internal";
  };

; дефолтные зоны сервера
  include "/etc/bind/named.conf.default-zones";
};

; область видимости, доступная всем прочим клиентам
view "external-view" {
  match-clients { any; };
; запрет рекурсии
  recursion no;

; зона видится внешними клиентами не так, как внутренними
; файл зоны свой
  zone "model.example.net" in {
    type master;
    file "/etc/bind/db.model.example.net";
  };

;  обратная зона видится внешними клиентами не так, как внутренними
; файл зоны свой
  zone "0.13.10.in-addr.arpa" in {
    type master;
    file "/etc/bind/rev.10.13.0";
  };

};