Utilizați dnsmasq pentru a furniza servicii DNS și DHCP

mulți pasionați de tehnologie consideră importantă capacitatea de a controla rezoluția numelui gazdei. Configurarea serverelor și a serviciilor necesită de obicei o formă de adresă fixă și, uneori, necesită și forme speciale de rezoluție, cum ar fi definirea serverelor Kerberos sau LDAP, servere de mail etc. Toate acestea pot fi realizate cu dnsmasq.

dnsmasq este un program ușor și simplu, care permite emiterea de adrese DHCP în rețea și înregistrarea numelui de gazdă & adresa IP în DNS. Această configurație permite, de asemenea, rezoluția externă, astfel încât întreaga rețea va putea să vorbească singură și să găsească și site-uri externe.

acest articol acoperă instalarea și configurarea dnsmasq fie pe o mașină virtuală, fie pe o mașină fizică mică, cum ar fi un Raspberry Pi, astfel încât să poată furniza aceste servicii în rețeaua de domiciliu sau în laborator. Dacă aveți o configurație existentă și trebuie doar să ajustați setările pentru stația de lucru locală, citiți articolul anterior care acoperă configurarea pluginului dnsmasq în NetworkManager.

instalați dnsmasq

mai întâi, instalați pachetul dnsmasq:

sudo dnf install dnsmasq

apoi, activați și porniți serviciul dnsmasq:

sudo systemctl enable --now dnsmasq

configurați dnsmasq

mai întâi, faceți o copie de rezervă a dnsmasq.fișier conf:

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

apoi, editați fișierul și efectuați modificări la următoarele pentru a reflecta rețeaua dvs. În acest exemplu, mydomain.org este numele de domeniu, 192.168.1.10 este adresa IP a serverului dnsmasq și 192.168.1.1 este gateway-ul implicit.

sudo vi /etc/dnsmasq.conf

se introduce următorul conținut:

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

testați config-ul pentru a verifica greșelile de scriere și erorile de sintaxă:

$ sudo dnsmasq --testdnsmasq: syntax check OK.

acum editați fișierul hosts, care poate conține atât gazde alocate static, cât și dinamic. Adresele statice ar trebui să se afle în afara intervalului DHCP specificat anterior. Gazdele care utilizează DHCP, dar care au nevoie de o adresă fixă, trebuie introduse aici cu o adresă în intervalul DHCP.

sudo vi /etc/hosts

primele două linii ar trebui să fie deja acolo. Adăugați liniile rămase pentru a configura routerul, serverul dnsmasq și două servere suplimentare.

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

reporniți serviciul dnsmasq:

sudo systemctl restart dnsmasq

apoi adăugați Serviciile la firewall pentru a permite clienților să se conecteze:

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

rezoluția numelui testului

mai întâi, instalați bind-utils pentru a obține pachetele nslookup și sape. Acestea vă permit să efectuați atât căutări înainte, cât și invers. Puteți utiliza ping dacă preferați să nu instalați pachete suplimentare. dar aceste instrumente merită instalate pentru funcționalitatea suplimentară de depanare pe care o pot oferi.

sudo dnf install bind-utils

acum testați rezoluția. În primul rând, testați rezoluția forward (hostname to IP address:

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

apoi, testați rezoluția inversă (adresa IP la numele gazdei:

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

în cele din urmă, testați rezolvarea numelor de gazdă în afara rețelei:

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

Test DHCP leases

pentru a testa DHCP leases, trebuie să porniți o mașină care utilizează DHCP pentru a obține o adresă IP. Orice variantă Fedora va face acest lucru în mod implicit. După ce ați pornit mașina client, verificați dacă are o adresă și că corespunde fișierului de închiriere pentru dnsmasq.

de la mașina care rulează 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

extinderea funcționalității

puteți atribui gazdelor o adresă IP fixă prin DHCP adăugând-o în fișierul gazdelor cu adresa dorită (în intervalul DHCP). Faceți acest lucru adăugând în dnsmasq.conf fișier următoarea linie, care atribuie IP enumerate la orice gazdă care are acest nume:

dhcp-host=myhost

alternativ, puteți specifica o adresă MAC care ar trebui să primească întotdeauna o adresă IP fixă:

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

puteți specifica un server de boot PXE dacă aveți nevoie pentru a automatiza mașină construiește

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

acest lucru ar trebui să indice URL-ul real al serverului TFTP.

dacă trebuie să specificați înregistrări SRV sau TXT, de exemplu pentru LDAP, Kerberos sau altele similare, puteți adăuga următoarele:

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



+