我在 ubuntu(12.04 或 14.04)上的高流量 Web 服务器(大量 http/https 流量)上使用 ufw。
我尝试使用以下方法调整与连接跟踪相关的内核参数取得一些成功。
然而,仔细想想,我没有做 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
为了测试一切是否正常,我使用 wrk 以 3 个线程和 1000 个连接请求机器上的 nginx 实例。
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