Настройка сервера DNS

Материал из RSU WiKi
Перейти к: навигация, поиск
Tower of babel.png外國 language!
В статье используется несколько языков. Необходимо использовать один. Совсем неплохо, если это будет русский.

DNS (Domain Name System — система доменных имён) — компьютерная распределённая система для получения информации о доменах. Чаще всего используется для получения IP-адреса по имени хоста (компьютера или устройства), получения информации о маршрутизации почты, обслуживающих узлах для протоколов в домене (SRV-запись) [1].

Содержание

Введение

В статье рассмотрен процесс установки и настройки DNS-сервера BIND [2] для работы в режиме кэширующего и авторитативного сервера доменных имён организации на базе SuSE Linux Enterprise Server (SLES) [3] или OpenSUSE [4]. Сервер обслуживает dns-запросы пользователей локальной сети, осуществляет фильтрацию нежелательных ресурсов, блокирует доступ к сети для незарегистрированных машин, а так же поддерживает внешние DNS-зоны организации.

В нашем примере мы будем использовать следующие имена зон, ip-адреса и сети:

  • 172.20.0.2 / 192.0.2.10 - серый / белый адрес первичного сервера DNS
  • 172.20.0.3 / 203.0.113.10 - серый / белый адрес вторичного сервера DNS
  • 198.51.100.10 - вторичный DNS-сервер для "белых" зон на удаленной площадке
  • example.edu.ru - "белая" dns-зона предприятия доступная из сети интернет
  • example - "серая" dns-зона предприятия доступная исключительно из локальной сети
  • 192.0.2.0/24 - "белая" сеть
  • 172.16.0.0/16, 172.20.0.0/16 - "серые" (локальные) сети
  • local.example.edu.ru - домен AD
  • 172.20.1.2; 172.20.1.4; - адреса контроллеров домена

Установка

Для полноценной работы DNS нам понадобятся 2 одинаковых сервера (первичный и вторичный), отдельные машины или виртуальные системы на разных! физических серверах. Это необходимо для обеспечения надежности работы системы и непрерывности предоставления услуг DNS при сбоях и плановых обновлениях ПО на серверах. Первоначальная настройка одинакова, различия будут только в /etc/named.conf. Предполагается, что сервера подключены "серыми" интерфейсами в локальную сети, а "белыми" - в независимые ip-подсети (требование RFC XXXX для работы с интернет-зонами). В случае, если на серверах не предполагается поддержка внешних зон организации, "белая" сеть не нужна, достаточно подключения к интернет через NAT.

Система DNS не требовательна к ресурсам. Например для работы DNS-сервера (одного из пары), обслуживающего ~1000 ПК, поддерживающего ~80 зон и настроенного на блокировку нежелательного контента более чем достаточно виртуальной машины 0.5 Gb RAM, 15 Gb HDD.

Установка и первичная настройка named в SLES и OpenSUSE осуществляется через модуль YaST: Network Services -> DNS Server

В настройках SuSEfirewall2 укажем наличие dns-сервера на внешнем интерфейсе:

/etc/sysconfig/SuSEfirewall2

FW_SERVICES_EXT_TCP="53"
FW_SERVICES_EXT_UDP="53"

Если dns-сервер расположен в DMZ, необходимо открыть 53й порт для него на шлюзе. Для SLES это:

/etc/sysconfig/SuSEfirewall2

FW_FORWARD="192.0.2.10,0/0,tcp,53 \
            192.0.2.10,0/0,udp,53 \
           "

В качестве вышестоящих dns-серверов воспользуемся серверами OpenDNS [5] [6] [7]:

/etc/named.d/forwarders.conf

forwarders { 208.67.222.222; 208.67.220.220; };

Сервис весьма дружественно ругается на неправильно набранное имя сайта в адресной строке, вместо ошибки выдается окно результатов поиска Yahoo с введенной чушью в качестве параметров. Это оценят администраторы, вынужденные регулярно отвечать на телефонные звонки и устные претензии особо одаренных пользователей, набирающих в адресной строке браузера "ввв jandex". Большая страница на иностранном языке да еще и со знакомыми словами вводит их в ступор и до телефона обычно не доходит.

Настройка

Первичный DNS

Файлы зон DNS

Зоны хранятся в каталоге /var/lib/named/master. Файлы прямых зон имеют имена, совпадающие с именем зоны, обратных зон - в виде обратной записи arpa.

По RFC 1912 числовой параметр serial увеличивается на >=1 при каждой правке зоны по шаблону:

<XXXX><YY><ZZ><KK>

где:

  • XXXX - год
  • YY - месяц
  • ZZ - день
  • KK - порядковый номер

правки файла. Рекомендация использовать дату в качестве номера содержтся в RFC XXXX

wpad

Зона "wpad" и wpad-записи в зонах локальной сети необходимы для работы протокола WPAD [8] для автоматической настройки проски сервера в ОС Windows [9].

$TTL 2d
@               IN SOA          ns.example.edu.ru.  hostmaster.example.edu.ru. (
                                2009011603      ; serial
                                3h              ; refresh
                                1h              ; retry
                                1w              ; expiry
                                1d )            ; minimum

wpad.   IN NS           ns.example.edu.ru.
wpad.   IN NS           ns2.example.edu.ru.

; веб-сервер с виртуальным хостом "wpad"
wpad.   IN A            192.0.2.130
example.edu.ru
$TTL 2d
@               IN SOA          ns.example.edu.ru.  hostmaster.example.edu.ru. (
                                2011062100      ; serial
                                3h              ; refresh
                                1h              ; retry
                                1w              ; expiry
                                1d )            ; minimum

example.edu.ru.     IN NS           ns.example.edu.ru.
example.edu.ru.     IN NS           ns2.example.edu.ru.
; сторонний вторичный dns-сервер
example.edu.ru.     IN NS           ns.example.org.

example.edu.ru.     IN MX           0  mx1.example.edu.ru.
example.edu.ru.     IN MX           10 mx2.example.edu.ru.
example.edu.ru.     IN TXT          "v=spf1 mx ~all"

; SIP
_sip._udp 3600 IN SRV 10 0 5060 mail.example.edu.ru.
_sip._tcp 3600 IN SRV 10 0 5060 mail.example.edu.ru.
_sips._tcp 3600 IN SRV 10 0 5061 mail.example.edu.ru.
_sips._udp 3600 IN SRV 10 0 5061 mail.example.edu.ru.
; XMPP
_xmpp-server._tcp 3600 IN SRV 10 0 5269 mail.example.edu.ru.
_xmpp-server._udp 3600 IN SRV 10 0 5269 mail.example.edu.ru.
_xmpp-client._tcp 3600 IN SRV 10 0 5222 mail.example.edu.ru.
_xmpp-client._udp 3600 IN SRV 10 0 5222 mail.example.edu.ru.
_jabber._tcp 3600 IN SRV 10 0 5269 mail.example.edu.ru.
_jabber._udp 3600 IN SRV 10 0 5269 mail.example.edu.ru.
_jabber-client._tcp 3600 IN SRV 10 0 5222 mail.example.edu.ru.
_jabber-client._udp 3600 IN SRV 10 0 5222 mail.example.edu.ru.
; STUN
_stun._udp.example.edu.ru. 3600 IN SRV 20 0 3478 mail.example.edu.ru.
_stun._udp.mail.example.edu.ru. 3600 IN SRV 20 0 3478 mail.example.edu.ru.

; укажем, что веб сервер отвечает на адрес example.edu.ru
example.edu.ru.     IN A            192.0.2.131

; NTP-сервер точного времени
ntp             IN A            192.0.2.1

; Адреса первичного и вторичного серверов dns
ns1             IN A            192.0.2.10
ns2             IN A            203.0.113.10

; прокси-сервер
proxy           IN A            192.0.2.130
wpad            IN CNAME        proxy

; веб-сервер
www             IN A            192.0.2.131
ftp             IN CNAME        www
svn             IN CNAME        www
forum           IN CNAME        www
www.forum       IN CNAME        www
wiki            IN CNAME        www
www.wiki        IN CNAME        www

; Почтовый сервер
mx1             IN A            192.0.2.145
mx1             IN TXT          "v=spf1 a -all"
mail            IN CNAME        mx1
stun            IN CNAME        mx1

Рассмотрим зону более подробно.

Сторонний вторичный dns-сервер
example.edu.ru.     IN NS           ns.example.org.

Вторичный dns за пределами организации, рекомендуется использовать для интернет зон. Обычно расположен на площадке интернет-провайдера, так же можно воспользоваться коммерческой услугой или одним из бесплатных серверов, например Twisted4Life.

MX и SFP записи
example.edu.ru.     IN MX           0  mx1.example.edu.ru.
example.edu.ru.     IN MX           10 mx2.example.edu.ru.
example.edu.ru.     IN TXT          "v=spf1 mx ~all"

"МХ-запись", это один из типов записей в DNS, указывающий способ маршрутизации электронной почты. MX-записи для данного домена указывают серверы, на которые нужно отправлять электронную почту, предназначенную для адресов в данном домене. Кроме того, MX-записи указывают приоритет каждого из возможных серверов для отправки [10].

Имя хоста, указанного в записи MX, должно содержать IP-адрес, определённый с помощью записи IN A. Псевдонимы IN CNAME не могут иметь своих MX-записей.

Чтобы отправить электронную почту на определённый адрес, сервер-отправитель делает DNS-запрос, запрашивая MX-запись домена получателя электронного сообщения (то есть части адреса после символа «@»). В результате запроса возвращается список имён хостов почтовых серверов, принимающих входящую почту для данного домена, а также величину приоритета для каждого из хостов. Сервер-отправитель затем пытается установить SMTP-соединение с одним из этих хостов, начиная с того, у кого значение величины приоритета наименьшее, перебирая каждый из них, пока не удастся установить соединение хотя бы с одним из них. Если же имеется несколько хостов с одинаковыми приоритетами, то должны быть предприняты попытки установить соединение с каждым из них.

Если для данного домена нет MX-записей, то запрашивается A-запись, и делается попытка отправить почту уже на хост, указанный там.

Механизм записей MX предоставляет возможность использовать множество серверов для одного домена и упорядочивания их использования в целях уменьшения нагрузки и увеличения вероятности успешной доставки почты. Кроме того, такой механизм предоставляет возможность распределить обработку входящей почты среди нескольких физических серверов.

"SPF-запись", расширение для протокола отправки электронной почты SMTP. SPF определен в RFC 4408. Благодаря SPF можно проверить, не подделан ли домен отправителя [11]. На официальной странице SPF существует мастер, помогающий создать SPF-запись для своего домена.

SIP, XMPP & STUN
; SIP
_sip._udp 3600 IN SRV 10 0 5060 mail.example.edu.ru.
_sip._tcp 3600 IN SRV 10 0 5060 mail.example.edu.ru.
_sips._tcp 3600 IN SRV 10 0 5061 mail.example.edu.ru.
_sips._udp 3600 IN SRV 10 0 5061 mail.example.edu.ru.
; XMPP
_xmpp-server._tcp 3600 IN SRV 10 0 5269 mail.example.edu.ru.
_xmpp-server._udp 3600 IN SRV 10 0 5269 mail.example.edu.ru.
_xmpp-client._tcp 3600 IN SRV 10 0 5222 mail.example.edu.ru.
_xmpp-client._udp 3600 IN SRV 10 0 5222 mail.example.edu.ru.
_jabber._tcp 3600 IN SRV 10 0 5269 mail.example.edu.ru.
_jabber._udp 3600 IN SRV 10 0 5269 mail.example.edu.ru.
_jabber-client._tcp 3600 IN SRV 10 0 5222 mail.example.edu.ru.
_jabber-client._udp 3600 IN SRV 10 0 5222 mail.example.edu.ru.
; STUN
_stun._udp.example.edu.ru. 3600 IN SRV 20 0 3478 mail.example.edu.ru.
_stun._udp.mail.example.edu.ru. 3600 IN SRV 20 0 3478 mail.example.edu.ru.

SIP, XMPP и STUN записи необходимы в том случае, если в качестве почтового сервера используется Communigate Pro.

2.0.192.in-addr.arpa
$TTL 2d
@               IN SOA          ns.example.edu.ru.  hostmaster.example.edu.ru. (
                                2011031601      ; serial
                                3h              ; refresh
                                1h              ; retry
                                1w              ; expiry
                                1d )            ; minimum

2.0.192.in-addr.arpa.        IN MX           0  mx1.example.edu.ru.
2.0.192.in-addr.arpa.        IN MX           10 mx2.example.edu.ru.
2.0.192.in-addr.arpa.        IN NS           ns1.example.edu.ru.
2.0.192.in-addr.arpa.        IN NS           ns2.example.edu.ru.
2.0.192.in-addr.arpa.        IN NS           ns.example.org.

1               IN PTR          ntp.example.edu.ru.
10              IN PTR          ns.example.edu.ru.
130             IN PTR          proxy.example.edu.ru.
131             IN PTR          www.example.edu.ru.
145             IN PTR          mx1.example.edu.ru.
bl.example
$TTL 432000     ; 5 days
@               IN SOA  ns.example. hostmaster.example.edu.ru. (
                                2011052400 ; serial
                                10800      ; refresh (3 hours)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                432000     ; minimum (5 days)
                                )
                        NS      ns.example.
                        NS      ns2.example.

vlan10.sr0.B1F1A1R    IN A    172.20.10.1

wpad                    IN A    192.0.2.130

; Корпус №1
; Название и адрес
;
; Подсеть: 172.20.10.0/24
;   Маска: 255.255.255.0
;    Шлюз: 172.20.10.1
;     DNS: 172.20.0.2
;          172.20.0.3

; Ауд №1 Деканат
b1a1t01         IN A    172.20.10.33
b1a1t02         IN A    172.20.10.34
b1a1t03         IN A    172.20.10.35
b1a1pr01        IN A    172.20.10.36
b1a1ph01        IN A    172.20.10.37
b1a1l01         IN A    172.20.10.38

;Ауд №5 Аспирантура
b1a5t01         IN A    172.20.10.41
b1a5t02         IN A    172.20.10.42

;Ауд №6 Кафедра литературы
b1a6t01         IN A    172.20.10.46
b1a6t02         IN A    172.20.10.47
b1a6t03         IN A    172.20.10.48

; ауд. 18 Подсеть 172.20.10.208/28 (16 адресов)
; Компьютерный класс
b1a18t01                IN A    172.20.10.209
b1a18t02                IN A    172.20.10.210
b1a18t03                IN A    172.20.10.211
b1a18t04                IN A    172.20.10.212
b1a18t05                IN A    172.20.10.213
b1a18t06                IN A    172.20.10.214
b1a18t07                IN A    172.20.10.215

; DHCP Pool
b1-DHCP-Guest-224       IN A    172.20.10.224
b1-DHCP-Guest-225       IN A    172.20.10.225
b1-DHCP-Guest-226       IN A    172.20.10.226
b1-DHCP-Guest-227       IN A    172.20.10.227
b1-DHCP-Guest-228       IN A    172.20.10.228
b1-DHCP-Guest-229       IN A    172.20.10.229
b1-DHCP-Guest-230       IN A    172.20.10.230
b1-DHCP-Guest-231       IN A    172.20.10.231
b1-DHCP-Guest-232       IN A    172.20.10.232
b1-DHCP-Guest-233       IN A    172.20.10.233
b1-DHCP-Guest-234       IN A    172.20.10.234
b1-DHCP-Guest-235       IN A    172.20.10.235
b1-DHCP-Guest-236       IN A    172.20.10.236
b1-DHCP-Guest-237       IN A    172.20.10.237
b1-DHCP-Guest-238       IN A    172.20.10.238
b1-DHCP-Guest-239       IN A    172.20.10.239
b1-DHCP-Guest-240       IN A    172.20.10.240
b1-DHCP-Guest-241       IN A    172.20.10.241
b1-DHCP-Guest-242       IN A    172.20.10.242
b1-DHCP-Guest-243       IN A    172.20.10.243
b1-DHCP-Guest-244       IN A    172.20.10.244
b1-DHCP-Guest-245       IN A    172.20.10.245
b1-DHCP-Guest-246       IN A    172.20.10.246
b1-DHCP-Guest-247       IN A    172.20.10.247
b1-DHCP-Guest-248       IN A    172.20.10.248
b1-DHCP-Guest-249       IN A    172.20.10.249
b1-DHCP-Guest-250       IN A    172.20.10.250
b1-DHCP-Guest-251       IN A    172.20.10.251
b1-DHCP-Guest-252       IN A    172.20.10.252
b1-DHCP-Guest-253       IN A    172.20.10.253
b1-DHCP-Guest-254       IN A    172.20.10.254

Пример зоны для здания в локальной сети организации. Мы используем следующий способ раздачи адресов.

DNS-зону можно разделить на 4 смысловых блока:

  • Служебная подсеть для сетевого оборудования и серверов
  • Адреса кафедр и структурных подразделений
  • Подсети компьютерных классов
  • Динамическая подсеть для различных нужд

Как правило для кафедр и подразделений не выделяются подсети целиком для экономии адресов, а для компьютерных классов адреса выдаются небольшими подсетями с конца зоны для организации доступа к студенческому интернету и для сохранения возможности выделить дополнительные подсети. Служебные и динамические адреса выделяются и так же объединяются в подсети.

Предлагается следующая адресация (на примере зоны it.rspu):

  • Служебная подсеть 172.20.0.0/27 включает 32 адреса, из них назначаемые с 1 по 30
  • Для кафедр и структурных подразделений используются все свободные адреса между служебной подсетью и крайним компьютерным классом с 172.20.0.33 по 172.20.0.183 с пропуском по 3 адреса
  • Подсети компьютерных классов
    • 172.20.0.184/28 включает 16 адресов, из них назначаются с 185 по 190
    • 172.20.0.192/27 включающая 32 адреса, из которых назначаются с 193 по 222
  • Динамическая подсеть 172.20.0.224/27 содержит 32 адреса, из которых назначаются с 225 по 254

Имена пользовательских машин университета образуются по следующему шаблону:

 b<номер корпуса>a<номер аудитории><тип машины><номер машины>

Если помещение типа "Open Space" или в одной аудитории достаточно много комнат и будет удобнее их пронумеровать, то это следует делать по часовой стрелке от входа, начиная нумерацию комнат на каждом этаже заново. При этом вводятся дополнительные обозначения:

  • f - номер этажа снизу вверх
  • r - номер комнаты на этаже по часовой стрелке от входа

Пример правильного имени ПК в данном случае:

b1a2f3r4t05.b1.rspu

- <тип машины> - один из следующих символов:

  • t - десктоп
  • l - лаптоп
  • ph - IP-телефон
  • pr - сетевой принтер или МФУ
  • v - виртуальные ОС

Целиком правила доступны в статье: Правила именования рабочих машин и подачи списка IP-адресов в Отдел телекоммуникаций

10.20.172.in-addr.arpa
$TTL 432000     ; 5 days
@       IN SOA  ns.example. hostmaster.example.edu.ru. (
                                2011052400 ; serial
                                10800      ; refresh (3 hours)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                432000     ; minimum (5 days)
                                )
                        NS      ns.example.
                        NS      ns2.example.

1.10.20.172.in-addr.arpa.      IN PTR  vlan10.sr0.B1F1A1R.example.

; Корпус №1
; Название
; Адрес

2.10.20.172.in-addr.arpa.      IN PTR  Host-2.b1.example.
3.10.20.172.in-addr.arpa.      IN PTR  Host-3.b1.example.
4.10.20.172.in-addr.arpa.      IN PTR  Host-4.b1.example.
5.10.20.172.in-addr.arpa.      IN PTR  Host-5.b1.example.
~

30.10.20.172.in-addr.arpa. IN PTR Host-30.b1.example. 31.10.20.172.in-addr.arpa. IN PTR Host-31.b1.example. 32.10.20.172.in-addr.arpa. IN PTR Host-32.b1.example. 33.10.20.172.in-addr.arpa. IN PTR b1a1t01.b1.example. 34.10.20.172.in-addr.arpa. IN PTR b1a1t02.b1.example. 35.10.20.172.in-addr.arpa. IN PTR b1a1t03.b1.example. 36.10.20.172.in-addr.arpa. IN PTR b1a1pr01.b1.example. 37.10.20.172.in-addr.arpa. IN PTR b1a1ph01.b1.example. 38.10.20.172.in-addr.arpa. IN PTR b1a1l01.b1.example. 39.10.20.172.in-addr.arpa. IN PTR Host-39.b1.example. 40.10.20.172.in-addr.arpa. IN PTR Host-40.b1.example. 41.10.20.172.in-addr.arpa. IN PTR b1a5t01.b1.example. 42.10.20.172.in-addr.arpa. IN PTR b1a5t02.b1.example. 43.10.20.172.in-addr.arpa. IN PTR Host-43.b1.example. 44.10.20.172.in-addr.arpa. IN PTR Host-44.b1.example. 45.10.20.172.in-addr.arpa. IN PTR Host-45.b1.example. 46.10.20.172.in-addr.arpa. IN PTR b1a6t01.b1.example. 47.10.20.172.in-addr.arpa. IN PTR b1a6t02.b1.example. 48.10.20.172.in-addr.arpa. IN PTR b1a6t03.b1.example. 49.10.20.172.in-addr.arpa. IN PTR Host-49.b1.example. 50.10.20.172.in-addr.arpa. IN PTR Host-50.b1.example.

~

206.10.20.172.in-addr.arpa. IN PTR Host-206.b1.example. 207.10.20.172.in-addr.arpa. IN PTR Host-207.b1.example. 208.10.20.172.in-addr.arpa. IN PTR Host-208.b1.example. 209.10.20.172.in-addr.arpa. IN PTR b1a18t01.b1.example. 210.10.20.172.in-addr.arpa. IN PTR b1a18t02.b1.example. 211.10.20.172.in-addr.arpa. IN PTR b1a18t03.b1.example. 212.10.20.172.in-addr.arpa. IN PTR b1a18t04.b1.example. 213.10.20.172.in-addr.arpa. IN PTR b1a18t05.b1.example. 214.10.20.172.in-addr.arpa. IN PTR b1a18t06.b1.example. 215.10.20.172.in-addr.arpa. IN PTR b1a18t07.b1.example. 216.10.20.172.in-addr.arpa. IN PTR Host-216.b1.example. 217.10.20.172.in-addr.arpa. IN PTR Host-217.b1.example. 218.10.20.172.in-addr.arpa. IN PTR Host-218.b1.example. 219.10.20.172.in-addr.arpa. IN PTR Host-219.b1.example. 220.10.20.172.in-addr.arpa. IN PTR Host-220.b1.example. 221.10.20.172.in-addr.arpa. IN PTR Host-221.b1.example. 222.10.20.172.in-addr.arpa. IN PTR Host-222.b1.example. 223.10.20.172.in-addr.arpa. IN PTR Host-223.b1.example. 224.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-224.b1.example. 225.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-225.b1.example. 226.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-226.b1.example. 227.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-227.b1.example. 228.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-228.b1.example. 229.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-229.b1.example. 230.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-230.b1.example. 231.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-231.b1.example. 232.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-232.b1.example. 233.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-233.b1.example. 234.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-234.b1.example. 235.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-235.b1.example. 236.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-236.b1.example. 237.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-237.b1.example. 238.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-238.b1.example. 239.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-239.b1.example. 240.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-240.b1.example. 241.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-241.b1.example. 242.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-242.b1.example. 243.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-243.b1.example. 244.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-244.b1.example. 245.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-245.b1.example. 246.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-246.b1.example. 247.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-247.b1.example. 248.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-248.b1.example. 249.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-249.b1.example. 250.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-250.b1.example. 251.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-251.b1.example. 252.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-252.b1.example. 253.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-253.b1.example. 254.10.20.172.in-addr.arpa. IN PTR b1-DHCP-Guest-254.b1.example.

Автоматическая генерация обратных зон для локальной сети

Заготовки обратных зон для локальной сети можно собрать автоматически при помощи скрипта в том случае, если прямые зоны стандартизованы и имеют общий вид.

Скрипт:

#!/bin/bash
 
for i in `ls *.example`
do
 
 NAME=$i
 REVERSE_ADDR=`grep "IN A" $i |head -n 1|awk '{ print $4; }'|awk -F "." '{ print $3"."$2"."$1; }'`
 DATE=`date +%Y%m%d%S`
 
echo "Making" $REVERSE_ADDR
 
rm -f straight
cp $i straight
 
> generated
 
for j in `seq 1 254`
do
  echo "$j.$REVERSE_ADDR.in-addr.arpa.  IN PTR  zHost-$j.$NAME.example." >> generated
done
 
tr -d "\r" < straight | sed -e 's/\t[\t]*/\t/g'  > temp
mv temp straight
 
sed -e 's/\.s/\-s/' < straight | sed -e 's/\.B/\~B/' | sed -e 's/\.D/\~D/' |grep -e F[0-9]* | awk -F "[\t,.]" '{ print $6"."$5"."$4"."$3".in-addr.arpa.\tIN PTR\t"$1".example." }' >> generated
 
grep "IN A" < straight | grep -v ";" | grep -v "192.0.2" | grep -v -e F[:digit:]* | sort -t . -k 4 -n > canonical
 
cat canonical | sort -k 4 -n | awk -F "\t" '{ print $3" IN A    "$1 }' | awk -v name="$NAME" -F "[.,\t]" '{ print $4"."$3"."$2"."$1".in-addr.arpa.""\t""IN PTR""\t"$6"."name".example." }' >> generated
 
echo "\$TTL 432000     ; 5 days" > reverse
echo "@       IN SOA  ns.$NAME.example. hostmaster.example.edu.ru. (" >> reverse
echo "                                $DATE ; serial" >> reverse
echo "                                10800      ; refresh (3 hours)" >> reverse
echo "                                3600       ; retry (1 hour)" >> reverse
echo "                                604800     ; expire (1 week)" >> reverse
echo "                                432000     ; minimum (5 days)" >> reverse
echo "                                )" >> reverse
echo "                        NS      ns.$NAME.example." >> reverse
echo "" >> reverse
 
cat generated | sort -k 1 -n | awk -F "\t" '{ print $3"\t"$2"\t"$1 }' | uniq -f 3 | awk -F "\t" '{ print $3"\t"$2"\t"$1 }' | sed -e 's/zHost/Host/' >> reverse
 
sed -e 's/\-s/\.s/' < reverse | sed -e 's/\~B/\.B/' | sed -e 's/\~D/\.D/' > temp
mv temp $REVERSE_ADDR.in-addr.arpa
 
rm reverse
rm canonical
rm generated
 
done
exit 0

named.conf

Правим параметры в файле /etc/named.conf

Огрубляем ошибки:

check-names master warn;
check-names slave ignore;
check-names response ignore;

Если notify имеет значение Да (по умолчанию), сообщения отправляются на другие серверы имен, когда данные зоны меняется. Вместо того, чтобы устанавливать глобальное notify в разделе options, отдельные notify могут быть добавлены к каждому определению зон.

notify no;

Ищем строку:

# You can insert further zone records for your own domains below

Все зоны помещаем после нее, это позволит продолжать пользоваться YaST для изменения простых параметров сервера и не затрет внесенных руками изменений.

Адреса сетей организации, acl для allow-query, разрешаем смотреть все наши зоны:

acl org-nets {
    198.51.100.0/24;
    172.16.0.0/16;
    172.20.0.0/16;
};

Адреса вторичных DNS-серверов в локальной сети (без интернета!). Для них надо разрешить allow-transfer во всех наших зонах (интернет/интранет):

acl org-secondary {
    172.20.0.3;
    172.20.1.2;
    172.20.1.4;
};

Внешние вторичные DNS для internet-зон и прочие, кому надо разрешить трансферы для наших внешних dns-зон:

acl inet-secondary { 198.51.100.10; 203.0.113.10; };
acl ripe { 193.0.0.0/22; };

Прибиваем хост "wpad" намертво для кривых dns-запросов от тупых машин с ненастроенным порядком просмотра dns-суффиксов:

zone "wpad" in {
    file "master/wpad";
    type master;
    allow-transfer { org-secondary; };
    allow-query { org-nets; };
};

Описываем интернет-зону:

zone "example.edu.ru" in {
    file "master/example.edu.ru";
    type master;
    allow-transfer { any; };
    allow-query { any; };
    notify yes;
};

zone "2.0.192.in-addr.arpa" in {
    file "master/2.0.192.in-addr.arpa";
    type master;
    allow-transfer { org-secondary; };
    allow-query { any; };
    notify yes;
};

Описываем интранет-зоны:

# Корпус №1, подсеть 172.20.10.0/24, vlan 10
zone "bl.example" {
    file "master/example";
    type master;
    allow-transfer { org-secondary; };
    allow-query { org-nets; };
};

zone "10.20.172.in-addr.arpa" {
    file "master/10.20.172.in-addr.arpa";
    type master;
    allow-transfer { org-secondary; };
    allow-query { org-nets; };
};

# Корпус №2, подсеть 172.20.20.0/24, vlan 20
zone "b2.example" {
    file "master/example";
    type master;
    allow-transfer { org-secondary; };
    allow-query { org-nets; };
};

zone "20.20.172.in-addr.arpa" {
    file "master/20.20.172.in-addr.arpa";
    type master;
    allow-transfer { org-secondary; };
    allow-query { org-nets; };
};

Вторичный DNS

Отличие конфигурационных файлов первичного и вторичного серверов заключается в том, что в секциях описания зон вместо

file "master/<zonename>";
type master;

указывается следующее:

masters { 172.20.0.2; };
type slave;

Правим параметры в файле /etc/named.conf Огрубляем ошибки:

check-names master warn;
check-names slave ignore;
check-names response ignore;

If notify is set to yes (default), notify messages are sent to other name servers when the the zone data is changed. Instead of setting a global 'notify' statement in the 'options' section, a separate 'notify' can be added to each zone definition.

notify no;

Ищем строку:

# You can insert further zone records for your own domains below

Все зоны помещаем после нее, это позволит продолжать пользоваться YaST для изменения простых параметров сервера и не затрет внесенных руками изменений.

Адреса сетей организации, acl для allow-query, разрешаем смотреть все наши зоны:

acl org-nets {
    198.51.100.0/24;
    172.16.0.0/16;
    172.20.0.0/16;
};

Адреса вторичных DNS-серверов в локальной сети (без интернета!). Для них надо разрешить allow-transfer во всех наших зонах (интернет/интранет):

acl org-secondary {
    172.20.0.2;
    172.20.1.2;
    172.20.1.4;
};

Внешние вторичные DNS для internet-зон и прочие, кому надо разрешить трансферы для наших внешних dns-зон:

acl inet-secondary { 198.51.100.10; 203.0.113.10; };
acl ripe { 193.0.0.0/22; };

Прибиваем хост "wpad" намертво для кривых dns-запросов от тупых машин с ненастроенным порядком просмотра dns-суффиксов:

zone "wpad" in {
    masters { 172.20.0.2; };
    type slave;

    allow-transfer { org-secondary; };
    allow-query { org-nets; };
};

Описываем интернет-зону:

zone "example.edu.ru" in {
    masters { 172.20.0.2; };
    type slave;

    allow-transfer { any; };
    allow-query { any; };
    notify yes;
};

zone "2.0.192.in-addr.arpa" in {
    masters { 172.20.0.2; };
    type slave;

    allow-transfer { org-secondary; };
    allow-query { any; };
    notify yes;
};

Описываем интранет-зоны:

# Корпус №1, подсеть 172.20.10.0/24, vlan 10
zone "bl.example" {
    masters { 172.20.0.2; };
    type slave;

    allow-transfer { org-secondary; };
    allow-query { org-nets; };
};

zone "10.20.172.in-addr.arpa" {
    masters { 172.20.0.2; };
    type slave;

    allow-transfer { org-secondary; };
    allow-query { org-nets; };
};

# Корпус №2, подсеть 172.20.20.0/24, vlan 20
zone "b2.example" {
    masters { 172.20.0.2; };
    type slave;

    allow-transfer { org-secondary; };
    allow-query { org-nets; };
};

zone "20.20.172.in-addr.arpa" {
    masters { 172.20.0.2; };
    type slave;

    allow-transfer { org-secondary; };
    allow-query { org-nets; };
};

Active Directory

Предполагается, что домен AD установлен и настроен на 2х серверах.

  • local.example.edu.ru - домен AD
  • 172.20.1.2; 172.20.1.4; - адреса контроллеров домена

Для ip-адресов первичного и вторичного серверов д.б. разрешен трансфер зоны в dns-оснастке AD. На примере Windows Server 2008:

Пуск -> Администрирование -> DNS -> ... -> Зоны прямого просмотра -> local.example.edu.ru

Вносим следующие строки в /etc/named.conf на первичном и вторичном dns-серверах:

zone "local.example.edu.ru" in {
    masters { 172.20.1.2; 172.20.1.4; };
    type slave;
    allow-transfer { org-secondary; };
    allow-query { org-nets; };
};
zone "_msdcs.local.example.edu.ru" in {
    masters { 172.20.1.2; 172.20.1.4; };
    type slave;
    allow-transfer { org-secondary; };
    allow-query { org-nets; };
};

Таким образом оба наших DNS-сервера будут вторичными, по отношению к серверам AD.

OpenDNS

OpenDNS Dashboard > Settings > Security

Enable basic malware/botnet protection

When certain Internet-scale botnets are discovered or particularly malicious malware hits, we offer protection to all our users so that as many people as possible can be protected from the threat. At this time, this feature blocks the Conficker virus and the Internet Explorer Zero Day Exploit, and is continually expanded to include other types of malicious sites.

Enable phishing protection

By enabling phishing protection, you’ll protect everyone on your network from known phishing sites using the best data available.

OpenDNS Dashboard > Settings > Customization

Загружаем логотип организации и, при желании, пишем свои сообщения для блокированных страниц.

Администрирование

DNS-зоны локальной сети

Регистрация домена

.EDU.RU

Основная статья: Как зарегистрировать домен в зоне .edu.ru

Домен EDU.RU является доменом общего пользования и предназначен для регистрации университетов, вузов, школ, лицеев и других образовательных учреждений. При этом не имеют значения ведомственная принадлежность, форма собственности и другие признаки, непосредственно не влияющие на профиль учреждения [12].

  • Регистрация поддомена в зоне EDU.RU производится на основании заявки, заполненной по установленной форме. Заявку можно присылать по электронной почте, телефаксом или при помощи обычной почты. Заявка должна высылаться на адрес ncc@informika.ru
  • Подтверждение о получении заявки высылается заявителю в течение одного рабочего дня с момента ее поступления.
  • Решение по заявке должно быть отослано заявителю в течение 7(семи) рабочих дней с момента поступления полностью оформленной заявки.

Проверка правильности информации о доменных зонах на легитимных NS серверах

Основная статья: Nslookup

Подмена time.windows.com локальным NTP

Основная статья: Система точного времени NTP#Подмена адреса time.windows.com локальным NTP на DNS-сервере

В крупных, постоянно меняющихся и развивающихся сетях установка адреса локального ntp-сервера на всех машинах, не подключенных к Active Directory, может представлять определенную проблему. В данном случае можно воспользоваться возможностями DNS-сервера и подменить выдаваемый по запросу "time.windows.com" ip-адрес на принадлежащий локальному серверу NTP [13].

Блокировка сайтов в локальной сети

Основная статья: Блокировка сайтов при помощи DNS

Настроим DNS-сервер для ограничения доступа к нежелательным ресурсам машин в локальной сети. Для работы нам потребуется nginx, несколько свободных ip-адресов и acl-файлы прокси-сервера squid с блокируемыми доменами. В примерах рассмотрим блокирование баннерной рекламы и сайтов популярных соц. сетей Vkontakte и Odnoklassniki.

DNS блокировка может пригодиться в случаях больших нагрузок на сеть, если планируется отказаться от прокси-сервера squid или перейти на использование технологии transparent-proxy.

Блокировка незарегистрированных в DNS ПК на прокси-сервере

Рассмотрим блокировку отсутствующих в DNS ПК на прокси-сервере squid.

Для этого, на DNS-сервере запустим следующий скрипт:

#!/bin/bash
echo "Generating Squid-ACL to block unknown DNS records:"
cat /var/lib/named/master/*.arpa|grep "IN PTR"|grep "Host-"|grep ".20.172."|awk -F "." '{ print $4"."$3"."$2"."$1; }' > /tmp/dns-block.list
echo "  Done!"
echo "Uploading it to proxy server:"
scp /tmp/dns-block.list root@proxy.example.com:/etc/squid/hawk/dns-block.list
echo "  Done!"

В результате его работы у прокси сервера появится список ip-адресов машин для блокировки.

Для экономии ресурсов прокси сервера целесообразно провести эксперимент: сравнить по объему 2 списка - зарегистрированных и незарегистрированных адресов и выбрать из пары наименьший. На прокси сервере, соответственно, разрешать или блокировать досуп по полученному списку.

Мониторинг подозрительной DNS активности в локальной сети

Основная статья: Мониторинг подозрительной DNS активности в локальной сети

Когда служба OpenDNS [5] сообщает о вирусной активности для серой сети, в которой пользователи выходят в интернет с одного внешнего IP-адреса, возникает проблема определения какие именно машины заражены.

Служба OpenDNS предоставляет информацию о запрошенных доменах, относящихся к категории "Malware". По анализу лога запросов DNS-сервера сети на наличие доменов из списка OpenDNS можно выявить зараженные ПК. Так же процесс нужно автоматизировать скриптами [14] [15].

Проверка правильности зоны

Команда:

named-checkzone <zone name> <file name> 

Ответ:

zone example.com/IN: loaded serial 2013060400
OK

Примечания

  1. DNS. Материал из Википедии — свободной энциклопедии
  2. Internet Systems Consortium: BIND
  3. SUSE Linux Enterprise Server by Novell
  4. openSUSE - свободная операционная система на базе Linux для Вашего ПК, ноутбука или сервера
  5. 5,0 5,1 OpenDNS: DNS-Based Web Security
  6. OpenDNS. Материал из Википедии — свободной энциклопедии
  7. foboss: OpenDNS
  8. Web Proxy Autodiscovery Protocol. From Wikipedia, the free encyclopedia
  9. Автоматическая настройка прокси
  10. Запись MX. Материал из Википедии — свободной энциклопедии
  11. Sender Policy Framework. Материал из Википедии — свободной энциклопедии
  12. ФГУ ГНИИ ИТТ "Информика": Часто задаваемые вопросы про домен EDU.RU и ответы на них
  13. Хабрахабр: Подмена time.windows.com локальным ntp-сервером / Системное администрирование
  14. foboss: Поиск и блокировка зараженных вирусами машин в локальной сети при помощи OpenDNS и Squid
  15. foboss: Поиск и блокировка зараженных вирусами машин в локальной сети при помощи OpenDNS и ISC Bind

См. также

Ссылки

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты