Ответ
SNAT (Source Network Address Translation) — это операция трансляции сетевых адресов, при которой маршрутизатор или фаервол изменяет исходный IP-адрес пакета, исходящего из внутренней сети во внешнюю.
Основная цель: Позволить множеству хостов с приватными IP-адресами (например, из диапазона 192.168.1.0/24) выходить в интернет через один или несколько публичных IP-адресов шлюза.
Типичный сценарий и пример настройки в iptables:
# Маскировка всего исходящего трафика с сети 192.168.1.0/24 под публичный адрес шлюза (203.0.113.1)
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 203.0.113.1
# Или более распространённый вариант MASQUERADE (когда внешний IP динамический)
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
Отличие от DNAT:
- SNAT изменяет адрес отправителя и используется для исходящего трафика (клиенты → интернет).
- DNAT изменяет адрес получателя и используется для входящего трафика, чтобы перенаправлять запросы из интернета на внутренние сервисы (порт-форвардинг).
Применение в DevOps:
- В облачных средах (AWS VPC, GCP VPC) SNAT реализуется через NAT Gateway, чтобы инстансы в приватных подсетях могли скачивать обновления или обращаться к внешним API.
- В Kubernetes Service типа
NodePortилиLoadBalancerдля исходящего трафика подов часто использует SNAT на IP-адрес ноды.