Как открыть порты, если открыть их нельзя: CGNAT и мобильный интернет
Как открыть порты на роутере, проверить, открыт ли порт, и что делать, если мешает CGNAT, мобильный интернет или нет доступа к роутеру.
Чтобы открыть порт, на роутере создают правило проброса: «всё, что пришло на внешний порт 25565, отдавай компьютеру 192.168.1.10». Работает это только при двух условиях: у роутера белый IP-адрес, и у вас есть доступ к его настройкам. Если провайдер держит абонентов за общим NAT (CGNAT), интернет мобильный или роутер принадлежит провайдеру или арендодателю, правило ничего не даст. Входящее подключение не доходит до вашего роутера. В таком случае порт не открывают вовсе, задачу решают иначе: клиент туннеля сам подключается к серверу в интернете, и сервер выдаёт вам публичный адрес вида fxtun.ru:15432.
Ниже разберём по порядку: как устроен проброс, почему он часто не срабатывает, как проверить порт снаружи и что делать, когда проброс невозможен.
Как работает проброс порта на роутере
Дома у всех устройств внутренние адреса вроде 192.168.1.10. В интернет квартира выходит под одним адресом роутера. Когда вы открываете сайт, роутер запоминает, кто спрашивал, и возвращает ответ нужному устройству. С исходящими соединениями проблем нет.
Входящие устроены иначе. Кто-то стучится на внешний адрес роутера, порт 25565, и роутер не знает, какому компьютеру это отдать. Правило проброса (оно же port forwarding, «виртуальный сервер», NAT-правило) отвечает на этот вопрос заранее:
- внешний порт: какой порт открыть снаружи;
- внутренний адрес: какой компьютер в сети получит подключение;
- внутренний порт: на каком порту там слушает программа;
- протокол: TCP, UDP или оба.
В Keenetic, TP-Link и MikroTik раздел называется по-разному, но поля в нём те же. Инструкции производителей молча предполагают две вещи: что вы можете войти в настройки роутера и что у него белый адрес. Коротко о том, что делать, если одного из двух нет, — на странице «Проброс портов». Если правило создано, программа запущена, а порт снаружи всё равно закрыт, читайте дальше.
Почему проброс не срабатывает
Серый адрес и CGNAT
Самая частая причина. Провайдер экономит адреса и сажает за один публичный IP сотни абонентов. Ваш роутер получает внутренний адрес провайдера, часто из диапазона 100.64.0.0/10, который RFC 6598 выделил специально под такой общий NAT.
Правило на вашем роутере в этой схеме бесполезно. Подключение из интернета приходит на общий адрес провайдера, и оборудование провайдера понятия не имеет, что его надо отдать именно вам. До вашего роутера пакет не доходит.
Как проверить за минуту: сравните WAN-адрес в настройках роутера с адресом, который показывает curl -4 ifconfig.me или любой сервис проверки IP. Не совпадают — адрес серый. Подробно, с таблицей диапазонов, это разобрано в статье «Серый IP: как узнать и что делать».
Мобильный интернет
4G-модем, раздача с телефона, роутер с SIM-картой. Мобильные операторы, как правило, выдают абонентам адреса за своим NAT, поэтому проброс на модеме упирается в ту же стену, что и CGNAT. Проверяется так же: WAN-адрес модема против адреса, который видят сайты. Можно ли получить у оператора публичный адрес и на каких условиях, узнавайте у него самого.
Нет доступа к роутеру
Роутер стоит у арендодателя, в общежитии, в офисе или его настроил провайдер и не дал пароль. Технически проброс возможен, но сделать его может только тот, у кого есть доступ. Иногда проще попросить, иногда нельзя вовсе, например если сеть общая на весь дом.
Два роутера подряд
Оптический терминал провайдера плюс ваш роутер. WAN-адрес вашего роутера тогда тоже вида 192.168.x.x, и порт нужно пробрасывать дважды: сначала на терминале, потом на своём роутере. Если к терминалу доступа нет, вы в ситуации из предыдущего пункта.
Программа не слушает порт
Бывает, что сеть ни при чём. Сервер игры упал при запуске, слушает другой порт или только 127.0.0.1. Проверить это можно прямо на компьютере, об этом ниже.
Как проверить, открыт ли порт
Главное правило: проверять надо снаружи. Проверка изнутри своей сети по внешнему адресу часто врёт: многие роутеры не умеют отправлять пакет «сами себе» через внешний адрес, и порт выглядит закрытым, хотя друзьям он доступен. Надёжнее всего проверять с телефона на мобильном интернете (Wi-Fi выключить) или попросить друга.
Шаг 1. Программа слушает порт
Сначала убедитесь, что на самом компьютере порт вообще кто-то слушает.
Linux:
ss -ltnp | grep 25565 # TCP
ss -lunp | grep 19132 # UDPWindows, PowerShell:
Get-NetTCPConnection -LocalPort 25565 -State ListenПустой вывод значит, что программа не запущена или слушает другой порт. Дальше проверять бессмысленно, сначала разберитесь с ней.
Шаг 2. Порт виден из интернета
Онлайн-сервис. Сервисы проверки портов, например portchecker.co, пробуют подключиться к вашему внешнему адресу со своего сервера. Это как раз проверка снаружи. Учтите, что они проверяют TCP: для UDP ответ «закрыт» ничего не значит.
nc на Linux и macOS с другой машины за пределами вашей сети:
nc -vz 203.0.113.10 25565Флаг -z только проверяет подключение, ничего не отправляя, -v печатает результат. Сообщение об успешном подключении (succeeded или Connected, зависит от версии nc) значит, что порт открыт. Connection refused — до компьютера дошли, но там никто не слушает. Долгое ожидание и timed out — пакет потерялся по дороге: проброс не работает, мешает брандмауэр или NAT провайдера.
Test-NetConnection на Windows:
Test-NetConnection 203.0.113.10 -Port 25565Смотрите на последнюю строку: TcpTestSucceeded : True значит, что порт открыт, False — что нет. Параметр -Port проверяет именно TCP (документация Microsoft).
nc -vzu сообщает «успех» почти всегда, даже когда пакеты уходят в никуда. UDP-порт честно проверяет только сама программа: подключитесь к игровому серверу клиентом игры снаружи.Туннель вместо проброса
Если адрес серый, интернет мобильный или роутер чужой, открыть порт на роутере не получится. Но задача ведь не «открыть порт», а «дать друзьям или себе с работы подключиться к программе на домашнем компьютере». Её решает туннель, и ни роутер, ни белый адрес для него не нужны.
Клиент fxTunnel на вашем компьютере сам устанавливает исходящее соединение с сервером fxTunnel. Исходящие соединения работают за любым NAT, включая провайдерский и мобильный. Сервер выдаёт публичный порт, принимает на него подключения и передаёт их по этому соединению вашему клиенту, а клиент — локальной программе.
fxtun.ru:15432 fxtun.ru:15432 fxtunnel tcp 25565localhost:25565 Установите клиент. Linux и macOS:
curl -fsSL https://fxtun.ru/install.sh | shWindows, PowerShell:
irm https://fxtun.ru/install.ps1 | iexОткройте новый терминал и войдите в аккаунт (заводится на fxtun.ru, вход нужен один раз):
fxtunnel loginОткройте порт той программы, которая вам нужна. Например, сервер Minecraft Java на 25565:
fxtunnel tcp 25565Connecting to fxtunnel server...
Tunnel established!
TCP: fxtun.ru:15432
Forwarding to localhost:25565
Ready to receive connections
Адрес fxtun.ru:15432 и есть ваш «открытый порт». Друзья подключаются к нему вместо вашего IP. Номер у вас будет свой, из диапазона 10000–20000.
Для веб-интерфейсов, например NAS или Home Assistant, удобнее HTTP-туннель: fxtunnel http 8123 выдаст адрес вида https://lemon.fxtun.ru с готовым сертификатом.
Чем туннель отличается от проброса
| Проброс на роутере | Туннель | |
|---|---|---|
| Нужен белый IP | Да | Нет |
| Нужен доступ к роутеру | Да | Нет |
| Работает на мобильном интернете | Обычно нет | Да |
| Номер порта снаружи | Любой, какой задали | Из диапазона сервера: TCP 10000–20000, UDP 20001–30000 |
| Ваш домашний IP виден подключающимся | Да | Нет, они подключаются к серверу fxTunnel |
| Работает, когда клиент выключен | Да, пока включён сам сервис | Нет, только пока запущен fxtunnel |
Честно о том, что стоит знать заранее:
- Порт после перезапуска клиента новый. Пока
fxtunnelработает, порт держится и при обрыве сети возвращается тот же. Перезапустили — сервер выдаст первый свободный. Попросить конкретный номер можно флагом--remote-port 15432(только из диапазона и если его никто не занял). Если занят, клиент ответитFailed to connect: server rejected tunnel: port 15432 is already in use. - Один туннель — один порт. Если программе нужно два порта (у некоторых игр так), нужно два туннеля.
- На бесплатном тарифе один HTTP-туннель. TCP, UDP и до пяти туннелей сразу — с тарифа Base.
Чем туннель и проброс отличаются по безопасности, разобрано в статье «Туннель vs проброс портов».
Брандмауэр: что он блокирует, а что нет
Брандмауэр Windows или Linux тоже часто оказывается виновником «закрытого порта». Мешает он, правда, не при любой схеме.
При пробросе на роутере подключение приходит на компьютер из сети, и брандмауэр должен его пропустить. Windows при первом запуске сервера обычно сама спрашивает, разрешить ли программе доступ к сети. Если вы нажали «Отмена» или окна не было, правило можно создать вручную в PowerShell от администратора (документация Microsoft):
New-NetFirewallRule -DisplayName "Minecraft 25565" -Direction Inbound -Protocol TCP -LocalPort 25565 -Action AllowНа Linux с ufw:
sudo ufw allow 25565/tcpПри туннеле входящих подключений к компьютеру из сети нет. Клиент fxtunnel сам выходит в интернет исходящим соединением, а к программе обращается на этом же компьютере, по адресу 127.0.0.1. Правило для входящих ему не нужно, и брандмауэр обычно не мешает.
Но одно условие остаётся при любой схеме: программа должна слушать порт. Туннель не запускает сервер за вас. Если сервер игры не стартовал, клиент туннеля всё равно напишет Ready to receive connections, а соединение у друга сразу оборвётся. Проверка — та же, что в шаге 1: ss -ltnp или Get-NetTCPConnection.
Ещё одна ловушка: программа, которая слушает только внешний сетевой адрес компьютера (например, 192.168.1.10), а не 127.0.0.1 или все адреса (0.0.0.0). Клиент туннеля стучится на 127.0.0.1 и получает отказ. Обычно это настраивается в конфиге сервера, параметром вроде bind, listen или server-ip: оставьте его пустым или укажите 0.0.0.0.
Если открываете что-то серьёзнее игры
Открытый порт видят все, включая сканеры, которые круглые сутки перебирают адреса. Для удалённого рабочего стола, NAS и баз данных это реальный риск, и туннель его не отменяет: сервис за ним доступен из интернета так же, как при пробросе.
- Ограничьте, кто может подключаться:
fxtunnel tcp 3389 --allow-ip 203.0.113.10пропустит только указанный адрес.--allow-ipработает у HTTP-, TCP- и UDP-туннелей. - Пароль на уровне туннеля (
--auth user:пароль) есть только у HTTP-туннелей. Для TCP защищайтесь средствами самого сервиса: сложный пароль, NLA для RDP, вход по ключу для SSH. - Туннель, который нужен на пару часов, закрывайте по таймеру:
--max-lifetime 3h.
Про доступ к рабочему столу есть отдельная страница «Удалённый доступ».
Что дальше
- Если ещё не выяснили, серый ли у вас адрес, — «Серый IP: как узнать и что делать».
- Проброс и туннель коротко, на одной странице: «Проброс портов».
- Сайт, Nextcloud или Jellyfin дома без белого IP — домашний сервер без белого IP.
- Сравнение по безопасности — «Туннель vs проброс портов».
Когда нужен TCP или несколько туннелей
TCP и UDP доступны на платных тарифах: Base — 210 ₽/мес и 5 туннелей одновременно, Pro — 420 ₽/мес и 15 туннелей, Business — 630 ₽/мес и 50 туннелей. Free включает один HTTP-туннель с HTTPS.
Выберите клиент на странице скачивания: GUI для работы через графический интерфейс или CLI для терминала.
Читайте дальше
Как узнать, белый или серый IP: WAN-адрес, CGNAT и двойной NAT
Как проверить белый или серый IP по WAN-адресу роутера: частные диапазоны, CGNAT, двойной NAT, динамический публичный адрес и варианты доступа домой.
5 мин · Выпуск 25 октября 2026Туннель vs проброс портов — что безопаснее
Чем туннель безопаснее проброса портов на роутере: риски открытого порта, работа без статического IP и обход CGNAT — сравнение подходов.
10 мин · Обновлено 27 сентября 2026Как играть с другом по сети: открыть свой сервер без белого IP
Как подключить друга к своему игровому серверу без белого IP: найти порт, открыть TCP- или UDP-туннель и проверить вход в игру.
6 мин · Обновлено 12 октября 2026