PDA

Bekijk de volledige versie : Dropаются Udp



ys05
28-05-2006, 00:25
Такая ситуация:
WAN - локалка с выходом в инет, в ней сервер и компьютеры DC++ (peer-to-peer система), адреса 10.x.x.x
LAN - мой компьютер, адрес 192.168.1.2
между ними WL500g Deluxe с прошивкой 1.9.2.7-7c.
DC++ настроен на использование TCP и UDP по 4111 порту, для этого настроен форвард пакетов TCP и UDP для 4111 порта на адрес 192.168.1.2 (Virtual Server)
Если послать UDP запрос на порт 4111 сервера DC++, то куча компьютеров из сети шлют нормальные блоки пакетов UDP обратно на мой порт 4111. При этом WL500g Deluxe пропускает только часть из них (обычно один или несколько первых с конкретного адреса) и режет большинство остальных. Такое ощущение, что срабатывает защита от DOS атаки на нормальные пакеты. Как бы так сделать, чтобы они не дропались. Вот пример лога:

May 28 03:18:31 kernel: ACCEPT IN=vlan1 OUT=br0 SRC=88.201.132.29 DST=192.168.1.2 LEN=139 TOS=0x00 PREC=0x00 TTL=126 ID=10261 PROTO=UDP SPT=3991 DPT=4111 LEN=119
May 28 03:18:31 kernel: ACCEPT IN=vlan1 OUT=br0 SRC=10.106.8.42 DST=192.168.1.2 LEN=164 TOS=0x00 PREC=0x00 TTL=126 ID=24695 PROTO=UDP SPT=2850 DPT=4111 LEN=144
May 28 03:18:31 kernel: ACCEPT IN=vlan1 OUT=br0 SRC=10.106.8.42 DST=192.168.1.2 LEN=165 TOS=0x00 PREC=0x00 TTL=126 ID=24696 PROTO=UDP SPT=2850 DPT=4111 LEN=145
May 28 03:18:31 kernel: ACCEPT IN=vlan1 OUT=br0 SRC=10.106.8.42 DST=192.168.1.2 LEN=180 TOS=0x00 PREC=0x00 TTL=126 ID=24697 PROTO=UDP SPT=2850 DPT=4111 LEN=160
May 28 03:18:31 kernel: ACCEPT IN=vlan1 OUT=br0 SRC=10.81.91.31 DST=192.168.1.2 LEN=143 TOS=0x00 PREC=0x00 TTL=125 ID=50634 PROTO=UDP SPT=1116 DPT=4111 LEN=123
May 28 03:18:31 kernel: DROPIN=vlan1 OUT=br0 SRC=10.101.18.127 DST=192.168.1.2 LEN=189 TOS=0x00 PREC=0x00 TTL=126 ID=2207 PROTO=UDP SPT=2592 DPT=4111 LEN=169
May 28 03:18:31 kernel: DROPIN=vlan1 OUT=br0 SRC=10.101.4.94 DST=192.168.1.2 LEN=155 TOS=0x00 PREC=0x00 TTL=126 ID=35685 PROTO=UDP SPT=2401 DPT=4111 LEN=135
May 28 03:18:31 kernel: DROPIN=vlan1 OUT=br0 SRC=10.101.4.94 DST=192.168.1.2 LEN=155 TOS=0x00 PREC=0x00 TTL=126 ID=35686 PROTO=UDP SPT=2401 DPT=4111 LEN=135
May 28 03:18:31 kernel: DROPIN=vlan1 OUT=br0 SRC=10.101.4.94 DST=192.168.1.2 LEN=155 TOS=0x00 PREC=0x00 TTL=126 ID=35687 PROTO=UDP SPT=2401 DPT=4111 LEN=135
May 28 03:18:31 kernel: DROPIN=vlan1 OUT=br0 SRC=10.81.106.51 DST=192.168.1.2 LEN=186 TOS=0x00 PREC=0x00 TTL=124 ID=23005 PROTO=UDP SPT=1100 DPT=4111 LEN=166
May 28 03:18:31 kernel: DROPIN=vlan1 OUT=br0 SRC=10.84.68.12 DST=192.168.1.2 LEN=193 TOS=0x00 PREC=0x00 TTL=125 ID=13626 PROTO=UDP SPT=1033 DPT=4111 LEN=173
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=10.88.0.18 DST=192.168.1.2 LEN=205 TOS=0x00 PREC=0x00 TTL=125 ID=54546 PROTO=UDP SPT=4693 DPT=4111 LEN=185
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=10.102.4.69 DST=192.168.1.2 LEN=209 TOS=0x00 PREC=0x00 TTL=126 ID=50705 PROTO=UDP SPT=1043 DPT=4111 LEN=189
May 28 03:18:32 kernel: ACCEPT IN=vlan1 OUT=br0 SRC=10.102.4.69 DST=192.168.1.2 LEN=208 TOS=0x00 PREC=0x00 TTL=126 ID=50706 PROTO=UDP SPT=1043 DPT=4111 LEN=188
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=10.102.4.69 DST=192.168.1.2 LEN=210 TOS=0x00 PREC=0x00 TTL=126 ID=50707 PROTO=UDP SPT=1043 DPT=4111 LEN=190
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=10.102.4.69 DST=192.168.1.2 LEN=211 TOS=0x00 PREC=0x00 TTL=126 ID=50708 PROTO=UDP SPT=1043 DPT=4111 LEN=191
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=88.201.132.199 DST=192.168.1.2 LEN=190 TOS=0x00 PREC=0x00 TTL=126 ID=24252 PROTO=UDP SPT=3274 DPT=4111 LEN=170
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=88.201.132.199 DST=192.168.1.2 LEN=191 TOS=0x00 PREC=0x00 TTL=126 ID=24253 PROTO=UDP SPT=3274 DPT=4111 LEN=171
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=88.201.132.199 DST=192.168.1.2 LEN=142 TOS=0x00 PREC=0x00 TTL=126 ID=24254 PROTO=UDP SPT=3274 DPT=4111 LEN=122
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=10.101.4.17 DST=192.168.1.2 LEN=193 TOS=0x00 PREC=0x00 TTL=126 ID=40231 PROTO=UDP SPT=2629 DPT=4111 LEN=173
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=10.101.4.17 DST=192.168.1.2 LEN=192 TOS=0x00 PREC=0x00 TTL=126 ID=40232 PROTO=UDP SPT=2629 DPT=4111 LEN=172
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=10.101.4.17 DST=192.168.1.2 LEN=199 TOS=0x00 PREC=0x00 TTL=126 ID=40233 PROTO=UDP SPT=2629 DPT=4111 LEN=179
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=10.101.4.17 DST=192.168.1.2 LEN=199 TOS=0x00 PREC=0x00 TTL=126 ID=40234 PROTO=UDP SPT=2629 DPT=4111 LEN=179
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=10.101.4.17 DST=192.168.1.2 LEN=194 TOS=0x00 PREC=0x00 TTL=126 ID=40235 PROTO=UDP SPT=2629 DPT=4111 LEN=174
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=10.101.4.17 DST=192.168.1.2 LEN=195 TOS=0x00 PREC=0x00 TTL=126 ID=40236 PROTO=UDP SPT=2629 DPT=4111 LEN=175
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=10.101.4.17 DST=192.168.1.2 LEN=172 TOS=0x00 PREC=0x00 TTL=126 ID=40237 PROTO=UDP SPT=2629 DPT=4111 LEN=152
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=10.81.75.81 DST=192.168.1.2 LEN=170 TOS=0x00 PREC=0x00 TTL=125 ID=35060 PROTO=UDP SPT=2077 DPT=4111 LEN=150
May 28 03:18:32 kernel: ACCEPT IN=vlan1 OUT=br0 SRC=88.201.132.24 DST=192.168.1.2 LEN=169 TOS=0x00 PREC=0x00 TTL=126 ID=38994 PROTO=UDP SPT=4075 DPT=4111 LEN=149
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=88.201.132.24 DST=192.168.1.2 LEN=158 TOS=0x00 PREC=0x00 TTL=126 ID=38995 PROTO=UDP SPT=4075 DPT=4111 LEN=138
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=88.201.132.24 DST=192.168.1.2 LEN=168 TOS=0x00 PREC=0x00 TTL=126 ID=38996 PROTO=UDP SPT=4075 DPT=4111 LEN=148
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=88.201.132.24 DST=192.168.1.2 LEN=153 TOS=0x00 PREC=0x00 TTL=126 ID=38997 PROTO=UDP SPT=4075 DPT=4111 LEN=133
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=10.101.10.129 DST=192.168.1.2 LEN=157 TOS=0x00 PREC=0x00 TTL=127 ID=25746 PROTO=UDP SPT=3134 DPT=4111 LEN=137
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=10.82.28.21 DST=192.168.1.2 LEN=165 TOS=0x00 PREC=0x00 TTL=125 ID=42190 PROTO=UDP SPT=2193 DPT=4111 LEN=145
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=10.82.28.21 DST=192.168.1.2 LEN=142 TOS=0x00 PREC=0x00 TTL=125 ID=42191 PROTO=UDP SPT=2193 DPT=4111 LEN=122
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=10.82.28.21 DST=192.168.1.2 LEN=164 TOS=0x00 PREC=0x00 TTL=125 ID=42192 PROTO=UDP SPT=2193 DPT=4111 LEN=144
May 28 03:18:32 kernel: ACCEPT IN=vlan1 OUT=br0 SRC=10.82.28.21 DST=192.168.1.2 LEN=164 TOS=0x00 PREC=0x00 TTL=125 ID=42193 PROTO=UDP SPT=2193 DPT=4111 LEN=144
May 28 03:18:32 kernel: DROPIN=vlan1 OUT=br0 SRC=10.82.28.21 DST=192.168.1.2 LEN=164 TOS=0x00 PREC=0x00 TTL=125 ID=42194 PROTO=UDP SPT=2193 DPT=4111 LEN=144
May 28 03:18:33 kernel: ACCEPT IN=vlan1 OUT=br0 SRC=10.81.105.22 DST=192.168.1.2 LEN=206 TOS=0x00 PREC=0x00 TTL=137 ID=21243 PROTO=UDP SPT=1032 DPT=4111 LEN=186

ys05
28-05-2006, 10:38
Ага, я тут поразбирался. гадит вот это правило в tmp/filter_rules:
-A SECURITY -p udp -m limit --limit 5/s -j RETURN
Оно расположено до правил форвардинга:
-A FORWARD -p udp -m udp -d 192.168.1.2 --dport 4111 -j logaccept
-A FORWARD -p tcp -m tcp -d 192.168.1.2 --dport 4111 -j logaccept

В результате роутер режет бурсты UDP:
Chain SECURITY (2 references)
pkts bytes target prot opt in out source destination

0 0 RETURN tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x16/0x02 limit: avg 1/sec burst 5
0 0 RETURN tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x04 limit: avg 1/sec burst 5
1237 213K RETURN udp -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 5/sec burst 5
0 0 RETURN icmp -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 5/sec burst 5
9 4712 logdrop all -- * * 0.0.0.0/0 0.0.0.0/0

Но где и как убрать мешающий SECURITY я пока не нашел (уже несколько часов ищу). Роутер без всяких доп.пакетов, смотрю telnet'ом, редактирую vi. Кто знает, подскажите!

ys05
28-05-2006, 13:59
Тихо сам с собою я веду беседу. Короче, почитал мануал на iptables и сделал post-firewall такой:


#!/bin/sh
iptables -D SECURITY -p udp -m limit --limit 5/s -j RETURN
iptables -D SECURITY -j logdrop
iptables -A SECURITY -p udp --dport 4111 -j RETURN
iptables -A SECURITY -p udp --dport ! 4111 -m limit --limit 5/s -j RETURN
iptables -A SECURITY -j logdrop

Нужные пакеты drop'аться перестали, все работает.
Но, в прошивке, возможно, следует учитывать, что если кто делает виртуальный сервер на какие-то порты, то, возможно, ему не надо эти порты фильтровать в SECURITY вообще.

Oleg
28-05-2006, 15:11
ƒык это как раз способ защиты вирутальных серверов от перегрузки. :)

ys05
28-05-2006, 20:00
Это понятно, что защита, но тут момент тонкий. TCP можно резать безболезненно, они перепошлются автоматом. А вот UDP - тут уже все зависит от применения и приложения. Если оно сможет определить, что пакет не дошел, тогда ладно. Но, в данном случае, никакой обратной связи нет. Я посылаю один UDP запрос на внешний DC++ сервер - мне в ответ сотни UDP ответов с других внешних DC++ клиентов. И все, никаких проверок получения. Я же из этих сотен получал около десятка при стандартных настройках. Так что, по хорошему, надо это дело настраивать. Но, с другой стороны, понятно, что сделать понятные настройки iptables через web интерфейс малореально, а все возможные случаи предугадать тоже невозможно.

Единственно, при отключении firewall вообще эти правила SECURITY не отключались, что, на мой взгляд, нелогично.