Użyj dnsmasq do świadczenia usług DNS i DHCP

wielu entuzjastów technologii uważa, że możliwość kontrolowania rozdzielczości nazwy hosta jest ważna. Konfiguracja serwerów i usług zwykle wymaga pewnej formy stałego adresu, a czasami wymaga również specjalnych form rozdzielczości, takich jak definiowanie serwerów Kerberos lub LDAP, serwerów pocztowych itp. Wszystko to można osiągnąć dzięki dnsmasq.

dnsmasq to lekki i prosty program, który umożliwia wydawanie adresów DHCP w sieci i rejestrację nazwy hosta & adresu IP W DNS. Ta konfiguracja pozwala również na rozdzielczość zewnętrzną, dzięki czemu cała sieć będzie mogła mówić do siebie i znajdować zewnętrzne witryny.

Ten artykuł dotyczy instalowania i konfigurowania dnsmasq na maszynie wirtualnej lub małej maszynie fizycznej, takiej jak Raspberry Pi, aby mogła świadczyć te usługi w sieci domowej lub laboratorium. Jeśli masz istniejącą konfigurację i po prostu trzeba dostosować ustawienia dla lokalnej stacji roboczej, przeczytaj poprzedni artykuł, który obejmuje konfigurowanie wtyczki dnsmasq w NetworkManager.

zainstaluj dnsmasq

najpierw zainstaluj pakiet dnsmasq:

sudo dnf install dnsmasq

następnie włącz i uruchom usługę dnsmasq:

sudo systemctl enable --now dnsmasq

Skonfiguruj dnsmasq

najpierw wykonaj kopię zapasową dnsmasq.plik conf:

sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

następnie Edytuj plik i wprowadź następujące zmiany, aby odzwierciedlić sieć. W tym przykładzie, mydomain.org jest nazwą domeny, 192.168.1.10 jest adresem IP serwera dnsmasq i 192.168.1.1 jest bramą domyślną.

sudo vi /etc/dnsmasq.conf

Wstaw następującą zawartość:

domain-neededbogus-privno-resolvserver=8.8.8.8server=8.8.4.4local=/mydomain.org/listen-address=::1,127.0.0.1,192.168.1.10expand-hostsdomain=mydomain.orgdhcp-range=192.168.1.100,192.168.1.200,24hdhcp-option=option:router,192.168.1.1dhcp-authoritativedhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases

Przetestuj konfigurację, aby sprawdzić literówki i błędy składniowe:

$ sudo dnsmasq --testdnsmasq: syntax check OK.

teraz Edytuj plik hosts, który może zawierać zarówno statycznie, jak i dynamicznie przydzielane hosty. Adresy statyczne powinny znajdować się poza zakresem DHCP określonym wcześniej. Hosty korzystające z DHCP, ale wymagające stałego adresu, powinny być tutaj wprowadzane z adresem w zakresie DHCP.

sudo vi /etc/hosts

pierwsze dwie linie powinny już tam być. Dodaj pozostałe linie, aby skonfigurować router, serwer dnsmasq i dwa dodatkowe serwery.

127.0.0.1 localhost localhost.localdomain::1 localhost localhost.localdomain192.168.1.1 router192.168.1.10 dnsmasq192.168.1.20 server1192.168.1.30 server2

Uruchom ponownie usługę dnsmasq:

sudo systemctl restart dnsmasq

następnie dodaj usługi do zapory sieciowej, aby umożliwić klientom łączenie się:

sudo firewall-cmd --add-service={dns,dhcp}
sudo firewall-cmd --runtime-to-permanent

Nazwa testowa rozdzielczość

najpierw zainstaluj bind-utils, aby pobrać pakiety nslookup i dig. Pozwalają one wykonywać zarówno wyszukiwanie do przodu, jak i do tyłu. Możesz użyć Pinga, jeśli nie chcesz instalować dodatkowych pakietów. ale te narzędzia są warte zainstalowania w celu zapewnienia dodatkowych funkcji rozwiązywania problemów.

sudo dnf install bind-utils

teraz przetestuj rozdzielczość. Najpierw przetestuj rozdzielczość forward (hostname to IP address):

$ nslookup server1Server: 127.0.0.1Address: 127.0.0.1#53Name: server1.mydomain.orgAddress: 192.168.1.20

następnie przetestuj odwrotną rozdzielczość (adres IP do nazwy hosta):

$ nslookup 192.168.1.2020.1.168.192.in-addr.arpa name = server1.mydomain.org.

na koniec przetestuj rozwiązywanie nazw hostów poza siecią:

$ nslookup fedoramagazine.orgServer: 127.0.0.1Address: 127.0.0.1#53Non-authoritative answer:Name: fedoramagazine.orgAddress: 35.196.109.67

testowanie dzierżaw DHCP

aby przetestować dzierżawę DHCP, musisz uruchomić maszynę, która używa DHCP do uzyskania adresu IP. Każdy wariant Fedory zrobi to domyślnie. Po uruchomieniu maszyny klienckiej sprawdź, czy ma ona adres i czy odpowiada plikowi dzierżawy dla dnsmasq.

z maszyny działającej dnsmasq:

$ sudo cat /var/lib/dnsmasq/dnsmasq.leases1598023942 52:54:00:8e:d5:db 192.168.1.100 server3 01:52:54:00:8e:d5:db1598019169 52:54:00:9c:5a:bb 192.168.1.101 server4 01:52:54:00:9c:5a:bb

rozszerzenie funkcjonalności

możesz przypisać hostom stały adres IP za pośrednictwem DHCP, dodając go do pliku hostów z żądanym adresem (w zakresie DHCP). Zrób to dodając do dnsmasq.plik conf następująca linia, która przypisuje podany adres IP do dowolnego hosta o tej nazwie:

dhcp-host=myhost

Alternatywnie, można określić adres MAC, który zawsze powinien mieć stały adres IP:

dhcp-host=11:22:33:44:55:66,192.168.1.123

możesz określić serwer rozruchowy PXE, jeśli chcesz zautomatyzować Kompilacje maszyn

tftp-root=/tftpboot
dhcp-boot=/tftpboot/pxelinux.0,boothost,192.168.1.240

powinno to wskazywać rzeczywisty adres URL serwera TFTP.

jeśli chcesz podać rekordy SRV lub TXT, na przykład dla LDAP, Kerberos lub podobnych, możesz dodać te:

srv-host=_ldap._tcp.mydomain.org,ldap-server.mydomain.org,389
srv-host=_kerberos._udp.mydomain.org,krb-server.mydomain.org,88
srv-host=_kerberos._tcp.mydomain.org,krb-server.mydomain.org,88
srv-host=_kerberos-master._udp.mydomain.org,krb-server.mydomain.org,88
srv-host=_kerberos-adm._tcp.mydomain.org,krb-server.mydomain.org,749
srv-host=_kpasswd._udp.mydomain.org,krb-server.mydomain.org,464
txt-record=_kerberos.mydomain.org,KRB-SERVER.MYDOMAIN.ORG



+