dsk Опубликовано 29 января, 2015 · Жалоба Вопрос наверное к линукс-гуру. Каким образом можно обойти работу модуля nf_defrag_ipv4, если вообще возможно? Всякие телодвижения с NOTRACK не помогают, пакеты все равно дефрагментируются. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 30 января, 2015 · Жалоба А вы как себе представляете передачу пакетов между интерфейсами с разным mtu? Если сильно мешает - собирайте кастомное ядро с ампутированным функционалом, на свой страх и риск. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dsk Опубликовано 30 января, 2015 · Жалоба Если не подгружать модуль conntrack со всеми вытекающими, то все работает как надо. При подгрузке conntrack, автоматом подгружается и этот модуль и дальше начинается свистопляска в виде сборки воедино этим модулем уже фрагментированных как нужно пакетов. И это при том, что этому трафику в conntrack делать то и нечего, и он туда вроде как не попадает. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
aabc Опубликовано 30 января, 2015 · Жалоба уже фрагментированных как нужно пакетов. Как так происходит? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dsk Опубликовано 31 января, 2015 · Жалоба Элементарно. На вход тазика прилетает, допустим, udp пакет размером 1764 байта. Прилетает на самом деле два пакета, один 1500, другой 264 байта, ибо mtu 1500 и отфрагментилось оно раньше, там где надо. В результате работы nf_defrag_ipv4 мы получаем на выходе не два пакета, как пришло на вход, а уже собранный один пакет в 1764 байта, со всеми вытекающими проблемами. Весь вопрос собственно в том, каким образом, и вообще возможно ли, заставить этот модуль жрать не весь трафик, а только тот, который должен попадать в conntrack. Гребаный conntrack нужен всего лишь для одного DNAT, и если возможности обхода нет, то буду просто выпиливать это правило с данного тазика, ибо без conntrack все работает. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
nuclearcat Опубликовано 31 января, 2015 · Жалоба Это очень похоже на логику работы GSO. Мне кажется (но исходники детально не разбирал, там совсем немного кода и легко его пропатчить), nf_defrag собирает только пакеты с флагом фрагментации. Приведенный вами случай совсем не из той оперы. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dsk Опубликовано 31 января, 2015 · Жалоба А почему трафик вообще туда попадает? Неужели nf_defrag работает на самом входе, до всяких raw, nat и т.п. и путей обхода нет? Или я как-то неверно оперирую правилом ... -j NOTRACK От программирования я к сожалению далек, и лезть в исходники для меня темный лес, а мой знакомый программер последнее время сильно занят, не до меня ему... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
aabc Опубликовано 31 января, 2015 (изменено) · Жалоба Неужели nf_defrag работает на самом входе, до всяких raw, nat и т.п. и путей обхода нет? Да. От программирования я к сожалению далек, и лезть в исходники для меня темный лес, а мой знакомый программер последнее время сильно занят, не до меня ему... Самое простое - в файле ipv4/netfilter/nf_defrag_ipv4.c в начало ipv4_conntrack_defrag() вставить return NF_ACCEPT. Правда, не понятно как поведёт себя conntrack, когда до него начнут доходить фрагментированные пакеты, могут быть побочные эффекты. Возможно, в ipv4_conntrack_defrag() надо сразу делать функционал NOTRACK, а не просто return NF_ACCEPT, чтоб их не было. Изменено 31 января, 2015 пользователем aabc Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...