Како да го конфигурирате BIND како приватен мрежен DNS-сервер на Ubuntu 18.04
Вовед
Важен дел од управувањето со конфигурацијата и инфраструктурата на серверот вклучува одржување на лесен начин за пребарување на мрежните интерфејси и IP адреси по име, со поставување на соодветен систем за име на домен (DNS). Користењето на целосно квалификувани имиња на домени (FQDN), наместо IP адреси, за одредување мрежни адреси ја олеснува конфигурацијата на услугите и апликациите и ја зголемува одржливоста на конфигурациските датотеки. Поставувањето сопствен DNS за вашата приватна мрежа е одличен начин за подобрување на управувањето со вашите сервери.
Во ова упатство, ќе разгледаме како да поставите внатрешен DNS-сервер, користејќи го софтверот за серверот за име BIND (BIND9) на Ubuntu 18.04, кој може да го користат вашите сервери за решавање на приватни имиња на домаќини и приватни IP адреси. Ова обезбедува централен начин за управување со вашите внатрешни имиња на домаќини и приватни IP адреси, што е неопходно кога вашата околина се проширува на повеќе од неколку хостови.
Предуслови
За да го завршите ова упатство, ќе ви треба следната инфраструктура. Создадете го секој сервер во истиот центар за податоци со овозможена приватна мрежа:
- Свеж Ubuntu 18.04 сервер кој служи како примарен DNS сервер, ns1
- (Препорачано) Втор Ubuntu 18.04 сервер кој служи како секундарен DNS сервер, ns2
- Дополнителни сервери во истиот центар за податоци што ќе ги користат вашите DNS сервери
На секој од овие сервери, конфигурирајте административен пристап преку корисник sudo
и заштитен ѕид следејќи го нашиот првичен водич за поставување сервер на Ubuntu 18.04.
Ако не сте запознаени со концептите на DNS, се препорачува да ги прочитате барем првите три дела од нашиот Вовед во управувањето со DNS.
Пример инфраструктура и цели
За целите на овој напис, ќе го претпоставиме следново:
- Имаме два сервери кои ќе бидат назначени како наши сервери за DNS имиња. Ќе ги нарекуваме ns1 и ns2 во ова упатство.
- Имаме два дополнителни клиентски сервери кои ќе ја користат DNS инфраструктурата што ја создаваме. Овие ќе ги наречеме домаќин1 и домаќин2 во ова упатство. Можете да додадете колку што сакате за вашата инфраструктура.
- Сите овие сервери постојат во истиот центар за податоци. Ќе претпоставиме дека ова е податочниот центар nyc3.
- Сите овие сервери имаат овозможена приватна мрежа и се на подмрежата
10.128.0.0/16
(најверојатно ќе треба да го прилагодите ова за вашите сервери). li> - Сите сервери се поврзани со проект што работи на
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, кој ќе служи како резервна копија.
Ајде да започнеме со инсталирање на BIND нашите примарни и секундарни DNS сервери, ns1 и ns2.
Инсталирање BIND на DNS сервери
Забелешка: Текстот што е означен вака е важен! Често ќе се користи за означување на нешто што треба да се замени со вашите сопствени поставки или дека треба да се измени или додаде во конфигурациска датотека. На пример, ако видите нешто како host1.nyc3.example.com
, заменете го со FQDN на вашиот сопствен сервер. Исто така, ако видите host1_private_IP
, заменете ја со приватната IP адреса на вашиот сопствен сервер.
На двата DNS сервери, ns1 и ns2, ажурирајте го кешот на пакетот apt
со внесување:
- sudo apt-get update
Сега инсталирајте BIND:
- sudo apt-get install bind9 bind9utils bind9-doc
Поставување Bind во режим IPv4
Пред да продолжиме, да го поставиме BIND во режим IPv4 бидејќи нашата приватна мрежа користи исклучиво IPv4. На двата сервери, уредете ја стандардната датотека за поставки bind9
користејќи го претпочитаниот уредувач на текст. Следниот пример користи nano
:
- sudo nano /etc/default/bind9
Додајте -4
на крајот од параметарот OPTIONS
. Треба да изгледа вака:
. . .
OPTIONS="-u bind -4"
Зачувајте ја и затворете ја датотеката кога ќе завршите. Ако сте користеле nano
за уредување на датотеката, можете да го сторите тоа со притискање на CTRL + X
, Y
, потоа ENTER
.
Рестартирајте го BIND за да ги имплементирате промените:
- sudo systemctl restart bind9
Сега кога BIND е инсталиран, ајде да го конфигурираме примарниот DNS-сервер.
Конфигурирање на примарниот DNS сервер
Конфигурацијата на BIND се состои од повеќе датотеки, кои се вклучени од главната конфигурациска датотека, named.conf
. Овие имиња на датотеки започнуваат со named
бидејќи тоа е името на процесот што го извршува BIND (со named
скратено за \name daemon”, како во „Демон за име на домен“). Ќе започнеме со конфигурирање на датотеката named.conf.options
.
Конфигурирање на датотеката со опции
На ns1, отворете ја датотеката named.conf.options
за уредување:
- sudo nano /etc/bind/named.conf.options
Над постоечкиот блок опции
, креирајте нов блок ACL (листа за контрола на пристап) наречен доверлив
. Ова е местото каде што ќе дефинираме листа на клиенти од кои ќе дозволиме рекурзивни DNS барања (т.е. вашите сервери кои се во истиот центар за податоци како ns1). Користејќи ги нашите примери на приватни IP адреси, ќе додадеме ns1, ns2, host1 и host2 на нашата листа на доверливи клиенти:
acl "trusted" {
10.128.10.11; # ns1 - can be set to localhost
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 resursive 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;
};
. . .
};
Кога ќе завршите, зачувајте ја и затворете ја датотеката named.conf.options
. Горенаведената конфигурација одредува дека само вашите сопствени сервери (оние доверливите
) ќе можат да го бараат вашиот DNS сервер за надворешни домени.
Следно, ќе ги одредиме нашите DNS зони со конфигурирање на датотеката named.conf.local
.
Конфигурирање на локалната датотека
На ns1, отворете ја датотеката named.conf.local
за уредување:
- sudo nano /etc/bind/named.conf.local
Освен неколку коментари, датотеката треба да биде празна. Овде, ќе ги специфицираме нашите зони напред и назад. DNS зоните означуваат специфичен опсег за управување и дефинирање на записите на DNS. Бидејќи нашите примерни домени ќе бидат сите во поддоменот nyc3.example.com
, ние ќе го користиме како наша напредна зона. Бидејќи приватните IP адреси на нашите сервери се наоѓаат во 10.128.0.0/16
IP просторот, ќе поставиме обратна зона за да можеме да дефинираме обратно пребарување во тој опсег.
Додајте ја препратната зона со следните линии, заменувајќи го името на зоната со вашата и приватната IP адреса на секундарниот DNS сервер во директивата дозволи пренос
:
zone "nyc3.example.com" {
type master;
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 master;
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
:
- sudo mkdir /etc/bind/zones
Ќе ја засноваме нашата датотека со напредна зона на примерок од датотеката за зона db.local
. Копирајте го на соодветната локација со следните команди:
- sudo cp /etc/bind/db.local /etc/bind/zones/db.nyc3.example.com
Сега ајде да ја уредиме нашата датотека со напредна зона:
- 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
. Сега треба да изгледа вака:
@ 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
Зачувајте ја и затворете ја датотеката db.nyc3.example.com
.
Нашиот последен пример датотека за напредна зона изгледа вака:
$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
Сега да преминеме на датотеката(ите) на обратна зона.
Креирање на датотека(и) за обратна зона
Датотеките со обратна зона се местата каде што ги дефинираме записите на DNS PTR за обратно пребарување на DNS. Односно, кога DNS ќе добие барање по IP адреса, 10.128.100.101
на пример, ќе погледне во датотеката(ите) на обратната зона за да го реши соодветниот FQDN, host1.nyc3. пример.com
во овој случај.
На ns1, за секоја обратна зона наведена во датотеката named.conf.local
, креирајте датотека со обратна зона. Ќе ги засноваме нашите датотеки со обратна зона на примерок од датотеката за зона db.127
. Копирајте ја на соодветната локација со следните команди (заменувајќи го името на дестинацијата на датотеката за да одговара на вашата дефиниција за обратна зона):
- sudo cp /etc/bind/db.127 /etc/bind/zones/db.10.128
Уредете ја датотеката со обратна зона што одговара на обратната зона(ите) дефинирани во named.conf.local
:
- 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*
:
- sudo named-checkconf
Ако вашите именувани конфигурациски датотеки немаат синтаксички грешки, ќе се вратите во известувањето за школка и нема да видите пораки за грешка. Ако има проблеми со вашите конфигурациски датотеки, прегледајте ја пораката за грешка и делот Конфигурирај примарен DNS-сервер
, а потоа обидете се повторно со named-checkconf
.
Командата named-checkzone
може да се користи за проверка на исправноста на датотеките во зоната. Нејзиниот прв аргумент го одредува името на зоната, а вториот аргумент ја одредува соодветната датотека на зоната, кои се и двете дефинирани во named.conf.local
.
На пример, за да ја проверите конфигурацијата на зоната за напред nyc3.example.com
, извршете ја следнава команда (променете ги имињата за да одговараат на вашата зона и датотека за напред):
- sudo named-checkzone nyc3.example.com /etc/bind/zones/db.nyc3.example.com
И за да ја проверите конфигурацијата на обратната зона 128.10.in-addr.arpa
, извршете ја следнава команда (променете ги броевите за да одговараат на вашата обратна зона и датотека):
- sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128
Кога сите ваши датотеки со конфигурација и зона немаат грешки во нив, треба да бидете подготвени да ја рестартирате услугата BIND.
Се рестартира BIND
Рестартирајте го BIND:
- sudo systemctl restart bind9
Ако го имате конфигурирано заштитниот ѕид UFW, отворете го пристапот до BIND со внесување:
- sudo ufw allow Bind9
Вашиот примарен DNS-сервер сега е поставен и е подготвен да одговори на барањата за DNS. Ајде да продолжиме со создавање на секундарен DNS-сервер.
Конфигурирање на секундарниот DNS сервер
Во повеќето средини, добра идеја е да поставите секундарен DNS сервер кој ќе одговори на барањата ако примарниот стане недостапен. За среќа, конфигурирањето на секундарниот DNS-сервер е многу помалку комплицирано.
На ns2, уредете ја датотеката named.conf.options
:
- sudo nano /etc/bind/named.conf.options
На врвот на датотеката, додајте ACL со приватните IP адреси на сите ваши доверливи сервери:
acl "trusted" {
10.128.10.11; # ns1
10.128.20.12; # ns2 - can be set to localhost
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
:
- sudo nano /etc/bind/named.conf.local
Дефинирајте slave зони кои одговараат на главните зони на примарниот DNS сервер. Имајте предвид дека типот е slave
, датотеката не содржи патека и има директива master
која треба да се постави на приватната IP адреса на примарниот DNS сервер. Ако сте дефинирале повеќе обратни зони во примарниот DNS сервер, погрижете се да ги додадете сите овде:
zone "nyc3.example.com" {
type slave;
file "db.nyc3.example.com";
masters { 10.128.10.11; }; # ns1 private IP
};
zone "128.10.in-addr.arpa" {
type slave;
file "db.10.128";
masters { 10.128.10.11; }; # ns1 private IP
};
Сега зачувајте ја и затворете ја датотеката named.conf.local
.
Извршете ја следнава команда за да ја проверите валидноста на вашите конфигурациски датотеки:
- sudo named-checkconf
Ако оваа команда не врати никакви грешки, рестартирајте го BIND:
- sudo systemctl restart bind9
Потоа дозволете DNS врски со серверот со менување на правилата за заштитен ѕид на UFW:
- sudo ufw allow Bind9
Со тоа, сега имате примарни и секундарни DNS сервери за резолуција на името на приватната мрежа и IP адресата. Сега мора да ги конфигурирате вашите клиентски сервери да ги користат вашите приватни DNS сервери.
Конфигурирање на DNS клиенти
Пред сите ваши сервери во доверливиот
ACL да можат да ги побараат вашите DNS сервери, мора да го конфигурирате секој од нив да користи ns1 и ns2 како сервери за имиња . Овој процес варира во зависност од оперативниот систем, но за повеќето дистрибуции на Linux вклучува додавање на вашите сервери за имиња во датотеката /etc/resolv.conf
.
Клиенти на Ubuntu 18.04
На Ubuntu 18.04, вмрежувањето е конфигурирано со Netplan, апстракција што ви овозможува да напишете стандардизирана мрежна конфигурација и да ја примените на некомпатибилен мрежен софтвер за заднина. За да го конфигурираме DNS, треба да напишеме конфигурациска датотека Netplan.
Прво, пронајдете го уредот поврзан со вашата приватна мрежа со барање на приватната подмрежа со командата ip address
:
- ip address show to 10.128.0.0/16
Output3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet 10.128.100.101/16 brd 10.128.255.255 scope global eth1
valid_lft forever preferred_lft forever
Во овој пример, приватниот интерфејс е eth1
.
Следно, креирајте нова датотека во /etc/netplan
наречена 00-private-nameservers.yaml
:
- sudo nano /etc/netplan/00-private-nameservers.yaml
Внатре, залепете ја следната содржина. Ќе треба да го измените интерфејсот на приватната мрежа, адресите на вашите ns1 и ns2 DNS сервери и зоната DNS:
Забелешка: Netplan го користи форматот за серијализација на податоци YAML за своите конфигурациски датотеки. Бидејќи YAML користи вовлекување и празно место за да ја дефинира својата структура на податоци, проверете дали вашата дефиниција користи доследна вовлекување за да избегне грешки.
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 автоматски ќе ги врати промените по истекот на времето:
- sudo netplan try
OutputWarning: 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 конфигурација е применета:
- sudo systemd-resolve --status
Скролувајте надолу додека не го видите делот за вашиот приватен мрежен интерфејс. Прво треба да ги видите приватните IP адреси за вашите DNS сервери наведени, проследени со некои резервни вредности. Вашиот домен треба да биде во DNS домен
:
Output. . .
Link 3 (eth1)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 10.128.10.11
10.128.20.12
67.207.67.2
67.207.67.3
DNS Domain: nyc3.example.com
. . .
Вашиот клиент сега треба да биде конфигуриран да ги користи вашите внатрешни DNS сервери.
Ubuntu 16.04 и Debian клиенти
На серверите Ubuntu 16.04 и Debian Linux, можете да ја уредувате датотеката /etc/network/interfaces
:
- sudo nano /etc/network/interfaces
Внатре, пронајдете ја линијата dns-nameservers
и поставете ги вашите сопствени сервери за имиња пред списокот што е моментално таму. Под таа линија, додајте опција dns-search
насочена кон основниот домен на вашата инфраструктура. Во нашиот случај, ова би било nyc3.example.com
:
. . .
dns-nameservers 10.128.10.11 10.128.20.12 8.8.8.8
dns-search nyc3.example.com
. . .
Зачувајте ја и затворете ја датотеката кога ќе завршите.
Сега, рестартирајте ги вашите мрежни услуги, применувајќи ги новите промени со следните команди. Погрижете се да го замените eth0
со името на вашиот мрежен интерфејс:
- sudo ifdown --force eth0 && sudo ip addr flush dev eth0 && sudo ifup --force eth0
Ова треба да ја рестартира вашата мрежа без да ја прекине вашата тековна врска. Ако работи правилно, треба да видите нешто како ова:
OutputRTNETLINK answers: No such process
Waiting for DAD... Done
Проверете двапати дали вашите поставки се применети со впишување:
- cat /etc/resolv.conf
Треба да ги видите вашите сервери за имиња во датотеката /etc/resolv.conf
, како и вашиот домен за пребарување:
Output# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.128.10.11
nameserver 10.128.20.12
nameserver 8.8.8.8
search nyc3.example.com
Вашиот клиент сега е конфигуриран да ги користи вашите DNS сервери.
Клиенти на CentOS
На CentOS, RedHat и Fedora Linux, уредете ја датотеката /etc/sysconfig/network-scripts/ifcfg-eth0
. Можеби ќе треба да го замените eth0
со името на вашиот примарен мрежен интерфејс:
- sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
Пребарајте ги опциите DNS1
и DNS2
и поставете ги на приватните IP адреси на вашите примарни и секундарни сервери за имиња. Додајте параметар DOMAIN
проследен со основниот домен на вашата инфраструктура. Во ова упатство, тоа би било nyc3.example.com
:
. . .
DNS1=10.128.10.11
DNS2=10.128.20.12
DOMAIN='nyc3.example.com'
. . .
Зачувајте ја и затворете ја датотеката кога ќе завршите.
Сега, рестартирајте ја мрежната услуга со внесување:
- sudo systemctl restart network
Командата може да виси неколку секунди, но наскоро треба да ве врати на промптот.
Проверете дали вашите промени се применети со пишување:
- cat /etc/resolv.conf
Треба да ги видите вашите сервери за имиња и доменот за пребарување во списокот:
nameserver 10.128.10.11
nameserver 10.128.20.12
search nyc3.example.com
Вашиот клиент сега треба да може да се поврзе и да ги користи вашите DNS сервери.
Тестирање на клиенти
Користете nslookup
за да тестирате дали вашите клиенти можат да ги побараат вашите сервери за имиња. Треба да можете да го направите ова на сите клиенти што сте ги конфигурирале и се во доверливиот
ACL.
За клиентите на CentOS, можеби ќе треба да ја инсталирате алатката со:
- sudo yum install bind-utils
Можеме да започнеме со пребарување напред.
Пребарување напред
За да извршите пребарување напред за да ја вратите IP адресата на host1.nyc3.example.com
, извршете ја следнава команда:
- nslookup host1
Барањето host1
се проширува на host1.nyc3.example.com
затоа што опцијата пребарување
е поставена на вашиот приватен поддомен, а прашањата за DNS ќе се обидат да погледнат на тој поддомен пред да го барате домаќинот на друго место. Излезот од претходната команда би изгледал вака:
OutputServer: 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:
- nslookup 10.128.100.101
Треба да го видите излезот како што следува:
Output11.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
).
Како последен чекор, ќе разгледаме како можете да ги одржувате вашите записи во зоната.
Одржување на записи за DNS
Сега кога имате работен внатрешен DNS, треба да ги одржувате вашите записи за DNS за тие точно да ја одразуваат околината на вашиот сервер.
Додавање домаќин на DNS
Секогаш кога додавате хост во вашата околина (во истиот центар за податоци), ќе сакате да го додадете во DNS. Еве список на чекори што треба да ги преземете:
Сервер за примарен име
- Датотека за препраќање зона: додајте запис
A
за новиот хост, зголемете ја вредноста наSerial
- Датотека за обратна зона: додајте запис
PTR
за новиот хост, зголемете ја вредноста наSerial
- Додајте ја приватната IP адреса на вашиот нов домаќин во
доверливиот
ACL (named.conf.options
)
Тестирајте ги вашите конфигурациски датотеки:
- sudo named-checkconf
- sudo named-checkzone nyc3.example.com db.nyc3.example.com
- sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128
Потоа повторно вчитајте го BIND:
- sudo systemctl reload bind9
Вашиот примарен сервер треба да биде конфигуриран за новиот домаќин сега.
Секундарен сервер за име
- Додајте ја приватната IP адреса на вашиот нов домаќин во
доверливиот
ACL (named.conf.options
)
Проверете ја синтаксата за конфигурација:
- sudo named-checkconf
Потоа повторно вчитајте го BIND:
- sudo systemctl reload bind9
Вашиот секундарен сервер сега ќе прифаќа врски од новиот хост.
Конфигурирајте нов хост да го користи вашиот DNS
- Конфигурирајте го
/etc/resolv.conf
за да ги користите вашите DNS сервери - Тестирајте користејќи
nslookup
Отстранување на домаќинот од DNS
Ако отстраните домаќин од вашата околина или сакате само да го извадите од DNS, само отстранете ги сите работи што беа додадени кога го додадовте серверот во DNS (т.е. обратно од чекорите погоре).
Заклучок
Сега можете да се повикате на приватните мрежни интерфејси на вашите сервери по име, наместо по IP адреса. Ова ја олеснува конфигурацијата на услугите и апликациите бидејќи повеќе не мора да ги запомнувате приватните IP адреси, а датотеките ќе бидат полесни за читање и разбирање. Исто така, сега можете да ги промените вашите конфигурации за да укажуваат на нов сервер на едно место, вашиот примарен DNS сервер, наместо да треба да уредувате различни дистрибуирани конфигурациски датотеки, што го олеснува одржувањето.
Откако ќе го поставите вашиот внатрешен DNS и вашите конфигурациски датотеки користат приватни FQDN за одредување на мрежните врски, критично е вашите DNS сервери да се одржуваат правилно. Ако и двете станат недостапни, вашите услуги и апликации кои се потпираат на нив ќе престанат да функционираат правилно. Ова е причината зошто се препорачува да го поставите вашиот DNS со најмалку еден секундарен сервер и да одржувате работни резервни копии од сите нив.