Переадресация портов

В компьютерных сетях переадресация портов (англ. port forwarding, также маппинг портов — англ. port mapping) — это применение трансляции сетевых адресов (NAT), при котором запрос на соединение, адресованный по определённому адресу и номеру порта, перенаправляется на другую комбинацию адреса и порта по мере прохождения пакетов через сетевой шлюз, такой как маршрутизатор или межсетевой экран. Эта техника чаще всего используется для предоставления доступа к службам на узле, находящемся в защищённой или маскируемой (внутренней) сети, узлам на внешней стороне шлюза (во внешней сети) путём переназначения IP-адреса и номера порта получателя на внутренний хост[1][2].

undefined

Назначение

Переадресация портов облегчает соединение с конкретным компьютером или сервисом во внутренней сети (LAN) с удалённых компьютеров, например с хостов в Интернете[3].

В типичной домашней сети устройства получают доступ к Интернету через DSL-модем или кабельный модем, подключённый к маршрутизатору или устройству NAT/NAPT. Хосты во внутренней сети соединены через Ethernet-коммутатор или взаимодействуют по беспроводной сети. Внешний интерфейс NAT-устройства настроен на публичный IP-адрес. Компьютеры за роутером, напротив, невидимы для хостов в Интернете, так как они используют только частные IP-адреса.

При настройке переадресации портов сетевой администратор резервирует определённый номер порта на шлюзе для связи с сервисом во внутренней сети на конкретном хосте. Внешние узлы должны знать этот номер порта и адрес шлюза, чтобы обратиться к внутреннему сервису. Часто для переадресации используют номера портов известных интернет-сервисов, например порт 80 для HTTP, чтобы реализовать стандартные интернет-службы на хостах внутри частных сетей.

Типичные применения включают:

  • Запуск общедоступного HTTP-сервера во внутренней сети;
  • Разрешение доступа по SSH к хосту во внутренней сети из Интернета;
  • Разрешение доступа по FTP к хосту во внутренней сети из Интернета;
  • Запуск общедоступного игрового сервера во внутренней сети.

Администраторы настраивают переадресацию портов в операционной системе шлюза. В ядрах Linux это реализуется с помощью правил фильтрации пакетов в компонентах ядра iptables или netfilter. В операционных системах семейства BSD и macOS до версии Yosemite (OS 10.10.X) используется модуль Ipfirewall (ipfw), начиная с Yosemite — модуль Packet Filter (pf).

На шлюзовых устройствах переадресация порта может быть реализована одним правилом для переназначения адреса и порта назначения (в Linux это правило DNAT). При этом исходный адрес и порт не изменяются. Если переадресация используется на машине, не являющейся сетевым шлюзом по умолчанию, необходимо изменить исходный адрес на адрес транслирующей машины, иначе пакеты обойдут транслятор, и соединение не состоится.

Если переадресация реализуется прокси-процессом (например, на межсетевых экранах прикладного уровня, на брандмауэрах с поддержкой SOCKS или посредством TCP-прокси), то пакеты не транслируются, а только проксируются данные. В таком случае исходный адрес (и номер порта) изменяются на адрес прокси-сервера.

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

В Unix-подобных системах переадресация портов используется для обхода ограничения, при котором открытие портов с номерами меньше 1024 разрешено только процессам с правами root. Запуск приложений с привилегиями суперпользователя ради привязки порта может представлять угрозу безопасности хоста, поэтому переадресация используется для перенаправления низкопортового соединения на порт с большим номером, чтобы прикладное ПО работало с обычными правами пользователя.

Протокол Universal Plug and Play (UPnP) включает функцию автоматической настройки переадресации портов на домашних интернет-шлюзах. UPnP определяет протокол Internet Gateway Device Protocol (IGD), который позволяет интернет-шлюзу объявлять о себе во внутренней сети через Simple Service Discovery Protocol (SSDP). Приложение, предоставляющее интернет-службу, может обнаружить такой шлюз и через UPnP IGD зарезервировать номер порта на шлюзе и организовать перенаправление пакетов на свой сокет.

Типы

Переадресация портов подразделяется на следующие типы: локальная, удалённая и динамическая переадресация портов[4].

Локальная переадресация портов

Локальная переадресация портов — наиболее распространённый тип. Она позволяет пользователю с локального компьютера подключаться к другому серверу, то есть безопасно перенаправлять данные от клиентских приложений, работающих на том же компьютере, что и клиент SSH. С помощью локальной переадресации можно, например, обходить брандмауэры, блокирующие отдельные веб-страницы[5].

Соединения от SSH-клиента перенаправляются через SSH-сервер к целевому серверу. SSH-сервер настраивается на пересылку данных с определённого порта (локального для компьютера, где запущен SSH-клиент) по защищённому туннелю к заданному хосту и порту назначения. Локальный порт находится на том же компьютере, что и SSH-клиент, и этот порт считается «переадресуемым». На этом же компьютере любое приложение, желающее подключиться к указанному серверу, может быть сконфигурировано на подключение к перенаправляемому порту (вместо прямого выхода к хосту и порту назначения). После установления такого соединения SSH-клиент слушает выбранный порт и передаёт все данные от приложений по защищённому туннелю на SSH-сервер, который их расшифровывает и пересылает к целевому хосту и порту[6].

Некоторые применения локальной переадресации портов:

  • Получение почты с помощью локальной переадресации[7];
  • Подключение с ноутбука к веб-сайту через SSH-туннель.

Удалённая переадресация портов

Эта форма переадресации позволяет приложениям на стороне сервера защищённого соединения SSH получить доступ к сервисам, находящимся на стороне клиента SSH[8]. Помимо SSH, существуют проприетарные схемы туннелирования, использующие удалённую переадресацию портов с аналогичными задачами[9]. Иными словами, удалённая переадресация позволяет подключаться со стороны сервера туннеля (SSH или иного) к сервису, находящемуся на стороне клиента туннеля.

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

Удалённая переадресация позволяет другим компьютерам получить доступ к приложениям, запущенным на удалённых серверах. Например:

  • Сотрудник организации размещает у себя дома FTP-сервер и хочет предоставить к нему доступ другим сотрудникам из офисной сети. Для этого сотрудник может настроить удалённую переадресацию через SSH на рабочих компьютерах, указав домашний адрес FTP-сервера и нужный порт (стандартный для FTP — TCP:21)[10].
  • Открытие сессий удалённого рабочего стола — типичный пример использования удалённой переадресации. Для этого через SSH открывается порт VNC (5900) и указывается адрес целевого компьютера[6].

Обратная переадресация портов

Также называется обратным SSH-туннелем. Простыми словами, когда ваш ноутбук подключается к удалённой машине таким образом, что входящие вызовы к IP-адресу удалённой машины перенаправляются на ваш ноутбук — и обратно[11].

Динамическая переадресация портов

Динамическая переадресация портов (DPF) — это метод обработки межсетевого экрана или NAT по требованию посредством создания динамических пробросов (pinholes) через файрвол. Главная цель — дать клиентам возможность безопасно подключиться к доверенному серверу, который выступает посредником для передачи данных к одному или нескольким серверам назначения[12].

DPF можно реализовать, настроив локальное приложение, например SSH, как SOCKS-прокси, через который осуществляется передача данных в сети или через Интернет. Для этого отдельные программы (такие как браузеры) настраиваются на пересылку трафика через прокси, создающий защищённый туннель до другого сервера. После завершения работы через прокси приложения возвращаются к обычным настройкам. Из-за необходимости ручной конфигурации DPF используется довольно редко[6].

Один раз установив такое соединение, DPF может повысить безопасность пользователя в недоверенной сети, поскольку передача идёт через защищённый туннель к другому серверу прежде, чем достигнуть исходного адресата, и пользователь защищён от перехвата трафика на локальной сети[13].

DPF является мощным инструментом с множеством сценариев: например, подключаясь к Интернету из кафе, отеля или иного слабо защищённого места, пользователь может использовать DPF для повышения безопасности передачи данных. Также он используется для обхода файрволов, ограничивающих доступ к внешним сайтам, например в корпоративных сетях.

Примечания

  1. Definition of: port forwarding, PC Magazine. Архивировано 3 июня 2012 года. Дата обращения: 27 апреля 2026.
  2. Rory Krause. Using ssh Port Forwarding to Print at Remote Locations. Linux Journal. Дата обращения: 11 октября 2008. Архивировано 7 октября 2024 года.
  3. Jeff "Crash" Goldin. How to set up a home web server. Red Hat. Дата обращения: 27 апреля 2026. Архивировано 4 октября 2008 года.
  4. OpenSSH Port forwarding. Help.ubuntu.com. Дата обращения: 30 января 2014. Архивировано 9 сентября 2025 года.
  5. Local and Remote Port Forwarding and the Reflection for Secure IT Client 7.1 or Higher - Tech Note 2433. Support.attachmate.com (9 ноября 2012). Дата обращения: 30 января 2014. Архивировано 2 февраля 2014 года.
  6. 1 2 3 SSH/OpenSSH/PortForwarding - Community Ubuntu Documentation. Help.ubuntu.com (13 декабря 2013). Дата обращения: 30 января 2014. Архивировано 9 сентября 2025 года.
  7. Example — Using Local Port Forwarding to Receive Mail (System Administration Guide: Security Services). Docs.oracle.com. Дата обращения: 30 января 2014. Архивировано 10 апреля 2013 года.
  8. Tunneling with Secure Shell - Appendix A: Remote Port Forwarding. Vandyke.com (12 июня 2005). Дата обращения: 30 января 2014. Архивировано 3 января 2006 года.
  9. Local versus Remote Port Forwarding. NetworkActiv. Дата обращения: 27 апреля 2026. Архивировано 4 ноября 2016 года.
  10. FTP Port Number 21 - Port 21 TCP. Compnetworking.about.com (19 декабря 2013). Дата обращения: 27 апреля 2026. Архивировано 3 февраля 2014 года.
  11. Reverse SSH Tunneling - From Start to End (амер. англ.). JFrog (15 августа 2021). Дата обращения: 15 октября 2024. Архивировано 26 февраля 2022 года.
  12. DPF Mechanism. Pages.cs.wisc.edu. Дата обращения: 30 января 2014. Архивировано 10 июня 2025 года.
  13. SSH Dynamic Port Forwarding (Hacking Illustrated Series InfoSec Tutorial Videos). Irongeek.com. Дата обращения: 30 января 2014.

Ссылки