
我在 ubuntu(12.04 或 14.04)上的高流量網路伺服器(大量 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