私は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
すべてが機能することをテストするために、3つのスレッドと1000の接続を使用するwrkを使用してマシン上で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
テストを実行すると、この値が上下することがはっきりとわかります。
私は何が間違っているのですか?
OUTPUTルールも必要です。
-t raw -A PREROUTING -p tcp --dport 80 -j NOTRACK
-t raw -A OUTPUT -p tcp --sport 80 -j NOTRACK