В пакетном фильтре OpenBSD PF реализованы средства регулирования интенсивности трафика с IP адресов (можно ограничить число одновременных коннектов с одного IP) и сохранения статуса при балансировке или трансляции адреса.
Пример:
Для одно и того же IP в последующем результат трансляции будет такой же
как и при первом срабатывании. Т.е. если IP оттранслировался в 10.1.2.1,
то он будет продолжать транслироваться в 10.1.2.1 в дальнейшем.
nat on $ext_if from $int_net to any -> { 10.1.2.1, 10.1.2.3 } round-robin sticky-address
rdr on $ext_if from any to $ext_if -> { 192.168.0.4/30 } random sticky-address
Максимум 1000 IP могут соединится одновременно к web-серверу,
каждый может иметь не более 3-х одновременных соединений.
pass in on $ext_if proto tcp to $webserver port www flags S/SA \
keep state (source-track, max-src-states 3, max-src-nodes 10)
Установка таймаута в течении которого будет сохранен статус:
set timeout src.track 900
Статистика:
pfctl -sS
pfctl -vsS;
pfctl -vsi
|