Ha alapesetben kiadunk egy Request.ServerVariables("REMOTE_HOST") lekérdezést ASP-ben, akkor nulla értéket kapunk vissza. Ez azt okozza, hogy az IIS a REMOTE_ADDR értéket adja vissza, a kliens IP-címét. Ez azért van, hogy növeljük a Web kiszolgálás teljesítményét. Habár egy változtatással a metaadatbázisban, az IIS fordított DNS keresést tud végezni, és visszaadja a kliens host nevét.
Ha bekapcsoljuk a fordított DNS-kérést, akkor ez jelentős feldolgozási többletmunkát okoz, ami lecsökkenti a Web-szerver teljesítményét. Ez nem ajánlott nagy kapacitású oldalakon, ahol a teljesítmény kritikus tényező.
Ha a metaadatbázisban ezt bekapcsoljuk, akkor minden REMOTE_HOST kérés azt okozza, hogy az IIS elküld egy névfeloldó kérést az operációs rendszernek, amely megpróbál futtatni egy fordított DNS-lekérdezést. Ha a fordított DNS lookup nem képes visszaadni a kiszolgáló nevét, akkor az operációs rendszer megpróbál NetBIOS névfeloldást végezni. Ha a NetBIOS névfeloldás sem jár eredménnyel és egy üres string tér vissza, akkor a REMOTE_ADDR érték, vagyis az IP-cím lesz a válasz az eredeti REMOTE_HOST kérésre.
A fordított DNS-lekérdezés beállítható az adott Web-szerverre vagy egy egyedi weboldalra, rendszergazdai jogosultság szükséges hozzá a metaadatbázishoz az IIS Admin objektumokon keresztül. Cikkünk két módszert mutat be a metaadatbázis módosítására. Az egyik ASP, a másik egy WSH módszer, parancssorból. A következő ASP példához hozzunk létre egy asp kiterjesztésű állományt a weboldalon vagy egy virtuális könyvtárban, amelynek script vagy futtatási joga van, és másoljuk a következő kódot az asp fájlba. A parancssori módszerhez az Admin Sample Scripts (az IIS üzembe helyezésekor települ) és a Windows Scripting Host megléte szükséges.
Javasolt a metaadatbázist elmenteni, mielőtt véletlenül kárt okoznánk benne.
A fordított DNS-lekérdezés bekapcsolása minden oldalra
Ez az ASP kód minden oldalra bekapcsolja a fordított DNS-lekérdezést. A metaadatbázis hierarchikus felépítése folytán azokon a weboldalakon, ahol nincs EnableReverseDNS bejegyzés, a felette lévő érték öröklődik.
ASP megoldás:
Set oIIS = GetObject("IIS://localhost/w3svc")
oIIS.Put "EnableReverseDNS", vEnableRevDNS
oIIS.SetInfo
Set oIIS = Nothing
Parancssori módszer:
cscript adsutil.vbs set /w3svc/EnableReverseDNS "TRUE"
A fordított DNS-lekérdezés bekapcsolása egyedi oldalakra
A kód csak egy egyedileg definiált weboldalra kapcsolja be a fordított DNS-lekérdezést. Az előző példát annyiban kell módosítanunk, hogy jeleznünk kell az oldal metaadatbázis azonosítóját.
ASP megoldás:
Set oIIS = GetObject("IIS://localhost/w3svc/1/ROOT")
oIIS.Put "EnableReverseDNS", vEnableRevDNS
oIIS.SetInfo
Set oIIS = Nothing
Parancssori módszer:
cscript adsutil.vbs set /w3svc/1/ROOT/*EnableReverseDNS "TRUE"
A cikkhez mellékeltük a teljes EnableReserveDNS.asp állományt, amely megvalósítja a fordított DNS-lekérdezés bekapcsolását minden oldalra.