DNS/DHCP(at)Work

DNS/DHCP(at)WorkDu bestemmer svarene. Også de gale.

En DNS- og DHCP-server for testnett og lab. Den svarer fra dine egne soner og poster, og gir feil svar når du ber om det: NXDOMAIN, SERVFAIL, ingen svar, trege svar eller avkortede svar. Slik ser du hvordan telefoner, skrivere, servere og programmer tåler det når navneoppslag og adressetildeling svikter.

Klient10.0.0.100
DNS/DHCP(at)Worksone lab.testKlar
Prøv selv – regel på gw.lab.test:
SpørsmålTypeSvarTidResultat
gw.lab.testA––venter
ntp.lab.testA––venter
_sip._udp.lab.testSRV––venter
www.example.comA––venter
Demoen kjører i nettleseren og sender ingenting på nettet. Svarene er de samme som DNS/DHCP(at)Work gir.

DNS-serveren

0.1.0 · utkast

DNS over UDP og TCP med egne soner og poster, og regler som gir feil svar med vilje. Alt styres fra et web-GUI på norsk og engelsk, og hver spørring vises i loggen mens den skjer.

Svarer
Fra egne soner og poster: A, AAAA, CNAME, MX, TXT, SRV, PTR og NS, med jokertegn (*.app.lab.test) og automatiske reversoppslag. Navn som ikke finnes i sonen, får NXDOMAIN.
Svarer feil
Regler per navnemønster, type og klientnett: NXDOMAIN, SERVFAIL, REFUSED, ikke noe svar, tregt svar, avkortet svar (TC) eller en annen adresse. Første regel som passer, bestemmer.
Videresender
Navn utenfor sonene kan sendes videre til en annen DNS-server. Uten videresending er testnettet lukket, og serveren svarer REFUSED.
Viser
«Spør DNS-serveren» viser svaret en klient ville fått, uten å sende noe. Loggen viser klient, spørsmål, svar, regel og tid for hver spørring.
Sikrer
Innlogging, CSRF-vern og streng CSP. Tjenesten kjører som egen bruker, bare med rettighetene den trenger for port 53 og 67 og for å binde DHCP til ett nettkort.
UDP/TCP 53DNS
UDP 67DHCP, av som standard
TCP 8053web-GUI, EN | NO
Les teknisk beskrivelse
Poster og regler. Reglene sjekkes ovenfra og ned, og kan slås av uten å slettes.

DHCP-serveren

IPv4

Deler ut adresser i ett nett, direkte eller via DHCP relay, og kan oppføre seg som en DHCP-server med feil. Den er av etter installasjon og slås på i web-GUI-et.

Deler ut
Adresseområde, nettmaske, ruter, DNS, domene og leietid, og opsjon 42 (NTP), 66 (TFTP) og 67 (oppstartsfil) for PXE og IP-telefoner. Faste adresser per MAC-adresse.
Svarer feil
Feilmoduser: stille (svarer aldri), nak (avviser hver forespørsel), forsinkelse og fullt (ingen ledige adresser).
Navngir
En klient som sier at den heter laptop-anna, får laptop-anna.lab.test i DNS så lenge leien varer.
Viser
Utleide adresser med tilstand og tid igjen, og hver DISCOVER, OFFER, REQUEST, ACK og NAK i loggen.

Bare på et testnett. En DHCP-server svarer alle som spør på nettsegmentet. Derfor er DHCP av etter installasjon, og web-GUI-et spør en ekstra gang før den slås på.

Feilmodus, reservasjoner og utleide adresser med vertsnavn.

Testscenarier

Pek testutstyret mot serveren, lag en regel og se hva som skjer. Slik går en test:

  1. Pek klientene mot serveren

    Sett DNS-serveren i utstyret, eller slå på DHCP slik at klientene får adressen automatisk.

  2. Legg inn postene

    Navnene utstyret trenger, for eksempel sip.lab.test, ntp.lab.test og SRV-poster.

  3. Lag en regel

    Velg navn, eventuelt type og klient, og hva som skal skje. «Legg til et eksempel» gir ferdige regler.

  4. Følg med i loggen

    Hver spørring og DHCP-melding vises med svar, regel og tid. Prøver klienten igjen? Over TCP? Gir den opp?

Loggen viser at big.lab.test først fikk TC over UDP og så svar over TCP.
TestOppsett
IP-telefon uten SIP-serverRegel SERVFAIL eller NXDOMAIN på _sip._udp.lab.test. Bytter telefonen til reserveserveren, og hva viser den?
DNS som ikke svarerRegel DROP på *. Hvor lenge venter klienten, og prøver den neste DNS-server?
Treg DNSRegel DELAY med 3000 ms. Finn grensen der programmet gir opp eller blir tregt for brukeren.
TCP-fallbackRegel TRUNCATE. Klienten må spørre igjen over TCP – går det gjennom brannmuren?
Feil adresseRegel ANSWER som sender www.example.com til en sinkhole-adresse.
Bare én klient feilerKlientfelt 10.0.0.66. Resten av testnettet får vanlige svar.
Ingen IPv6-svarRegel DROP på type AAAA. Faller klienten raskt tilbake til IPv4?
DHCP som ikke svarerFeilmodus «stille». Klienten ender med 169.254.x.x – hvor lang tid tar det, og hva logger den?
NAK-løkkeFeilmodus «nak». Klienten får tilbud, men forespørselen avvises, igjen og igjen.
PXE og telefonerOpsjon 66 og 67 med TFTP-server og oppstartsfil, og en fast adresse per MAC-adresse.
DHCP via reléRuteren med ip helper-address sender videre; svaret går tilbake via relé-agenten.

Installasjon

Én offline-pakke uten avhengigheter utenom Python 3, som følger med Rocky Linux 9. Installasjonsprogrammet kontrollerer sjekksummene og at portene er ledige, lager passord, åpner brannmuren og avslutter med en kontroll av web-GUI og DNS.

Rocky Linux 9, fysisk eller VM

$ sha256sum -c DNS-DHCP-Tester-0.1.0-offline.tar.gz.sha256
$ tar xzf DNS-DHCP-Tester-0.1.0-offline.tar.gz
$ cd DNS-DHCP-Tester-0.1.0
$ sudo ./install.sh --lang no
# åpne http://<server>:8053/  – bruker admin, passordet skrives ut

Ingen pip, ingen containere og ingen internett. Kjør install.sh på nytt for å oppgradere; innstillinger, leier, logg og passord beholdes. --admin-net 10.10.0.0/24 åpner web-porten bare for administrasjonsnettet.

VMware og Proxmox VE

# VM med ett nettkort mot testnettet (f.eks. ens224)
$ scp DNS-DHCP-Tester-0.1.0-offline.tar.gz* root@vm:/root/
$ ssh root@vm
# tar xzf DNS-DHCP-Tester-*.tar.gz && cd DNS-DHCP-Tester-0.1.0
# ./install.sh --lang no
# python3 /opt/dns-dhcp-tester/tools/selftest.py

1 vCPU og 1 GB minne holder. Gi VM-en et eget nettkort i testnettets VLAN, og velg det som grensesnitt for DHCP i web-GUI-et. Da svarer DHCP-serveren bare på det nettet.

Port 53 er i bruk? Installasjonen viser hvilken prosess som bruker den (ofte dnsmasq fra libvirt). Stopp den, eller bruk --dns-listen <adresse> eller --dns-port. Portene 8053, 53 og 67 kolliderer ikke med de andre (at)Work-verktøyene, så alle kan kjøre på samme server.

Skjermbilder

Web-GUI-et finnes på norsk og engelsk og fungerer også på mobil. Bildene her er fra den norske utgaven; den engelske siden viser engelske skjermbilder. Klikk for å se bildet i full størrelse.