Event ID 15005 HTTP.sys: Сбой привязки к порту (Conflict Port 80/443)
Архитектура HTTP.sys и симптомы конфликта
Событие 15005 логируется в журнале System источником HTTP (Драйвер HTTP.sys уровня ядра). Сообщение: «Сбой привязки к базовому транспорту для [IP-адрес:Порт]. Список IP-адресов может включать только другой интерфейс (Unable to bind to the underlying transport)». Симптомы: веб-сервер IIS (Internet Information Services) не может запустить веб-сайт. В диспетчере IIS сайт переходит в статус "Stopped" (Остановлен). При попытке нажать "Запустить" (Start), IIS выдает ошибку: "Процесс не может получить доступ к файлу, так как он занят другим процессом".
Механика сбоя (Port Conflict)
Драйвер ядра HTTP.sys отвечает за прослушивание портов 80 (HTTP) и 443 (HTTPS) для IIS. Если какая-то сторонняя программа (совершенно не связанная с IIS) уже запустилась раньше и "захватила" (Bind) порт 80 или 443, драйвер HTTP.sys получает от сетевого стека Windows отказ (Access Denied / Port in Use). IIS не может прослушивать трафик, генерируется 15005.
Пошаговое дерево решений (Поиск захватчика порта)
Сценарий 1: Выявление программы-виновника (netstat)
Нам нужно найти процесс (PID), который нагло занял порт 80 или 443 до того, как загрузился IIS.
- Откройте командную строку (CMD) от имени Администратора.
- Выполните команду для поиска процесса, слушающего порт 80:
netstat -ano | findstr :80 - В выводе (например,
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4128) последняя цифра 4128 — это PID виновника. - Откройте Диспетчер задач -> Подробности (Details) и найдите программу с PID 4128.
Частые виновники конфликтов (Кто занимает порт 80/443):
- Skype / TeamViewer: Десктопные мессенджеры по умолчанию захватывают порты 80/443 для обхода файрволов (Снимите галочку в настройках Skype).
- Apache / Nginx (XAMPP): На сервере параллельно установлен второй веб-сервер, который запускается быстрее IIS. Перенастройте Apache на порт 8080.
- SQL Server Reporting Services (SSRS): Встроенный портал отчетов SQL использует свой собственный веб-сервер, который отбирает порт 80 у IIS. Откройте Reporting Services Configuration Manager и смените порт портала.
- VMware vCenter / агенты бэкапа: Агенты управления часто используют порт 443 (HTTPS) для приема команд.
Сценарий 2: Глобальная привязка HTTP.sys (IP Listen List)
Если у сервера несколько IP-адресов, а Apache и IIS должны работать одновременно на 80 порту (но на разных IP), вы можете приказать HTTP.sys слушать ТОЛЬКО один конкретный IP-адрес, а не все подряд (0.0.0.0).
# Заставляем IIS (HTTP.sys) слушать только IP 192.168.1.10
netsh http add iplisten ipaddress=192.168.1.10
# Перезапускаем драйвер ядра (потребует перезапуска зависимых служб)
net stop http
net start http
iisresetТиповые ошибки администраторов
- Попытка менять web.config: Событие 15005 — это проблема нижнего сетевого уровня (TCP Socket Bind). Никакие настройки ASP.NET, пулов (AppPools) или прав доступа (ACL) в папках сайта здесь не помогут. Ищите сетевой конфликт.
Траблшутинг сетевых конфликтов и архитектуры HTTP.sys требует инженерного опыта. Делегируйте веб-инфраструктуру профессионалам ITSTM: мы устраним конфликты портов, настроим Reverse Proxy (ARR/Nginx) для сосуществования разных систем на порту 443, привяжем SSL-сертификаты и обеспечим 100% аптайм ваших порталов.
Частые вопросы (FAQ)
Почему 15005 исчезает, если перезапустить службу сторонней программы?
Потому что IIS (HTTP.sys) постоянно пытается захватить порт. Когда вы перезапускаете чужую программу (например, Apache), порт освобождается на 1 секунду. IIS мгновенно 'впрыгивает' в этот слот и захватывает порт 80. После этого уже Apache выдаст ошибку старта.
Что означает 'Список IP-адресов может включать только другой интерфейс'?
Это означает, что драйвер HTTP.sys попытался привязаться к сокету (IP:PORT), но сетевой стек ОС (Winsock) ответил, что этот сокет уже монопольно захвачен другой программой без флага SO_REUSEADDR (совместного использования).
Как посмотреть, какие именно URL-адреса зарезервированы в HTTP.sys?
Выполните команду 'netsh http show urlacl'. Она выведет список всех пространств имен (Например: http://+:80/Reports/), которые зарезервированы ядром. Если там 'висит' мусор от удаленных программ, удалите его (netsh http delete urlacl).
Может ли BranchCache (Служба кэширования Windows) занять порт 80?
Да. Если BranchCache настроен на работу в режиме распределенного кэша (Distributed Cache), он использует порт 80. Остановите службу PeerDistSvc.
Поможет ли смена привязки (Binding) в диспетчере IIS?
Да! Если вы не можете отключить 'вражескую' программу на 80 порту, зайдите в IIS Manager -> Имя Сайта -> 'Привязки...' (Bindings) и поменяйте порт вашего сайта с 80 на 8080. Сайт сразу запустится.