Різниця між SNAT і Маскарадом


39

Мене бентежить, яка насправді різниця між SNAT та Маскарадом?

Якщо я хочу поділитися своїм Інтернет-з'єднанням у локальній мережі, то чи слід вибрати SNAT або Masquerade?

Відповіді:


41

SNATМета вимагає від вас , щоб дати йому IP - адреса , щоб застосувати до всіх вихідних пакетів. MASQUERADEМета дозволяє надати йому інтерфейс, і все , що адреса на цьому інтерфейсі адреса , який застосовується до всіх вихідних пакетів. Крім того, з SNAT, відстеження з'єднання ядра відслідковує всі з'єднання, коли інтерфейс знімається та повертається назад; те ж саме не стосується MASQUERADEцілі.

Хороші документи включають HOWTO на веб-сайті Netfilter та iptablesman man .


2
У мене виникають проблеми з розумінням переваги SNAT. Чому це важливо, якщо ядро ​​відстежує з'єднання чи ні, коли інтерфейс виходить з ладу? Щодо MASQUERADE, документи Netfilter говорять: "Але що важливіше, якщо посилання перестає працювати, то з'єднання (які тепер втрачені в будь-якому випадку) будуть забуті, що означає меншу кількість глюків, коли з'єднання повертається з новою IP-адресою". Звучить розумно (хоча які глюки?) Тепер дивлячись на SNAT, у чому полягає користь відстеження втрачених зв’язків? Чому б не використовувати MASQUERADE кожен раз?
Карл Г

1
@CarlG, я думаю, що глюки відбуватимуться з постійно відстежуваним -j SNAT(на відміну від відстеження повторної переробки -j MASQUERADE), коли нове вихідне з'єднання з вузла локальної мережі використовує той самий номер вихідного порту, що і розірване вихідне з'єднання з того ж вузла локальної мережі. У цьому випадку я можу уявити вхідні пакети зі старого вихідного з'єднання, що надсилаються до вузла, переплутуючи його стек TCP. Що стосується переваги -j SNAT, що робити, якщо NAT-поле встановлено з однаковою зовнішньою IP-адресою і ядро ​​зберігає пересилання пакетів зі старих з'єднань замість відповіді з RST?
вугор ghEEz

SNAT корисний, якщо, наприклад, у вас є декілька IP-адрес, призначених вихідному інтерфейсу, і ви хочете, щоб джерело NAT було певним з них.
pgoetz

20

В принципі , SNATі MASQUERADEробити той же самий джерело 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-адресою, просто знайте про додаткові накладні витрати.

Список літератури

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.