Проброс портов — это механизм, который превращает NAT VPS с общим IPv4-адресом в полноценный сервер, доступный из интернета. Именно благодаря пробросу портов виртуальная машина за 59 ₽/мес принимает входящие подключения: VPN, веб-приложения, боты с вебхуками, прокси. В этой статье разберём, как устроены NAT-порты технически: почему их именно 999, как работает правило DNAT на стороне хостера, как запустить свой сервис на выданном порту и проверить его доступность снаружи. Всё — на примере NAT VPS линейки Cheap-Host в Германии, где каждый сервер получает 999 портов TCP/UDP плюс отдельный порт для SSH.
Почему у NAT VPS общий IP-адрес
Свободные IPv4-адреса закончились ещё в 2019 году, и сегодня каждый выделенный адрес — это заметная часть себестоимости сервера (подробно мы разбирали это в статье о дефиците IPv4). NAT VPS решает проблему иначе: десятки серверов делят один публичный IPv4, а различаются они номерами портов.
Схема выглядит так:
- у хостера есть публичный адрес, условно
203.0.113.10; - каждый NAT VPS получает приватный адрес внутри сети хостера, например
10.0.15.42; - за каждым сервером закрепляется свой диапазон внешних портов — например,
21000–21998; - всё, что приходит на
203.0.113.10в этот диапазон, автоматически передаётся на ваш сервер.
Это и есть проброс портов (port forwarding, DNAT — destination NAT). Для исходящих соединений ничего пробрасывать не нужно: ваш сервер свободно ходит в интернет через SNAT, как домашний компьютер за роутером. Ограничение касается только входящих подключений — они возможны лишь на порты из вашего диапазона.
Как работает проброс портов: DNAT на пальцах
На маршрутизаторе хостера выполняется правило трансляции адресов. В терминах iptables оно выглядит примерно так (это конфигурация на стороне провайдера, вам её настраивать не нужно — она уже работает):
iptables -t nat -A PREROUTING -d 203.0.113.10 -p tcp --dport 21000:21998 -j DNAT --to-destination 10.0.15.42
iptables -t nat -A PREROUTING -d 203.0.113.10 -p udp --dport 21000:21998 -j DNAT --to-destination 10.0.15.42
Читается это так: «любой TCP- или UDP-пакет, пришедший на публичный IP в порты 21000–21998, переслать на приватный адрес 10.0.15.42, сохранив номер порта». Диапазон из 999 портов покрывает практически любые задачи: одному сервису нужен один порт, значит, параллельно можно держать сотни служб.
Важная деталь реализации у Cheap-Host: номер порта при пробросе не меняется. Если снаружи клиент стучится на 203.0.113.10:21443, то на вашем сервере пакет придёт тоже на порт 21443. Это упрощает жизнь: достаточно настроить приложение слушать порт из своего диапазона — и никаких дополнительных правил не требуется.
Отдельно пробрасывается SSH: каждому серверу выдаётся индивидуальный внешний SSH-порт вне общего диапазона, который транслируется на порт 22 внутри виртуальной машины. Подключение выглядит так:
ssh root@203.0.113.10 -p 34567
Практика: запускаем сервисы на своих NAT-портах
Предположим, ваш диапазон — 21000–21998. Разберём три типовых сценария на Ubuntu 24.04.
Веб-приложение на Nginx
Меняем порт в конфигурации сайта:
sudo nano /etc/nginx/sites-available/default
В блоке server указываем порт из диапазона:
server {
listen 21080;
listen [::]:21080;
server_name _;
root /var/www/html;
}
Проверяем и перезапускаем:
sudo nginx -t
sudo systemctl reload nginx
Сайт станет доступен по адресу http://203.0.113.10:21080. Если нужен «красивый» адрес без порта — поставьте перед сервером бесплатный CDN или обратный прокси, который принимает трафик на 80/443 и передаёт на ваш нестандартный порт.
VPN на WireGuard
WireGuard работает по UDP, и ему всё равно, какой номер порта использовать. В /etc/wireguard/wg0.conf задаём порт из диапазона:
[Interface]
Address = 10.8.0.1/24
ListenPort = 21500
PrivateKey = <ваш_ключ>
В конфигурации клиента указываем Endpoint = 203.0.113.10:21500. Пошаговая настройка — в статье про личный VPN на WireGuard.
Telegram-бот с вебхуком
Telegram принимает вебхуки только на порты 443, 80, 88 и 8443, которых в NAT-диапазоне нет. Решения два: либо использовать long polling (бот сам опрашивает Telegram, входящие порты не нужны вообще), либо пропустить вебхук через прокси-слой, слушающий 443. Для большинства ботов long polling проще и надёжнее — как это развернуть, читайте в статье про Telegram-бота на VPS.
Как проверить, что порт проброшен и открыт
Диагностику ведём с двух сторон. Сначала убеждаемся, что сервис слушает порт локально:
sudo ss -tulpn | grep 21080
В выводе должна быть строка вида LISTEN 0 511 0.0.0.0:21080. Если сервис слушает только 127.0.0.1:21080 — снаружи он недоступен, поправьте директиву listen или bind в конфигурации.
Затем проверяем порт снаружи — с домашнего компьютера или другого сервера:
# TCP-порт
nc -zv 203.0.113.10 21080
# UDP-порт (WireGuard и подобные)
nc -zvu 203.0.113.10 21500
# HTTP-сервис целиком
curl -I http://203.0.113.10:21080
Не забудьте про локальный файрвол: если на сервере включён UFW, разрешите свои порты:
sudo ufw allow 21000:21998/tcp
sudo ufw allow 21000:21998/udp
sudo ufw status verbose
Ограничения NAT-портов: что нужно учитывать
Проброс портов покрывает 95% задач, но честный список ограничений выглядит так:
- Стандартные порты заняты. 80, 443, 53 и другие well-known порты общего IP нельзя занять — они одни на всех. Сервисы работают на портах из вашего диапазона.
- Порт 25 закрыт. На NAT VPS Cheap-Host исходящий SMTP заблокирован — это защищает общий IP от попадания в спам-листы. Почту отправляйте через внешние SMTP-сервисы по портам 465/587.
- Общая репутация IP. Если сосед по адресу нарвался на блокировку конкретного сервиса, это может задеть и вас. На практике встречается редко: за портом 25 и злоупотреблениями хостер следит.
- PTR-запись не настроить. Обратная DNS-зона принадлежит общему IP, свою PTR-запись повесить нельзя — ещё одна причина не строить на NAT VPS почтовый сервер.
Если ваша задача упирается в эти ограничения — нужен классический VPS с выделенным IPv4. Подробное сравнение по задачам — в статье NAT VPS или обычный VPS.
Каким задачам хватает 999 портов
Практически всем, где сервер работает «на себя», а не раздаёт контент широкой публике на стандартных портах:
| Задача | Сколько портов нужно | Подходящий тариф |
|---|---|---|
| Личный VPN (WireGuard/OpenVPN) | 1 UDP или 1 TCP | NAT Start, 59 ₽/мес |
| Telegram/Discord-бот | 0 (long polling) | NAT Start, 59 ₽/мес |
| Прокси-сервер (Squid, 3proxy) | 1–2 TCP | NAT Base, 99 ₽/мес |
| Парсеры, cron-скрипты | 0 | NAT Pro, 199 ₽/мес |
| Тестовый стенд, pet-проекты | 1–10 | NAT Plus, 349 ₽/мес |
Все NAT VPS Cheap-Host размещаются в Германии, работают на KVM с NVMe-дисками, трафик безлимитный, канал 100 Мбит/с. Сервер разворачивается автоматически за 45–60 секунд: оплатили — получили IP, SSH-порт и диапазон портов.
FAQ: частые вопросы о NAT-портах
Можно ли на NAT VPS запустить сайт на стандартном порту 443?
Напрямую нет: порт 443 общего IP один на всех клиентов. Сайт запускают на порту из своего диапазона (например, 20443) или прячут за CDN/прокси, который принимает трафик на 443 и передаёт на ваш нестандартный порт.
999 портов — это TCP или UDP?
И то и другое: каждый номер порта из диапазона проброшен одновременно по TCP и по UDP. На одном номере может работать WireGuard (UDP), на соседнем — веб-приложение (TCP).
Почему на NAT VPS закрыт порт 25?
Чтобы общий IPv4 не попадал в спам-листы из-за одного недобросовестного клиента. Почту отправляйте через внешние SMTP-релеи по портам 465 или 587.
Как узнать свой диапазон портов?
Он указан в панели управления и в письме с доступами после создания сервера. Там же — отдельный внешний SSH-порт, не входящий в общие 999.
Хватит ли NAT VPS за 59 рублей для VPN и бота одновременно?
Да. WireGuard занимает один UDP-порт и десятки мегабайт памяти, бот на long polling портов не требует вовсе. NAT Start (1 vCPU, 1 ГБ RAM, 10 ГБ NVMe) тянет такую связку с запасом.
Вывод
Проброс портов — это не костыль, а зрелая технология, которая делает NAT VPS в разы дешевле классического сервера при той же функциональности для типовых задач. 999 портов TCP/UDP закрывают потребности VPN, ботов, прокси и pet-проектов, а ограничения (стандартные порты, SMTP, PTR) важны лишь для узкого класса сценариев. Если хотите попробовать — у Cheap-Host NAT VPS в Германии от 59 ₽/мес: KVM, NVMe, безлимитный трафик, 999 портов и выдача сервера за минуту. Тарифы — на cheap-host.onl.