Здравствуйте.Есть сервер:
FreeBSD ... 11.0-RELEASE-p1 FreeBSD 11.0-RELEASE-p1 #0 r306420: Thu Sep 29 01:43:23 UTC 2016 root@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64
Xeon E5-2690, 4GB RAM, SSD RAID 1
На сервере крутится apache24 + php56 + mysql57
Несколько сайтов, один из которых - простенький интернет-магазин под OpenCart.
Суммарная посещаемость всех сайтов - >100000 страниц, ~10000 уникальных в сутки.
Раз в несколько дней, в основном на выходных происходит "Ipfw: Cannot allocate dynamic state, consider increasing net.inet.ip.fw.dyn_max" с вполне понятными последствиями.
Содержимое net.inet.ip.fw.:
net.inet.ip.fw.dyn_keep_states: 0
net.inet.ip.fw.dyn_keepalive: 1
net.inet.ip.fw.dyn_short_lifetime: 5
net.inet.ip.fw.dyn_udp_lifetime: 10
net.inet.ip.fw.dyn_rst_lifetime: 1
net.inet.ip.fw.dyn_fin_lifetime: 1
net.inet.ip.fw.dyn_syn_lifetime: 20
net.inet.ip.fw.dyn_ack_lifetime: 300
net.inet.ip.fw.dyn_max: 16384
net.inet.ip.fw.dyn_count: 615
net.inet.ip.fw.curr_dyn_buckets: 256
net.inet.ip.fw.dyn_buckets: 256
net.inet.ip.fw.enable: 1
net.inet.ip.fw.static_count: 22
net.inet.ip.fw.default_to_accept: 0
net.inet.ip.fw.tables_sets: 0
net.inet.ip.fw.tables_max: 128
net.inet.ip.fw.default_rule: 65535
net.inet.ip.fw.verbose_limit: 0
net.inet.ip.fw.verbose: 1
net.inet.ip.fw.autoinc_step: 100
net.inet.ip.fw.one_pass: 1
Настройки ipfw из rc.conf и ipfw.rules
# FIREWALL
firewall_enable="YES"
firewall_type="client"
firewall_logging="YES"
firewall_script="/etc/ipfw.rules"
#!/bin/sh
INTERNET_ADAPTER="em0"
THIS_HOST=...
ADM_HOST=...
DNS_SERVER=...
ISP_GATE=...
OFFICE=...
SERVER_VPN=...
A_HOME=...
KS="keep-state"
ipfw -q -f flush
ipfw -q add 00100 check-state
ipfw -q add 00200 allow all from any to any via lo0
ipfw -q add 00300 deny all from any to any frag
ipfw -q add 00400 deny tcp from any to any established
# Allow SSH
ipfw -q add 00444 allow tcp from $ADM_HOST to $THIS_HOST 11149 in $KS
ipfw -q add 00445 allow tcp from $A_HOME to $THIS_HOST 11149 in $KS
# Allow DNS
ipfw -q add 00500 allow tcp from $THIS_HOST to ${DNS_SERVER} 53 out via $INTERNET_ADAPTER setup $KS
ipfw -q add 00510 allow udp from $THIS_HOST to ${DNS_SERVER} 53 out via $INTERNET_ADAPTER $KS
# Allow PING
ipfw -q add 00900 allow icmp from any to any $KS
# Allow NTP
ipfw -q add 01000 allow tcp from $THIS_HOST to any 123 out via $INTERNET_ADAPTER $KS
# Allow FTP Client
ipfw -q add 01100 allow tcp from $THIS_HOST to any 21 out via $INTERNET_ADAPTER $KS
ipfw -q add 01110 allow tcp from $THIS_HOST to any 1024-65535 out via $INTERNET_ADAPTER $KS
# Allow FTP Server
ipfw -q add 01120 allow tcp from any to $THIS_HOST 21 in via $INTERNET_ADAPTER $KS
ipfw -q add 01130 allow tcp from any to $THIS_HOST 1024-3305 in via $INTERNET_ADAPTER $KS
ipfw -q add 01150 allow tcp from any to $THIS_HOST 3307-65535 in via $INTERNET_ADAPTER $KS
# Allow HTTP & HTTPS
ipfw -q add 01200 allow tcp from any to ${THIS_HOST} 80 in via $INTERNET_ADAPTER $KS
ipfw -q add 01210 allow udp from any to ${THIS_HOST} 80 in via $INTERNET_ADAPTER $KS
ipfw -q add 01220 allow tcp from any to ${THIS_HOST} 443 in via $INTERNET_ADAPTER $KS
ipfw -q add 01230 allow udp from any to ${THIS_HOST} 443 in via $INTERNET_ADAPTER $KS
# Allow HTTP & HTTPS from WebServer
ipfw -q add 01240 allow tcp from ${THIS_HOST} to any 80 out via $INTERNET_ADAPTER $KS
ipfw -q add 01250 allow tcp from ${THIS_HOST} to any 443 out via $INTERNET_ADAPTER $KS
# Allow MySQL
ipfw -q add 01300 allow tcp from $OFFICE to ${THIS_HOST} 3306 in via $INTERNET_ADAPTER $KS
# Allow SMTP
ipfw -q add 01400 allow log tcp from $THIS_HOST to any 25 out via $INTERNET_ADAPTER $KS
# LOG All BLOCKING
#ipfw -q add 65534 deny log ip from any to any
Большинство "просроченных" динамических правил естественно по правилу 1200 (входной HTTP).
Вопрос.
Как поступать в таком случае?
1. Где-то косяк в правилах файерволла?
2. Увеличить net.inet.ip.fw.dyn_max или уменьшить net.inet.ip.fw.dyn_ack_lifetime?