BIND-9.20.2

Introduksjon til BIND

BIND pakken gir en DNS-server og klientverktøy. Hvis du bare er interessert i verktøyene, referer til BIND Utilities-9.20.2.

[Notat]

Notat

Utviklingsversjoner av BLFS kan ikke bygge eller kjøre noen pakker riktig hvis LFS eller avhengigheter har blitt oppdatert siden den siste stabile versjonene av bøkene.

Pakkeinformasjon

  • Nedlasting (HTTP): https://ftp.isc.org/isc/bind9/9.20.2/bind-9.20.2.tar.xz

  • Nedlasting MD5 sum: f524316a2293ab0e935ae9cdfb69ae79

  • Nedlastingsstørrelse: 5.5 MB

  • Estimert diskplass som kreves: 138 MB (22 MB installert)

  • Estimert byggetid: 0.5 SBU (med parallellitet=4; ca. 40 minutter noe prosessoruavhengig, for å kjøre hele testpakken)

BIND Avhengigheter

Påkrevd

liburcu-0.14.1 og libuv-1.49.0

Anbefalt

Valgfri

cURL-8.10.1, libidn2-2.3.7, libxml2-2.13.4, lmdb-0.9.31, MIT Kerberos V5-1.21.3, pytest-8.3.3, sphinx-8.0.2 (nødvendig for å bygge dokumentasjon), cmocka, geoip, jemalloc, w3m

Valgfri (for å kjøre testpakken)

Net-DNS-1.47

Redaktørens notater: https://wiki.linuxfromscratch.org/blfs/wiki/bind

Installasjon av BIND

[Notat]

Notat

Fra og med bind-9.18.20, IP adressene for B.ROOT-SERVERS.NET er forandret.

Installer BIND ved å kjøre følgende kommandoer:

./configure --prefix=/usr           \
            --sysconfdir=/etc       \
            --localstatedir=/var    \
            --mandir=/usr/share/man \
            --disable-static        &&
make

Utfør følgende kommandoer for å kjøre hele testserien. Først som root bruker, sett opp noen testgrensesnitt:

[Notat]

Notat

Hvis IPv6 ikke er aktivert i kjernen, vil det være flere feilmeldinger: "RTNETLINK answers: Operation not permitted". Disse meldinger påvirker ikke testene.

bin/tests/system/ifconfig.sh up

Testpakken kan indikere at noen tester er hoppet over avhengig av hvilke konfigurasjonsalternativer som brukes. Noen tester er merket «UNTESTED» eller til og med mislykkes hvis Net-DNS-1.47 ikke er installert. En test, dnssec, er kjent for å mislykkes. Testene krever hypothesis python modul, som ikke er i BLFS. For å omgå dette, instruksjonene nedenfor opprette et Python virtuelt miljø og installer deretter modulen der inne før du kjører testene. For å kjøre testene, som en uprivilegert bruker, kjør:

python3 -m venv --system-site-packages testenv &&
source testenv/bin/activate                    &&
pip3 install hypothesis                        &&
make -k check                                  &&
deactivate

Igjen som root, rydd opp i testgrensesnittet:

bin/tests/system/ifconfig.sh down

Til slutt, installer pakken som root bruker:

make install

Parameterforklaringer

--sysconfdir=/etc: Denne parameteren tvinger BIND for å se etter konfigurasjonsfiler i /etc i stedet for /usr/etc.

--with-libidn2: Denne parameteren aktiverer IDNA2008 (Internationalized Domain Names in Applications) støtte.

--enable-fetchlimit: Bruk dette alternativet hvis du vil begrense frekvensen av rekursive klientforespørsler. Dette kan være nyttig på servere som mottar et stort antall forespørsler.

--disable-doh: Bruk dette alternativet hvis du ikke har nghttp2-1.63.0 installert og ikke trenger støtte for DNS over HTTPS.

--disable-static: Denne bryteren forhindrer installasjon av statiske versjoner av bibliotekene.

Konfigurere BIND

Konfigurasjonsfiler

named.conf, root.hints, 127.0.0, rndc.conf, og resolv.conf

Konfigurasjonsinformasjon

BIND vil bli konfigurert til å kjøre i et chroot fengsel som en uprivilegert bruker (named). Denne konfigurasjonen er sikrere ved at en DNS kompromittering bare kan påvirke noen få filer i named bruker sin HOME mappe.

Opprett den uprivilegerte brukeren og gruppen named:

groupadd -g 20 named &&
useradd -c "BIND Owner" -g named -s /bin/false -u 20 named &&
install -d -m770 -o named -g named /srv/named

Sett opp noen filer, mapper og enheter som trengs av BIND:

mkdir -p /srv/named &&
cd       /srv/named &&
mkdir -p dev etc/named/{slave,pz} usr/lib/engines var/run/named &&
mknod /srv/named/dev/null c 1 3 &&
mknod /srv/named/dev/urandom c 1 9 &&
chmod 666 /srv/named/dev/{null,urandom} &&
cp /etc/localtime etc

rndc.conf filen inneholder informasjon for å kontrollere named operasjoner med rndc verktøyet. Generer en nøkkel for bruk i named.conf og rndc.conf med rndc-confgen kommandoen:

rndc-confgen -a -b 512 -t /srv/named

Opprett named.conf filen som named vil lese plasseringen av sonefiler, root navneservere og sikre DNS nøkler:

cat >> /srv/named/etc/named.conf << "EOF"
options {
    directory "/etc/named";
    pid-file "/var/run/named.pid";
    statistics-file "/var/run/named.stats";

};
zone "." {
    type hint;
    file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
    type master;
    file "pz/127.0.0";
};

// Bind 9 now logs by default through syslog (except debug).
// These are the default logging rules.

logging {
    category default { default_syslog; default_debug; };
    category unmatched { null; };

  channel default_syslog {
      syslog daemon;                      // send to syslog's daemon
                                          // facility
      severity info;                      // only send priority info
                                          // and higher
  };

  channel default_debug {
      file "named.run";                   // write to named.run in
                                          // the working directory
                                          // Note: stderr is used instead
                                          // of "named.run"
                                          // if the server is started
                                          // with the '-f' option.
      severity dynamic;                   // log at the server's
                                          // current debug level
  };

  channel default_stderr {
      stderr;                             // writes to stderr
      severity info;                      // only send priority info
                                          // and higher
  };

  channel null {
      null;                               // toss anything sent to
                                          // this channel
  };
};
EOF

Lag en sonefil med følgende innhold:

cat > /srv/named/etc/named/pz/127.0.0 << "EOF"
$TTL 3D
@      IN      SOA     ns.local.domain. hostmaster.local.domain. (
                        1       ; Serial
                        8H      ; Refresh
                        2H      ; Retry
                        4W      ; Expire
                        1D)     ; Minimum TTL
                NS      ns.local.domain.
1               PTR     localhost.
EOF

Opprett root.hints fil med følgende kommandoer:

[Notat]

Notat

Det må utvises forsiktighet for å sikre at det ikke er ledende mellomrom i denne filen.

cat > /srv/named/etc/named/root.hints << "EOF"
.                       6D  IN      NS      A.ROOT-SERVERS.NET.
.                       6D  IN      NS      B.ROOT-SERVERS.NET.
.                       6D  IN      NS      C.ROOT-SERVERS.NET.
.                       6D  IN      NS      D.ROOT-SERVERS.NET.
.                       6D  IN      NS      E.ROOT-SERVERS.NET.
.                       6D  IN      NS      F.ROOT-SERVERS.NET.
.                       6D  IN      NS      G.ROOT-SERVERS.NET.
.                       6D  IN      NS      H.ROOT-SERVERS.NET.
.                       6D  IN      NS      I.ROOT-SERVERS.NET.
.                       6D  IN      NS      J.ROOT-SERVERS.NET.
.                       6D  IN      NS      K.ROOT-SERVERS.NET.
.                       6D  IN      NS      L.ROOT-SERVERS.NET.
.                       6D  IN      NS      M.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.     6D  IN      A       198.41.0.4
A.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:503:ba3e::2:30
B.ROOT-SERVERS.NET.     6D  IN      A       170.247.170.2
B.ROOT-SERVERS.NET.     6D  IN      AAAA    2801:1b8:10::b
C.ROOT-SERVERS.NET.     6D  IN      A       192.33.4.12
C.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:2::c
D.ROOT-SERVERS.NET.     6D  IN      A       199.7.91.13
D.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:2d::d
E.ROOT-SERVERS.NET.     6D  IN      A       192.203.230.10
E.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:a8::e
F.ROOT-SERVERS.NET.     6D  IN      A       192.5.5.241
F.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:2f::f
G.ROOT-SERVERS.NET.     6D  IN      A       192.112.36.4
G.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:12::d0d
H.ROOT-SERVERS.NET.     6D  IN      A       198.97.190.53
H.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:1::53
I.ROOT-SERVERS.NET.     6D  IN      A       192.36.148.17
I.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:7fe::53
J.ROOT-SERVERS.NET.     6D  IN      A       192.58.128.30
J.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:503:c27::2:30
K.ROOT-SERVERS.NET.     6D  IN      A       193.0.14.129
K.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:7fd::1
L.ROOT-SERVERS.NET.     6D  IN      A       199.7.83.42
L.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:9f::42
M.ROOT-SERVERS.NET.     6D  IN      A       202.12.27.33
M.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:dc3::35
EOF

root.hints filen er en liste over rotnavn servere. Denne filen må oppdateres med jevne mellomrom med dig verktøyet. En gjeldende kopi av root.hints kan bli hentet fra https://www.internic.net/domain/named.root. For detaljer, se "BIND 9 Administrator Reference Manual".

Opprett eller modifiser resolv.conf for å bruke den nye navneserveren med følgende kommandoer:

[Notat]

Notat

Erstatt <yourdomain.com> med ditt eget gyldige domenenavn.

cp /etc/resolv.conf /etc/resolv.conf.bak &&
cat > /etc/resolv.conf << "EOF"
search <yourdomain.com>
nameserver 127.0.0.1
EOF

Angi tillatelser for chroot fengselet med følgende kommando:

chown -R named:named /srv/named

Oppstartsskript

For å starte DNS serveren ved oppstart, installer /etc/rc.d/init.d/bind init skriptet inmludert i blfs-bootscripts-20240913 pakken:

make install-bind

Nå start BIND med følgende kommando:

/etc/rc.d/init.d/bind start

Teste BIND

Test ut den nye BIND 9 installasjonen. Spør først den lokale vertsadressen med dig:

dig -x 127.0.0.1

Prøv nå et eksternt navneoppslag, og legg merke til hastighetsforskjellen i gjentatte oppslag på grunn av caching. Kjør dig kommandoen to ganger på samme adresse:

dig www.linuxfromscratch.org &&
dig www.linuxfromscratch.org

Du kan se nesten øyeblikkelige resultater med den navngitte cache oppslag. Rådfør deg med BIND Administrator Reference Manual (se nedenfor) for ytterligere konfigurasjonsalternativer.

Administrator Reference Manual (ARM)

ARM dokumentasjonen (ikke forveksle med prosessorarkitekturen) er inkludert i kildepakken. Dokumentasjonen er i .rst format som betyr at den kan konverteres til lesbare formater hvis sphinx-8.0.2 er installert.

Når BIND er satt opp, spesielt når den skal opererer i et ekte live-scenario, er det høyst anbefalt å konsultere ARM dokumentasjonen. ISC gir en oppdatert sett med utmerket dokumentasjon sammen med hver utgivelse slik at den enkelt kan vises og/eller lastes ned – så det er ingen unnskyldning for ikke å lese dokumentasjonen. Formatene ISC gir er epub og html på https://downloads.isc.org/isc/bind9/9.20.2/doc/arm/.

Innhold

Installerte Programmer: arpaname, ddns-confgen, delv, dig, dnssec-cds, dnssec-dsfromkey, dnssec-importkey, dnssec-keyfromlabel, dnssec-keygen, dnssec-ksr, dnssec-revoke, dnssec-settime, dnssec-signzone, dnssec-verify, host, mdig, named, named-checkconf, named-checkzone, named-compilezone, named-journalprint, named-nzd2nzf, named-rrchecker, nsec3hash, nslookup, nsupdate, rndc, rndc-confgen, og tsig-keygen (symbolkobling)
Installerte Biblioteker: libdns.so, libisc.so, libisccc.so, libisccfg.so, and libns.so
Installerte Mapper: /usr/include/{dns,dst,irs,isc,isccc,isccfg,ns}, /usr/lib/bind, og /srv/named

Korte Beskrivelser

arpaname

oversetter IP adresser til de tilsvarende ARPA navn

ddns-confgen

genererer en nøkkel for bruk av nsupdate og named

delv

er et nytt feilsøkingsverktøy som er en etterfølger til dig

dig

avhører DNS servere

dnssec-cds

endrer DS oppføringer for en underordnet sone basert på CDS/CDNSKEY

dnssec-dsfromkey

sender ut Delegation Signer (DS) resource record (RR)

dnssec-importkey

leser en offentlig DNSKEY oppføring og genererer et par .key/.private filer

dnssec-keyfromlabel

får nøkler med den gitte etiketten fra en kryptografisk maskinvareenhet og bygger nøkkelfiler for DNSSEC

dnssec-keymgr

sikrer korrekt DNSKEY dekning basert på en definert regel

dnssec-ksr

oppretter signert nøkkelrespons (SKR)-filer for offline KSK-oppsett

dnssec-revoke

setter REVOKED biten på en DNSSEC nøkkel

dnssec-settime

angir metadata for nøkkeltiming for en DNSSEC nøkkel

dnssec-signzone

genererer signerte versjoner av sonefiler

dnssec-verify

bekrefter at en sone er fullstendig signert for hver algoritme som er funnet i DNSKEY RRset for sonen, og at NSEC / NSEC3 kjeder er komplette

host

er et verktøy for DNS oppslag

mdig

er en versjon av dig som tillater flere spørringer samtidig

named

er navneserver nissen

named-checkconf

sjekker syntaksen til named.conf filer

named-checkzone

sjekker sonefilens gyldighet

named-compilezone

den er lik named-checkzone, men det dumper alltid soneinnholdet til en spesifisert fil i et spesifisert format

named-journalprint

skriver ut sonejournalen i lesbar form

named-rrchecker

leser en individuell DNS ressurspost fra standardinndata og sjekker om den er syntaktisk riktig

named-nzd2nzf

konverterer en NZD database til NZF tekstformat

nsec3hash

genererer en NSEC3 hash basert på et sett med NSEC3 parametere

nslookup

er et program som brukes til å spørre internettdomene navneservere

nsupdate

brukes til å sende inn DNS oppdateringsforespørsler

rndc

kontrollerer operasjonen av BIND

rndc-confgen

genererer rndc.conf filer

tsig-keygen

er en symbolkobling til ddns-confgen