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.
Какие-нибудь мысли по этому поводу? Заранее спасибо.
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1