Я в замешательстве, какова реальная разница между SNAT и Masquerade?
Если я хочу поделиться своим интернет-соединением в локальной сети, то должен ли я выбрать SNAT или Masquerade?
SNAT
Цель требует от вас , чтобы дать ему IP - адрес , чтобы применить ко всем исходящим пакетам. MASQUERADE
Цель позволяет придать ему интерфейс, и все , что адрес на этом интерфейсе адрес , который применяется ко всем исходящим пакетам. Кроме того, с SNAT
помощью отслеживания соединений ядра отслеживаются все соединения, когда интерфейс отключается и возвращается обратно; то же самое не верно для MASQUERADE
цели.
Хорошие документы включают HOWTO на сайте Netfilter и iptables
справочную страницу .
-j SNAT
(в отличие от отслеживания повторного использования-j MASQUERADE
), когда новое исходящее соединение с узла локальной сети использует тот же номер порта источника, что и разорванное исходящее соединение с того же узла локальной сети. В этом случае я могу представить, что входящие пакеты из старого исходящего соединения отправляются на узел, что приводит к путанице в его стеке TCP. Что касается преимущества -j SNAT, что если поле NAT сконфигурировано с тем же внешним IP-адресом, а ядро продолжает пересылку пакетов со старых соединений, а не отвечает RST?В основном,
SNAT
иMASQUERADE
делайте ту же самую исходную вещь NAT в таблице nat в цепочке POSTROUTING.Различия
MASQUERADE
не требует,--to-source
как это было сделано для работы с динамически назначенными IP-адресамиSNAT
работает только со статическими IP-адресами, поэтому имеет--to-source
MASQUERADE
имеет дополнительные издержки и работает медленнее, чемSNAT
потому, что каждый раз, когдаMASQUERADE
цель попадает в пакет, она должна проверять IP-адрес для использования.ПРИМЕЧАНИЕ . Типичный вариант использования для
MASQUERADE
: экземпляра AWS EC2 в VPC, он имеет частный IP-адрес в CIDR VPC (например, 10.10.1.0/24) - например, 10.10.1.100, он также имеет публичный IP-адрес для связи с Интернет (предположим, что он находится в общедоступной подсети), через который осуществляется приватный IP 1: 1 NAT. Публичный IP-адрес может измениться после перезагрузки экземпляра (если это НЕ EIP),MASQUERADE
это лучший вариант в этом случае использования.Важно: все еще возможно использовать
MASQUERADE
цель со статическим IP, просто учтите дополнительные издержки.Ссылки
Учебник по iptables
Учебник по NAT
источник