The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"ipfw dynamic rules"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"ipfw dynamic rules"  
Сообщение от dub (ok) on 23-Дек-06, 14:14 
FreeBSD 4.11, ipfw, Squid transparent proxy. ipfw настроен динамически. И, в принципе, работает. Но есть проблема: юзеры жалуются на "скорость интернета", то есть доступа по HTTP в основном. При этом канал к провайдеру не загружен, полки не бывает практически никогда.

ipfw.conf:

cmd='ipfw -q add'        # command string

tun='tun0'            # Tunelled PPP Interface
pif='fxp0'            # Public Interface NIC
lif='xl0'            # Local interface NIC

lnet='192.168.0.0/24'        # Local Network

fwd='fwd 127.0.0.1,3128'    # Transparent proxy forward

stks='setup keep-state'        # Outgoing TCP client connection

# Flush rules
ipfw -q -f flush

# Local traffic
$cmd 1001 pass all from $lnet to any in recv $lif
$cmd 1001 pass all from any to $lnet out xmit $lif

# Match packet to current dynamic rules
$cmd 1002 check-state

# Deny ACK packets that did not match current dynamic rules
$cmd 1003 deny log tcp from any to any established

...

# HTTP request from me
$cmd 2102 pass tcp from me to any 80 out xmit $tun $stks

# HTTP Transparent Proxy
$cmd 2103 $fwd tcp from $lnet to any 80 out xmit $tun $stks

...

#### Default denial
$cmd 4000 deny log all from any to any

При этом правило 1003 отбрасывает очень много пакетов на 80 порт и с 80 порта. Направления:
- из локальной сети в мир [local_ip] -> [website_ip]
- от сервера в мир [my_ext_ip] -> [website_ip]
- из мира к серверу [website_ip] -> [my_ext_ip]

Dec 10 15:50:59 gate /kernel: ipfw: 1003 Deny TCP 192.168.0.200:1486 [website_ip]:80 out via tun0
Dec 10 15:50:59 gate /kernel: ipfw: 1003 Deny TCP [website_ip]:80 [my_ext_ip]:4919 in via tun0
Dec 10 15:51:00 gate /kernel: ipfw: 1003 Deny TCP [website_ip]:80 [my_ext_ip]:3561 in via tun0
Dec 10 15:51:00 gate /kernel: ipfw: 1003 Deny TCP 192.168.0.200:1487 [website_ip]:80 out via tun0
Dec 10 15:51:03 gate /kernel: ipfw: 1003 Deny TCP 192.168.0.200:1489 [website_ip]:80 out via tun0
Dec 10 15:51:03 gate /kernel: ipfw: 1003 Deny TCP [my_ext_ip]:3561 [website_ip]:80 out via tun0
Dec 10 15:51:04 gate /kernel: ipfw: 1003 Deny TCP [my_ext_ip]:4919 [website_ip]:80 out via tun0
Dec 10 15:51:05 gate /kernel: ipfw: 1003 Deny TCP 192.168.0.200:1486 [website_ip]:80 out via tun0
Dec 10 15:51:05 gate /kernel: ipfw: 1003 Deny TCP 192.168.0.200:1487 [website_ip]:80 out via tun0

Насколько я понимаю, проблема может быть в том, что правила слишком быстро устаревают. Сначала setup-пакет из лана в мир проходит до правила 2103, форвардится Squid, и создается динамическое правило. Дальше, если Squid не имеет страницы в кэше, он обращается к сайту: setup-пакет от сервера в мир доходит до правила 2102 и создается динамическое правило. Когда же одно из этих правил устаревает, пакеты с флагом ACK (?), соотвествующие установленному TCP-соединению, начинают отбрасываться. И так происходит, пока не будет предпринята попытка утсановления нового соединения, то есть пока не появится новый setup-пакет. На этом мысль обрывается.

Пытался увеличить время жизни правил. На текущий момент ipfw-related переменные sysctl установлены следующим образом.

# sysctl -a | grep net.inet.ip.fw.
net.inet.ip.fw.enable: 1
net.inet.ip.fw.one_pass: 1
net.inet.ip.fw.debug: 1
net.inet.ip.fw.verbose: 1
net.inet.ip.fw.verbose_limit: 1000
net.inet.ip.fw.dyn_buckets: 256
net.inet.ip.fw.curr_dyn_buckets: 256
net.inet.ip.fw.dyn_count: 12
net.inet.ip.fw.dyn_max: 8192
net.inet.ip.fw.static_count: 66
net.inet.ip.fw.dyn_ack_lifetime: 300
net.inet.ip.fw.dyn_syn_lifetime: 20
net.inet.ip.fw.dyn_fin_lifetime: 1
net.inet.ip.fw.dyn_rst_lifetime: 1
net.inet.ip.fw.dyn_udp_lifetime: 10
net.inet.ip.fw.dyn_short_lifetime: 300
net.inet.ip.fw.dyn_grace_time: 10

FreeBSD 4.11 не понимает переменной net.inet.ip.fw.dyn_keepalive.

Какие-нибудь мысли по этому поводу? Заранее спасибо.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

  • ipfw dynamic rules, Мандип, 10:03 , 26-Дек-06, (1)  

Сообщения по теме [Сортировка по времени, UBB]


1. "ipfw dynamic rules"  
Сообщение от Мандип email on 26-Дек-06, 10:03 
>FreeBSD 4.11, ipfw, Squid transparent proxy. ipfw настроен динамически. И, в принципе,
>работает. Но есть проблема: юзеры жалуются на "скорость интернета", то есть
>доступа по HTTP в основном. При этом канал к провайдеру не
>загружен, полки не бывает практически никогда.
>
>
>
>ipfw.conf:
>
>cmd='ipfw -q add'  # command string
>
>tun='tun0'   # Tunelled PPP Interface
>pif='fxp0'   # Public Interface NIC
>lif='xl0'   # Local interface NIC
>
>lnet='192.168.0.0/24'  # Local Network
>
>fwd='fwd 127.0.0.1,3128' # Transparent proxy forward
>
>stks='setup keep-state'  # Outgoing TCP client connection
>
># Flush rules
>ipfw -q -f flush
>
># Local traffic
>$cmd 1001 pass all from $lnet to any in recv $lif
>$cmd 1001 pass all from any to $lnet out xmit $lif
>
># Match packet to current dynamic rules
>$cmd 1002 check-state
>
># Deny ACK packets that did not match current dynamic rules
>$cmd 1003 deny log tcp from any to any established
>
>...
>
># HTTP request from me
>$cmd 2102 pass tcp from me to any 80 out xmit $tun
>$stks
>
># HTTP Transparent Proxy
>$cmd 2103 $fwd tcp from $lnet to any 80 out xmit $tun
>$stks
>
>...
>
>#### Default denial
>$cmd 4000 deny log all from any to any
>
>
>
>При этом правило 1003 отбрасывает очень много пакетов на 80 порт и
>с 80 порта. Направления:
> - из локальной сети в мир [local_ip] -> [website_ip]
> - от сервера в мир [my_ext_ip] -> [website_ip]
> - из мира к серверу [website_ip] -> [my_ext_ip]
>
>Dec 10 15:50:59 gate /kernel: ipfw: 1003 Deny TCP 192.168.0.200:1486 [website_ip]:80 out
>via tun0
>Dec 10 15:50:59 gate /kernel: ipfw: 1003 Deny TCP [website_ip]:80 [my_ext_ip]:4919 in
>via tun0
>Dec 10 15:51:00 gate /kernel: ipfw: 1003 Deny TCP [website_ip]:80 [my_ext_ip]:3561 in
>via tun0
>Dec 10 15:51:00 gate /kernel: ipfw: 1003 Deny TCP 192.168.0.200:1487 [website_ip]:80 out
>via tun0
>Dec 10 15:51:03 gate /kernel: ipfw: 1003 Deny TCP 192.168.0.200:1489 [website_ip]:80 out
>via tun0
>Dec 10 15:51:03 gate /kernel: ipfw: 1003 Deny TCP [my_ext_ip]:3561 [website_ip]:80 out
>via tun0
>Dec 10 15:51:04 gate /kernel: ipfw: 1003 Deny TCP [my_ext_ip]:4919 [website_ip]:80 out
>via tun0
>Dec 10 15:51:05 gate /kernel: ipfw: 1003 Deny TCP 192.168.0.200:1486 [website_ip]:80 out
>via tun0
>Dec 10 15:51:05 gate /kernel: ipfw: 1003 Deny TCP 192.168.0.200:1487 [website_ip]:80 out
>via tun0
>
>
>
>Насколько я понимаю, проблема может быть в том, что правила слишком быстро
>устаревают. Сначала setup-пакет из лана в мир проходит до правила 2103,
>форвардится Squid, и создается динамическое правило. Дальше, если Squid не имеет
>страницы в кэше, он обращается к сайту: setup-пакет от сервера в
>мир доходит до правила 2102 и создается динамическое правило. Когда же
>одно из этих правил устаревает, пакеты с флагом ACK (?), соотвествующие
>установленному TCP-соединению, начинают отбрасываться. И так происходит, пока не будет предпринята
>попытка утсановления нового соединения, то есть пока не появится новый setup-пакет.
>На этом мысль обрывается.
>
>Пытался увеличить время жизни правил. На текущий момент ipfw-related переменные sysctl установлены
>следующим образом.
>
># sysctl -a | grep net.inet.ip.fw.
>net.inet.ip.fw.enable: 1
>net.inet.ip.fw.one_pass: 1
>net.inet.ip.fw.debug: 1
>net.inet.ip.fw.verbose: 1
>net.inet.ip.fw.verbose_limit: 1000
>net.inet.ip.fw.dyn_buckets: 256
>net.inet.ip.fw.curr_dyn_buckets: 256
>net.inet.ip.fw.dyn_count: 12
>net.inet.ip.fw.dyn_max: 8192
>net.inet.ip.fw.static_count: 66
>net.inet.ip.fw.dyn_ack_lifetime: 300
>net.inet.ip.fw.dyn_syn_lifetime: 20
>net.inet.ip.fw.dyn_fin_lifetime: 1
>net.inet.ip.fw.dyn_rst_lifetime: 1
>net.inet.ip.fw.dyn_udp_lifetime: 10
>net.inet.ip.fw.dyn_short_lifetime: 300
>net.inet.ip.fw.dyn_grace_time: 10
>
>FreeBSD 4.11 не понимает переменной net.inet.ip.fw.dyn_keepalive.
>
>Какие-нибудь мысли по этому поводу? Заранее спасибо.
  я не крутой спец. но попробуй отключит кэширование в squid. может сам сервер тормаживает.
в squid.conf поменяй

acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
на
acl test src 0/0
no_cache deny test
               может поможет.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру