Возвращение имени хоста вместо IP-адреса в переменной REMOTE_HOST
 

После установки по умолчанию IIS при обращении к переменной REMOTE_HOST возвращает IP address клиента, т.к. обычно только эта информация посылаеться броузером. Для нахождения имени хоста клиента, IIS должен провести обратный поиск DNS (reverse DNS look-up).

Как известно IIS хранит свои установки частично в registry и большую часть в мета-базе (metabase). Доступ к ней осуществляеься посредством либо Internet Service Manager (косвенно), либо программным способом (рекомендуется использовать Windows Scripting Host).

В метабазе присутсвует ключ именовааный EnableReverseDNS, он применим на уровне Web сервера, виртуального сервера, виртуальной директории и файла. Для того чтобы IIS при обращении к переменной REMOTE_HOST проводил обратный DNS поиск необходимо его выставить в True (по умолчанию он стоит в False).

Т.к. при устанонвке Web сервера, все его низлежащие уровни (виртуальные Web сервера, директории и файлы) унаслодовали его свойста то и у них он стоит в False. Чтобы установить эту опции в уже существующих оъектах необходимо поменять это свойство на уровне корневой директори (Root).

Ниже приведён примерный текст на VBscript для использования WSH.

Dim Obj Set Obj = GetObject ("IIS://localhost/W3SVC/1/Root") Obj.EnableReverseDNS = True Obj.SetInfo Set Obj=Nothing 
Примечание:

"1" – порядковый номер сервера в структре метабазы, для того чтобы узнать как называеться этот сервер можно воспоьзоваться свойством ServerComment:

Dim Obj Set Obj = GetObject ("IIS://localhost/W3SVC/1") MsgBox Obj.ServerComment Set Obj=Nothing 
и уже определив его выставить этот ключ для корневой директории найденного сервера

Если Вы хотите чтобы все вновь создаваемые сервера наследовали эту опцию то её следует выставить на уровне вебсервера.

Dim Obj Set Obj = GetObject ("IIS://localhost/W3SVC") Obj.EnableReverseDNS = True Obj.SetInfo Set Obj=Nothing 
 
Автор: Григорий Сувалян
 
Оригинал статьи: http://www.woweb.ru/publ/60-1-0-204