Szerverüzemeltető kollégám furcsa jelenséggel fordult hozzám: képtelen kitörölni egy reverz DNS bejegyzést. Kitörli, de az visszamászik. Nézzek már rá.

Első blikkre nem villanyozott fel túlzottan az eset. Lehet mögötte replikációs probléma, lehet valami DHCP félrekonfigurálás – még az se kizárt, hogy a kliensen bolondult meg valami.

Leteszteltem. Kitöröltem a kérdéses rekordot, majd egyből nyomtam egy F5-öt. A rekord visszajött. Egyből. Ejha. Az összes prekoncepció ment a kukába: ilyen gyorsan egyik sem hozza vissza a törölt rekordot. Átmentem egy másik tartományvezérlőre, azon is nyomtam egy törlést, F5 – a rekord megint ott volt. (Ha esetleg az eddigiekből nem lenne egyértelmű, a zóna AD integrált volt.)

Rögtön felcsillant a szemem – ez nem egy szokványos feladat.
Okoskodjunk.
Mivel a zóna AD integrált, így tulajdonképpen arról van szó, hogy valamiért sikertelen lesz egy törlési művelet a címtárból. Legalábbis ha GUI-n keresztül próbálom végrehajtatni. De pontosan mit is akarok törölni?

Itt jött egy hosszú sóhaj. A magam részéről még erősen emlékszem arra az időkre, amikor a zónafájlok könnyen átlátható szöveges fájlok voltak, olvasásuk, szerkesztésük teljesen egyszerű volt. Most viszont törhettem a fejem, hol is vannak egyáltalán az adatok.

Tényleg, hol? Tudjuk, hogy elméletileg a zóna és a tartomány még csak köszönő viszonyban sincsennek egymással. Úgy értem, egy DNS szerverre tetszőleges számú AD integrált zónát is felvehetek, miközben a konkrét tartományhoz tartozó zóna csak egy a sok közül és nem is feltétlenül kell jelen lennie minden DNS szerveren. Ergo a zóna adatai akár a konfigurációs, akár a tartományi névtérben is lehetnek. (A sémában azért csak nem.;)
Lehetne ugyan guglizni, de jelen esetben érdemesebb inkább becsavarogni a névtereket. ADSIEdit a jóbarátunk, nézzük meg először a konfigurációs névteret, úgyis az a kisebb. Itt bizony nincs. Marad a tartományi – és ott is van: system/microsoftdns/ folder alatt jámborul vigyorognak ránk a zónák.

Így néz ki egy AD integrált reverz DNS zóna

Kitérő:
Attól függően, hogy W2k vagy W2k3 címtárunk van, nagyon eltérő képet kapunk a fenti folderben. W2k címtár esetén mind a reverz, mind a forward zónák ott figyelnek a Domain névtér megfelelő folderében. Ezzel szemben W2k3 címtár esetén a forward dns zónák önálló névteret kaptak a Domain névtér alatt, méghozzá rögtön kettőt: DomainDNS, illetve ForestDNS névvel. A reverz zónák maradtak a régi helyen.
Most szerencsénk van, mert éppen a reverz zónát akarjuk piszkálni. De mi van akkor, ha valamelyik forward zónát szeretnénk direktben kibelezni? Az ADSIEdit csak a klasszikus névtereket adja fel kapcsolódásra és itt nem látszanak az alá rejtett névterek. Igaz, van egy olyan opciója, ahol tetszőleges DN-t is megadhatok kapcsolódásként. Már csak azt kellene megtudni, mi is a DomainDNS partíció DN neve… de ezt meg a konfigurációs névtérből tudjuk kinyerni, itt ugyanis van egy Partition bejegyzés, ahonnan kiolvashatók az egyes partícók adatai. (Az ldp érdekes módon nem vacakol ennyit, egyből mutatja a Domain névtér alatt a DNS névtereket is.)
Huh.

A képen már a sikeres kapcsolódást láthatjuk.

Innentől már miénk a terep. Szépen megkeressük a minket érintő objektumot és… hoppá. Melyik a módosítandó tulajdonság? Ilyenkor segít az ldp. Ugye tudjuk (tudjuk, mert már írtam róla), az ldp mutatja meg egy objektum összes értékkel bíró tulajdonságát. Innentől már nem nagy ügy kispekulálni, hogy minket bizony a dnsrecord tulajdonság érdekel.

A kisebbik baj, hogy a tulajdonság értéke hexadecimális kódolású karakterlánc. A közepes baj az, hogy nem csak a ptr rekordhoz tartozó karakterlánc van ebben a tulajdonságban, hanem egyéb adatok is. A legnagyobb baj viszont az, hogy ha visszamegyünk az ADSIEdit-hez és lekérjük ezt a tulajdonságot, akkor csak az első néhány bájtot látjuk. A legeslegnagyobb baj pedig az, hogy nincs a felületen modify gomb – így csak törölni vagy hozzáadni tudunk, de természetesen egy ilyen bonyolult formátumú tulajdonságnál semmi esélyünk sincs, hogy majd begépeljük a frankót. Az ldp-vel nagyjából ugyanez a helyzet, bár ott is tudnánk módosítani a tulajdonság értékét, de nincs olyan lehetőség, hogy a jelenlegi érték jelenjen meg egy textboxban, én meg majd editálom és utána visszaírom.

Kitérő:
A konkrét esetben tényleg így jártam, tekintve, hogy az még W2k címtár volt. Kíváncsiságból megnéztem a tesztelésre használt W2k3 címtárban és voilá, ott már volt modify gomb az ADSIEditben. Persze itt sem egyértelmű elsőre, hogy mit kell módosítani, de az ldp segítségével megfejthető, lásd alábbi ábrák.

Ilyenkor gördül végig egy könnycsepp a rendszergazda arcán és elérzékenyülve gondol vissza a Quick Editorral karbantartott zónákra.

Az mindenesetre már látszott a konkrét feladatnál, hogy finom műtétre nincs lehetőségem. (Az eredeti feladat tkp. az lett volna, hogy módosítsuk a ptr rekord értékét.) Ha szikével nem megy, vegyük elő a baltát: töröljük a francba az egész objektumot. Végülis, bármennyire bonyolultan néz is ki, csak egy ptr rekordról van szó.
És ez már meghatotta. Amint a törlés ténye szétreplikálódott, az a bizonyos ptr rekord végképp megszűnt létezni – kicsiny lelke jelenleg a semmi szélén üldögél és József Attilát olvasgat.

Gondoljuk végig, mi is történt. Törölni akartunk egy ptr rekordot. A kezelői felületről nem ment. Bele akartunk nyúlni az adatbázisba – és itt kezdett el izgalmas lenni a játék: rendszerezni kellett a tudásunkat, hogy ebben a nem is túl egyszerű környezetben kisilabizáljuk, hol is lehet a minket érintő adat. És amikor meglett, kiderült, hogy gyakorlatilag nem editálható, tehát csak és kizárólag a del billentyűvel avatkozhatunk be hatásosan. (Ez a billentyű egyébként a legtöbbször tényleg nagyon hatásos.)
De végül sikerült. És lassan már a címtár felépítését is kezdjük érteni.