Как проверить, есть ли у вас серый IP
CGNAT по-человечески: что это такое, почему из-за него не открываются порты и как проверить за 5 минут.
1. Что такое «серый» IP и CGNAT?
Каждый дом с интернетом получает от провайдера два адреса, и они не всегда совпадают:
- Белый (публичный) IP — единственный в мире адрес вашего канала. К нему можно подключиться «снаружи»: сделать собственный VPN-сервер, открыть порт для игры или сайта.
- Серый (частный) IP — адрес вида
10.x.x.x,100.64.x.xили192.168.x.x, которые выдаёт провайдер внутри своей сети. Снаружи никого к тебе не «видит» интернет — когда ты подключён к собеседнику, тот видит не твой адрес, а общий адрес провайдера.
CGNAT (Carrier-Grade NAT) — это когда провайдер прячет тысячи клиентов за одним внешним IP. Так экономят IPv4-адреса, которых в мире уже не хватает. В России под CGNAT массово работают Т-Мобайл (мобильный), многие оптоволоконные операторы в регионах и все «домашки» без отдельной строчки в тарифе про IPv4.
2. Три быстрых способа проверить
Способ 1. Сравни два IP (самый простой)
Открой любой сайт, показывающий твой внешний IP — например 2ip.ru или whatismyipaddress.com — и запиши адрес. Затем посмотри IP своего роутера/сервера:
- На роутере: страница администрирования → «Состояние интернета». Обычно WAN-адрес вида
100.64.x.x,10.x.x.x— это и есть признак серого. - На ПК/Linux:
ip a(илиipconfigв Windows). Это адрес из твоей локальной сети — они всегда начинаются с10.,172.16–31.,192.168..
Вывод. Если увиденный на сайте внешний IP в точности совпадает с адресом на интерфейсе роутера (тот, что глядит в интернет) — у тебя белый IP. Если они отличаются и роутер показывает 100.64.x.x / 10.x.x.x — с высокой вероятностью вы за CGNAT.
Способ 2. Команда в терминале (Linux/macOS/WSL)
Спросил у внешнего сервиса твой публичный IP и прокачай маршрут — но проще одну команду:
# IP, который помнит и видит внешний сервис:
curl -s ifconfig.me ; echo
# Внутренний адрес твоего маршрутизатора (gateway):
ip route | grep default | awk '{print $3}'
Отправь оба значения на 2ip.ru и сравни: публичный IP у тебя на руках, а внутренний (gateway, обычно 192.168.1.1) всегда одинаков снаружи не видно. Ключевая мысль: если внешний IP, который видит интернет, НЕ равен адресу твоего WAN-интерфейса и попадает в диапазон 100.64.0.0/10 — это точно CGNAT.
Способ 3. Проверка на порт (точечный тест)
Он более нагляден. Подними на роутере/сервере любое приложение на конкретном порту (например 8000), пробрось маршрутизатор, а потом с внешнего сервиса, например portchecker.co, попробуй открыть этот порт на своём белом IP. Если порт «closed» даже после включения проброса — почти наверняка ты за NAT/CGNAT и снаружи к тебе не пробиться напрямую.
3. Что делать, если у тебя серый IP
Решения от «правильного» к простому:
- Попросить у провайдера белый IP — часто платно или после звонка. Мобильные операторы (Т-Мобайл, Мегафон) обычно дают белый IP в настройках сим-карты, но он привязан конкретному сеансу.
- Туннель (по этому и живёт Selfunnel) — это решает проблему раз и навсегда. Ты не открываешь порты, а публикуешь свои сервисы через исходящее соединение: запускаешь клиент selfunnel, он сам поднимает безопасный туннель до нашего сервера с белым IP, и любой сайт/Proxmox/NAS/умный дом становится доступен наружу по поддомену
*.selfunnel.ru, даже если у тебя 3-й уровень CGNAT захерен в 3 слоя. - Хостинг/VPS — если сервис должен работать постоянно и не важен строго твой сервер, перенеси его на арендованную VPS.
4. Мифы про серый IP
- «У меня статический IP — значит, белый» — не факт. Статическим может быть и серый (провайдер выдает стабильный внутренний адрес). Проверять надо всегда по факту, командой выше.
- «Включу DMZ на роутере — помогло» — DMZ открывает доступ внутри твоей сети, но если снаружи твой IP не роутится, это не поможет ничего наружу.
- «У меня IPv6, так что проблем нет» — во многих случаях IPv6 у тебя настоящий, но старые сервисы и клиенты ходят по IPv4, и некоторые провайдеры не выдают white IPv4 — туннель решает сразу.