UPnP — протокол автоматической настройки сетевых устройств¶
UPnP (Universal Plug and Play, «универсальное подключение и работа») — набор сетевых протоколов, разработанный для автоматического обнаружения, конфигурации и взаимодействия устройств в локальной сети без ручного вмешательства пользователя. Технология позволяет устройствам — роутерам, принтерам, камерам, медиасерверам, игровым приставкам — находить друг друга в сети, получать IP-адреса, открывать порты и обмениваться данными по предсказуемым правилам. UPnP описывает набор протоколов поверх стандартных сетевых стеков: TCP/IP, UDP, HTTP, SSDP и XML.
¶История и организация
Инициатива UPnP была запущена в 1999 году компанией Microsoft как часть стратегии «Windows 98 Second Edition» и позиционировалась как развитие идеи Plug and Play для сетевых устройств. В том же году был основан UPnP Forum — консорциум промышленных компаний, разрабатывавший спецификации. К 2000-м годам в форум входили Intel, IBM, Sony, Samsung, Cisco, HP и десятки других производителей. В 2016 году UPnP Forum объединился с Digital Living Network Alliance (DLNA), образовав Open Connectivity Foundation (OCF), которая продолжает развитие стандарта.
Спецификации UPnP публикуются открыто и не требуют лицензионных платежей. Базовый набор протоколов описывает четыре ключевых действия: обнаружение устройств (discovery), описание устройств и служб (description), управление (control) и событийные уведомления (eventing).
¶Как работает UPnP
Работа UPnP строится на нескольких протоколах, работающих поверх стандартного IP-стека:
| Протокол | Назначение |
|---|---|
| SSDP (Simple Service Discovery Protocol) | Обнаружение устройств и служб в сети через multicast-запросы на адресе 239.255.255.250:1900 |
| GENA (Generic Event Notification Architecture) | Подписка на события устройств |
| SOAP (Simple Object Access Protocol) | Управление службами через HTTP-запросы |
| XML | Описание устройств и их возможностей |
Процесс взаимодействия выглядит следующим образом. Устройство при подключении к сети рассылает multicast-объявление о своём присутствии. Другие устройства в сети получают это объявление и запрашивают XML-описание устройства по HTTP. Описание содержит список доступных служб и их действий. Для выполнения конкретного действия (например, открыть порт на роутере) инициатор отправляет SOAP-запрос по HTTP. Устройство выполняет действие и возвращает результат.
¶Применение
Основные сценарии использования UPnP:
- Перенаправление портов (port forwarding) — автоматическое открытие портов на роутере для приложений, требующих входящих соединений: онлайн-игры, торрент-клиенты, видеонаблюдение, VoIP.
- Обнаружение медиаустройств — поиск телевизоров, медиаплееров и аудиосистем в сети для передачи мультимедиа (реализовано в протоколе DLNA, построенном поверх UPnP).
- Автоматическая настройка сетевых принтеров — обнаружение и установка драйверов без ручного ввода IP-адреса.
- Интернет-шлюзы (IGD) — роутеры публикуют службу Internet Gateway Device, через которую приложения могут управлять перенаправлением портов и получать внешний IP-адрес.
¶Критика и безопасность
UPnP не предусматривает механизмов аутентификации: любое устройство в локальной сети может запрашивать описание и отправлять команды. Это создаёт ряд рисков:
- Отсутствие авторизации — вредоносное приложение в сети может незаметно открывать порты на роутере, предоставляя удалённый доступ к внутренним устройствам.
- Уязвимость SSDP — multicast-объявления могут использоваться для DDoS-атак (усиление трафика, направленного на уязвимый сервер), а также для разведки сети из интернета через отражённые запросы.
- Сервисы UPnP-IGD в интернете — ряд исследований показывал, что миллионы роутеров по всему миру публикуют интерфейсы UPnP в глобальную сеть, что позволяет злоумышленникам управлять портами удалённо.
В ответ на эти проблемы появился альтернативный протокол NAT-PMP и его развитие PCP (Port Control Protocol), а также UPnP IGD v2 с ограниченной поддержкой проверки подлинности. Ряд экспертов рекомендует отключать UPnP на роутере, если автоматическое перенаправление портов не требуется, и использовать ручную настройку.
¶См. также
- DLNA
- SSDP
- NAT-PMP
- Internet Gateway Device
¶Источники
- UPnP Forum / Open Connectivity Foundation — спецификации UPnP Device Architecture
- RFC 6970 — Universal Plug and Play (UPnP) Internet Gateway Device Protocol
- Miller, T. — «Unplugging UPnP: Universal Plug and Play — A Security Nightmare» (Black Hat, 2013)
- Книга «Computer Networking: A Top-Down Approach» (Kurose, Ross) — раздел о протоколах обнаружения устройств
