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


28

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

Цитуючи цей підручник iptables :

Ця таблиця повинна, як ми вже відзначали, в основному використовувати для маніпулювання пакетами. Іншими словами, ви можете вільно використовувати збіги мангів тощо, які можна використовувати для зміни полів TOS (Type Of Service) тощо.

Ви настійно не радимо використовувати цю таблицю для фільтрування; і жодна DNAT, SNAT чи маскарадінг не працюватимуть у цій таблиці.

Чи може хтось описати мені таблицю mangle та надати кілька прикладів, щоб зрозуміти, коли я повинен її використовувати?


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

Такі речі брудні, і в ідеалі слід уникати, але інших варіантів у мене не було, і це вирішило проблему.

Сподіваюсь, ці приклади допоможуть, як і довідкова сторінка.


23

Нещодавно я знайшов гарне пояснення тут . В основному він використовується для встановлення конкретних заголовків для IP-пакетів, щоб впливати на прийняте далі рішення про маршрутизацію. Якщо є, варіант TTL, мабуть, найцікавіший:

Ціль TTL використовується для зміни поля TTL (Time To Live) пакету. Ми могли б сказати пакетам, щоб вони мали лише певний TTL тощо. Однією з вагомих причин цього може бути те, що ми не хочемо віддавати себе норовим постачальникам Інтернет-послуг. Деякі постачальники послуг Інтернету не люблять користувачів, які керують кількома комп’ютерами на одному з'єднанні, а відомо, що деякі постачальники послуг Інтернету шукають одного хоста, який генерує різні значення TTL, і сприймають це як один із багатьох ознак декількох комп'ютерів, підключених до одного з'єднання.

Інші цілі є TOS, MARK, SECMARK, CONNSECMARK.


4
Mangle також використовується в QOS для обробки маркування пакету або для розподілу навантаження даних для розподілу пакетів за різними маршрутами.
TomTom

8

Як ibtables noob, я б сказав: Таблиця mangle дозволяє змінювати деякі спеціальні записи в заголовку пакетів. (наприклад: Тип послуги, Час жити) (він також дозволяє встановлювати спеціальні знаки та контекстні знаки безпеки)


2

Існує гарне глибоке занурення , але не дуже важко зрозуміти , підручник з IPTables тут .

Таблиця mangle використовується для зміни IP-заголовків пакету різними способами. Наприклад, ви можете скорегувати значення пакету TTL (Time to Live), подовжуючи або скорочуючи кількість дійсних мережевих стрибків, які може підтримувати пакет. Інші IP-заголовки можуть бути змінені аналогічно.

Ця таблиця також може розміщувати внутрішню «мітку» ядра на пакеті для подальшої обробки в інших таблицях та за допомогою інших мережевих інструментів. Цей знак не торкається фактичного пакету, але додає позначку до представлення ядра пакета.

Допомагав мені дуже багато, оскільки це також чітко пояснює, як всі частини поєднуються між собою та взаємодіють між собою.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.