IPファイアウォール
CentOS7からファイアウォールサービスがiptablesからFirewalldに変更されました。Firewalldは内部的に従来の iptablesを使用しているようなのですが、ファイアウォールルール数が増えて7000ぐらいになってからCPU使用率が異常に上がり、さらにはReloadに時間がかかってしまうようになりました。
そこで、旧来のiptablesに戻すことにしました。iptablesもルール数が4000を超えるとスループットが下がるそうですが、20000ルールエントリしてもCPU使用率が上がっていないので結果的ですがシステム全体のスループットが改善されました。
まずはiptablesを利用できるようにします。
# yum -y install iptables-services
基本的なルールを追加します。(詳細はこちら「CentOS 7 でiptables」)
/etc/sysconfig/iptables IPv4filter
/etc/sysconfig/ip6tables IPv6filter
さらに特定の国からの通信をDROPするルールを追加しました。
― 世界の国別 IPv4 アドレス割り当てリスト ―を参考にさせて頂きました。(先人に感謝です)
# systemctl stop firewalld
# systemctl start iptables
# systemctl enable iptables
# systemctl disable firewalld