Гайд по сетям · 2 мин чтения

Что такое CGNAT и как его обойти

Если ваш публичный IP начинается со 100.64 или друзья не могут подключиться к вашему серверу — вероятно, провайдер держит вас за CGNAT, деля один публичный адрес между многими клиентами. Объясняем, что это значит и какие есть реальные обходные пути.

Дефицит IPv4, переложенный на вас

Carrier-Grade NAT (CGNAT) — это то, как провайдеры выкручиваются из-за исчерпания адресов IPv4. Вместо того чтобы дать каждому абоненту уникальный публичный IP, провайдер сажает сотни или тысячи абонентов за один общий публичный адрес и транслирует их соединения на большом операторском маршрутизаторе. Идея та же, что и у NAT в вашем домашнем роутере, только этажом выше и сразу на много домохозяйств. В обычном сёрфинге вы этого не замечаете: исходящие соединения работают нормально. Проблема — во входящих.

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

Как понять, что вы за ним

Есть быстрая проверка. Узнайте свой публичный IP на сайте «what is my IP», а затем посмотрите, какой IP показывает страница состояния WAN в вашем роутере. Если они разные — роутер считает своим WAN-адресом приватный, а мир видит другой — вы за CGNAT. Явный признак — WAN-адрес из диапазона 100.64.0.0/10, зарезервированного именно под CGNAT, или приватный на вид WAN-адрес (10.x, 172.16–31.x, 192.168.x) там, где вы ожидали публичный.

Симптомы все про входящие соединения: проброс портов в роутере ничего не даёт, друзья не могут зайти на игру, которую вы хостите, самостоятельно поднятые сервисы недоступны снаружи, а BitTorrent еле ползёт без входящих пиров. Всё, что вы пытаетесь хостить, не работает, хотя всё, что вы посещаете, открывается нормально.

Реальные способы это обойти

Победить CGNAT со своей стороны не выйдет, потому что не хватает именно того, что лежит у провайдера, — публичного IP, который принадлежит вам. Честные варианты: 1) Попросите провайдера дать публичный/статический IP; многие дают, иногда за небольшую доплату. 2) Арендуйте VPS и поднимайте сервис там или сделайте туннель к нему через WireGuard, чтобы публичный IP этого VPS стал фасадом для вашего домашнего сервиса — стандартное решение самохостеров. 3) Возьмите выделенный (персональный) IP: адрес, закреплённый за вами, который — в отличие от общего под CGNAT — реально можно направить на ваш сервис и внести в белый список.

Общая логика та же, что и с пробросом портов: лекарство от «у меня нет настоящего публичного IP» — это получить такой IP под свой контроль. Общий выход VPN для входящего хостинга этого не даёт, а VPS плюс выделенный IP — даёт: стабильный адрес и порты, которые ваши. Это прямой и честный путь от «я за CGNAT» к «я доступен снаружи».

FAQ

Ответы на вопросы

Как узнать, что я за CGNAT?

Сравните публичный IP, который показывает сайт «what is my IP», с WAN-адресом в вашем роутере. Если они разные или WAN-адрес роутера из диапазона 100.64.0.0/10 (либо приватного 10/172/192), вы за CGNAT: провайдер делит один публичный адрес между многими клиентами.

Может ли VPN решить проблему CGNAT?

Общий выход VPN для входящего хостинга — нет, он тянет только исходящий трафик. Реальные решения: попросить у провайдера публичный IP, поднять сервис на VPS и сделать к нему туннель или взять выделенный IP под своим контролем, который действительно можно направить на ваш сервис.

Получите настоящий IP под своим контролем

CGNAT забирает у вас доступный снаружи адрес; VPS с выделенным IP от s4m возвращает его — стабильный публичный IP и порты, которые ваши, так что входящие соединения просто работают.

Эту страницу нашли по запросу

Реальные поисковые фразы, на которые отвечает эта страница — по ссылкам откроются материалы, раскрывающие тему глубже.