| Возвращение имени хоста вместо 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
|
Автор: Григорий Сувалян
Источник: relib.com
|
|