Проброс портов (Port Forwarding) — что это и как настроить | Глоссарий FREEHOSTING

Port Forwarding

Проброс портов
Port Forwarding — Проброс портов — правило в роутере или firewall, перенаправляющее входящие пакеты с внешнего адреса и порта на внутренний хост за NAT. Открывает доступ к домашнему серверу или виртуалке из интернета.

Определение простыми словами

Port Forwarding (проброс портов, DNAT) — приём, при котором маршрутизатор подменяет адрес назначения у входящего пакета. Запрос приходит на публичный IP:80, а уходит на внутренний 192.168.1.50:8080. Снаружи кажется, что сервис висит на роутере, на деле он живёт на машине за NAT.

Технически это частный случай DNAT (Destination NAT). Для исходящих пакетов работает SNAT, для входящих — DNAT. На бытовых роутерах кнопка называется Port Forwarding, Virtual Server или Application. На Linux то же самое делается через iptables -t nat -A PREROUTING или nftables.

Сравнение подходов

Способ Уровень Когда использовать
Port Forwarding (DNAT) L3/L4 Доступ к внутреннему сервису по IP
Обратный прокси L7 Несколько сайтов на одном порту 443
VPN L3 Полный доступ к сети, не только к одному порту
SSH-туннель -L/-R L4 Временный доступ без правок роутера

Кейсы использования

  • Игровой сервер Minecraft или CS на домашнем ПК — пробрасываем 25565 с роутера на локальный IP.
  • Веб-камера или NAS дома: открываем 8080 наружу, защищаем паролем и firewall по белому списку IP.
  • RDP к рабочему компьютеру: проброс 3389 на конкретную машину, обязательно с длинным паролем и желательно через нестандартный внешний порт.
  • Тест веб-приложения с локалхоста через SSH-туннель ssh -R 80:localhost:8080 user@vps.
  • Негативный сценарий: проброс 22 наружу без смены порта и без fail2ban — за сутки в логах десятки тысяч брутфорс-попыток. Минимум — нестандартный порт и ключи вместо паролей.

Технические детали

Проброс TCP/8080 на внутренний 10.0.0.5:80 через iptables на Linux-шлюзе:

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 
  -j DNAT --to-destination 10.0.0.5:80

iptables -t nat -A POSTROUTING -o eth1 -p tcp -d 10.0.0.5 --dport 80 
  -j MASQUERADE

iptables -A FORWARD -p tcp -d 10.0.0.5 --dport 80 -j ACCEPT

# Проверка
iptables -t nat -L PREROUTING -n -v

На VPS без отдельного роутера то же самое делается локально: пробрасывается порт с публичного интерфейса на сервис внутри докера или на loopback-приложение.

Частые вопросы

Чем проброс портов отличается от обратного прокси?

Проброс работает на L3/L4, тупо пересылает пакеты на IP:порт. Обратный прокси (nginx, HAProxy) разбирает HTTP-заголовки и может маршрутизировать по доменам и URL — несколько сайтов на одном 443.

Опасно ли пробрасывать порт RDP наружу?

Да, 3389 — один из самых атакуемых. Если RDP нужен снаружи, поднимите VPN или RD Gateway, а проброс ограничьте по IP через firewall.

Почему не работает проброс при двойном NAT?

Провайдер выдал серый IP за CGNAT — внешние подключения до вас не доходят. Решения: попросить белый IP, поднять VPS как gateway или использовать Tailscale/ZeroTier.