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

В данной статье я расскажу о том, как настроить стандартный DNS сервер (BIND) в системе FreeBSD версии 8.1. На DNS сервер (BIND) будут возложены следующие функции: кеширование DNS запросов и обслуживание доменных зон. Все необходимые для работы сервера файлы содержатся в директории /etc/namedb. В данной директории содержится:
  • dynamic - директория, в которой хранятся динамические зоны.
  • master - директория, в которой хранятся зоны, которые обслуживает данный сервер.
  • slave - директория, в которой хранятся зоны, для которых этот DNS сервер является вторичным.
  • working - директория, в которой работает сервер после chroot,а.
  • named.conf - главный конфигурационный файл.
  • rndc.key - ключ, необходимый для работы утилиты rndc
  • named.root - список корневых серверов.
Как было сказано ранее, главный конфигурационный файл имеет имя named.conf. Его-то нам и предстоит отредактировать. Итак, поехали:
  1. // В файле хранится ключ, который используется утилитой rndc
  2. // для получения доступа к DNS серверу.
  3. include "/etc/namedb/rndc.key";
  4.  
  5. // ACL,ка, которая описывает внутренние подсети
  6. acl internal_net { localhost; 192.168.1.0/24; 192.168.7.0/24; };
  7.  
  8. // Определяем с каких хостов и каким ключом разрешено управлять сервером.
  9. controls {
  10. 	inet 127.0.0.1 allow { localhost; } keys { rndc-key; };
  11. };
  12.  
  13. // Настройка ведения логов
  14. logging {
  15.   channel default_flog {
  16.     file "log/default.log" versions 3 size 512K;
  17.     severity notice;
  18.     print-category yes;
  19.     print-time yes;
  20.   };
  21.  
  22.   channel config_flog {
  23.     file "log/config.log" versions 1 size 512K;
  24.     severity notice;
  25.     print-category yes;
  26.     print-time yes;
  27.   };
  28.  
  29.   channel queries_flog {
  30.     file "log/queries.log" versions 3 size 512K;
  31.     severity notice;
  32.     print-category yes;
  33.     print-time yes;
  34.   };
  35.  
  36.   channel qerror_flog {
  37.     file "log/qerror.log" versions 3 size 256K;
  38.     severity notice;
  39.     print-category yes;
  40.     print-time yes;
  41.   };
  42.  
  43.   category default { default_flog; };
  44.   category config { config_flog; };
  45.   category queries  { queries_flog; };
  46.   category query-errors { qerror_flog; };
  47. };
  48.  
  49. options {
  50.   // Все пути воспринимаются как относительные директории chroot,
  51.   // поэтому везде нужно указывать полный путь.
  52.   directory	"/etc/namedb/working";
  53.   pid-file	"/var/run/named/pid";
  54.   dump-file	"/var/dump/named_dump.db";
  55.   statistics-file	"/var/stats/named.stats";
  56.  
  57.   // На каких интерфейсах (адресах) обслуживать запросы.
  58.   listen-on { any; };
  59.  
  60.   // Пустые зоны.
  61.   disable-empty-zone "255.255.255.255.IN-ADDR.ARPA";
  62.   disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
  63.   disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
  64.  
  65.   // Разрешать передачу зоны только клиентам из внутренней сети.
  66.   allow-transfer { internal_net; };
  67.   // Разрешить всем запросы к серверу.
  68.   allow-query { any; };
  69.   // Разрешить рекурсивные запросы клиентам из внутренней сети.
  70.   allow-recursion { internal_net; };
  71.   // Будет выдаваться при запросе о версии.
  72.   version "Domain nameserver";
  73.   max-ncache-ttl 3600;
  74. };
  75.  
  76. // DNS сервер скачает зоны с корневых серверов, что позволит
  77. // производить поиск необходимых серверов быстрее. То есть
  78. // не придется обращаться к корневым серверам каждый раз,
  79. // когда запрашивается домен, которого нет в кеше.
  80. zone "." {
  81. 	type slave;
  82. 	file "/etc/namedb/slave/root.slave";
  83. 	masters {
  84. 		192.5.5.241;	// F.ROOT-SERVERS.NET.
  85. 	};
  86. 	notify no;
  87. };
  88.  
  89. zone "arpa" {
  90. 	type slave;
  91. 	file "/etc/namedb/slave/arpa.slave";
  92. 	masters {
  93. 		192.5.5.241;	// F.ROOT-SERVERS.NET.
  94. 	};
  95. 	notify no;
  96. };
  97.  
  98. /*
  99.   Обслуживание следующих зон локально позволит быстрее обрабатывать
  100.   запросы и не нагружать сеть лишним трафиком.
  101. */
  102.  
  103. // RFC 1912 (and BCP 32 for localhost)
  104. zone "localhost"	{ type master; file "/etc/namedb/master/localhost-forward.db"; };
  105. zone "127.in-addr.arpa"	{ type master; file "/etc/namedb/master/localhost-reverse.db"; };
  106. zone "255.in-addr.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  107.  
  108. // RFC 1912-style zone for IPv6 localhost address
  109. zone "0.ip6.arpa"	{ type master; file "/etc/namedb/master/localhost-reverse.db"; };
  110.  
  111. // "This" Network (RFCs 1912 and 3330)
  112. zone "0.in-addr.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  113.  
  114. // Private Use Networks (RFC 1918)
  115. zone "10.in-addr.arpa"	   { type master; file "/etc/namedb/master/empty.db"; };
  116. zone "16.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  117. zone "17.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  118. zone "18.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  119. zone "19.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  120. zone "20.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  121. zone "21.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  122. zone "22.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  123. zone "23.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  124. zone "24.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  125. zone "25.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  126. zone "26.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  127. zone "27.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  128. zone "28.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  129. zone "29.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  130. zone "30.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  131. zone "31.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  132. zone "168.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  133.  
  134. // Link-local/APIPA (RFCs 3330 and 3927)
  135. zone "254.169.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  136.  
  137. // TEST-NET-[1-3] for Documentation (RFC 5737)
  138. zone "2.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  139. zone "100.51.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  140. zone "113.0.203.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  141.  
  142. // IPv6 Range for Documentation (RFC 3849)
  143. zone "0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  144.  
  145. // Domain Names for Documentation and Testing (BCP 32)
  146. zone "test" { type master; file "/etc/namedb/master/empty.db"; };
  147. zone "example" { type master; file "/etc/namedb/master/empty.db"; };
  148. zone "invalid" { type master; file "/etc/namedb/master/empty.db"; };
  149. zone "example.com" { type master; file "/etc/namedb/master/empty.db"; };
  150. zone "example.net" { type master; file "/etc/namedb/master/empty.db"; };
  151. zone "example.org" { type master; file "/etc/namedb/master/empty.db"; };
  152.  
  153. // Router Benchmark Testing (RFC 3330)
  154. zone "18.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  155. zone "19.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
  156.  
  157. // IANA Reserved - Old Class E Space
  158. zone "240.in-addr.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  159. zone "241.in-addr.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  160. zone "242.in-addr.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  161. zone "243.in-addr.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  162. zone "244.in-addr.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  163. zone "245.in-addr.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  164. zone "246.in-addr.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  165. zone "247.in-addr.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  166. zone "248.in-addr.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  167. zone "249.in-addr.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  168. zone "250.in-addr.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  169. zone "251.in-addr.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  170. zone "252.in-addr.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  171. zone "253.in-addr.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  172. zone "254.in-addr.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  173.  
  174. // IPv6 Unassigned Addresses (RFC 4291)
  175. zone "1.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  176. zone "3.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  177. zone "4.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  178. zone "5.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  179. zone "6.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  180. zone "7.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  181. zone "8.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  182. zone "9.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  183. zone "a.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  184. zone "b.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  185. zone "c.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  186. zone "d.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  187. zone "e.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  188. zone "0.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  189. zone "1.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  190. zone "2.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  191. zone "3.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  192. zone "4.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  193. zone "5.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  194. zone "6.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  195. zone "7.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  196. zone "8.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  197. zone "9.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  198. zone "a.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  199. zone "b.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  200. zone "0.e.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  201. zone "1.e.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  202. zone "2.e.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  203. zone "3.e.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  204. zone "4.e.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  205. zone "5.e.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  206. zone "6.e.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  207. zone "7.e.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  208.  
  209. // IPv6 ULA (RFC 4193)
  210. zone "c.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  211. zone "d.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  212.  
  213. // IPv6 Link Local (RFC 4291)
  214. zone "8.e.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  215. zone "9.e.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  216. zone "a.e.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  217. zone "b.e.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  218.  
  219. // IPv6 Deprecated Site-Local Addresses (RFC 3879)
  220. zone "c.e.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  221. zone "d.e.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  222. zone "e.e.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  223. zone "f.e.f.ip6.arpa"	{ type master; file "/etc/namedb/master/empty.db"; };
  224.  
  225. // IP6.INT is Deprecated (RFC 4159)
  226. zone "ip6.int"		{ type master; file "/etc/namedb/master/empty.db"; };
  227.  
  228.  
  229. // Настройка собственной зоны
  230. zone "info-x.org" IN {
  231.   type master;
  232.   file "/etc/namedb/master/info-x.org.db";
  233. };
Описание зоны у меня выглядит так:
  1. $TTL 10800      ; 3 hours
  2. info-x.org.     IN SOA  ns0.info-x.org. webmaster.info-x.org. (
  3.                     2012041800 ; serial
  4.                     10800      ; refresh (3 hours)
  5.                     900        ; retry (15 minutes)
  6.                     604800     ; expire (1 week)
  7.                     3600       ; minimum (1 day)
  8. )
  9.  
  10. $ORIGIN info-x.org.
  11. @                   IN NS      ns0.info-x.org.
  12.  
  13. @                   IN A       212.220.113.125
  14. mx                  IN A       212.220.113.125
  15. ns0                 IN A       212.220.113.125
  16. *                   IN A       212.220.113.125
  17.  
  18. @                   MX         10 mx.info-x.org.
  19.  
  20. @                   IN TXT     "v=spf1 +a +mx ~all"
После подготовки всех конфигурационных файлов можно добавлять BIND в автозагрузку и собственно запускать его.
  1. # echo 'named_enable="YES"' >> /etc/rc.conf
  2. # /etc/rc.d/named start
Проверим, запустился ли он:
  1. # sockstat -4 -l | grep named
  2. bind     named      1053  21 tcp4   127.0.0.1:53          *:*
  3. bind     named      1053  23 tcp4   127.0.0.1:953         *:*
  4. bind     named      1053  26 tcp4   212.220.113.125:53    *:*
  5. bind     named      1053  513 udp4  127.0.0.1:53          *:*
  6. bind     named      1053  517 udp4  212.220.113.125:53    *:*
Если демон named не стартовал, то проверяйте конфиг, смотрите логи и ищите ошибку. Проверим, корректно ли обслуживает нашу зону DNS сервер.
  1. # nslookup info-x.org 127.0.0.1
  2. Server:         127.0.0.1
  3. Address:        127.0.0.1#53
  4.  
  5. Name:   info-x.org
  6. Address: 212.220.113.125
Как видно все работает. Полезно знать про утилиту rndc, которая позволяет управлять DNS сервером. С помощью нее, например, можно перечитать конфигурационный файл без перезапуска демона named, сбросить кеш, посмотреть статистику и т.д. За подробностями идем в ман. Также стоит отметить полезные утилиты, которые помогают в повседневной жизни при работе с DNS: nslookup, dig, host.

Добавить комментарий

Filtered text

CAPTCHA
Этот вопрос предназначен для предотвращения автоматизированной обработки форм.
Fill in the blank.