Відкиньте фрагменти IP певного протоколу


2

Коли conntrackактивовано, стек iptables ніколи не бачить фрагментованого пакету IP, лише повторно зібраний ( джерело ), тому -fтест ніколи не відповідає.

Якщо я хочу заблокувати будь-який фрагмент, я міг би встановити ipfrag_high_threshабо ipfrag_time0 ( джерело ), але це відкине будь-який фрагмент. Чи можу я щось зробити, якщо хочу скинути фрагменти певного протоколу IP?

Відповіді:


2

Я бачу два способи досягти своєї мети, залежно від ваших потреб.

Ви можете дозволити повторній збірці виконувати її хід, а потім, після успішної повторної збірки, скинути весь пакет. Це працює лише в тому випадку, якщо повторно зібраний пакет знаходиться над інтерфейсом MTU (інакше ви не зможете розрізнити повторно зібраний і "нормальний" пакети). Якщо пакети неможливо буде успішно зібрати, вони все одно випадуть, але з більшими накладними процесорами.

Інший спосіб - змінити джерело та зробити nf_defrag_ipv4ігнорувати пакети з протоколу (протоколів), з яким ви хочете звертатися безпосередньо. Швидкий погляд припускає, що це має спрацювати, оскільки вже існує опція ( IP_NODEFRAG) для RAW-сокетів, яка дозволяє обійти код повторної збірки.

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


1
Я думаю, ви повинні дивитися на tcфільтрування вхідних даних. Ви можете робити речі, перш ніж пакети навіть потрапляють на гачки мережі.
Лоренцо Пістоне

1
Це цікавий підхід, але я не можу перенести набір правил у tc, щоб уникнути обов'язкової дефрагментації - адже фільтрація за станом є основною частиною моєї установки. Я також використовую інші функції netfilter для подальшої класифікації пакетів, недоступних у тс. До речі, ви вирішили свою первісну проблему? Ви використовували tc для цього?
Матяш Кошик

Я використовував tc, власне. Також є мінімальні поліпшення продуктивності при ранньому відфільтруванні tc, дивіться meso.pisto.horse/2014/10/…
Лоренцо Пістоне

1
Якщо ви просто хочете скинути пакети на основі простої класифікації на надзвичайно високих швидкостях, вам слід поглянути netmap- він може легко обробляти 10 Гбіт інтерфейс, повний пакетів мінімального розміру, на одному ядрі сучасного ПК.
Матяш Кошик

1

Цікаво, чи можете ви використовувати «необроблену» таблицю netfilter, яка постає перед більшістю гачків відстеження підключення. Він має ціль "NOTRACK", яку ви можете використовувати для звільнення певних пакетів від conntrack, або, можливо, сама -fумова працювала б --table raw.


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