Fordított zóna delegálása /24-nél kisebb alhálózatokra BIND-ban. Hogyan működik

Egy nap azzal a feladattal szembesültem, hogy az egyik ügyfelemnek jogot adjak a /28-as alhálózat PTR rekordjainak szerkesztésére. Nincs automatika a BIND-beállítások kívülről történő szerkesztésére. Ezért úgy döntöttem, hogy más utat választok – delegálok az ügyfélnek a /24 alhálózat PTR zónájának egy részét.

Úgy tűnik - mi lehetne egyszerűbb? Egyszerűen szükség szerint regisztráljuk az alhálózatot, és a kívánt NS-hez irányítjuk, ahogy az egy aldomain esetében is történik. De nem. Ez nem ilyen egyszerű (bár a valóságban általában primitív, de az intuíció nem segít), ezért írom ezt a cikket.

Aki rá akar jönni, az elolvashatja RFC
Aki kész megoldásra vágyik, üdvözöljük a macskában.

Hogy a copy-paste módszert kedvelők ne késlekedjenek, először a gyakorlati részt teszem közzé, majd az elméleti részt.

1. Gyakorlat. Átruházó zóna /28

Tegyük fel, hogy van alhálózatunk 7.8.9.0/24. Át kell delegálnunk az alhálózatot 7.8.9.240/28 dns kliensnek 7.8.7.8 (ns1.client.domain).

A szolgáltató DNS-én meg kell találnia egy fájlt, amely leírja ennek az alhálózatnak a fordított zónáját. Hadd legyen 9.8.7.in-addr.harp.
A 240-től 255-ig terjedő bejegyzéseket kommentáljuk, ha van. A fájl végére pedig a következőket írjuk:

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

ne felejtse el növelni a soros zónát, és tegye meg

rndc reload

Ezzel befejeződik a szolgáltató rész. Térjünk át a kliens dns-re.

Először is hozzunk létre egy fájlt /etc/bind/master/255-240.9.8.7.in-addr.arpa a következő tartalom:

$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.

És be megnevezett.conf add hozzá az új fájlunk leírását:

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

B indítsa újra a kötési folyamatot.

/etc/init.d/named restart

Minden. Most ellenőrizheti.

#>  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.

Kérjük, vegye figyelembe, hogy nem csak a PTR rekord van megadva, hanem a CNAME is. Ennek így kell lennie. Ha kíváncsi, hogy miért, akkor üdvözöljük a következő fejezetben.

2. Elmélet. Hogyan működik.

A fekete doboz konfigurálása és hibakeresése nehézkes. Sokkal könnyebb, ha megérted, mi történik belül.

Amikor egy tartományban aldomaint delegálunk domain, akkor valami ilyesmit írunk:

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

Mindenkinek azt mondjuk, aki azt kérdezi, hogy nem vagyunk felelősek ezért az oldalért, és megmondjuk, ki a felelős. És minden kérés ügyfél.domain átirányítás a 7.8.7.8-ra. Ellenőrzéskor a következő képet látjuk (kihagyjuk, hogy mi van ott az ügyfélnek. Nem számít):

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

Azok. arról értesültünk, hogy van ilyen A rekord és az ip-je 7.8.9.241. Nincs szükségtelen információ.

Hogyan lehet ugyanezt megtenni egy alhálózattal?

Mert DNS szerverünk a RIPE-ben van regisztrálva, akkor hálózatunkból PTR IP cím kérésekor továbbra is hozzánk érkezik az első kérés. A logika ugyanaz, mint a tartományoknál. De hogyan írhat be alhálózatot egy zónafájlba?

Próbáljuk meg így beírni:

255-240  IN  NS      7.8.7.8

És... a csoda nem történt meg. Nem kapunk átirányítási kérelmet. A helyzet az, hogy a bind nem is tudja, hogy ezek a bejegyzések a fordított zóna fájlban IP címek, és még inkább nem érti a tartomány bejegyzést. Számára ez csak egyfajta szimbolikus aldomain. Azok. a kötéshez nem lesz különbség a "255-240"És"szuperkliensünk". És ahhoz, hogy a kérés oda kerüljön, ahová kell, a kérelemben szereplő címnek így kell kinéznie: 241.255-240.9.8.7.in-addr.arpa. Vagy így, ha karakteres aldomaint használunk: 241.superclient.9.8.7.in-addr.arpa. Ez eltér a szokásostól: 241.9.8.7.in-addr.harp.

Nehéz lesz ilyen kérést manuálisan benyújtani. És még ha működik is, még mindig nem világos, hogyan kell alkalmazni a való életben. Végül is kérésre 7.8.9.241 A szolgáltató DNS-e továbbra is nekünk válaszol, nem az ügyfélé.

És itt jönnek a képbe CNAME.

A szolgáltató oldalán álnevet kell készítenie az alhálózat összes IP-címéhez olyan formátumban, amely továbbítja a kérést az ügyfél DNS-nek.

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

Ez a szorgalmasaknak szól =).

A lusták számára pedig az alábbi kialakítás alkalmasabb:

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

Most kérjen információt a címen 7.8.9.241 A 241.9.8.7.in-addr.harp a szolgáltató DNS-kiszolgálóján a rendszer konvertálni fogja 241.255-240.9.8.7.in-addr.arpa és megy a dns klienshez.

Az ügyféloldalnak kell kezelnie az ilyen kéréseket. Ennek megfelelően zónát hozunk létre 255-240.9.8.7.in-addr.arpa. Ebben elvileg a teljes /24-es alhálózat bármely ip-jéhez elhelyezhetünk fordított bejegyzéseket, de csak azokra kérdeznek ránk, amelyeket a szolgáltató továbbít nekünk, így nem fogjuk tudni kijátszani =).
A szemléltetés kedvéért még egyszer adok egy példát egy fordított zóna fájl tartalmára kliens oldalról:

$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.

Ennek az az oka, hogy a CNAME-t használjuk a szolgáltató oldalán, és az IP-cím szerinti adatkérésre nem egy, hanem két rekordot kapunk.

#>  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.

És ne felejtse el megfelelően konfigurálni az ACL-t. Mert nincs értelme PTR zónát venni magadnak és nem válaszolni senkinek kívülről =).

Forrás: will.com

Hozzászólás