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

28

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

Цитирование из этого учебника iptables :

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

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

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

pylover
источник
6
Страница iptables(8)man содержит всю необходимую информацию, включая несколько хороших примеров использования таблицы mangle.
Майкл Хэмптон

Ответы:

23

В дополнение к другим хорошим ответам, мне недавно пришлось использовать таблицу 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

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

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

Kevin
источник
23

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

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

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

BubuIIC
источник
4
Mangle также используется в QOS для обработки маркировки пакетов или в распределении загрузки данных для распределения пакетов по разным маршрутам.
TomTom
8

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

iptablesnoob
источник
2

Существует хорошее глубокое погружение , но не слишком трудно понять , учебник по IPTables здесь .

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

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

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

rbennell
источник