Что такое NAT, большинство узнаёт минут через десять после покупки. Nginx запустился, curl localhost отдаёт страницу, а браузер на ноутбуке просто крутит колёсико. Ничего не сломано. Просто у сервера нет собственного публичного IPv4, и единственная входная дверь — один проброшенный порт для SSH.
Этой одной двери хватает на удивительно много задач и совсем не хватает на некоторые очень частые. Если вы ещё выбираете между двумя типами тарифов, наша старая статья Выделенный IP или NAT VPS задаёт один вопрос, который всё решает. Эта статья о том, как жить с ответом: что NAT-сервер умеет на практике, где он упирается в стену и как выбраться, когда вы из него выросли.
Что вы на самом деле получаете
У NAT-сервера приватный адрес за нашим шлюзом. В кабинете указаны хост и персональный порт, и подключаетесь вы так:
ssh -p 20123 root@host
Этот порт ведёт на 22-й порт внутри вашего сервера. Все остальные входящие порты по IPv4 снаружи закрыты, и пробросить дополнительные нельзя. С исходящими всё иначе: сервер достаёт до чего угодно в интернете, кроме SMTP-портов 25 и 465 — они закрыты на всех тарифах, хоть NAT, хоть нет. Все правила — в разделе Сеть и порты.
И ещё одна деталь, важная для некоторых: исходящий адрес не ваш собственный. Трафик уходит через адрес, которым вы не управляете, поэтому обратный DNS для него не задать и репутацию отправителя на нём не построить.
Что спокойно работает за одним портом
Всё, что само начинает разговор. А это категория шире, чем кажется:
- Боты, которые опрашивают. Telegram-бот на long polling, Discord-бот на gateway-соединении, торговый бот, который ходит в API биржи. Всё это исходящие соединения.
- ИИ-агенты. Агенту, который вызывает API моделей, ходит по сайтам, пишет файлы и запускает код, не нужно, чтобы кто-то звонил ему. Ему нужны CPU, память и выход наружу.
- Воркеры и парсеры. Всё, что забирает задачи из очереди, обходит страницы или синхронизирует данные по расписанию.
- Сборочные машины и раннеры. CI-раннеры обычно сами регистрируются на сервере и забирают работу, так что на NAT им хорошо.
Для такой нагрузки самого дешёвого тарифа честно хватает. Nano — $3 в месяц за 2 vCPU, 1 GB RAM и 15 GB диска; Small — $8 за 4 vCPU, 4 GB и 35 GB. Полный список — на отдельной странице про NAT-тарифы.
Где одного порта мало
Стена — всё, где соединение должен начать кто-то другой.
Самое очевидное — сайт. Браузеры подключаются к 443-му порту (и к 80-му ради редиректа), а на NAT-тарифе этих портов снаружи просто нет. Повесить сайт на нестандартный порт тоже не выйдет — по крайней мере так, чтобы посетители с этим смирились.
Свой домен с HTTPS упирается в ту же стену дважды. DNS-запись можно направить на адрес шлюза, но ничего из пришедшего туда не попадёт на ваш сервер, кроме SSH-порта. А обычный способ получить бесплатный сертификат проверяет сервер на 80-м или 443-м порту.
Вебхуки ломаются тихо. Уведомления о платежах, платформа ботов, которая присылает обновления, Git-сервер, сообщающий о новом коммите, — всем им нужно достучаться до вас. Бот, который прекрасно работал на long polling, перестаёт работать ровно в тот момент, когда вы переводите его на вебхуки.
VPN-точкам, игровым и почтовым серверам входящие порты нужны по определению. Как и всему, что вы хотели бы открыть коллеге в браузере.
Обходные пути, честно
IPv6. Новые Linux-серверы получают публичный IPv6-адрес, и на NAT-тарифах он ведёт на сервер напрямую, на любой порт. Если все клиенты вашего сервиса — ваши (ноутбук, другие серверы, мониторинг с IPv6), это отлично работает. Для публичного сайта — нет: часть посетителей всё ещё сидит в сетях без IPv6 и страницу просто никогда не откроет. Windows-тарифы пока только с IPv4.
Туннель. Можно запустить небольшой агент, который держит исходящее соединение с ретранслятором где-то ещё, а тот пересылает публичный трафик обратно по туннелю. Это работает, и для демо или внутренней панели вполне разумно. Но для чего-то важного вы добавили третью сторону в середину каждого запроса и ещё одну вещь, которая может сломаться в три часа ночи.
SSH-туннель для себя. Если админка нужна только вам, не выставляйте её наружу вообще. Пробросьте её через SSH-порт, который у вас уже есть:
ssh -p 20123 -L 8080:localhost:8080 root@host
Потом откройте http://localhost:8080 у себя на машине. Это самый недооценённый приём на NAT-сервере, и к тому же он безопаснее, чем панель в открытом интернете.
Моё честное мнение: IPv6 и SSH-туннели — хорошие инструменты. А постоянный публичный сервис, пущенный через туннель только потому, что у сервера нет IPv4, обычно означает, что вы из NAT выросли.
Переход на свой IPv4 без переустановки
Ничего пересобирать не нужно. Откройте сервер в кабинете, выберите «Сменить тариф» и тариф с выделенным IP того же размера или больше. Сервер один раз перезагрузится и вернётся со своим публичным IPv4, своим диском и всем, что вы установили. Порты 80, 443 и всё, что вы откроете в фаерволе, станут доступны снаружи, а SSH переедет на обычный 22-й порт. Подробности — в разделе Смена тарифа.
Перед тем как нажать, полезно знать несколько вещей:
- Вы доплачиваете пропорциональную разницу до конца текущего периода, с баланса. Nano-IP стоит $8 в месяц против $3 за Nano; Small-IP — $16 против $8.
- Нужен свободный адрес в локации вашего сервера. Если сейчас его нет, кабинет скажет об этом до любого списания.
- Если вы правили сетевую конфигурацию внутри сервера руками, проверьте её после перезагрузки. На стандартном образе всё применяется само.
- Сначала сделайте бэкап. Это всего одна перезагрузка, но данные всё-таки ваши.
Где NAT не подходит — и где не подходит IPv4
NAT — неправильный выбор для всего публичного, для всего, что принимает вебхуки, и для всего, чему нужен фиксированный адрес, который кто-то внесёт в allowlist. Не тратьте дни на то, чтобы это обойти. Разница между Nano и Nano-IP — $5 в месяц.
Но и выделенный IPv4 — не волшебство. Он не заставит сайт, который блокирует адреса дата-центров, пустить вас, и не спасёт парсер от лимитов: такие решения принимаются по сети, в которой вы находитесь, а не по тому, кто ещё пользовался адресом. А если весь ваш проект — пара ботов и агент, покупать IPv4, на который никто никогда не подключится, — деньги на ветер.
Если вы всё равно планируете переезд на конфигурацию побольше, в статье Как перенести VPS без простоя расписан порядок действий, а Как читать характеристики VPS поможет при сравнении тарифов.
Комментарии
Пока нет комментариев. Будьте первым.