фильтрация UDP Linux\FreeBSD

По многочисленным наблюдениям системных администраторов различных компаний предоставляющих доступ к сети интернет, с начала февраля 2010 года наблюдается ежедневный лавинообразный рост количества пакетов в сети, их фрагментация, а также существенный рост исходящего трафика. Данная проблема связана с новой версией торрент-клиента uTorrent вышедшего 3 февраля 2010 года с поддержкой протокола uTP, работающего поверх UDP. Призванный снизить нагрузку на провайдеров протокол uTP в результате привел к обратному эффекту. Для относительно безболезненной для клиента фильтрации uTP на шлюзе под управлением Linux рекомендуется использовать следующее правило:


   /sbin/iptables -I FORWARD -m udp -p udp -m string 
         --hex-string "|7F FF FF FF AB|" --algo kmp \
      --from 40 --to 44 -m statictic 
--mode random --probability 0.90 -j DROP

Мониторинг работы правила:

   iptables -L FORWARD -nv | grep statist

Для FreeBSD правило будет выглядеть следующим образом:

ngctl mkpeer ipfw: bpf 2 main ngctl name ipfw:2 utp_filter ngctl msg utp_filter: setprogram { thisHook=\"main\" ifMatch=\"\" ifNotMatch=\"main\" bpf_prog_len=12 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=8 k=64 } { code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=6 k=17 } { code=40 jt=0 jf=0 k=6 } { code=69 jt=4 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=64 jt=0 jf=0 k=20 } { code=21 jt=0 jf=1 k=2147483647 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ] }   ipfw add 2 netgraph 2 udp from any to any iplen 0-128 

Мониторинг:

   ngctl msg utp_filter: getstats \"main\"

оригинал: cname.org.ua/2010/06/udp-linuxfreebsd/

Запись опубликована в рубрике *CentOS, *Lan&Wan, *Unix,*Linux, *Сети, FreeBSD. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91