Windows - Névfeloldási folyamatok az Active Directory-ban

forráskód letöltése
Ismerve az Active Directory névfeloldási folyamatait, a DNS és WINS kiszolgálókkal való kapcsolatát, illetve a NetBIOS szolgáltatás szerepét, sokkal könnyebbé válik az esetleges hibák felkutatása, elhárítása. Ebben igyekszünk segítséget nyújtani alábbi cikkünkkel, melyben leírjuk, hogy milyen szerepet tölt be a névfeloldás a címtárrendszer működésében.
Cikkünkhöz mellékeltünk egy registry állományt "NoRegisterARecords.reg" néven, melyet a DNS kiszolgálón futtatva megakadályozza, hogy dinamikusan bejegyezzék magukat a DNS adatbázisba a hálózat szerverei.
Miért van szükség névfeloldásra?
Az Active Directory elsődleges protokollja a TCP/IP, mely kizárólag IP címekkel azonosítja a gépeket. Ahhoz, hogy gépnevek alapján bármelyik kiszolgáló vagy kliens megtalálható legyen, szükség van valamilyen névfeloldásra - elsődlegesen DNS-re. Névfeloldás nélkül nem lehet a munkaállomásokról bejelentkezni, azon egyszerű oknál fogva, hogy nem találják meg a tartományvezérlő(ke)t.
Munkaállomások bejelentkezési folyamata
Ha már a munkaállomások bejelentkezésénél tartunk:
Bejelentkezésnél kétféle módon lehet megadni a tartomány nevét: DNS és NetBIOS névvel. Windows 2000 vagy újabb operációs rendszerek kizárólag a DNS-t használják, míg a korábbiak a NetBIOS-t. Előbbi esetben egyszerűbb a helyzet, mert csak a DNS szervertől kell megkérdezni a bejelentkeztető tartományvezérlő nevét. Utóbbi kicsit körülményesebb, mert üzenetszórást kell a hálózatba juttatni (minden gép megkapja) és az illetékes tartományvezérlő jelentkezik válasszal. Majd egy többszörös oda-vissza irányú megegyezési folyamat eredményeként rendelkezésre áll a munkaállomás számára a bejelentkezéshez szükséges információ.
Miután "megvan" a tartományvezérlő, a szükséges információk bekerülnek egy gyorsítótárba (cache), ahonnan a későbbiekben kiolvasva már gyorsabb lesz a bejelentkezési folyamat. A szerverneveken kívül a rendelkezésre álló szolgáltatások erőforrásrekordjait (SRV) is lekéri ilyenkor a munkaállomás (lásd később).
Egy hálózaton belül csak akkor használható mindkét bejelentkezési eljárás, ha rendelkezésre állnak a megfelelő kiszolgálók. Kliens oldalon az úgynevezett lokátorok végzik a kiszolgáló keresést RPC (Remote Procedure Call = Távoli eljáráshívás) hívásokkal (ezért omlik össze a rendszer és nem lehet bejelentkezni még helyileg sem, ha megsérül az RPC szolgáltatás).
  • Programozóknak: a DsGetDcName Windows API függvény kerül meghívásra, mely többek között a következő tulajdonságokat kapja vissza: ComputerName, DomainName, DomainGuid, SiteName.
Kétféle lokátor létezik: az IP/DNS kompatibilis a Windows 2000 vagy újabb rendszerekben található meg és a DNS szolgáltatáshoz fordul. Míg a Windows NT 4.0 kompatibilis a NetBIOS névért a WINS (vagy WINS kompatibilis) kiszolgálót keresi.
Tartományvezérlők regisztrációja
Minden Windows 2000 alapú tartományvezérlő két módon regisztrálja magát induláskor:
  • Dinamikus bejegyzést hoz létre a DNS adatbázisban
  • NetBIOS nevét átadja a WINS szervernek.
Alapértelmezésben a DNS kiszolgálón engedélyezve van a szerverek dinamikus bejegyzésének készítése. A tartományvezérlő telepítése közben a Net Logon szolgáltatás feladata ennek elvégzése. Ha már létezik a szükséges rekord, természetesen nem jön ismét létre, de szükség esetén frissülhet. A keletkező rekord egy állomás (más néven "A" rekord), mely tárolja a gép DNS nevét és IP címét.
Ha nem akarjuk, hogy megtörténjen az automatikus regisztráció a tartományvezérlők telepítésénél, hozzunk létre egy új duplaszót a DNS-t futtató kiszolgáló regisztrációs adatbázisában a következő helyen:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters]
A bejegyzés neve legyen: "DnsRegisterARecords". Értéke pedig 0, ha tiltani akarjuk a dinamikus regisztrációt és 1, ha engedélyezni.
Az "A" rekord a gép nevére vonatkozik és lehetővé teszi, hogy a kliensek megtalálják a kiszolgálót.
Emellett létrejönnek még további rekordok is, melyek a címtár különböző szolgáltatásaira mutatnak. Indítsuk el a Felügyeleti eszközök > DNS (Administrative Tools > DNS) konzolt és nyissuk ki a farendszert a tartomány címkeresési zónájában a következő útvonalon: _sites > alapertelmezett-elso-hely-neve > _tcp. Megjelenik a képernyő jobb oldalán néhány szolgáltatás (pl.: _ldap) és hogy mely gépen érhető el. A bejegyzések SRV (Service Location = Szolgáltatás helye) típusúak. A bejelentkező munkaállomások a következő formátumú kérést küldik el a DNS szolgáltatásnak:
_Service._Protocol.DNSDomainName
Például az LDAP szerver megtalálásához:
_ldap._tcp.DNSDomainName
Régebbi rendszereknél előfordulhat, hogy WINS kiszolgáló is működik a hálózatban és a Windows 2000 előtti gépek névfeloldásáért felel. Kompatibilitási okokból megmaradt az Active Directory-ban a WINS-el való együttműködés lehetősége, mely során az úgynevezett NetBIOS gépnevek és IP címek átalakítása folyik. Ebben az esetben a NetBIOS gépnév megegyezik a gépnévvel, ami a DNS gépnév első pontig tartó tagja (balról jobbra haladva). A tartományvezérlőnek ilyenkor is meg kell keresnie a névfeloldó rendszert és be kell jegyeztetnie magát. Ez első lépésben egy szórt üzenettel történik, ugyanúgy, mint a munkaállomások bejelentkezése esetén. Az üzenetszórása a WINS szerver ad választ, kérve a NetBIOS gépnevet, majd lezajlik a regisztráció.
  • Megjegyzés: NetBIOS névregisztrációt az Active Directory-ban más névszerverek is végezhetnek nem csak a WINS.
Leggyakoribb probléma az szokott lenni, amikor a kliens nem tud bejelentkezni a tartományba, hogy a TCP/IP beállításai között nem szerepel a DNS kiszolgáló IP címe.