Intereting Posts
Лучший менеджер окон для одного приложения Где настроить мой smtp-сервер в утилите Mutt Время всех исполнений в bash Отделите два значения от большого текста, в то время как каждое из показаний, разделенных пустой строкой htop показывает только процессы пользователя, который его запускает? Использование sched_rt_period_us для установки максимального времени между вызовами задачи порядка 10 мс Эффективный способ запуска нескольких сценариев оболочки из одного сценария оболочки Veritas Volume Manager на OpenSolaris Разделить видео на несколько фрагментов в соответствии с несколькими начальными и конечными кадровыми индексами Измените известные слова 1 и 3 строки, сохраняя неизменное слово 2 постоянным Плагин Enigmail больше не распознает мой личный ключ FreeBSD и Windows показывают разные времена Отсутствует путь Больше не может загружаться после обновления Arch Альтернатива -maxdepth 1 -mindepth 1 в находке

понимать цепочки и таблицы в netfilter / iptables

Насколько я понимаю, в ядре Linux есть пять точек захвата для потока пакетов IPv4, определенных в файле netfilter_ipv4.h :

 /* IP Hooks */ /* After promisc drops, checksum checks. */ #define NF_IP_PRE_ROUTING 0 /* If the packet is destined for this box. */ #define NF_IP_LOCAL_IN 1 /* If the packet is destined for another interface. */ #define NF_IP_FORWARD 2 /* Packets coming from a local process. */ #define NF_IP_LOCAL_OUT 3 /* Packets about to hit the wire. */ #define NF_IP_POST_ROUTING 4 

.. и согласно netfilter_ipv6.h похоже, это верно для IPv6:

 /* IP6 Hooks */ /* After promisc drops, checksum checks. */ #define NF_IP6_PRE_ROUTING 0 /* If the packet is destined for this box. */ #define NF_IP6_LOCAL_IN 1 /* If the packet is destined for another interface. */ #define NF_IP6_FORWARD 2 /* Packets coming from a local process. */ #define NF_IP6_LOCAL_OUT 3 /* Packets about to hit the wire. */ #define NF_IP6_POST_ROUTING 4 

Это заставляет меня задаться вопросом, правильно ли думать об архитектуре netfilter / iptables таким образом, чтобы chains определяли место, где происходят операции, и tables определяют, какие операции могут быть выполнены? Кроме того, делают ли tables важными для ядра, или они просто предназначены для пользователей iptables для группировки типов обработки, которые могут возникнуть?

Ключ состоит в том, что таблицы группируют вещи по намерениям дизайна . Все ваши правила, предназначенные для фильтрации, находятся в этом месте, все ваши правила NAT там. Цепи – это последовательности правил, а цепочки по умолчанию пересекаются в определенных точках пути пакета.

Теоретически вы можете добавить правило, которое выполняет фильтрацию, скажем, таблицы NAT. Но передняя часть мешает вам сделать это, с сообщением типа

Таблица «nat» не предназначена для фильтрации, поэтому использование DROP запрещается.

То, как я думаю об этом, это то, что это действительно о цепочках, а таблицы – немного запоздалая мысль, чтобы помочь вам организовать их. Это запутанно, потому что это ad-hoc, исторически разработанный дизайн пользовательского интерфейса.