Како да го конфигурирате BIND како приватен мрежен DNS-сервер на Ubuntu 22.04


Вовед

Важен дел од управувањето со конфигурацијата и инфраструктурата на серверот вклучува одржување на начин да се пронајдат мрежни интерфејси и IP адреси по име. Еден начин да го направите ова е да поставите соодветен систем за име на домен (DNS). Користењето на целосно квалификувани имиња на домени (FQDN), наместо IP адреси, за одредување мрежни адреси ја оптимизира конфигурацијата на услугите и апликациите и ја зголемува одржливоста на конфигурациските датотеки. Поставувањето сопствен DNS за вашата приватна мрежа е одличен начин за подобрување на управувањето со вашите сервери.

Во ова упатство, ќе поставите внатрешен DNS сервер користејќи два Ubuntu 22.04 сервери. Ќе го користите BIND софтверот на серверот за имиња (BIND9) за да ги решите приватните имиња на домаќини и приватните IP адреси. Ова обезбедува централен начин за управување со вашите внатрешни имиња на домаќини и приватни IP адреси, што е неопходно кога вашата околина се проширува на повеќе од неколку хостови.

Предуслови

За да го завршите ова упатство, ќе ви треба следната инфраструктура. Погрижете се да го креирате секој сервер во истиот центар за податоци што е овозможена приватна мрежа:

  • Свеж Ubuntu 22.04 сервер кој служи како примарен DNS сервер, ns1.
  • (Препорачано) Втор Ubuntu 22.04 сервер кој служи како секундарен DNS сервер, ns2.
  • Најмалку еден дополнителен сервер. Овој водич претпоставува дека имате два дополнителни сервери, кои ќе се нарекуваат клиентски сервери. Овие клиентски сервери мора да се креираат во истиот центар за податоци каде што се наоѓаат вашите DNS сервери.

На секој од овие сервери, конфигурирајте административен корисник sudo и поставете заштитен ѕид следејќи го нашиот првичен водич за поставување на серверот Ubuntu 22.04.

Ако не сте запознаени со концептите на DNS, ви препорачуваме да ги прочитате барем првите три дела од нашиот Вовед во управувањето со DNS

На DigitalOcean, сите нови создадени капки стандардно се ставаат во виртуелен приватен облак (VPC). Проверете ја нашата документација за производот VPC за да дознаете повеќе.

Пример инфраструктура и цели

За целите на овој напис, ќе го претпоставиме следново:

  • Имате два сервери кои ќе бидат назначени како ваши сервери за DNS имиња. Овој водич ќе ги нарекува ns1 и ns2.
  • Имате два дополнителни клиентски сервери кои ќе ја користат DNS инфраструктурата што ја креирате, наведени како host1 и host2 во ова упатство. Можете да додадете онолку сервери за клиенти колку што сакате.
  • Сите овие сервери постојат во истиот центар за податоци. Ова упатство претпоставува дека овој центар за податоци се нарекува nyc3.
  • Сите овие сервери имаат овозможена приватна мрежа и се на подмрежата 10.128.0.0/16 (најверојатно ќе треба да го прилагодите ова за вашите сервери). li>
  • Сите сервери се поврзани со проект што работи на example.com. Ова упатство прикажува како да поставите внатрешен, приватен DNS систем, за да можете да користите кое било име на домен што сакате наместо example.com. DNS серверите секогаш ќе се обидуваат прво да ги насочуваат барањата внатрешно, што значи дека нема да се обидат да стигнат до дадениот домен на јавниот интернет. Сепак, користењето на доменот што го поседувате може да помогне да се избегнат конфликти со јавно рутирачки домени.

Имајќи ги предвид овие претпоставки, примерите во ова упатство ќе користат шема за именување базирана околу поддоменот nyc3.example.com за да се однесуваат на примерот на приватната подмрежа или зона. Затоа, приватното целосно квалификувано име на домен (FQDN) на host1 ќе биде host1.nyc3.example.com. Следната табела ги содржи релевантните детали користени во примерите низ ова упатство:

Host Role Private FQDN Private IP Address
ns1 Primary DNS Server ns1.nyc3.example.com 10.128.10.11
ns2 Secondary DNS Server ns2.nyc3.example.com 10.128.20.12
host1 Generic Host 1 host1.nyc3.example.com 10.128.100.101
host2 Generic Host 2 host2.nyc3.example.com 10.128.200.102
 

Забелешка: Вашето поставување ќе биде различно, но имињата на примерите и IP адресите ќе се користат за да се демонстрира како да се конфигурира DNS-сервер за да се обезбеди функционален внатрешен DNS. Треба да можете да го прилагодите ова поставување на вашата сопствена околина со замена на имињата на домаќините и приватните IP адреси со свои. Не е неопходно да се користи името на регионот на центарот за податоци во вашата шема за именување, но ние го користиме овде за да означиме дека овие хостови припаѓаат на приватната мрежа на одреден центар за податоци. Ако користите сервери во повеќе центри за податоци, можете да поставите внатрешен DNS во секој соодветен центар за податоци.

До крајот на ова упатство, ќе имате примарен DNS-сервер, ns1, и по желба секундарен DNS-сервер, ns2, кој ќе служи како резервна копија.

Додека го следите ова упатство, ќе има моменти кога мора да извршите одредени команди на одреден сервер во ова поставување. Сите наредби што мора да се извршуваат на ns1 ќе имаат сина позадина, вака:

Исто така, сите команди што мора да се извршуваат на ns2 ќе имаат црвена позадина:

И сите команди што мора да се извршуваат на еден од вашите клиентски сервери ќе имаат зелена позадина:

И сите команди што мора да се извршуваат на повеќе сервери ќе имаат стандардна позадина на морнарицата:

И на крај, имајте предвид дека секогаш кога блокот на команда или код содржи текст што е означен вака, тоа значи дека текстот е важен. Овој тип на истакнување ќе се користи во текот на овој водич за означување на детали што треба да се заменат со ваши сопствени поставки или дека означениот текст мора да се измени или додаде во конфигурациска датотека. На пример, ако примерот содржи нешто како host1.nyc3.example.com, заменете го со FQDN на вашиот сопствен сервер.

Ајде да започнеме со инсталирање BIND и на примарниот и на секундарниот DNS-сервер, ns1 и ns2.

Чекор 1 - Инсталирање BIND на DNS сервери

На двата DNS сервери, ns1 и ns2, ажурирајте го кешот на пакетот apt со внесување:

  1. sudo apt update

Потоа инсталирајте BIND на секоја машина:

  1. sudo apt install bind9 bind9utils bind9-doc

Приватното вмрежување на DigitalOcean користи исклучиво IPv4. Ако ова е случај за вас, поставете BIND на режим IPv4. На двата сервери, уредете ја стандардната датотека за поставки named користејќи го претпочитаниот уредувач на текст. Следниот пример користи nano:

  1. sudo nano /etc/default/named

Додајте -4 на крајот од параметарот OPTIONS:

. . .
OPTIONS="-u bind -4"

Зачувајте ја и затворете ја датотеката кога ќе завршите. Ако сте користеле nano за уредување на датотеката, можете да го сторите тоа со притискање на CTRL + X, Y, потоа ENTER.

Рестартирајте го BIND за да ги имплементирате промените:

  1. sudo systemctl restart bind9

Сега кога BIND е инсталиран, ајде да го конфигурираме примарниот DNS-сервер.

Чекор 2 - Конфигурирање на примарниот DNS сервер

Конфигурацијата на BIND се состои од повеќе датотеки кои се вклучени од главната конфигурациска датотека, named.conf. Овие имиња на датотеки започнуваат со named бидејќи тоа е името на процесот што го извршува BIND (со named кратенка за \name daemon” , како во „Демон за име на домен“). Ќе започнеме со конфигурирање на датотеката named.conf.options.

Конфигурирање на датотеката со опции

На ns1, отворете ја датотеката named.conf.options за уредување:

  1. sudo nano /etc/bind/named.conf.options

Над постоечкиот блок опции, креирајте нов блок ACL (листа за контрола на пристап) наречен доверлив. Ова е местото каде што ќе дефинирате листа на клиенти од кои ќе дозволите рекурзивни DNS барања (т.е. вашите сервери кои се во истиот центар за податоци како ns1). Додајте ги следните редови за да додадете ns1, ns2, host1 и host2 на вашата листа на доверливи клиенти, бидејќи не заборавајте да ги замените примерите на приватни IP адреси со оние на вашите сопствени сервери:

acl "trusted" {
        10.128.10.11;    # ns1 
        10.128.20.12;    # ns2
        10.128.100.101;  # host1
        10.128.200.102;  # host2
};

options {

        . . .

Сега кога ја имате вашата листа на доверливи DNS клиенти, можете да го уредите блокот опции. Ова е моментално почеток на блокот:

        . . .
};

options {
        directory "/var/cache/bind";
        . . .
}

Под директивата директориум, додајте ги означените конфигурациски линии (и заменете ги во соодветната ns1 приватна IP адреса):

        . . .

};

options {
        directory "/var/cache/bind";
        
        recursion yes;                 # enables recursive queries
        allow-recursion { trusted; };  # allows recursive queries from "trusted" clients
        listen-on { 10.128.10.11; };   # ns1 private IP address - listen on private network only
        allow-transfer { none; };      # disable zone transfers by default

        forwarders {
                8.8.8.8;
                8.8.4.4;
        };

        . . .
};

Забележете го блокот forwarders, кој вклучува две IP адреси: 8.8.8.8 и 8.8.4.4. Овој блок ги дефинира препраќачите, специјален механизам што BIND го користи за да го намали сообраќајот преку врски до надворешни сервери за имиња. BIND може да користи и пренасочувачи за да дозволи барања од сервери кои немаат директен пристап до интернет. Ова може да помогне да се направат одговорите на овие прашања побрзи со намалување на оптоварувањето на локалната мрежа.

Двете IP адреси во овој блок ги претставуваат јавните резолутори на DNS на Google, но IP адресата на кој било јавен рекурзивен сервер за имиња ќе работи овде. На пример, наместо тоа, можете да ја користите IP адресата на DNS-серверот на Cloudflare (1.1.1.1).

Кога ќе завршите, зачувајте ја и затворете ја датотеката named.conf.options. Горенаведената конфигурација одредува дека само вашите сопствени сервери (оние доверливите) ќе можат да го бараат вашиот DNS сервер за надворешни домени.

Следно, ќе ги одредите вашите DNS зони со конфигурирање на датотеката named.conf.local.

Конфигурирање на локалната датотека

На ns1, отворете ја датотеката named.conf.local за уредување:

  1. sudo nano /etc/bind/named.conf.local

Освен неколку коментари, датотеката ќе биде празна. Овде, ќе ги наведете вашите зони напред и назад. DNS зоните означуваат специфичен опсег за управување и дефинирање на записите на DNS. Бидејќи примерите на домени на овој водич ќе бидат сите во поддоменот nyc3.example.com, ние ќе го користиме како наша напредна зона. Бидејќи приватните IP-адреси на нашите примери на сервери се секоја во IP просторот 10.128.0.0/16, следниов пример ќе постави обратна зона за да можеме да дефинираме обратно пребарување во тој опсег.

Додајте ја препратната зона со следните линии, заменувајќи го името на зоната со вашата и приватната IP адреса на секундарниот DNS сервер во директивата дозволи пренос:

. . .

zone "nyc3.example.com" {
    type primary;
    file "/etc/bind/zones/db.nyc3.example.com"; # zone file path
    allow-transfer { 10.128.20.12; };           # ns2 private IP address - secondary
};

Претпоставувајќи дека нашата приватна подмрежа е 10.128.0.0/16, додадете ја обратната зона со со следните редови (забележете дека името на нашата обратна зона започнува со 128.10 што е октетниот пресврт на 10.128):

    . . .
};

zone "128.10.in-addr.arpa" {
    type primary;
    file "/etc/bind/zones/db.10.128";  # 10.128.0.0/16 subnet
    allow-transfer { 10.128.20.12; };  # ns2 private IP address - secondary
};

Ако вашите сервери опфаќаат повеќе приватни подмрежи, но се во истиот центар за податоци, погрижете се да наведете дополнителна зона и датотека со зона за секоја посебна подмрежа. Кога ќе завршите со додавање на сите посакувани зони, зачувајте ја и затворете ја датотеката named.conf.local.

Сега кога вашите зони се наведени во BIND, треба да ги креирате соодветните датотеки за напред и назад зона.

Креирање на датотеката Forward Zone

Датотеката за напредна зона е местото каде што ги дефинирате записите на DNS за пребарување на DNS напред. Односно, кога DNS ќе добие барање за име, на пример, host1.nyc3.example.com, тој ќе погледне во датотеката на напредната зона за да го реши соодветниот приватен на домаќинот1 IP адреса.

Направете го директориумот каде што ќе се наоѓаат вашите датотеки во зоната. Според конфигурацијата named.conf.local, таа локација треба да биде /etc/bind/zones:

  1. sudo mkdir /etc/bind/zones

Ќе го засноваме нашиот пример за датотеката за напредна зона на примерок од датотеката за зона db.local. Копирајте го на соодветната локација со следните команди:

  1. sudo cp /etc/bind/db.local /etc/bind/zones/db.nyc3.example.com

Сега уредете ја датотеката со напредната зона:

  1. sudo nano /etc/bind/zones/db.nyc3.example.com

Првично, ќе содржи содржина како што следува:

$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.      ; delete this line
@       IN      A       127.0.0.1       ; delete this line
@       IN      AAAA    ::1             ; delete this line

Прво, ќе сакате да го уредите записот SOA. Заменете го првиот localhost со FQDN на ns1, а потоа заменете го root.localhost со admin.nyc3.example.com . Секогаш кога уредувате датотека со зона, треба да ја зголемите вредноста Serial пред да го рестартирате процесот именуван. Еве, зголемете го на 3:

. . .
;
$TTL    604800
@       IN      SOA     ns1.nyc3.example.com. admin.nyc3.example.com. (
                              3         ; Serial

                              . . .

Следно, избришете ги трите записи на крајот од датотеката (по записот SOA). Ако не сте сигурни кои линии да ги избришете, тие се означени со коментари кои читаат избриши ја оваа линија во претходниот пример.

На крајот од датотеката, додајте ги записите на вашиот сервер за имиња со следните редови (заменете ги имињата со вашите). Забележете дека втората колона одредува дека ова се записи NS:

. . .

; name servers - NS records
    IN      NS      ns1.nyc3.example.com.
    IN      NS      ns2.nyc3.example.com.

Сега, додајте ги записите А за вашите хостови кои припаѓаат во оваа зона. Ова го вклучува секој сервер чие име сакате да заврши со .nyc3.example.com (заменете ги имињата и приватните IP адреси). Користејќи ги нашите примери имиња и приватни IP адреси, ќе додадеме записи А за ns1, ns2, host1 и host2 како така:

. . .

; name servers - A records
ns1.nyc3.example.com.          IN      A       10.128.10.11
ns2.nyc3.example.com.          IN      A       10.128.20.12

; 10.128.0.0/16 - A records
host1.nyc3.example.com.        IN      A      10.128.100.101
host2.nyc3.example.com.        IN      A      10.128.200.102

Нашиот последен пример датотека за напредна зона ќе ја содржи следната содржина:

$TTL    604800
@       IN      SOA     ns1.nyc3.example.com. admin.nyc3.example.com. (
                  3     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
; name servers - NS records
     IN      NS      ns1.nyc3.example.com.
     IN      NS      ns2.nyc3.example.com.

; name servers - A records
ns1.nyc3.example.com.          IN      A       10.128.10.11
ns2.nyc3.example.com.          IN      A       10.128.20.12

; 10.128.0.0/16 - A records
host1.nyc3.example.com.        IN      A      10.128.100.101
host2.nyc3.example.com.        IN      A      10.128.200.102

Зачувајте ја и затворете ја датотеката db.nyc3.example.com.

Сега да преминеме на датотеката(ите) на обратна зона.

Креирање на датотека(и) за обратна зона

Датотеките за обратна зона се местата каде што ги дефинирате записите на DNS PTR за обратно пребарување на DNS. Односно, кога DNS ќе добие барање по IP адреса, 10.128.100.101 на пример, ќе погледне во датотеката(ите) на обратната зона за да го реши соодветниот FQDN, host1.nyc3. пример.com во овој случај.

На ns1, за секоја обратна зона наведена во датотеката named.conf.local, креирајте датотека со обратна зона. Нашиот пример датотека(и) за обратна зона ќе го засноваме на примерок од датотеката за зона db.127. BIND ја користи оваа датотека за складирање на информации за локалниот интерфејс за враќање на јамката; 127 е првиот октет од IP адресата што го претставува локален хост (127.0.0.1). Копирајте ја оваа датотека на соодветната локација со следните команди (заменувајќи го името на дестинациската датотека за да одговара на вашата дефиниција за обратна зона):

  1. sudo cp /etc/bind/db.127 /etc/bind/zones/db.10.128

Уредете ја датотеката со обратна зона што одговара на обратната зона(ите) дефинирани во named.conf.local:

  1. sudo nano /etc/bind/zones/db.10.128

Првично, датотеката ќе содржи содржина како што следува:

$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.      ; delete this line
1.0.0   IN      PTR     localhost.      ; delete this line

На ист начин како и датотеката за напредна зона, ќе сакате да го уредите записот SOA и да ја зголемите сериската вредност:

@       IN      SOA     ns1.nyc3.example.com. admin.nyc3.example.com. (
                              3         ; Serial

                              . . .

Сега избришете ги двата записи на крајот од датотеката (по записот SOA). Ако не сте сигурни кои линии да ги избришете, тие се означени со коментар избриши ја оваа линија во претходниот пример.

На крајот од датотеката, додајте ги записите на вашиот сервер за имиња со следните редови (заменете ги имињата со вашите). Забележете дека втората колона одредува дека ова се записи NS:

. . .

; name servers - NS records
      IN      NS      ns1.nyc3.example.com.
      IN      NS      ns2.nyc3.example.com.

Потоа додадете записи PTR за сите ваши сервери чии IP адреси се на подмрежата на зоната датотека што ја уредувате. Во нашиот пример, ова ги вклучува сите наши хостови бидејќи сите тие се на подмрежата 10.128.0.0/16. Имајте предвид дека првата колона се состои од последните два октети од приватните IP адреси на вашите сервери по обратен редослед. Не заборавајте да ги замените имињата и приватните IP адреси за да одговараат на вашите сервери:

. . .

; PTR Records
11.10   IN      PTR     ns1.nyc3.example.com.    ; 10.128.10.11
12.20   IN      PTR     ns2.nyc3.example.com.    ; 10.128.20.12
101.100 IN      PTR     host1.nyc3.example.com.  ; 10.128.100.101
102.200 IN      PTR     host2.nyc3.example.com.  ; 10.128.200.102

Вашиот последен пример датотека со обратна зона ќе биде слична на следново:

$TTL    604800
@       IN      SOA     nyc3.example.com. admin.nyc3.example.com. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
; name servers
      IN      NS      ns1.nyc3.example.com.
      IN      NS      ns2.nyc3.example.com.

; PTR Records
11.10   IN      PTR     ns1.nyc3.example.com.    ; 10.128.10.11
12.20   IN      PTR     ns2.nyc3.example.com.    ; 10.128.20.12
101.100 IN      PTR     host1.nyc3.example.com.  ; 10.128.100.101
102.200 IN      PTR     host2.nyc3.example.com.  ; 10.128.200.102

Зачувајте ја и затворете ја датотеката со обратна зона. Ако треба да додадете повеќе датотеки со обратна зона, повторете го овој дел.

Завршивте со уредување на вашите датотеки, па потоа можете да ги проверите вашите датотеки за грешки.

Проверка на синтаксата за конфигурација BIND

Извршете ја следнава команда за да ја проверите синтаксата на датотеките named.conf*:

  1. sudo named-checkconf

Ако вашите именувани конфигурациски датотеки немаат синтаксички грешки, нема да има никакви пораки за грешка и ќе се вратите на барањето за школка. Ако има проблеми со вашите конфигурациски датотеки, прегледајте ја пораката за грешка и делот Конфигурирај примарен DNS-сервер, а потоа обидете се повторно со named-checkconf.

Командата named-checkzone може да се користи за проверка на исправноста на датотеките во зоната. Нејзиниот прв аргумент го одредува името на зоната, а вториот аргумент ја одредува соодветната датотека на зоната, кои се и двете дефинирани во named.conf.local.

На пример, за да ја проверите конфигурацијата на зоната за напред nyc3.example.com, извршете ја следнава команда (променете ги имињата за да одговараат на вашата зона и датотека за напред):

  1. sudo named-checkzone nyc3.example.com /etc/bind/zones/db.nyc3.example.com
Output
zone nyc3.example.com/IN: loaded serial 3 OK

И за да ја проверите конфигурацијата на обратната зона 128.10.in-addr.arpa, извршете ја следнава команда (променете ги броевите за да одговараат на вашата обратна зона и датотека):

  1. sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128

Кога сите ваши датотеки со конфигурација и зона немаат грешки во нив, ќе бидете подготвени да ја рестартирате услугата BIND.

Се рестартира BIND

Рестартирајте го BIND:

  1. sudo systemctl restart bind9

Ако го имате конфигурирано заштитниот ѕид UFW, отворете го пристапот до BIND со внесување:

  1. sudo ufw allow Bind9

Вашиот примарен DNS-сервер сега е поставен и е подготвен да одговори на барањата за DNS. Ајде да продолжиме со конфигурирање на секундарниот DNS-сервер.

Чекор 3 - Конфигурирање на секундарниот DNS-сервер

Во повеќето средини, добра идеја е да поставите секундарен DNS сервер кој ќе одговори на барањата ако примарниот стане недостапен. За среќа, конфигурирањето на секундарниот DNS-сервер е многу помалку комплицирано од поставувањето на примарниот.

На ns2, уредете ја датотеката named.conf.options:

  1. sudo nano /etc/bind/named.conf.options

На врвот на датотеката, додајте ACL со приватните IP адреси на сите ваши доверливи сервери:

acl "trusted" {
        10.128.10.11;   # ns1
        10.128.20.12;   # ns2 
        10.128.100.101;  # host1
        10.128.200.102;  # host2
};

options {

        . . .

Под директивата директориум, додајте ги следните редови:

    . . .

        recursion yes;
        allow-recursion { trusted; };
        listen-on { 10.128.20.12; };      # ns2 private IP address
        allow-transfer { none; };          # disable zone transfers by default

        forwarders {
                8.8.8.8;
                8.8.4.4;
        };

    . . .

Зачувајте ја и затворете ја датотеката named.conf.options. Оваа датотека треба да биде идентична со датотеката named.conf.options на ns1, освен што треба да биде конфигурирана да слуша на приватната IP адреса на ns2 .

Сега уредете ја датотеката named.conf.local:

  1. sudo nano /etc/bind/named.conf.local

Дефинирајте секундарни зони кои одговараат на примарните зони на примарниот DNS сервер. Имајте предвид дека типот е секундарен, датотеката не содржи патека и има директива primaries која треба да се постави на приватната IP адреса на примарниот DNS сервер. Ако сте дефинирале повеќе обратни зони во примарниот DNS сервер, погрижете се да ги додадете сите овде:

zone "nyc3.example.com" {
    type secondary;
    file "db.nyc3.example.com";
    primaries { 10.128.10.11; };  # ns1 private IP
};

zone "128.10.in-addr.arpa" {
    type secondary;
    file "db.10.128";
    primaries { 10.128.10.11; };  # ns1 private IP
};

Сега зачувајте ја и затворете ја датотеката named.conf.local.

Извршете ја следнава команда за да ја проверите валидноста на вашите конфигурациски датотеки:

  1. sudo named-checkconf

Ако оваа команда не врати никакви грешки, рестартирајте го BIND:

  1. sudo systemctl restart bind9

Потоа дозволете DNS врски со серверот со менување на правилата за заштитен ѕид на UFW:

  1. sudo ufw allow Bind9

Со тоа, сега имате примарни и секундарни DNS сервери за резолуција на името на приватната мрежа и IP адресата. Сега мора да ги конфигурирате вашите клиентски сервери да ги користат вашите приватни DNS сервери.

Чекор 4 - Конфигурирање на клиенти за DNS

Пред сите ваши сервери во доверливиот ACL да можат да ги побараат вашите DNS сервери, мора да го конфигурирате секој од нив да користи ns1 и ns2 како сервери за имиња .

Претпоставувајќи дека вашите клиентски сервери работат со Ubuntu, ќе треба да откриете кој уред е поврзан со вашата приватна мрежа. Можете да го направите ова со барање на приватната подмрежа со командата ip адреса. Извршете ја следнава команда на секоја од вашите клиентски машини, заменувајќи ја означената подмрежа со ваша:

  1. ip address show to 10.128.0.0/16
Output
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 altname enp0s4 altname ens4 inet 10.128.100.101/16 brd 10.128.255.255 scope global eth1 valid_lft forever preferred_lft forever

Во овој пример, приватниот интерфејс е eth1. Примерите низ овој дел ќе се однесуваат на eth1 како приватен интерфејс, но треба да ги промените овие примери за да ги одразуваат приватните интерфејси на вашите сопствени сервери.

На Ubuntu 22.04, вмрежувањето е конфигурирано со Netplan, апстракција што ви овозможува да напишете стандардизирана мрежна конфигурација и да ја примените на компатибилен мрежен софтвер за заднина. За да го конфигурирате DNS, треба да напишете конфигурациска датотека Netplan.

Направете нова датотека во /etc/netplan наречена 00-private-nameservers.yaml:

  1. sudo nano /etc/netplan/00-private-nameservers.yaml

Внатре, додадете ја следната содржина. Ќе треба да го измените интерфејсот на приватната мрежа, адресите на вашите ns1 и ns2 DNS сервери и зоната DNS:

Забелешка: Netplan го користи форматот за серијализација на податоци YAML за своите конфигурациски датотеки. Бидејќи YAML користи вовлекување и празно место за да ја дефинира својата структура на податоци, проверете дали вашата дефиниција користи доследна вовлекување за да избегне грешки.

Можете да ги решите проблемите со вашата YAML-датотека користејќи YAML-проверувач како YAML Lint.

network:
    version: 2
    ethernets:
        eth1:                                    # Private network interface
            nameservers:
                addresses:
                - 10.128.10.11                # Private IP for ns1
                - 10.132.20.12                # Private IP for ns2
                search: [ nyc3.example.com ]    # DNS zone

Зачувајте ја и затворете ја датотеката кога ќе завршите.

Следно, кажете му на Netplan да се обиде да ја користи новата конфигурациска датотека со користење на netplan try. Ако има проблеми што предизвикуваат губење на мрежата, Netplan автоматски ќе ги врати промените по истекот на времето:

  1. sudo netplan try
Output
Warning: Stopping systemd-networkd.service, but it can still be activated by: systemd-networkd.socket Do you want to keep these settings? Press ENTER before the timeout to accept the new configuration Changes will revert in 120 seconds

Ако одбројувањето се ажурира правилно на дното, новата конфигурација е барем доволно функционална за да не ја прекине вашата SSH врска. Притиснете ENTER за да ја прифатите новата конфигурација.

Сега, проверете дали системот за решавање на DNS за да одредите дали вашата DNS конфигурација е применета:

  1. sudo resolvectl status

Скролувајте надолу додека не го најдете делот за вашиот приватен мрежен интерфејс. Прво треба да се наведат приватните IP адреси за вашите DNS сервери, а потоа и некои резервни вредности. Вашиот домен треба да биде наведен по DNS домен:

Output
. . . Link 3 (eth1) Current Scopes: DNS Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Current DNS Server: 67.207.67.3 DNS Servers: 10.128.10.11 10.128.20.12 67.207.67.3 67.207.67.2 DNS Domain: nyc3.example.com

Вашиот Ubuntu клиент сега е конфигуриран да ги користи вашите внатрешни DNS сервери.

Чекор 5 - Тестирање на клиенти

Користете nslookup за да тестирате дали вашите клиенти можат да ги побараат вашите сервери за имиња. Треба да можете да го направите ова на сите клиенти што сте ги конфигурирале и се во доверливиот ACL.

Можете да започнете со пребарување напред.

Пребарување напред

За да извршите пребарување напред за да ја вратите IP адресата на host1.nyc3.example.com, извршете ја следнава команда:

  1. nslookup host1

Барањето host1 се проширува на host1.nyc3.example.com затоа што опцијата пребарување е поставена на вашиот приватен поддомен, а прашањата за DNS ќе се обидат да погледнат на тој поддомен пред да го барате домаќинот на друго место. Претходната команда ќе врати излез како што следува:

Output
Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: Name: host1.nyc3.example.com Address: 10.128.100.101

Следно, можете да проверите обратни пребарувања.

Обратно пребарување

За да го тестирате обратното пребарување, побарајте го DNS-серверот со приватната IP адреса на домаќинот1:

  1. nslookup 10.128.100.101

Ова треба да врати излез како што следува:

Output
11.10.128.10.in-addr.arpa name = host1.nyc3.example.com. Authoritative answers can be found from:

Ако сите имиња и IP-адреси се решат до точните вредности, тоа значи дека вашите зонски датотеки се правилно конфигурирани. Ако добиете неочекувани вредности, не заборавајте да ги прегледате зонските датотеки на вашиот примарен DNS сервер (на пр. db.nyc3.example.com и db.10.128).

Како последен чекор, ова упатство ќе објасни како можете да ги одржувате вашите записи во зоната.

Чекор 6 - Одржување на записи DNS

Сега кога имате работен внатрешен DNS, треба да ги одржувате вашите записи за DNS за тие точно да ја одразуваат околината на вашиот сервер.

Додавање домаќин на DNS

Секогаш кога додавате хост во вашата околина (во истиот центар за податоци), ќе сакате да го додадете во DNS. Еве список на чекори што треба да ги преземете:

Сервер за примарен име

  • Датотека за препраќање зона: додајте запис A за новиот хост, зголемете ја вредноста на Serial
  • Датотека за обратна зона: додадете запис PTR за новиот хост, зголемете ја вредноста на Serial
  • Додајте ја приватната IP адреса на вашиот нов домаќин во доверливиот ACL (named.conf.options)

Тестирајте ги вашите конфигурациски датотеки:

  1. sudo named-checkconf
  2. sudo named-checkzone nyc3.example.com /etc/bind/zones/db.nyc3.example.com
  3. sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128

Потоа повторно вчитајте го BIND:

  1. sudo systemctl reload bind9

Вашиот примарен сервер треба да биде конфигуриран за новиот домаќин сега.

Секундарен сервер за име

  • Додајте ја приватната IP адреса на вашиот нов домаќин во доверливиот ACL (named.conf.options)

Проверете ја синтаксата за конфигурација:

  1. sudo named-checkconf

Потоа повторно вчитајте го BIND:

  1. sudo systemctl reload bind9

Вашиот секундарен сервер сега ќе прифаќа врски од новиот хост.

Конфигурирајте нов хост да го користи вашиот DNS

  • Конфигурирајте го /etc/resolv.conf за да ги користите вашите DNS сервери
  • Тестирајте користејќи nslookup

Отстранување на домаќин од DNS

Ако отстраните хост од вашата околина или сакате само да го извадите од DNS, само отстранете ги сите работи што беа додадени кога го додадовте серверот во DNS (т.е. обратно од претходните чекори).

Заклучок

Сега можете да се повикате на приватните мрежни интерфејси на вашите сервери по име, наместо по IP адреса. Ова го прави конфигурирањето на услугите и апликациите поедноставно бидејќи повеќе не мора да ги запомнувате приватните IP адреси, а датотеките ќе бидат помалку тешки за читање и разбирање. Исто така, сега можете да ги промените вашите конфигурации за да укажуваат на нов сервер на едно место, вашиот примарен DNS сервер, наместо да треба да уредувате различни дистрибуирани конфигурациски датотеки, што го оптимизира одржувањето.

Откако ќе го поставите вашиот внатрешен DNS и вашите конфигурациски датотеки користат приватни FQDN за одредување на мрежните врски, критично е вашите DNS сервери да се одржуваат правилно. Ако и двете станат недостапни, вашите услуги и апликации кои се потпираат на нив ќе престанат да функционираат правилно. Ова е причината зошто се препорачува да го поставите вашиот DNS со најмалку еден секундарен сервер и да одржувате работни резервни копии од сите нив.

Ако сакате да дознаете повеќе за DNS, ве охрабруваме да ја погледнете нашата статија Вовед во терминологијата, компонентите и концептите на DNS.