Определение простыми словами
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.