BIND. Centos 7. BIND 9 install: различия между версиями

Материал из Wiki
Перейти к навигации Перейти к поиску
м (Cless переименовал страницу Bind. Centos 7. Bind 9 install в BIND. Centos 7. BIND 9 install без оставления перенаправления)
 
(не показана 1 промежуточная версия этого же участника)
Строка 1: Строка 1:
<nowiki>------------------</nowiki>
= Установка =
<code>yum install bind bind-utils</code>


BIND 9 НА CENTOS 7
<code>systemctl enable named</code>


<nowiki>------------------</nowiki>
= Кэширующий DNS сервер =
<code>nano /etc/named.conf</code><blockquote>добавляем DNS сервера нашего провайдера.


yum install bind bind-utils
также для подстраховки можно добавить после DNS-ов провайдера еще и публичные DNS-ы google.


systemctl enable named
Всё это вписывается в параметр forwarders Также обратите внимание на параметр listen-on — он определяет на каких интерфейсам будет запущен bind.


1. Кэширующий DNS сервер
Для кэширующего DNS тут нужно перечислить локальный и все внутренние интерфейсы.


2. Внутренние зоны
Внешние интерфейсы сюда вписывать не стоит, мы же не хотим чтобы весь Интернет имел возможность через наш DNS резолвить адреса ??</blockquote>
 
//
1. КЭШИРУЮЩИЙ DNS СЕРВЕР
// named.conf
 
//
<nowiki>------------------------</nowiki>
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
 
// server as a caching only nameserver (as a localhost DNS resolver only).
nano /etc/named.conf
//
 
// See /usr/share/doc/bind*/sample/ for example named configuration files.
// и добавляем туда DNS сервера нашего провайдера.
//
 
// See the BIND Administrator's Reference Manual (ARM) for details about the
// также для подстраховки можно добавить после DNS-ов провайдера еще и публичные DNS-ы google.
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
 
// Всё это вписывается в параметр forwarders Также обратите внимание на параметр listen-on — он определяет на каких интерфейсам будет запущен bind.
options {
 
   forwarders {
// Для кэширующего DNS тут нужно перечислить локальный и все внутренние интерфейсы.
              193.34.12.2; 8.8.8.8;
 
       };
// Внешние интерфейсы сюда вписывать не стоит, мы же не хотим чтобы весь Интернет имел возможность через наш DNS резолвить адреса ??
   auth-nxdomain no;    # conform to RFC1035    
 
   listen-on port 53 { 127.0.0.1; 192.168.17.252; };
---
   listen-on-v6 port 53 { ::1; };
 
   directory     "/var/named";
//
   dump-file     "/var/named/data/cache_dump.db";
 
   statistics-file "/var/named/data/named_stats.txt";
// named.conf
   memstatistics-file "/var/named/data/named_mem_stats.txt";
 
   allow-query     { localhost; };
//
   /*
 
    - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
    - If you are building a RECURSIVE (caching) DNS server, you need to enable
 
      recursion.
// server as a caching only nameserver (as a localhost DNS resolver only).
    - If your recursive DNS server has a public IP address, you MUST enable access
 
      control to limit queries to your legitimate users. Failing to do so will
//
      cause your server to become part of large scale DNS amplification
 
      attacks. Implementing BCP38 within your network would greatly
// See /usr/share/doc/bind*/sample/ for example named configuration files.
      reduce such attack surface
 
   */
//
   recursion yes;
 
   dnssec-enable yes;
// See the BIND Administrator's Reference Manual (ARM) for details about the
   dnssec-validation yes;
 
   /* Path to ISC DLV key */
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
   bindkeys-file "/etc/named.iscdlv.key";
 
   managed-keys-directory "/var/named/dynamic";
options {
   pid-file "/run/named/named.pid";
 
   session-keyfile "/run/named/session.key";
   forwarders {
};
 
logging {
              193.34.12.2; 8.8.8.8;
       channel default_debug {
 
               file "data/named.run";
       };
               severity dynamic;
 
       };
   auth-nxdomain no;    # conform to RFC1035    
};
 
zone "." IN {
   listen-on port 53 { 127.0.0.1; 192.168.17.252; };
   type hint;
 
   file "named.ca";
   listen-on-v6 port 53 { ::1; };
};
 
include "/etc/named.rfc1912.zones";
   directory     "/var/named";
include "/etc/named.root.key";
 
<code>systemctl restart named</code>
   dump-file     "/var/named/data/cache_dump.db";
 
   statistics-file "/var/named/data/named_stats.txt";
 
   memstatistics-file "/var/named/data/named_mem_stats.txt";
 
   allow-query     { localhost; };
 
   /*  
 
    - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
 
    - If you are building a RECURSIVE (caching) DNS server, you need to enable  
 
      recursion.  
 
    - If your recursive DNS server has a public IP address, you MUST enable access  
 
      control to limit queries to your legitimate users. Failing to do so will
 
      cause your server to become part of large scale DNS amplification  
 
      attacks. Implementing BCP38 within your network would greatly
 
      reduce such attack surface  
 
   */
 
   recursion yes;
 
   dnssec-enable yes;
 
   dnssec-validation yes;
 
   /* Path to ISC DLV key */
 
   bindkeys-file "/etc/named.iscdlv.key";
 
   managed-keys-directory "/var/named/dynamic";
 
   pid-file "/run/named/named.pid";
 
   session-keyfile "/run/named/session.key";
 
};
 
logging {
 
       channel default_debug {
 
               file "data/named.run";
 
               severity dynamic;
 
       };
 
};
 
zone "." IN {
 
   type hint;
 
   file "named.ca";
 
};
 
include "/etc/named.rfc1912.zones";
 
include "/etc/named.root.key";
 
---
 
systemctl restart named


В итоге мы получаем кэширующий DNS сервер. Убедимся в этом с помощью утилиты dig:
В итоге мы получаем кэширующий DNS сервер. Убедимся в этом с помощью утилиты dig:


dig @127.0.0.1 bbc.com
<code>dig @127.0.0.1 bbc.com</code>
 
<nowiki>;</nowiki> <<>> DiG 9.9.3-2+deb8u3-Debian <<>> @127.0.0.1 bbc.com
---
<nowiki>;</nowiki> (1 server found)
 
<nowiki>;;</nowiki> global options<nowiki>:</nowiki> +cmd
<nowiki>;</nowiki> <<>> DiG 9.9.3-2+deb8u3-Debian <<>> @127.0.0.1 bbc.com
<nowiki>;;</nowiki> Got answer<nowiki>:</nowiki>
 
<nowiki>;;</nowiki> ->>HEADER<<- opcode<nowiki>:</nowiki> QUERY, status: NOERROR, id: 43628
<nowiki>;</nowiki> (1 server found)
<nowiki>;;</nowiki> flags<nowiki>:</nowiki> qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 13, ADDITIONAL: 16
 
<nowiki>;;</nowiki> OPT PSEUDOSECTION<nowiki>:</nowiki>
<nowiki>;;</nowiki> global options<nowiki>:</nowiki> +cmd
<nowiki>;</nowiki> EDNS<nowiki>:</nowiki> version: 0, flags:; udp: 4096
 
<nowiki>;;</nowiki> QUESTION SECTION<nowiki>:</nowiki>
<nowiki>;;</nowiki> Got answer<nowiki>:</nowiki>
<nowiki>;</nowiki>bbc.com.           IN  A
 
<nowiki>;;</nowiki> ANSWER SECTION<nowiki>:</nowiki>
<nowiki>;;</nowiki> ->>HEADER<<- opcode<nowiki>:</nowiki> QUERY, status: NOERROR, id: 43628
bbc.com.        9   IN  A   212.58.246.104
bbc.com.        9   IN  A   212.58.244.18
bbc.com.        9   IN  A   212.58.244.20
bbc.com.        9   IN  A   212.58.246.103
<nowiki>;;</nowiki> AUTHORITY SECTION<nowiki>:</nowiki>
com.            10178   IN  NS  i.gtld-servers.net.
............
Ответ мы получили, значит все работает как надо.


<nowiki>;;</nowiki> flags<nowiki>:</nowiki> qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 13, ADDITIONAL: 16
Настройки DHCP-сервера уже содержит данный DNS сервер как основной и единственный для клиентов локальной сети.


<nowiki>;;</nowiki> OPT PSEUDOSECTION<nowiki>:</nowiki>
Если же вы по каким-то причинам не хотите настраивать себе DHCP сервер,


<nowiki>;</nowiki> EDNS<nowiki>:</nowiki> version: 0, flags:; udp: 4096
Не забудьте вручную на данном сервере и на компах локальной сети сменить DNS сервера в конфиге /etc/resolv.conf.


<nowiki>;;</nowiki> QUESTION SECTION<nowiki>:</nowiki>
Теперь он может выглядеть следующим образом:


<nowiki>;</nowiki>bbc.com.           IN  A
<code>cat /etc/resolv.conf</code>
nameserver 127.0.0.1


<nowiki>;;</nowiki> ANSWER SECTION<nowiki>:</nowiki>
= Внутренние зоны =
Создаем файл для нашей зоны


bbc.com.        9   IN  A   212.58.246.104
<code>nano /etc/named/db.cless.pro</code>
$TTL 3600 ; 1 hour default TTL
cless.pro.    IN    SOA    ns1.cless.pro. admin.cless.pro. (
                             2015042009 ; Serial
                             8H ; Refresh
                             1H ; Retry
                             1W ; Expire
                             1D ) ; minimum, seconds
<nowiki>;</nowiki> DNS Servers
         IN    NS    ns1.cless.pro.
<nowiki>;</nowiki> MX Records
<nowiki>;;</nowiki>        IN    MX 10 mail.cless.pro.
<nowiki>;</nowiki> HOST A
<nowiki>;</nowiki>cless.pro. IN    A     192.168.111.252
ns1       IN    A     192.168.17.252
gw        IN    A     192.168.17.8
d-apps     IN    A     192.168.17.252
<nowiki>*</nowiki>.d-apps   IN    A     192.168.17.252
<nowiki>;</nowiki> CNAME
www       IN   CNAME  gw.cless.pro.
включаем файл в конфиг bind


bbc.com.        9   IN  A   212.58.244.18
<code>nano /etc//named.rfc1912.zones</code>
...
zone "cless.pro" {
   type master;
   file "db.cless.pro";
   notify no;
   allow-transfer { none; };
   allow-update { none; };
   allow-query { 127.0.0.1; 192.168.17.0/24; };
...
Сохраняем конфиг и перезапускаем сервис:


bbc.com.        9   IN  A   212.58.244.20
<code>systemctl restart named</code>
 
bbc.com.        9   IN  A   212.58.246.103
 
<nowiki>;;</nowiki> AUTHORITY SECTION<nowiki>:</nowiki>
 
com.            10178   IN  NS  i.gtld-servers.net.
 
............
 
---
 
// ответ мы получили, значит все работает как надо.
 
// настройки DHCP-сервера уже содержит данный DNS сервер как основной и единственный для клиентов локальной сети.
 
// Если же вы по каким-то причинам не хотите настраивать себе DHCP сервер,
 
// не забудьте вручную на данном сервере и на компах локальной сети сменить DNS сервера в конфиге /etc/resolv.conf.
 
// Теперь он может выглядеть следующим образом:
 
cat /etc/resolv.conf
 
---
 
nameserver 127.0.0.1
 
---
 
2. ВНУТРЕННИЕ ЗОНЫ
 
<nowiki>------------------</nowiki>
 
// создаем файл для нашей зоны
 
nano /etc/named/db.cless.pro
 
---
 
$TTL 3600 ; 1 hour default TTL
 
cless.pro.    IN    SOA    ns1.cless.pro. admin.cless.pro. (
 
                             2015042009 ; Serial
 
                             8H ; Refresh
 
                             1H ; Retry
 
                             1W ; Expire
 
                             1D ) ; minimum, seconds
 
<nowiki>;</nowiki> DNS Servers
 
         IN    NS    ns1.cless.pro.
 
<nowiki>;</nowiki> MX Records
 
<nowiki>;;</nowiki>        IN    MX 10 mail.cless.pro.
 
<nowiki>;</nowiki> HOST A
 
<nowiki>;</nowiki>cless.pro. IN    A     192.168.111.252
 
ns1       IN    A     192.168.17.252
 
gw        IN    A     192.168.17.8
 
d-apps     IN    A     192.168.17.252
 
<nowiki>*</nowiki>.d-apps   IN    A     192.168.17.252
 
<nowiki>;</nowiki> CNAME
 
www       IN   CNAME  gw.cless.pro.
 
---
 
// включаем файл в конфиг bind
 
nano /etc//named.rfc1912.zones
 
...
 
zone "cless.pro" {
 
   type master;
 
   file "db.cless.pro";
 
   notify no;
 
   allow-transfer { none; };
 
   allow-update { none; };
 
   allow-query { 127.0.0.1; 192.168.17.0/24; };
 
...
 
// Сохраняем конфиг и перезапускаем сервис:
 
systemctl restart named


Пробуем отрезолвить какой-нибудь host из локалки:
Пробуем отрезолвить какой-нибудь host из локалки:


dig @127.0.0.1 ns1.cless.pro
<code>dig @127.0.0.1 ns1.cless.pro</code>
 
<nowiki>;</nowiki> <<>> DiG 9.9.5-9+deb8u10-Debian <<>> @127.0.0.1 ns1.cless.pro
<nowiki>;</nowiki> <<>> DiG 9.9.5-9+deb8u10-Debian <<>> @127.0.0.1 ns1.cless.pro
<nowiki>;</nowiki> (1 server found)
 
<nowiki>;;</nowiki> global options<nowiki>:</nowiki> +cmd
<nowiki>;</nowiki> (1 server found)
<nowiki>;;</nowiki> Got answer<nowiki>:</nowiki>
 
<nowiki>;;</nowiki> ->>HEADER<<- opcode<nowiki>:</nowiki> QUERY, status: NOERROR, id: 9116
<nowiki>;;</nowiki> global options<nowiki>:</nowiki> +cmd
<nowiki>;;</nowiki> flags<nowiki>:</nowiki> qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
 
<nowiki>;;</nowiki> OPT PSEUDOSECTION<nowiki>:</nowiki>
<nowiki>;;</nowiki> Got answer<nowiki>:</nowiki>
<nowiki>;</nowiki> EDNS<nowiki>:</nowiki> version: 0, flags:; udp: 4096
 
<nowiki>;;</nowiki> QUESTION SECTION<nowiki>:</nowiki>
<nowiki>;;</nowiki> ->>HEADER<<- opcode<nowiki>:</nowiki> QUERY, status: NOERROR, id: 9116
<nowiki>;</nowiki>ns1.cless.pro.                 IN      A
 
<nowiki>;;</nowiki> ANSWER SECTION<nowiki>:</nowiki>
<nowiki>;;</nowiki> flags<nowiki>:</nowiki> qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
ns1.cless.pro.          3600    IN      A       192.168.111.249
 
<nowiki>;;</nowiki> AUTHORITY SECTION<nowiki>:</nowiki>
<nowiki>;;</nowiki> OPT PSEUDOSECTION<nowiki>:</nowiki>
cless.pro.              3600    IN      NS      ns1.cless.pro.
 
<nowiki>;;</nowiki> Query time<nowiki>:</nowiki> 0 msec
<nowiki>;</nowiki> EDNS<nowiki>:</nowiki> version: 0, flags:; udp: 4096
<nowiki>;;</nowiki> SERVER<nowiki>:</nowiki> 127.0.0.1#53(127.0.0.1)
 
<nowiki>;;</nowiki> WHEN<nowiki>:</nowiki> Sun Apr 16 20:18:31 MSK 2017
<nowiki>;;</nowiki> QUESTION SECTION<nowiki>:</nowiki>
<nowiki>;;</nowiki> MSG SIZE  rcvd<nowiki>:</nowiki> 72
 
<nowiki>;</nowiki>ns1.cless.pro.                 IN      A
 
<nowiki>;;</nowiki> ANSWER SECTION<nowiki>:</nowiki>
 
ns1.cless.pro.          3600    IN      A       192.168.111.249
 
<nowiki>;;</nowiki> AUTHORITY SECTION<nowiki>:</nowiki>
 
cless.pro.              3600    IN      NS      ns1.cless.pro.
 
<nowiki>;;</nowiki> Query time<nowiki>:</nowiki> 0 msec
 
<nowiki>;;</nowiki> SERVER<nowiki>:</nowiki> 127.0.0.1#53(127.0.0.1)
 
<nowiki>;;</nowiki> WHEN<nowiki>:</nowiki> Sun Apr 16 20:18:31 MSK 2017
 
<nowiki>;;</nowiki> MSG SIZE  rcvd<nowiki>:</nowiki> 72
 
Как видите, резолвится отлично!
Как видите, резолвится отлично!
[[Категория:BIND]]
__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__

Текущая версия на 10:32, 9 сентября 2023

Установка

yum install bind bind-utils

systemctl enable named

Кэширующий DNS сервер

nano /etc/named.conf

добавляем DNS сервера нашего провайдера.

также для подстраховки можно добавить после DNS-ов провайдера еще и публичные DNS-ы google.

Всё это вписывается в параметр forwarders Также обратите внимание на параметр listen-on — он определяет на каких интерфейсам будет запущен bind.

Для кэширующего DNS тут нужно перечислить локальный и все внутренние интерфейсы.

Внешние интерфейсы сюда вписывать не стоит, мы же не хотим чтобы весь Интернет имел возможность через наш DNS резолвить адреса ??

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

options {
   forwarders {
              193.34.12.2; 8.8.8.8;
       };
   auth-nxdomain no;    # conform to RFC1035    
   listen-on port 53 { 127.0.0.1; 192.168.17.252; };
   listen-on-v6 port 53 { ::1; };
   directory     "/var/named";
   dump-file     "/var/named/data/cache_dump.db";
   statistics-file "/var/named/data/named_stats.txt";
   memstatistics-file "/var/named/data/named_mem_stats.txt";
   allow-query     { localhost; };
   /*
    - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
    - If you are building a RECURSIVE (caching) DNS server, you need to enable
      recursion.
    - If your recursive DNS server has a public IP address, you MUST enable access
      control to limit queries to your legitimate users. Failing to do so will
      cause your server to become part of large scale DNS amplification
      attacks. Implementing BCP38 within your network would greatly
      reduce such attack surface
   */
   recursion yes;
   dnssec-enable yes;
   dnssec-validation yes;
   /* Path to ISC DLV key */
   bindkeys-file "/etc/named.iscdlv.key";
   managed-keys-directory "/var/named/dynamic";
   pid-file "/run/named/named.pid";
   session-keyfile "/run/named/session.key";
};
logging {
       channel default_debug {
               file "data/named.run";
               severity dynamic;
       };
};
zone "." IN {
   type hint;
   file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

systemctl restart named

В итоге мы получаем кэширующий DNS сервер. Убедимся в этом с помощью утилиты dig:

dig @127.0.0.1 bbc.com

; <<>> DiG 9.9.3-2+deb8u3-Debian <<>> @127.0.0.1 bbc.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43628
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 13, ADDITIONAL: 16
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;bbc.com.           IN  A
;; ANSWER SECTION:
bbc.com.        9   IN  A   212.58.246.104
bbc.com.        9   IN  A   212.58.244.18
bbc.com.        9   IN  A   212.58.244.20
bbc.com.        9   IN  A   212.58.246.103
;; AUTHORITY SECTION:
com.            10178   IN  NS  i.gtld-servers.net.
............

Ответ мы получили, значит все работает как надо.

Настройки DHCP-сервера уже содержит данный DNS сервер как основной и единственный для клиентов локальной сети.

Если же вы по каким-то причинам не хотите настраивать себе DHCP сервер,

Не забудьте вручную на данном сервере и на компах локальной сети сменить DNS сервера в конфиге /etc/resolv.conf.

Теперь он может выглядеть следующим образом:

cat /etc/resolv.conf

nameserver 127.0.0.1

Внутренние зоны

Создаем файл для нашей зоны

nano /etc/named/db.cless.pro

$TTL 3600 ; 1 hour default TTL
cless.pro.    IN    SOA    ns1.cless.pro. admin.cless.pro. (
                             2015042009 ; Serial
                             8H ; Refresh
                             1H ; Retry
                             1W ; Expire
                             1D ) ; minimum, seconds

; DNS Servers
         IN    NS    ns1.cless.pro.

; MX Records
;;        IN    MX 10 mail.cless.pro.
; HOST A
;cless.pro. IN    A     192.168.111.252
ns1       IN    A     192.168.17.252
gw        IN    A     192.168.17.8
d-apps     IN    A     192.168.17.252
*.d-apps   IN    A     192.168.17.252
; CNAME
www       IN   CNAME  gw.cless.pro.

включаем файл в конфиг bind

nano /etc//named.rfc1912.zones

...
zone "cless.pro" {
   type master;
   file "db.cless.pro";
   notify no;
   allow-transfer { none; };
   allow-update { none; };
   allow-query { 127.0.0.1; 192.168.17.0/24; };
...

Сохраняем конфиг и перезапускаем сервис:

systemctl restart named

Пробуем отрезолвить какой-нибудь host из локалки:

dig @127.0.0.1 ns1.cless.pro

; <<>> DiG 9.9.5-9+deb8u10-Debian <<>> @127.0.0.1 ns1.cless.pro
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9116
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ns1.cless.pro.                 IN      A
;; ANSWER SECTION:
ns1.cless.pro.          3600    IN      A       192.168.111.249
;; AUTHORITY SECTION:
cless.pro.              3600    IN      NS      ns1.cless.pro.
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Apr 16 20:18:31 MSK 2017
;; MSG SIZE  rcvd: 72

Как видите, резолвится отлично!