Port-forwarding
Что это
Port-forwarding (проброс портов) — настройка на роутере, при которой входящие соединения на определённый порт внешнего IP направляются на конкретный порт внутреннего устройства в локальной сети.
Зачем нужен
По умолчанию из-за NAT устройства в домашней сети недоступны из интернета — они «за» роутером. Port-forwarding «пробивает дырку»:
- Запуск домашнего сервера (web, minecraft, torrent)
- Удалённый доступ по SSH или RDP к домашнему компу
- Камеры видеонаблюдения
- Хостинг VPN-сервера дома
Как работает
Интернет → [публичный IP:8080] → Роутер (NAT)
↓ правило: 8080 → 192.168.1.100:80
[192.168.1.100:80] ← локальный веб-сервер
Где настраивается
- Веб-интерфейс роутера: обычно раздел «NAT», «Port Forwarding», «Virtual Server», «Applications & Gaming»
- Указать: external port, protocol (TCP/UDP/оба), internal IP, internal port
- Желательно закрепить внутреннему устройству статический IP (DHCP reservation)
UPnP и NAT-PMP
Приложения могут сами открыть порт через UPnP или NAT-PMP (у Apple), если роутер это поддерживает. Удобно, но небезопасно: любое приложение может выставить твой комп в интернет. Часто отключают.
Проблема CGNAT
Многие провайдеры (особенно мобильные и часть проводных) применяют CGNAT (Carrier-Grade NAT) — у тебя нет своего белого IP, ты сидишь за огромным NAT провайдера. В этом случае port-forwarding не работает — прокидывать некуда. Решения:
- Заказать «белый IP» у провайдера (часто платная услуга)
- Использовать VPS-посредник с обратным туннелем (SSH, wireguard, frp)
- Решения типа Cloudflare Tunnel, Tailscale — обходят NAT без белого IP
iptables (Linux) вручную
iptables -t nat -A PREROUTING -p tcp --dport 8080 \
-j DNAT --to-destination 192.168.1.100:80
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT