Различие между SNAT и подменой

Как camh упомянутый, - просто соглашение о присвоении имен, используемое некоторыми программами. Если Вы захотите обратиться к этим потокам с дескриптором файла, то оболочка распознает, jiliagre был корректен в наличии, Вы используете имя /dev/stdin или /dev/stdout вместо этого. Те имена файлов должны работать любое место, нормальное имя файла работало бы.

  1. Однако Ваш первый пример довольно глуп. Любой вывод, который был бы пойман оператором перенаправления для записи в файл, уже находится НА стандартном выводе, таким образом перенаправляя его и обратной записи его туда, где он прибыл из, бесполезно. Поведение, которое Вы используете, существует канал, не перенаправление:

    echo hello |
    
  2. В Вашем втором примере просто необходимо дать, может некоторый признак, что Вы хотите прибрежный файл того имени, не внутренний псевдоним, который это имеет. Можно сделать это самое легкое путем определения пути к файлу как это:

    cat ./-
    

40
30.05.2015, 00:32
3 ответа

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

Хорошие документы включают ПРАКТИЧЕСКИЕ РУКОВОДСТВА в сайт Netfilter и iptables страница справочника.

41
27.01.2020, 19:35
  • 1
    я испытываю затруднения при понимании преимущества SNAT. Почему имеет значение, если ядро отслеживает соединения или не, когда интерфейс понижается? Относительно ПОДМЕНЫ говорится в netfilter документах, "Но что еще более важно, если ссылка понижается, соединения (которые теперь потеряны так или иначе) забыты, означая меньше незначительных сбоев, когда соединение возвращается с новым IP-адресом". Звучит разумным (хотя, каковы незначительные сбои?) Теперь смотрящий на SNAT, что преимущество отслеживания является потерянными соединениями? Почему бы не использовать ПОДМЕНУ каждый раз? –  Carl G 09.11.2016, 14:29
  • 2
    @CarlG, я предполагаю, что незначительные сбои произошли бы с постоянно отслеженный -j SNAT (в противоположность отслеживанию переработки с -j MASQUERADE) когда новое исходящее соединение от узла LAN использует тот же номер исходного порта в качестве разъединенного исходящего соединения от того же узла LAN. В этом случае я могу вообразить входящие пакеты от старого исходящего соединения отправленными в узел, путая его стек TCP. Что касается преимущества-j SNAT, что, если поле NAT настроено с тем же внешним IP-адресом и ядром, продолжает передавать пакеты от старых соединений вместо того, чтобы ответить с RST? –  eel ghEEz 18.03.2018, 16:50

В основном SNAT и MASQUERADE делают один и тот же NAT источника в таблице nat в цепочке POSTROUTING.

Различия

  • MASQUERADE не требует --to-source, так как он был создан для работы с динамически назначаемыми IP

  • SNAT работает только со статическими IP, поэтому он имеет --to-source

  • MASQUERADE имеет дополнительные накладные расходы и медленнее, чем SNAT, потому что каждый раз, когда цель MASQUERADE получает пакет, он должен проверить IP-адрес для использования.

NOTE: Типичный случай использования MASQUERADE: Экземпляр AWS EC2 в VPC, у него есть частный IP в пределах VPC CIDR (например, 10.10.1.0/24) - 10.10.1.100, например, у него также есть публичный IP для связи с Интернетом (предположим, он находится в публичной подсети), через который частный IP 1:1 NAT. Публичный IP может измениться после перезагрузки экземпляра (если это НЕ EIP), MASQUERADE является лучшим вариантом в этом случае.

Важно: все еще можно использовать MASQUERADE со статическим IP, просто помните о дополнительных накладных расходах.

Ссылки

20
27.01.2020, 19:35

Краткий ответ :используйте SNAT

Объяснение :Я только что попытался удалить правило маскарада на моем маршрутизаторе raspbian (, который взаимодействует с другим маршрутизатором, через eth0, где IP-адрес интерфейса 192.168.8.2 и является статическим ), и общий доступ к Интернету продолжался. работай. Команды, которые я пробовал, были:-

iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.8.2
2
27.01.2020, 19:35

Теги

Похожие вопросы