Как обходятся таблицы и цепочки iptables

22

Я знаю, что в linux есть 3 встроенные таблицы, и у каждой из них есть свои цепочки:

ФИЛЬТР : ПРЕДУПРЕЖДЕНИЕ, ВПЕРЕД, ПОСТРОЕНИЕ

NAT : PREROUTING, INPUT, OUTPUT, POSTROUTING

МАНГЛ : ПРЕДОХРАНИТЕЛЬ , ВХОД, ВПЕРЕД, ВЫХОД, ВЫПУСК

Но я не могу понять, как они пройдены, в каком порядке, если есть. Например, как они проходят, когда:

  1. Я отправляю пакет на ПК в моей же локальной сети
  2. когда я отправляю пакет на компьютер в другой сети
  3. когда шлюз получает пакет и должен переслать его
  4. когда я получу пакет, предназначенный для меня
  5. любой другой случай (если есть)
zer0uno
источник

Ответы:

28

В Википедии есть отличная диаграмма, показывающая порядок обработки.

Для получения более подробной информации вы также можете посмотреть документацию по iptables, в частности главу об обходе таблиц и цепочек . Который также включает в себя блок-схему .

Порядок меняется в зависимости от того, как используется netfilter (в качестве моста или сетевого фильтра, и от того, взаимодействует ли он с прикладным уровнем).

Как правило (хотя в приведенной выше главе есть подробности о дьяволе), цепочки обрабатываются следующим образом:

  • Смотрите цепочку INPUT как «входящий трафик извне к этому хосту».
  • Смотрите цепочку FORWARD как «трафик, который использует этот хост в качестве маршрутизатора» (источник и назначение не являются этим хостом).
  • видеть цепочку OUTPUT как «трафик, который этот хост хочет отправить».
  • PREROUTING / POSTROUTING имеет различное использование для каждого из типов таблиц (например, для таблиц nat, PREROUTING предназначен для входящего (маршрутизируемого / переадресованного) трафика SNAT, а POSTROUTING предназначен для исходящего (маршрутизируемого / переадресованного) трафика DNAT. Дополнительные сведения см. В документации. специфика.

Различные таблицы:

  • Мангл - это изменение пакетов (Тип обслуживания, Время жизни и т. Д.) При прохождении.
  • Нат это поставить в правилах NAT.
  • Raw используется для маркировки и отслеживания соединений.
  • Фильтр для фильтрации пакетов.

Итак, для ваших пяти сценариев:

  1. Если отправляющий хост ваш хост с iptables, ВЫХОД
  2. Так же, как выше
  3. Цепочка FORWARD (при условии, что шлюз является хостом с iptables)
  4. Если «я» является хостом с iptables, INPUT
  5. Посмотрите на приведенные выше правила цепочки (это общее практическое правило) и блок-схему (и это также зависит от того, чего вы пытаетесь достичь с помощью IPTables)
Драв Слоан
источник
Я тоже недавно наткнулся на эту ссылку - stuffphilwrites.com/2014/09/iptables-processing-flowchart . Там есть хорошая блок-схема от Фила Хагена.
SLM
1
Еще один хороший ресурс - digitalocean.com/community/tutorials/… .
SLM