Что такое Port Forwarding и как он применяется в DevOps?

«Что такое Port Forwarding и как он применяется в DevOps?» — вопрос из категории Сети, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Port Forwarding (проброс портов) — это сетевая техника перенаправления трафика, поступающего на определенный порт и IP-адрес одного сетевого интерфейса, на другой порт и, возможно, другой IP-адрес.

В контексте DevOps и администрирования он используется для двух основных целей:

1. Доступ к сервисам в изолированных сетях

Это наиболее частая задача для отладки и администрирования.

  • Локальный проброс к Pod в Kubernetes:
    kubectl port-forward pod/myapp-pod 8080:80
    # Теперь локальный localhost:8080 перенаправляется на порт 80 внутри пода.
  • Проброс к сервису:
    kubectl port-forward svc/my-service 5432:5432
    # Позволяет подключиться к БД внутри кластера с локальной машины.
  • SSH туннелирование для доступа к внутренним ресурсам (бастион-хост):
    ssh -L 3306:internal-db.prod:3306 user@bastion-host.example.com
    # Соединение с localhost:3306 будет зашифрованно перенаправлено через bastion-host на internal-db.prod:3306.

2. Настройка сетевой инфраструктуры (на уровне ОС или облака)

  • Через iptables (Linux):
    # Проброс порта 80 с публичного интерфейса на внутренний веб-сервер
    iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to-destination 10.0.1.5:8080
    iptables -A FORWARD -p tcp -d 10.0.1.5 --dport 8080 -j ACCEPT
  • В облачных провайдерах: Правила брандмауэра и балансировщиков нагрузки (AWS Security Groups, GCP Firewall Rules) часто реализуют логику проброса портов для публичного доступа к приватным инстансам.

Важное предупреждение: Port Forwarding для доступа к продакшен-сервисам — это инструмент для отладки и аварийного доступа. Для постоянного доступа следует использовать VPN, приватные каналы (VPC Peering, PrivateLink) или балансировщики нагрузки, настроенные в соответствующей сети.