Запретить IIS прослушивать порт 443 для одного IP-адреса.

Вопрос или проблема

Я использую веб-сайт на IIS и также использую другое программное обеспечение, которое осуществляет потоковую передачу медиа по порту 1935 на том же сервере. Программное обеспечение для потоковой передачи также способно поставлять контент через порт 443. Я назначил ему SSL-сертификат, но оно не может привязаться к порту 443 на IP-адресе, который оно использует, так как этот порт занят IIS.

Я не могу использовать команду ‘netsh’, чтобы явно привязать IP-адрес, который используется веб-сайтом, потому что мне также нужна привязка IP-адреса приложения потоковой передачи в IIS, чтобы контент мог поставляться через порт 80.

Существует ли способ остановить прослушивание IIS порта 443 для определенного IP-адреса, при этом все еще позволяя ему прослушивать порт 80 для того же IP-адреса?

Вы можете настроить это в привязках для вашего сайта:

  1. Откройте IIS Manager.
  2. В панели Connections разверните узел Sites в дереве и затем нажмите, чтобы выбрать сайт, для которого вы хотите изменить привязку.
  3. В панели Actions нажмите Bindings.
  4. В диалоговом окне Site Bindings выберите привязку к IP-адресу, которую вам нужно освободить, и удалите ее. Или выберите привязку 443 порта с * в поле IP-адреса и отредактируйте его, чтобы отключить привязку к IP-адресу, который вы хотите освободить.
  5. После редактирования закройте, нажав Ok

Поскольку я поклонник PowerShell, вот команда PowerShell, которую вы можете использовать, чтобы увидеть, что использует порт 443 в IIS

Get-WebBinding | Where-Object { $_.Port -eq 443 }

Затем вы можете удалить эту привязку или переназначить на другой порт.

Get-WebBinding | Where-Object { $_.Port -eq 443 } | ForEach-Object { Remove-WebBinding -Binding $_ }

Ответ или решение

Когда вы управляете несколькими приложениями на одном IIS-сервере и пытаетесь разделять использование портов, таких как 443 (по умолчанию используемый для SSL), возникает необходимость в конфигурации для предотвращения конфликта ресурсов. В данной задаче мы столкнулись с такой проблемой, когда интернет-сайт используется одним приложением в IIS, а другое приложение для потокового вещания через порт 1935 также нацеленo на порт 443 для доставки контента по протоколу SSL. Но поскольку IIS уже занимает порт 443 для IP-адреса, на котором развернут сайт, второе приложение не может его использовать. Мы рассмотрим, как можно разрешить эту ситуацию на сервере под управлением Windows Server, сохраняя при этом параллельную работу приложений.

Понимание теории

В многозадачных средах сервера, когда несколько приложений делят одни и те же ресурсы, конфликты портов становятся обыденностью. Наиболее распространенной причиной такого конфликта является тот факт, что IIS по умолчанию автоматически использует порт 443 на всех IP-адресах, связанных с сервером, для HTTPS-трафика. Для того, чтобы предоставить возможность другому приложению использовать тот же порт на другом IP-адресе, необходимо изменить конфигурацию IIS, чтобы он слушал запросы только на конкретных IP-адресах или соединениях, освобождая нужный нам IP для потоковых приложений.

Практический пример

Расмотрим процедуру изменения привязок в IIS для освобождения IP-адреса на порту 443:

  1. Открытие IIS Manager: Запустите "IIS Manager" на вашем сервере.

  2. Выбор сайта в панели "Connections": Расширьте узел "Sites" и выберите ваш сайт.

  3. Редактирование привязок: В правой панели под "Actions" нажмите на "Bindings".

  4. Удаление или редактирование привязки: В диалоговом окне "Site Bindings" найдите привязку, связанную с портом 443 и IP-адресом, который вы хотите освободить. Если привязка была настроена на использование всех IP (запись с "*"), ее можно отредактировать для использования конкретного IP-адреса, что позволит освободить остальные IP.

  5. Подтверждение: Нажмите "Ok", чтобы сохранить изменения.

Применение и дополнительные возможности

После того как мы освободили порт 443 для нужного IP-адреса на IIS, можем теперь назначить сертификат и настроить потоковое приложение на использование его. Это позволит вам обрабатывать SSL-трафик отдельных приложений независимо, минимизируя конфликты.

Если вы предпочитаете автоматизировать процессы с помощью PowerShell, управлять привязками также возможно с использованием соответствующих командлетов:

# Получение списка всех привязок с использованием порта 443
Get-WebBinding | Where-Object { $_.Port -eq 443 }

# Удаление определенной привязки для освобождения порта
Get-WebBinding | Where-Object { $_.Port -eq 443 } | ForEach-Object { Remove-WebBinding -Binding $_ }

Эти команды позволяют вам просмотреть текущие привязки, а затем выбрать и удалить необходимые из них. Это даёт возможность эффективно управлять сервером для администраторов, предпочитающих командную строку.

Заключение

Работа с сервером IIS требует четкого понимания его структуры и возможностей конфигурации. В данном сценарии мы обсудили, как можно настроить IIS для корректной работы с несколькими приложениями, используя различные привязки IP/портов. Подобный подход помогает снизить количество проблем, связанных с доступом приложений к одним и тем же системным ресурсам, и обеспечивает более стабильное и безопасное окружение для всех сервисов.

Оцените материал
Добавить комментарий

Капча загружается...