16.03.12 09:35, Alexander Panyushkin написав(ла):
Хороше бы на правила фаера взглянуть, какие лимиты выставлены, что
тюнили?
Здравствуйте!
Правила такие:
set skip on lo
set timeout { udp.first 20, udp.single 20, udp.multiple 20 }
set timeout tcp.first 5
set timeout tcp.established 86400
set limit { states 5000000, src-nodes 300000 }
set optimization aggressive
set block-policy drop
up_if="em0"
up_gw="..."
down_if="igb0"
down_gw="..."
table <whitelist> persist {}
table <srvips> persist {}
rdr-anchor whitelist on $down_if proto tcp from <whitelist> to <srvips>
port 80
pass out quick on $up_if route-to ($down_if $down_gw) from $down_if to
any no state
pass all no state
pass in on $down_if reply-to ($down_if $down_gw) proto tcp to $down_if
flags S/SA label "$dstaddr" no state
Маршрут по умолчанию - через интерфейс к бекендам, он же менеджмент
(em0, up_if).
На интерфейсе down_if висят несколько алиасов.
Для части из них (те, которые в srvips) включен ряд проверок
(реализованы в nginx), после прохождения которых клиенты добавляются в
вайтлист, клиенты из вайтлиста с помощью rdr правил в якоре
переадресуются прямо на бекенд.
Тюнилось, главным образом, для поддержки большего числа соединений и
собственно против ддос.
sysctl.conf
net.inet.tcp.blackhole=2
net.inet.tcp.syncookies_only=1
net.inet.tcp.maxtcptw=524280
net.inet.tcp.nolocaltimewait=1
net.inet.tcp.fast_finwait2_recycle=1
kern.maxfiles=204800
kern.maxfilesperproc=200000
kern.ipc.maxsockets=204800
kern.ipc.nmbclusters=2048000
kern.ipc.somaxconn=8192
net.inet.tcp.drop_synfin=0
kern.ipc.maxsockbuf=33554432
net.inet.tcp.sendbuf_max=33554432
net.inet.tcp.recvbuf_max=33554432
loader.conf
net.inet.tcp.tcbhashsize=10240
Заметил, что после ддоса, о котором шла речь ранее, появилась нехватка
timewait буферов.
ITEM SIZE LIMIT USED FREE REQ FAIL SLEEP
...
tcptw: 72, 262150, 13, 65537,11602703,2548093, 0
после чего увеличивал net.inet.tcp.maxtcptw.
Могла ли эта нехватка стать причиной подобного поведения?