Назад | Перейти на главную страницу

Заставить IIS6 не прослушивать один IP

У меня есть еще одна служба, которая должна использовать несколько портов на одном IP-адресе сервера. Когда IIS запускается, он использует все неиспользуемые IP-адреса, поэтому другая служба не может привязать свой IP-адрес. Если я сначала запускаю другую службу, она сможет использовать IP, но я не могу полагаться на порядок запуска служб или на то, что их не нужно будет перезапускать в какой-то момент. Есть ли способ заставить IIS вообще не использовать IP-адрес?

По-видимому, в IIS6 настройка пользовательского интерфейса нарушена, и это нужно сделать используя httpcfg из которых суть:

Введите следующее, где xxx.xxx.x.x - это IP-адрес, который вы хотите добавить:

httpcfg set iplisten -i xxx.xxx.x.x

В случае успеха Httpcfg возвращает следующее: HttpSetServiceConfiguration завершено с 0

Чтобы просмотреть дополнительные коды состояния, см. Справку Httpcfg. После добавления IP-адреса используйте следующую команду для его вывода:

httpcfg query iplisten

Httpcfg возвращает следующее: IP: xxx.xxx.x.x. Перезапустите службу

Я наконец нашел ответ:

http://devlicio.us/blogs/billy_mccafferty/archive/2008/09/02/prevent-iis-from-binding-to-all-assigned-ip-addresses.aspx

Есть утилита под названием httpcfg.exe это можно использовать, чтобы указать, какие IP-адреса IIS будет прослушивать.

Скачал инструменты поддержки ( http://msdn.microsoft.com/en-us/library/windows/desktop/aa364478%28v=vs.85%29.aspx ) и использовал httpcfg.exe, как описано в нескольких сообщениях (т.е. остановите службу http, добавьте желаемые номера IP, за исключением того, который мне нужно было привязать в другом месте). Я дошел до того, что

httpcfg query iplisten

больше не указан мой номер исключения. Однако бег

netstat -anb -p tcp >netstat.txt

и просмотр netstat.txt показал, что PID 4 все еще прослушивает порт 80 (и 443) на ВСЕХ IP-номерах через 0.0.0.0. Таким образом, номер IP, который мне нужно было отделить, еще не был доступен для использования.

Последним шагом было явное УДАЛЕНИЕ 0.0.0.0 - даже если его не было в списке iplisten.

net stop http /y
httpcfg.exe delete iplisten -i 0.0.0.0:80
iisreset.exe

ЭТО сработало сразу. Кстати, перезагрузка сервера не требуется.

Конечно. Запустите Internet Information Services Manager. Расширяйте, пока не увидите свои сайты в разделе «Веб-сайты».

Для каждого сайта щелкните правой кнопкой мыши и выберите «Свойства». На вкладке «Веб-сайт» нажмите «Дополнительно» рядом с IP-адресом и введите только те адреса, которые вы хотите использовать (вместо значения по умолчанию «Все неназначенные»).