Как открыть upnp на windows 7. Как включить технологию UPnP. UPnP - что это

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

Немного теории

Подключая один или несколько ПК к сети Интернет через DSL, преимущественно используют технологию NAT (преобразование сетевого адреса). NAT позволяет нескольким ПК частной сети пользоваться общим IP-адресом, который обеспечивает выход в сеть. NAT дополнительно защищает частную сеть, хотя это не сетевой экран (firewall).

Пользователь доступа DSL должен понимать, что NAT присутствует только в модеме с возможностью роутера, то есть к модему одновременно можно подключить два и более ПК. В подобном случае все настройки для соединения с интернетом (пароль, логин) прописываются в самом модеме. В случае использования модема без функции роутера функция NAT отсутствует.

Для того чтобы входящее соединение могло беспрепятственно проходить к внутрисетевым службам нужно соответствующее сопоставление портов. Если сопоставление не соответствует или не выполнено, то связь с программой (службой) из сети Интернет станет недоступна. Зачастую в подобном случае прибегают к ручной настройке по сопоставлению портов.

Сопоставлять порты вручную довольно трудоемкое занятие. Это достаточно сложно, требуется определенный опыт и знания. Большинство пользователей не в состоянии справиться с подобной задачей без посторонней помощи специалиста. Они и не предполагают, что становятся «жертвами» NAT. При любой попытке воспользоваться приложением, которое принимает внешний вызов, пользователю не удается осуществить поставленную задачу.

Для решения подобной проблемы был разработан технологический процесс NAT Traversal. Он позволяет сетевому приложению определять, что оно находиться за устройством NAT, идентифицирует внешний адрес IP, настраивает сопоставление портов. Все это выполняется в автоматическом режиме. Функциональный процесс NAT Traversal опирается на протоколы управления и обнаружения, которые являются неотъемлемой частью Universal Plug and Play. Upnp избавляет пользователя от ручной настройки таблиц сопоставления NAT, не нужно дополнительно устанавливать настройки в роутере. Нужно только активировать возможности UPnP.

Большое количество роутеров и кабельных модемов, которые выпускаются на сегодняшний день, обладают встроенной поддержкой UPnP. Выбирая подобное устройство нужно обращать внимание на наличие функции UPnP. Эта поддержка может в дальнейшем сильно уменьшить вашу головную боль при возникновении проблемы связанной с ручной настройкой роутера.

Правильная работа UPnP приложения должна осуществляться как приложением, так и модемом или роутером. Не все приложения имеют поддержку этого технологического процесса. В некоторых модемах UPnP отключен, его нужно включать вручную.

Если у вас есть такие приложения, то вам обязательно нужно активировать поддержку, как в самой системе, так и в модеме.

Включить поддержку UPnP в Windows, можно выполнив такие действия:

  1. Нажать меню Пуск, выбрать панель Управления.
  2. В панели управления нажать на ярлык Установка удаление программ и Установка компонентов Windows.
  3. В пункте Компоненты выбрать Сетевые службы. Поставить галочку напротив и нажать Состав.
  4. В диалоговом окне сетевых служб следует поставить галочку напротив Клиент обнаружения и управления устройствами шлюза Интернет. Так же нужно отметить и Пользовательский интерфейс UPnP.
  5. Нажимаем Ок и Далее.

Возможно, потребуется установочный диск Windows. Подобный процесс установки пригоден для большинства систем Windows XP. Настойки в роутере выполняются согласно его технической документации.

23 марта 2016 в 11:13

Открываем порты за NAT при помощи NAT-PMP и UPnP IGD

  • Сетевые технологии

Ранее я много раз слышал, что UPnP каким-то образом умеет самостоятельно открывать порты (производить Port Forwarding на роутере) по запросу от хоста из локальной сети. Однако, то, каким именно образом это происходит, и какие протоколы для этого используются, доселе было покрыто для меня пеленой тумана.

В данной статье я хочу кратко рассказать, как работают два механизма для проброса портов, а именно NAT Port Mapping Protocol и Internet Gateway Device (IGD) Protocol , входящий в набор протоколов UPnP. К своему удивлению я обнаружил, что в рунете информация по данному вопросу более чем скудна, что и сподвигло меня на написание данной заметки.

Для начала приведу краткий FAQ:

Q: Для чего нужны данные протоколы?
A: Для формирования на маршрутизаторе правила проброса определенного TCP/UDP порта (Port Forwarding) не вручную, а «автоматически», т.е. по запросу от хоста во внутренней сети.

Q: Как это реализуется?
A: Устройство за NAT отправляет маршрутизатору запрос с указанием внутреннего и внешнего номеров портов и типа протокола (TCP/UDP). Если указанный внешний порт свободен, маршрутизатор формирует у себя правило трансляции и рапортует запросившему компьютеру об успешном выполнении запроса.

Q: Проводится ли на маршрутизаторе аутентификация/авторизация запросов на открытие порта?
A: Нет, не проводится.

Теперь же рассмотрим работу данных протоколов более подробно (под катом).

Port Mapping Protocol

NAT-PMP описан в RFC 6886. Для своей работы он использует UDP-порт сервера 5351.

Рассмотрим работу протокола на конкретном примере - торрент-клиенте Vuze 5.7 для Windows 7.

Примечание: NAT-PMP во Vuze по умолчанию выключен. Его необходимо активировать в настройках плагинов.

1. Запускаем Wireshark. В строке фильтра вводим nat-pmp
2. Запускам Vuze.
3. Останавливаем перехват пакетов, смотрим результаты.

У меня получилось следующее:

Первые 2 это запрос внешнего адреса маршрутизатора и ответ с указанием этого самого адреса. Не будем на них подробно останавливаться и лучше рассмотрим, как происходит маппинг портов на примере пакетов 3-4.

Здесь мы видим, что запрашивается проброс внешнего UDP порта 48166 на такой же внутренний порт. Интересно, что внутри протокола не указывается адрес хоста, на который должна происходить трансляция (Inside Local в терминологии Cisco). Это означает, что маршрутизатор должен взять адрес источника пакета из IP-заголовка и использовать его в качестве Inside Local.

Параметр Requested Port Mapping Lifetime ожидаемо означает время жизни записи в таблице трансляций.

Как мы видим, маршрутизатор предполагаемо создал запрашиваемую трансляцию и ответил кодом Success . Параметр Seconds Since Start of Epoch означает время с момента инициализации таблицы трансляций (т.е. с момента последней перезагрузки роутера).

Маппинг TCP-портов происходит точно также и отличается только значением поля Opcode .

После того, как приложение прекратило использовать данные порты, оно может послать маршрутизатору запрос на удаление трансляции.
Главное отличие запроса на удаление от запроса на создание заключается в том, что параметр Lifetime устанавливается в ноль.

Вот что произойдет, если мы закроем Vuze.

На этом рассмотрение NAT-PMP закончено, предлагаю перейти к несколько более «мудреному» UPnP IGD.

Internet Group Device Protocol

Для обмена своими сообщениями данный протокол использует SOAP.

Однако, в отличие от NAT-PMP, IGD не использует фиксированный номер порта сервера, поэтому перед тем, как обмениваться сообщениями, нужно сперва этот порт узнать. Делается это при помощи протокола SSDP (данный протокол является частью UPnP и используется для обнаружения сервисов).

Запускаем торрент-клиент. Он формирует SSDP-запрос и отсылает его на мультикастовый адрес 239.255.255.250.

Маршрутизатор формирует ответ и отправляет его уже юникастом:

Внутри ответа мы можем увидеть URL для взаимодействия с маршрутизатором по протоколу IGD.

Далее Vuze подключается к маршрутизатору по указанному URL и получает XML с информацией о данном устройстве, в том числе содержащую набор URI для управления некоторыми функциями маршрутизатора. После того, как нужный URI найден в rootDesc.xml, Vuze отправляет SOAP-запрос на содание NAT-трансляции по найденному URI.

Примечание: до того, как запросить создание трансляции, Vuze заставил маршрутизатор перечислить все имеющиеся Port Forwarding"и. Для чего это было сделано, я могу лишь догадываться.

SOAP-запрос на создание трансляции UDP-порта:

Как говорилось ранее, нужный URI (идет сразу после POST) Vuze взял из rootDesc.xml. Для добавления трансляции используется функция с названием AddPortMapping .

Также можно отметить, что, в противоположность NAT-PMP, Inside Local-адрес указывается внутри самого протокола.

Аналогично NAT-PMP, при закрытии торрент-клиента маппинги проброшенных портов удаляются. Делается это функцией DeletePortMapping :

Можно заметить, что для удаления правила достаточно указать только тип протокола (UDP) и номер внешнего порта, не указывая остальные параметры.

Заключение

В данной статье мы рассмотрели два достаточно простых способа по созданию на домашнем роутере правил Port Forwarding по команде от хоста из локальной сети. Остается лишь отметить, что если вы считаете работу данных протоколов угрозой безопасности вашей домашней сети, то их можно попытаться выключить (хотя, конечно, гораздо лучше доверить вопросы безопасности утилите, которая для этого предназначена - файрволу). В случае моего Zyxel Giga II, на котором, к слову, и проводились все тесты, это делается CLI-командой no service upnp (примечательно, что в веб-интерфейсе опция включения/отключения UPnP отсутствует).

Сегодня uTorrent считается наиболее известным торрент-клиентом и это бесспорно! Программа хоть и небольшая, но содержит множество полезных функций с обширными настройками, в добавок она предоставляется бесплатно, постоянно совершенствуется и обновляется.

Интерфейс, интуитивная простота настроек и лёгкость использования покорили не один миллион пользователей, уТоррент поддерживается на всех известнейших трекерах в сети. Ранее у нас уже описывалась установка данного торрент-клиента, сегодня поясним как правильно настроить uTorrent на примере свежего релиза программы 3.4.3, рассмотрим наиболее важные настройки торрент-клиента , которые позволяют обеспечить наилучшую скорость обмена данными — скорость загрузки.

Если же предоставленной здесь информации будет мало, либо вы захотите изъявить свои пожелания, дополнить полезной информацией — не поленитесь написать их в комментариях и, вероятнее всего, они и станут темой нашей будущей статьи.

Для наиболее полноценного применения всего потенциала утилиты, сначала нужно загрузить новейшую версию BitTorrent-клиента — на русском языке, далее запускать приложение, открыть главное меню «Настройки » и найти подраздел «Настройки программы ». Давайте рассмотрим главные разделы повнимательней, дабы понять как настроить uTorrent правильно, чтобы к настройкам уже не возвращаться.

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

«Язык интерфейса » — указывается предпочитаемый язык, если Вы установили программу правильно — по умолчанию будет установлен русский язык, при желании можете изменить на украинский, белорусский и т.д. Ежели Вы скачали программное обеспечение непонятно откуда, и там не было или потеряли языковой пакет.lng, читаем — как установить русский язык, исправляем это языковое недоразумение.

«Запускать уТоррент вместе с Windows » — здесь следует отменить, убрать галочку, чтобы бит-торрент-клиент не запускался в авторежиме при старте ОС. Эта рекомендация применима к львиной доле программного обеспечения, ПО должно работать когда это действительно нужно, а не отгрызать ресурсы у компьютера постоянно.

«Запускать свернуто » — установив данный флажок, приложение активизирует работу в фоновом режиме, причем главное окно утилиты автоматически свернется в трей. Для его открытия потребуется двойным щелчком нажать по бело-зеленому значку «μ» на панели задач (он будет размещаться где-то возле часов с датой, значка громкости или сети).

«Автопроверка ассоциаций » — при запуске данного параметра торрент-файл, закачиваемый с интернет-сети, либо скачанный торрент, который вы попытаетесь запустить, в авторежиме будет запускаться через приложение уТоррент.

«Автоустановка обновлений » — если в uTorrent настроить такую опцию, то приложение самостоятельно начнет скачивать и инсталлировать обновленные версии. Вам лишь нужно снять отметку с функции «Обновлять до бета-версий » — бета-версия утилиты может немного нестабильно работать, так что желательно дождаться выхода полноценно работающего релиза.

«Анти-босс » — достаточно ценная функция для юзеров, которые пользуются данной утилитой на работе. При помощи типового параметра вы сможете быстродейственно и надежно убрать с вашего экрана функционирующий BitTorrent, использовав конкретное сочетание кнопок. Чтобы установить пароль воспользуетесь кнопками Ctrl, Alt либо Shift в комбинации какой-нибудь цифрой либо буквой, как вы сами пожелаете.

«Добавить.!ut для незавершенных » — присвоит не докаченным материалам до окончания их загрузки специальное расширение.!ut, тем самым, в папке загрузки возможно будет отличить эти файлы от уже загруженных (у которых будет исходное расширение).

«Запретить спящий режим » — активированы энергосберегающие режимы ПК? — настройка будет полезна! Установка текущего параметра не позволит компьютеру «заснуть», до окончания всех загрузок торрент-клиента.

«Распределять все файлы » — позволяет зарезервировать место на винчестере заранее, полезно для тех, кто любит качать много, но не имеет много «лишнего» места на жестком диске. Программа пересчитает объём добавленных Вами торрентов и зарезервирует место для качаемых файлов, либо сообщит о нехватке.


Здесь наладка uTorrent не требует серьёзного вмешательства, рекомендованные значения установлены разработчиками. С неотмеченными функциями можете поиграться — подстроить индивидуально, как будет удобней вам. На скорость загрузок, перегрузку на сеть они не повлияют. К примеру, можно выставить установки из предлагаемых вариантов, это видно на размещенном ниже скриншоте. Не забывайте нажать кнопку «Применить».


Здесь указываются пути и директории, где будут храниться хеш торрента и закачиваемые материалы. К важным настройкам относится пункт — «помещать загружаемые файлы в», ставим галочку и указываем папку для всех загрузок. Остальные пункты настраиваются по желанию, есть необходимость запускать скачанные торренты с трекеров автоматически — задаём папку, файлы будут ставится на загрузку автоматически.


Неопытным пользователям разобраться в регулировках сети будет немного сложнее, чем остальным юзерам. Но в реальности здесь нет никаких архи сложностей и как настроить uTorrent Вы обязательно разберётесь. Изначально утилита сама определяет необходимые настройки соединения, отвечающие самым распространенным. В ряде случаев, при использовании маршрутизатора, модема может потребоваться коррекция (донастройка), ознакомьтесь со следующими рекомендациями.

Современные модели маршрутизаторов, модемов используют встроенные протоколы управления UPnP для домашних, корпоративных ПК или NAT-PMP для Apple. Данные функции стандартизируют сетевое соединение, обеспечивают подключение схожих (ПК, ноутбуки, планшеты) устройств друг к другу. Отметьте галочкой соответствующие пункты соединения: «Переадресация NAT-PMP » — «Переадресация UPnP ».

При возникновении проблем с портами, рекомендуется в uTorrent настроить параметр «Порт входящих соединений » самостоятельно. Чаще всего достаточно нажать на кнопку «генерировать». Не помогло? — воспользуемся советами — диапазон портов должен лежать в следующих пределах 1-65535, превышать его нельзя. Выбирая порт учитывайте то, что некоторые провайдеры стараясь уменьшить нагрузку на свою сеть блокируют работу портов от 1 до 9 999 (могут ограничить и выше), выбирайте комбинацию цифр за пределами 20 000. Также настоятельно рекомендуем убрать отметку с подпункта меню — «Случайный порт при запуске ».

Ваш компьютер обеспечен защитой брандмауэра Windows или стороннего разработчика (а он должен), проверьте отмечен ли галочкой пункт «в исключения брандмауэра», включите эту функцию во избежание ошибок.

Когда Вы подключаетесь через proxy-сервер (прокси – ближайший, ближний), то нужно включить параметр «Прокси-сервер». Сначала выберите тип, порт, потом IP-адрес сервера. Если необходима аутентификация (вход по паролю), запишите логин и пароль. Если имеется одно подключение, то необходимо включить «Использовать прокси для P2P-соединений».


Если Вам надо настроить uTorrent на максимальную скорость, использовав весь интернет-трафик, запишите в поле максимальной скорости приема ноль, или же укажите скорость, обговоренную в договоре с провайдером. Если Вы желаете одновременно использовать torrent-client и интернет для брожений по сайтам, то напишите цифру на 10-20% меньше максимума для загрузки и отдачи.

Если Вы теряетесь в цифрах, определить максимальную скорость поможет uTorrent, нажмите на кнопку «Настроить », выберите опцию — «Помощник настройки », запустите тест скорости, в результатах вы увидите показатели отдачи и загрузки, а также рекомендации по корректировке количества слотов.

Прежде чем Вы начнете настраивать скорость uTorrent, и вписывать скоростной режим в поля, нужно учесть — в уТоррент единица измерения данных построена по-честному в килобайтах или мегабайтах, а в договоре интернет-провайдера указано по-хитрому – килобит и мегабит. Вспоминаем, что есть байт и бит, 1 байт — это 8 бит, один килобайт равен 1024 байтам, от провайдеров мы получаем один килобит = 1000 бит, что в 8 раз меньше — 1 мегабит = 125 килобайт.

Давайте посчитаем, как настроить скорость uTorrent по вашему тарифному плану. Допустим, максимальная скорость, написанная в договоре = 3 мегабит/сек. Чтобы получить ее в килобитах, умножьте на 1000, получаем 3000 килобит, поделим на 8 и получим 375 килобайт – это ваша скорость загрузки в килобайтах. То есть, 3 мегабита = 3000 килобит = 375 килобайт в секунду! Возможность отдачи обычно значительно урезана и равна 1 мегабиту/сек = 125 KB/s.



Чтобы выставить эффективные настройки программы uTorrent в текущей категории, целесообразно отталкиваться от вашей скорости тарифного плана. Для этого предоставлены графы оптимальных значений, которые изображены на рисунках снизу. Такие регуляторы как: «Минимум доступных задач», «Минимальное время раздач», «Минимальное соотношение» (между объемом раздачи и скаченным) вы сможете поставить аналогично как иллюстрировано на 1-ом рисунке снизу. Хотя, они, зачастую, не столь значимы.



DHT, применяет хеш-сумму торрентов, производит поиск всех источников раздачи материала за границами трекера. Применяя BitTorrent в интернет сети, эту функцию следует включить. Если пользуетесь закрытыми трекерами, то работу сервера DHT запрещают и отключают.

Необходимость в опции «Поиск локальных пиров» появляется, когда говорится о весьма большой локальной сети. Быстродействие в локальной сети в разы выше, тем самым торрент почти мгновенно загружается, если имеется такой источник. Это исключение применимо для локалок, для быстродействия ПК в интернете — лучше выключить, это уменьшит нагрузку на центральный процессор компьютера.

«Scrape-запросы» созданы для получения статистических данных по торренту от трекера, а также сбора данных о пирах. Можно отключить. Скорость локальных пиров срезать не следует. Есть смысл «включить обмен пирами». Необходимо, чтобы было включено исходящее «шифрование протокола».


В стандартных настройках BitTorrent определяет объем кэша автоматически. Когда в строке состояния высвечиваются ошибочные данные «Диск перегружен», значит следует попытаться перенастроить число, убрать значок с нижнего пункта «автомат. увеличение» и поставить на первом, указав 256 или 512 и т.д. (выделить часть ОЗУ — с учетом количества оперативной памяти в Вашем ПК).

На этом ставим точку, это наиболее востребованные настройки для uTorrent, знание о которых будет полезно всем без исключения. Настраивайте программу под своё железо и уТоррент Вас не разочарует.

С наилучшими $ пожеланиями
Denker.

Ранее я много раз слышал, что UPnP каким-то образом умеет самостоятельно открывать порты (производить Port Forwarding на роутере) по запросу от хоста из локальной сети. Однако, то, каким именно образом это происходит, и какие протоколы для этого используются, доселе было покрыто для меня пеленой тумана.

В данной статье я хочу кратко рассказать, как работают два механизма для проброса портов, а именно NAT Port Mapping Protocol и Internet Gateway Device (IGD) Protocol , входящий в набор протоколов UPnP. К своему удивлению я обнаружил, что в рунете информация по данному вопросу более чем скудна, что и сподвигло меня на написание данной заметки.

Для начала приведу краткий FAQ:

Q: Для чего нужны данные протоколы?
A: Для формирования на маршрутизаторе правила проброса определенного TCP/UDP порта (Port Forwarding) не вручную, а «автоматически», т.е. по запросу от хоста во внутренней сети.

Q: Как это реализуется?
A: Устройство за NAT отправляет маршрутизатору запрос с указанием внутреннего и внешнего номеров портов и типа протокола (TCP/UDP). Если указанный внешний порт свободен, маршрутизатор формирует у себя правило трансляции и рапортует запросившему компьютеру об успешном выполнении запроса.

Q: Проводится ли на маршрутизаторе аутентификация/авторизация запросов на открытие порта?
A: Нет, не проводится.

Теперь же рассмотрим работу данных протоколов более подробно (под катом).

Port Mapping Protocol

NAT-PMP описан в RFC 6886. Для своей работы он использует UDP-порт сервера 5351.

Рассмотрим работу протокола на конкретном примере - торрент-клиенте Vuze 5.7 для Windows 7.

Примечание: NAT-PMP во Vuze по умолчанию выключен. Его необходимо активировать в настройках плагинов.

1. Запускаем Wireshark. В строке фильтра вводим nat-pmp
2. Запускам Vuze.
3. Останавливаем перехват пакетов, смотрим результаты.

У меня получилось следующее:


Первые 2 это запрос внешнего адреса маршрутизатора и ответ с указанием этого самого адреса. Не будем на них подробно останавливаться и лучше рассмотрим, как происходит маппинг портов на примере пакетов 3-4.


Здесь мы видим, что запрашивается проброс внешнего UDP порта 48166 на такой же внутренний порт. Интересно, что внутри протокола не указывается адрес хоста, на который должна происходить трансляция (Inside Local в терминологии Cisco). Это означает, что маршрутизатор должен взять адрес источника пакета из IP-заголовка и использовать его в качестве Inside Local.

Параметр Requested Port Mapping Lifetime ожидаемо означает время жизни записи в таблице трансляций.


Как мы видим, маршрутизатор предполагаемо создал запрашиваемую трансляцию и ответил кодом Success . Параметр Seconds Since Start of Epoch означает время с момента инициализации таблицы трансляций (т.е. с момента последней перезагрузки роутера).

Маппинг TCP-портов происходит точно также и отличается только значением поля Opcode .

После того, как приложение прекратило использовать данные порты, оно может послать маршрутизатору запрос на удаление трансляции.
Главное отличие от запроса на удаление от запроса на создание заключается в том, что параметр Lifetime устанавливается в ноль.

Вот что произойдет, если мы закроем Vuze.



На этом рассмотрение NAT-PMP закончено, предлагаю перейти к несколько более «мудреному» UPnP IGD.

Internet Group Device Protocol

Для обмена своими сообщениями данный протокол использует SOAP.

Однако, в отличие от NAT-PMP, IGD не использует фиксированный номер порта сервера, поэтому перед тем, как обмениваться сообщениями, нужно сперва этот порт узнать. Делается это при помощи протокола SSDP (данный протокол является частью UPnP и используется для обнаружения сервисов).

Запускаем торрент-клиент. Он формирует SSDP-запрос и отсылает его на мультикастовый адрес 239.255.255.250.


Маршрутизатор формирует ответ и отправляет его уже юникастом:


Внутри ответа мы можем увидеть URL для взаимодействия с маршрутизатором по протоколу IGD.

Далее Vuze подключается к маршрутизатору по указанному URL и получает XML с информацией о данном устройстве, в том числе содержащую набор URI для управления некоторыми функциями маршрутизатора. После того, как нужный URI найден в rootDesc.xml, Vuze отправляет SOAP-запрос на содание NAT-трансляции по найденному URI.

Примечание: до того, как запросить создание трансляции, Vuze заставил маршрутизатор перечислить все имеющиеся Port Forwarding"и. Для чего это было сделано, я могу лишь догадываться.

SOAP-запрос на создание трансляции UDP-порта:


Как говорилось ранее, нужный URI (идет сразу после POST) Vuze взял из rootDesc.xml. Для добавления трансляции используется функция с названием AddPortMapping .

Также можно отметить, что, в противоположность NAT-PMP, Inside Local-адрес указывается внутри самого протокола.

Аналогично NAT-PMP, при закрытии торрент-клиента маппинги проброшенных портов удаляются. Делается это функцией DeletePortMapping :


Можно заметить, что для удаления правила достаточно указать только тип протокола (UDP) и номер внешнего порта, не указывая остальные параметры.

Заключение

В данной статье мы рассмотрели два достаточно простых способа по созданию на домашнем роутере правил Port Forwarding по команде от хоста из локальной сети. Остается лишь отметить, что если вы считаете работу данных протоколов угрозой безопасности вашей домашней сети, то их можно попытаться выключить (хотя, конечно, гораздо лучше доверить вопросы безопасности утилите, которая для этого предназначена - файрволу). В случае моего Zyxel Giga II, на котором, к слову, и проводились все тесты, это делается CLI-командой no service upnp (примечательно, что в веб-интерфейсе опция включения/отключения UPnP отсутствует).

Ранее я много раз слышал, что UPnP каким-то образом умеет самостоятельно открывать порты (производить Port Forwarding на роутере) по запросу от хоста из локальной сети. Однако, то, каким именно образом это происходит, и какие протоколы для этого используются, доселе было покрыто для меня пеленой тумана.

В данной статье я хочу кратко рассказать, как работают два механизма для проброса портов, а именно NAT Port Mapping Protocol и Internet Gateway Device (IGD) Protocol , входящий в набор протоколов UPnP. К своему удивлению я обнаружил, что в рунете информация по данному вопросу более чем скудна, что и сподвигло меня на написание данной заметки.

Для начала приведу краткий FAQ:

Q: Для чего нужны данные протоколы?
A: Для формирования на маршрутизаторе правила проброса определенного TCP/UDP порта (Port Forwarding) не вручную, а «автоматически», т.е. по запросу от хоста во внутренней сети.

Q: Как это реализуется?
A: Устройство за NAT отправляет маршрутизатору запрос с указанием внутреннего и внешнего номеров портов и типа протокола (TCP/UDP). Если указанный внешний порт свободен, маршрутизатор формирует у себя правило трансляции и рапортует запросившему компьютеру об успешном выполнении запроса.

Q: Проводится ли на маршрутизаторе аутентификация/авторизация запросов на открытие порта?
A: Нет, не проводится.

Теперь же рассмотрим работу данных протоколов более подробно (под катом).

Port Mapping Protocol

NAT-PMP описан в RFC 6886. Для своей работы он использует UDP-порт сервера 5351.

Рассмотрим работу протокола на конкретном примере - торрент-клиенте Vuze 5.7 для Windows 7.

Примечание: NAT-PMP во Vuze по умолчанию выключен. Его необходимо активировать в настройках плагинов.

1. Запускаем Wireshark. В строке фильтра вводим nat-pmp
2. Запускам Vuze.
3. Останавливаем перехват пакетов, смотрим результаты.

У меня получилось следующее:

Первые 2 это запрос внешнего адреса маршрутизатора и ответ с указанием этого самого адреса. Не будем на них подробно останавливаться и лучше рассмотрим, как происходит маппинг портов на примере пакетов 3-4.

Здесь мы видим, что запрашивается проброс внешнего UDP порта 48166 на такой же внутренний порт. Интересно, что внутри протокола не указывается адрес хоста, на который должна происходить трансляция (Inside Local в терминологии Cisco). Это означает, что маршрутизатор должен взять адрес источника пакета из IP-заголовка и использовать его в качестве Inside Local.

Параметр Requested Port Mapping Lifetime ожидаемо означает время жизни записи в таблице трансляций.

Как мы видим, маршрутизатор предполагаемо создал запрашиваемую трансляцию и ответил кодом Success . Параметр Seconds Since Start of Epoch означает время с момента инициализации таблицы трансляций (т.е. с момента последней перезагрузки роутера).

Маппинг TCP-портов происходит точно также и отличается только значением поля Opcode .

После того, как приложение прекратило использовать данные порты, оно может послать маршрутизатору запрос на удаление трансляции.
Главное отличие запроса на удаление от запроса на создание заключается в том, что параметр Lifetime устанавливается в ноль.

Вот что произойдет, если мы закроем Vuze.

На этом рассмотрение NAT-PMP закончено, предлагаю перейти к несколько более «мудреному» UPnP IGD.

Internet Group Device Protocol

Для обмена своими сообщениями данный протокол использует SOAP.

Однако, в отличие от NAT-PMP, IGD не использует фиксированный номер порта сервера, поэтому перед тем, как обмениваться сообщениями, нужно сперва этот порт узнать. Делается это при помощи протокола SSDP (данный протокол является частью UPnP и используется для обнаружения сервисов).

Запускаем торрент-клиент. Он формирует SSDP-запрос и отсылает его на мультикастовый адрес 239.255.255.250.

Маршрутизатор формирует ответ и отправляет его уже юникастом:

Внутри ответа мы можем увидеть URL для взаимодействия с маршрутизатором по протоколу IGD.

Далее Vuze подключается к маршрутизатору по указанному URL и получает XML с информацией о данном устройстве, в том числе содержащую набор URI для управления некоторыми функциями маршрутизатора. После того, как нужный URI найден в rootDesc.xml, Vuze отправляет SOAP-запрос на содание NAT-трансляции по найденному URI.

Примечание: до того, как запросить создание трансляции, Vuze заставил маршрутизатор перечислить все имеющиеся Port Forwarding"и. Для чего это было сделано, я могу лишь догадываться.

SOAP-запрос на создание трансляции UDP-порта:

Как говорилось ранее, нужный URI (идет сразу после POST) Vuze взял из rootDesc.xml. Для добавления трансляции используется функция с названием AddPortMapping .

Также можно отметить, что, в противоположность NAT-PMP, Inside Local-адрес указывается внутри самого протокола.

Аналогично NAT-PMP, при закрытии торрент-клиента маппинги проброшенных портов удаляются. Делается это функцией DeletePortMapping :

Можно заметить, что для удаления правила достаточно указать только тип протокола (UDP) и номер внешнего порта, не указывая остальные параметры.

Заключение

В данной статье мы рассмотрели два достаточно простых способа по созданию на домашнем роутере правил Port Forwarding по команде от хоста из локальной сети. Остается лишь отметить, что если вы считаете работу данных протоколов угрозой безопасности вашей домашней сети, то их можно попытаться выключить (хотя, конечно, гораздо лучше доверить вопросы безопасности утилите, которая для этого предназначена - файрволу). В случае моего Zyxel Giga II, на котором, к слову, и проводились все тесты, это делается CLI-командой no service upnp (примечательно, что в веб-интерфейсе опция включения/отключения UPnP отсутствует).

Понравилась статья? Поделиться с друзьями: