Omvendt zonedelegering til undernet mindre end /24 i BIND. Hvordan det virker

En dag stod jeg over for opgaven at give en af ​​mine klienter ret til at redigere PTR-registreringer af /28-undernettet, der var tildelt ham. Jeg har ikke automatisering til at redigere BIND-indstillinger udefra. Derfor besluttede jeg at tage en anden rute - at uddelegere til klienten et stykke af PTR-zonen i /24-undernettet.

Det ser ud til - hvad kunne være nemmere? Vi registrerer blot subnettet efter behov og dirigerer det til det ønskede NS, som det gøres med et underdomæne. Men nej. Det er ikke så enkelt (selvom det i virkeligheden generelt er primitivt, men intuition hjælper ikke), det er derfor, jeg skriver denne artikel.

Alle, der selv vil finde ud af det, kan læse RFC
Hvem ønsker en færdig løsning, velkommen til kat.

For ikke at forsinke dem, der kan lide copy-paste-metoden, vil jeg først poste den praktiske del og derefter den teoretiske del.

1. Øv. Delegerende zone /28

Lad os sige, at vi har et undernet 7.8.9.0/24. Vi skal uddelegere undernettet 7.8.9.240/28 til dns klient 7.8.7.8 (ns1.client.domæne).

På udbyderens DNS skal du finde en fil, der beskriver den omvendte zone af dette undernet. Lad det være 9.8.7.i-addr.arpa.
Vi kommenterer indlæg fra 240 til 255, hvis der er nogen. Og i slutningen af ​​filen skriver vi følgende:

255-240  IN  NS      7.8.7.8
$GENERATE 240-255 $ CNAME $.255-240

glem ikke at øge den serielle zone og gør

rndc reload

Dette fuldender udbyderdelen. Lad os gå videre til klient dns.

Lad os først oprette en fil /etc/bind/master/255-240.9.8.7.in-addr.arpa følgende indhold:

$ORIGIN 255-240.9.8.7.in-addr.arpa.
$TTL 1W
@                       1D IN SOA       ns1.client.domain. root.client.domain. (
                        2008152607      ; serial
                        3H              ; refresh
                        15M             ; retry
                        1W              ; expiry
                        1D )            ; minimum
@                       IN NS        ns1.client.domain.
@                       IN NS        ns2.client.domain.
241                     IN PTR          test.client.domain.
242                     IN PTR          test2.client.domain.
245                     IN PTR          test5.client.domain.

Og i opkaldt.konf tilføj en beskrivelse af vores nye fil:

zone "255-240.9.8.7.in-addr.arpa." IN {
        type master;
        file "master/255-240.9.8.7.in-addr.arpa";
};

B genstart bindingsprocessen.

/etc/init.d/named restart

Alle. Nu kan du tjekke.

#>  host 7.8.9.245 
245.9.8.7.in-addr.arpa is an alias for 245.255-240.9.8.7.in-addr.arpa.
245.255-240.9.8.7.in-addr.arpa domain name pointer test5.client.domain.

Bemærk, at ikke kun PTR-posten er angivet, men også CNAME. Sådan skal det være. Hvis du undrer dig over hvorfor, så velkommen til næste kapitel.

2. Teori. Hvordan det virker.

Det er svært at konfigurere og fejlfinde en sort boks. Det er meget nemmere, hvis du forstår, hvad der foregår indeni.

Når vi uddelegerer et underdomæne i et domæne domæne, så skriver vi noget som dette:

client.domain.	NS	ns1.client.domain.
ns1.client.domain.	A	7.8.7.8

Vi fortæller alle, der spørger, at vi ikke er ansvarlige for denne side og siger, hvem der er ansvarlig. Og alle anmodninger om klient.domæne omdirigere til 7.8.7.8. Når vi tjekker, ser vi følgende billede (vi udelader, hvad klienten har der. Det betyder ikke noget):

# host test.client.domain
test.client.domain has address 7.8.9.241

De der. vi blev informeret om, at der er sådan en A-record, og dens ip er 7.8.9.241. Ingen unødvendig information.

Hvordan kan det samme gøres med et undernet?

Fordi vores DNS-server er registreret i RIPE, så når du anmoder om en PTR IP-adresse fra vores netværk, vil den første anmodning stadig være til os. Logikken er den samme som med domæner. Men hvordan indtaster du et undernet i en zonefil?

Lad os prøve at indtaste det sådan her:

255-240  IN  NS      7.8.7.8

Og... miraklet skete ikke. Vi modtager ingen anmodningsomdirigering. Sagen er, at bind ikke engang ved, at disse poster i den omvendte zone-fil er IP-adresser, og bestemt ikke forstår rækkevidden. For ham er dette blot en slags symbolsk underdomæne. De der. for bind vil der ikke være nogen forskel mellem "255-240"Og"vores superklient". Og for at anmodningen skal gå, hvor den skal hen, skal adressen i anmodningen se sådan ud: 241.255-240.9.8.7.in-addr.arpa. Eller sådan her, hvis vi bruger et karakterunderdomæne: 241.vores superklient.9.8.7.i-addr.arpa. Dette er anderledes end det sædvanlige: 241.9.8.7.i-addr.arpa.

Det vil være vanskeligt at lave en sådan anmodning manuelt. Og selvom det virker, er det stadig uklart, hvordan man anvender det i det virkelige liv. Efter alt efter anmodning 7.8.9.241 Udbyderens DNS svarer stadig til os, ikke kundens.

Og det er her, de kommer i spil CNAME.

På udbyderens side skal du lave et alias for alle IP-adresser på undernettet i et format, der videresender anmodningen til klientens DNS.

255-240  IN  NS      ns1.client.domain.
241     IN  CNAME   241.255-240
242     IN  CNAME   242.255-240
и т.д.

Dette er for de hårdtarbejdende =).

Og for de dovne er designet nedenfor mere egnet:

255-240  IN  NS      ns1.client.domain.
$GENERATE 240-255 $ CNAME $.255-240

Bed nu om oplysninger på 7.8.9.241 af 241.9.8.7.i-addr.arpa på udbyderens DNS-server vil blive konverteret til 241.255-240.9.8.7.in-addr.arpa og går til dns-klienten.

Kundesiden skal håndtere sådanne anmodninger. Derfor opretter vi en zone 255-240.9.8.7.in-addr.arpa. I den kan vi i princippet placere omvendte indtastninger for enhver ip af hele /24-undernettet, men de vil kun spørge os om dem, som udbyderen videresender til os, så vi kan ikke spille rundt =).
Til illustration vil jeg endnu en gang give et eksempel på indholdet af en omvendt zonefil fra klientsiden:

$ORIGIN 255-240.9.8.7.in-addr.arpa.
$TTL 1W
@                       1D IN SOA       ns1.client.domain. root.client.domain. (
                        2008152607      ; serial
                        3H              ; refresh
                        15M             ; retry
                        1W              ; expiry
                        1D )            ; minimum
@                       IN NS        ns1.client.domain.
@                       IN NS        ns2.client.domain.
241                     IN PTR          test.client.domain.
242                     IN PTR          test2.client.domain.
245                     IN PTR          test5.client.domain.

Det er fordi vi bruger CNAME på udbyderens side, og som svar på en anmodning om data efter IP-adresse modtager vi to poster, ikke én.

#>  host 7.8.9.245 
245.9.8.7.in-addr.arpa is an alias for 245.255-240.9.8.7.in-addr.arpa.
245.255-240.9.8.7.in-addr.arpa domain name pointer test5.client.domain.

Og glem ikke at konfigurere ACL korrekt. For det giver ingen mening at tage en PTR-zone for sig selv og ikke reagere på nogen udefra =).

Kilde: www.habr.com

Tilføj en kommentar