CGNAT (Carrier-Grade NAT) — это трансляция адресов на оборудовании оператора связи: один публичный адрес выдаётся сразу многим абонентам. Для вас это означает адрес из диапазона 100.64.0.0/10 и невозможность принять входящее соединение снаружи.
Причина в том, что адресов четвёртой версии не хватило на всех, и провайдеры решили это разделением: один публичный адрес выдаётся сразу многим абонентам, а трансляция происходит на оборудовании оператора. Называется это CGNAT — Carrier-Grade NAT.
Для большинства сценариев разницы нет. Для VPN она есть, и не всегда очевидная.
Как понять, что вы за CGNAT
Два признака, и нужны оба.
Первый. Адрес на вашем роутере — из диапазона 100.64.0.0/10. Этот диапазон выделен специально под нужды операторов: он не частный и не публичный, а промежуточный. Иногда вместо него используются обычные частные адреса — 10.x.x.x или 192.168.x.x — на внешнем интерфейсе роутера.
Второй. Адрес, который показывает сайт проверки IP, не совпадает с адресом на внешнем интерфейсе роутера. Если они разные — между вами и интернетом есть ещё один слой трансляции, и он не ваш.
Что при этом работает нормально
Исходящие соединения. Ваш клиент сам обращается к серверу, оборудование оператора создаёт запись в таблице трансляции и пропускает ответы обратно.
Поэтому обычный VPN-клиент за CGNAT работает: и WireGuard, и OpenVPN, и стек Xray. Никаких особых настроек не требуется, туннель поднимается штатно.
Что не работает
Входящие соединения. Своего публичного адреса у вас нет, проброс портов на роутере не помогает — трансляцию делает оборудование провайдера, и вы им не управляете.
Отсюда следствия: не поднять свой VPN-сервер дома, не открыть доступ к камере или файловому хранилищу, не работает часть игр в режиме прямого соединения между игроками.
Обратите внимание: пользоваться VPN за CGNAT можно, раздавать — нет. Это разные роли, и путают их часто.
Неочевидное: тайм-ауты становятся короче
Оборудование оператора держит записи трансляции для тысяч абонентов, и память у него не бесконечная. Поэтому неактивные записи вычищаются агрессивнее, чем на домашнем роутере: для UDP это могут быть десятки секунд вместо нескольких минут.
Для VPN это означает, что соединение, по которому давно ничего не шло, тихо перестаёт работать. WireGuard использует UDP и особенно к этому чувствителен — длинные соединения с редким трафиком страдают первыми.
Лечится тем же параметром, что и обычные тайм-ауты NAT:
[Peer]
PersistentKeepalive = 25
За CGNAT эта строка перестаёт быть необязательной. Если её нет, симптом будет плавающим: после паузы соединение «просыпается» не сразу или требует переподключения.
Двойной NAT и диагностика
За CGNAT ваш трафик проходит трансляцию дважды: сначала на домашнем роутере, потом на оборудовании оператора. Это не ломает работу, но усложняет разбор проблем — стандартные проверки перестают отвечать однозначно.
Практическое следствие: увидев странное поведение, сначала выясните, есть ли CGNAT. Иначе легко потратить время на настройку проброса портов, который в принципе не может сработать.
Как это влияет на скорость
Прямого влияния почти нет: трансляция выполняется аппаратно и задержку добавляет незначительную. Но оборудование оператора — общий ресурс, и в часы пиковой нагрузки оно может становиться узким местом.
Проявляется это ростом потерь и скачками задержки, а не ровным падением скорости. Если замеры показывают нестабильный результат при стабильном канале до провайдера, общая точка трансляции — один из подозреваемых.
Что можно сделать
Заказать публичный адрес. Большинство операторов предоставляют его как платную услугу. Это единственный способ вернуть возможность входящих соединений.
Убедиться, что keepalive настроен. Бесплатно и снимает большую часть плавающих симптомов.
Выбрать транспорт поверх TCP. Записи трансляции для TCP живут дольше, чем для UDP, потому что у протокола есть явные признаки начала и конца соединения. Если UDP-туннель за CGNAT ведёт себя нестабильно, стек Xray на TCP обычно оказывается устойчивее.
Коротко
CGNAT — это общий публичный адрес на многих абонентов. Пользоваться VPN он не мешает: исходящие соединения работают как обычно. Мешает он раздавать — свой сервер за ним не поднять никакими настройками роутера. Побочный эффект, о котором забывают: короткие тайм-ауты трансляции, из-за которых UDP-туннели отваливаются в паузах. Строка PersistentKeepalive = 25 за CGNAT обязательна.