Проброс портов: как открыть порт на роутере или через туннель
Проброс портов направляет входящее соединение из интернета к одному приложению в вашей сети. При прямом подключении порт открывает ваш роутер. Если роутер менять нельзя или провайдер использует CGNAT, публичный порт может выдать сервис туннелей. Ниже — проверка на отдельной тестовой странице.
Проверьте проброс одного TCP-порта
-
Запустите сервер с тестовым файлом
Откройте Bash на компьютере, где будет работать ForTunnels. Команды создадут папку только с файлом port-check.txt. Python слушает локальный адрес 127.0.0.1, поэтому запросы извне сможет доставить запущенный на той же машине CLI. Оставьте это окно открытым. Для опыта используйте только тестовую папку.
probe_dir="$(mktemp -d)" printf '%s\n' 'TCP port 8001 reached' > "$probe_dir/port-check.txt" python3 -m http.server 8001 --bind 127.0.0.1 --directory "$probe_dir" -
Проверьте локальный порт
В другом терминале запросите тестовый файл. Вы должны увидеть TCP port 8001 reached. Если порт занят, выберите свободный, замените 8001 в командах запуска и проверки и проверьте файл снова. Если локальный сервер не отвечает, открывать внешний порт ещё рано.
curl -fsS http://127.0.0.1:8001/port-check.txt -
Получите внешний TCP-адрес
Установите CLI, зарегистрируйтесь и привяжите клиент к аккаунту по документации CLI. Запустите TCP-туннель. Из вывода возьмите имя хоста и выделенный внешний порт. Внешний порт может отличаться от 8001: 8001 — порт тестового приложения, а подключаться из интернета нужно к порту, который выдал ForTunnels.
fortunnels tcp 8001 -
Подключитесь к выданному порту из другой сети
На другой машине замените YOUR-TUNNEL-HOST:PORT именем хоста и номером порта из вывода CLI. Схема http в команде нужна, потому что тестовое приложение говорит по HTTP, а TCP-туннель просто передаёт его трафик. Используйте этот открытый адрес только для тестового файла. Когда получите ответ, остановите CLI и Python клавишами Ctrl+C.
curl --max-time 10 -fsS "http://YOUR-TUNNEL-HOST:PORT/port-check.txt"
TCP port 8001 reached
Когда выбрать роутер, HTTP-туннель или TCP-туннель
Правило на роутере подходит, если у вас есть публичный IPv4, доступ к настройкам роутера и нужен прямой маршрут к устройству в локальной сети. В правиле указывают протокол, внешний порт, локальный IP устройства и порт приложения. Закрепите локальный адрес устройства в настройках DHCP, иначе правило может указывать на старый адрес. У роутеров этот раздел часто называется «Переадресация портов», NAT Forwarding или Virtual Servers.
Для сайта, API или вебхука обычно проще HTTP-туннель. Клиент получает готовый HTTPS-адрес. Для приложения с собственным TCP-протоколом используйте TCP-туннель и подключайтесь к выданному хосту и порту. TCP передаёт байты приложения. Аутентификацию и шифрование для чувствительных данных обеспечивает само приложение.
Туннель публикует одну настроенную точку входа. Исходящий клиент должен оставаться подключённым. Прямой проброс идёт через ваш роутер и зависит от настроек провайдера, локального межсетевого экрана и самого устройства. Выбирайте маршрут по тому, какой адрес нужен получателю и какой доступ вы можете контролировать.
Как найти ошибку и ограничить доступ
При прямом пробросе проверяйте соединение с мобильной сети или другой внешней точки. Некоторые роутеры не поддерживают проверку собственного публичного адреса из той же сети. Если локально всё работает, а снаружи ответа нет, проверьте WAN-адрес, протокол правила и то, что оно направляет трафик на актуальный IP устройства. Порт должен обслуживать запущенный процесс: правило на роутере само по себе не создаёт слушатель.
При проверке туннеля сверьте внешний порт, состояние клиента и порт локального сервера. Если curl ждёт ответа, проверьте, что CLI ещё работает, а локальный адрес доступен с той же машины. Для веб-приложения HTTPS-ссылку лучше получить в HTTP-режиме. Смена http на https в команде проверки TCP-туннеля не добавляет TLS к тестовому серверу.
Для RDP и камер используйте доступ через VPN или согласованный шлюз с аутентификацией. Публичная TCP-точка доступна извне и сама по себе не защищает удалённый рабочий стол или интерфейс камеры. Для короткой проверки открывайте только тестовый процесс. Удалите ненужное правило на роутере или остановите туннель сразу после проверки.
Частые вопросы
Можно ли сделать проброс порта без доступа к роутеру?
Да, если можно запустить CLI рядом с приложением и он может подключиться к ForTunnels. Пользователи подключатся к публичной точке входа сервиса. Настройки входящих портов на роутере для такого маршрута не меняются.
Должны ли внешний и внутренний порт совпадать?
Нет. Клиент снаружи использует внешний порт, а приложение продолжает слушать свой локальный. В демо выданный TCP-порт ведёт к локальному порту 8001.
Источники
Запустите свой туннель
Зарегистрируйтесь, чтобы управлять маршрутами из дашборда.