На додаток до інших хороших відповідей, мені нещодавно довелося використовувати таблицю 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
Такі речі брудні, і в ідеалі слід уникати, але інших варіантів у мене не було, і це вирішило проблему.
Сподіваюсь, ці приклади допоможуть, як і довідкова сторінка.
iptables(8)
man містить всю необхідну інформацію, включаючи кілька приємних прикладів використання таблиць mangle.