Назад | Перейти на главную страницу

Что такое таблица mangle в iptables?

Я использую правила iptable для фильтрации и управления пакетами на моем сервере Ubuntu. но я не могу понять таблицу mangle.

Цитата из это руководство по iptables:

Эта таблица, как мы уже отметили, в основном должна использоваться для изменения пакетов. Другими словами, вы можете свободно использовать совпадения и т. Д., Которые можно использовать для изменения полей TOS (Тип обслуживания) и т. Д.

Настоятельно рекомендуется не использовать эту таблицу для какой-либо фильтрации; в этой таблице не будут работать ни DNAT, ни SNAT, ни маскарадинг.

Может ли кто-нибудь описать мне таблицу mangle и привести несколько примеров, чтобы понять, когда мне следует ее использовать?

В дополнение к другим хорошим ответам мне недавно пришлось использовать таблицу mangle для корректировки несоответствий MTU (максимальная единица передачи), вызванных трафиком, передаваемым через PPPoE, PPP и ATM, каждый из которых добавляет накладные расходы, уменьшающие полезную нагрузку, доступную для IP. из обычных 1500 байтов кадра Ethernet.

Системы на каждом конце канала, как обычно, имеют свой MTU по умолчанию, равный 1500, поэтому они будут пытаться отправлять IP-кадры такого размера. Поскольку фактический доступный размер полезной нагрузки был меньше, это могло бы вызвать фрагментацию пакета, за исключением того, что часто отправитель запрашивает, чтобы пакеты не были фрагментированы, и, как таковые, они в конечном итоге полностью отбрасываются.

В идеальном мире обнаружение MTU пути позволило бы конечным точкам уменьшить свой MTU по мере необходимости, но это обнаружение зависит от ICMP, и сети вне моего контроля часто были настроены на отключение ICMP по соображениям безопасности.

Единственным выбором было использовать искажение пакетов в моем маршрутизаторе, чтобы изменить пакеты TCP SYN, чтобы уменьшить максимальный размер сегмента на транспортном уровне:

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1452

Подобные вещи беспорядочные, и в идеале их следует избегать, но у меня не было других вариантов, и это помогло решить проблему.

Надеюсь, эти примеры помогут, а также справочная страница.

Я недавно нашел хорошее объяснение Вот. Он в основном используется для установки определенных заголовков для IP-пакетов, чтобы повлиять на решение о маршрутизации, принимаемое в дальнейшем. Если есть, вариант TTL, наверное, самый интересный:

Цель TTL используется для изменения поля TTL (время жизни) пакета. Мы могли бы указать пакетам только определенный TTL и так далее. Одна из веских причин для этого может заключаться в том, что мы не хотим отдавать себя любопытным интернет-провайдерам. Некоторым провайдерам Интернет-услуг не нравятся пользователи, использующие несколько компьютеров в одном соединении, а некоторые поставщики Интернет-услуг, как известно, ищут один хост, генерирующий разные значения TTL, и воспринимают это как один из многих признаков того, что несколько компьютеров подключены к одному. подключение.

Другие цели TOS, MARK, SECMARK, CONNSECMARK.

Как iptables noob, я бы сказал: таблица mangle позволяет изменять некоторые специальные записи в заголовке пакетов. (например: Тип службы, Время жизни) (также позволяет устанавливать специальные метки и метки контекста безопасности)

Есть хорошее глубокое погружение, но не слишком сложное для понимания руководство по iptables Вот.

Таблица mangle используется для изменения заголовков IP пакета различными способами. Например, вы можете настроить значение TTL (время жизни) пакета, увеличив или уменьшив количество допустимых сетевых переходов, которые может выдержать пакет. Другие заголовки IP можно изменить аналогичным образом.

Эта таблица также может помещать внутреннюю "метку" ядра на пакет для дальнейшей обработки в других таблицах и другими сетевыми инструментами. Эта метка не касается фактического пакета, но добавляет метку к представлению пакета ядром.

Мне очень помогло, так как он также четко объясняет, как все части сочетаются друг с другом и взаимодействуют друг с другом.