
Я использую UFW на веб-сервере с высоким трафиком (много http/https-трафика) на Ubuntu (12.04 или 14.04).
Я попробовал настроить параметры ядра, связанные с отслеживанием соединения, с помощьюнекоторый успех.
Однако, если подумать, я не использую NAT, поэтому не думаю, что мне нужно отслеживание соединений, по крайней мере, для соединений через порт 80 или 443.
Я попытался следовать указаниямэтот вопросс адаптациями, а именно:
sudo iptables -t raw -A PREROUTING -p tcp --dport 80 -j NOTRACK
и моя необработанная таблица выглядит так:
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
NOTRACK tcp -- anywhere anywhere tcp dpt:http
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Чтобы проверить, что все это работает, я запрашиваю экземпляр nginx на машине с помощью wrk, используя 3 потока и 1000 соединений.
wrk -t 3 -c 1000 "http://<server_ip>/"
Поскольку они не должны отслеживаться, я не должен видеть их в списке conntrack.
Однако я делаю...
sudo sysctl -A | grep net.netfilter.nf_conntrack_count
net.netfilter.nf_conntrack_count = 1035
Я отчетливо вижу, как это значение увеличивается и уменьшается по мере проведения теста.
Что я делаю не так?
решение1
Вам также понадобится правило OUTPUT.
-t raw -A PREROUTING -p tcp --dport 80 -j NOTRACK
-t raw -A OUTPUT -p tcp --sport 80 -j NOTRACK