The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
ipfw dynamic rules, !*! dub, 23-Дек-06, 14:14  [смотреть все]
  • ipfw dynamic rules, !*! Мандип, 10:03 , 26-Дек-06 (1)
    >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
                   может поможет.




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

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