Я запускаю приложение, которое внедряет правила отслеживания соединения iptables в ядро, чтобы машина могла пересылать входящий трафик UDP к месту назначения как можно быстрее.

Часть трафика, полученного на этой машине, не совсем соответствует спецификации, и принимающая сторона не всегда обрабатывает этот трафик, как следует. К сожалению, поставщик отправляющего оборудования говорит, что нет ничего плохого в том, что он отправляет, а поставщик принимающей стороны говорит, что отправитель никогда не должен отправлять такой трафик, поэтому я попал в середину, пытаясь решить проблему.

Сервер, на котором у меня полный контроль над трафиком, использует отслеживание соединения iptables для пересылки трафика от одной отправляющей стороны к получающей стороне с использованием входных данных из другого приложения. Вредоносный трафик легко распознать, это единственный трафик, использующий полезную нагрузку UDP длиной 0, отправляемый отправляющей стороной.

Как убедиться, что мое правило iptables, отбрасывающее вызывающий трафик трафик, запускается до того, как conntrack перенаправит UDP-сообщения?

Использование iptables -A INPUT -p udp --dport 50000:60000 -m length --length 8 -j DROP не работает, пакеты все еще проходят через машину. Я также попытался с длиной 8 (размер заголовка UDP), но результат тот же.

2 ответа2

0

Чтобы отфильтровать пересылаемый трафик, вам нужна цепочка FORWARD, цепочка INPUT предназначена для трафика, предназначенного для системы, в которой включено правило.

0

Как предположил Тимоти Болдуин, фильтр должен быть в цепочке FORWARD. Параметр длины не работает с полезной нагрузкой UDP или длиной пакета, но, естественно, с длиной пакета IP

Итак, команда, которая работает:iptables -A FORWARD -p udp --dport 50000:60000 -m length --length 28 -j DROP где длина составляет 20 байт для IP-адреса и 8 для заголовка UDP

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .