Event ID 15005 HTTP.sys: Не удается выполнить привязку к транспорту
Архитектура HTTP.sys и симптомы конфликта
Событие 15005 логируется в журнале System источником HttpEvent. Сообщение: "Не удается выполнить привязку к транспорту. Связывание с IP-адресом (или портом) запрещено". Архитектура Windows (IIS и WCF сервисы) использует драйвер ядра HTTP.sys для прослушивания веб-трафика. Если драйвер пытается открыть порт (например, 80 или 443), но этот порт уже эксклюзивно занят другой программой (не использующей HTTP.sys), ядро генерирует 15005. Симптомы: веб-сайты IIS не запускаются, возвращая ошибку "Другой процесс использует этот файл".
Распространенные программы-монополисты портов:
- Skype for Business / Lync: Обожают занимать порты 80/443.
- Apache / Nginx / Tomcat: Сторонние веб-серверы, запущенные на той же машине.
- SQL Server Reporting Services (SSRS): Может конкурировать за 80 порт с IIS.
- Служба маршрутизации и удаленного доступа (RRAS): SSTP VPN использует 443 порт.
Пошаговое устранение конфликта портов
Сценарий 1: Вычисление процесса-монополиста через Netstat
Нужно найти PID процесса, который физически захватил нужный вам порт (например, 80).
- Откройте командную строку (CMD) от имени Администратора.
- Выполните команду:
netstat -ano | findstr :80 - В правой колонке будет указан PID (например,
4128). Если PID равен4(System) — портом владеет драйвер ядра, переходите к Сценарию 2. - Если PID другой, найдите его имя:
tasklist /FI "PID eq 4128" - Остановите эту службу или перенастройте её на другой порт (например, 8080).
Сценарий 2: Конфликты резервирования URL (URLACL)
Иногда порт свободен, но в HTTP.sys прописано жесткое резервирование для другой службы, запрещающее IIS привязаться к адресу.
# Просмотр всех резерваций портов и путей в ядре HTTP.sys
netsh http show urlaclЕсли вы нашли чужеродную запись, занимающую ваш IP и порт 80 (например, `http://192.168.1.10:80/`), удалите её:
netsh http delete urlacl url=http://192.168.1.10:80/Типовые ошибки администраторов
- Назначение нескольких сайтов IIS на один IP/Порт без Hostname: Если в IIS создано два сайта на порту 80 с пустым полем "Имя узла (Host name)", второй сайт не запустится, вызвав конфликт привязок (Bindings). Обязательно используйте SNI (Server Name Indication) и указывайте DNS-имена.
Разделение сервисов (Микросервисная архитектура или Docker) — лучший выход из конфликта портов. Передайте инфраструктуру на системную поддержку: мы проведем аудит, разнесем сервисы по разным IP/контейнерам и обеспечим 100% аптайм.
Частые вопросы (FAQ)
Почему в netstat PID равен 4 (System)?
PID 4 означает, что порт прослушивается драйвером ядра (обычно это и есть сам HTTP.sys). Конфликт происходит внутри драйвера (например, SSRS конфликтует с IIS). Смотрите резервации urlacl.
Можно ли заставить IIS слушать только конкретные IP-адреса?
Да. По умолчанию HTTP.sys слушает ВСЕ IP-адреса (0.0.0.0). Вы можете ограничить его: 'netsh http add iplisten ipaddress=192.168.1.10'. Тогда порт 80 на других IP будет свободен для Apache.
Как перезапустить драйвер HTTP.sys?
Драйвер работает на уровне ядра. Перезапустить его без перезагрузки сервера можно только остановкой зависимых служб: 'net stop http' (остановит IIS, WinRM, Spooler), затем 'net start http'.
Поможет ли удаление сайта в IIS решить 15005?
Если конфликтуют два сайта внутри самого IIS, то да (или просто остановите один из них). Если порт занят Apache, удаление сайта в IIS ничего не даст.