firewalld を設定中に、以下のエラーに遭遇しました。
COMMAND_FAILED: 'python-nftables' failed: netlink: Error: Could not process rule: No buffer space available原因を特定し解決できたので、その手順をメモしておきます。
原因の調査 #
このエラーは firewalld の設定を有効化する際に発生しました。
net.core.rmem_maxやnet.core.rmem_defaultなどのシステムパラメータが関係している可能性が高いことがわかりました。
現在の設定を確認するには、以下のコマンドを実行します(LXC環境だったため、ホスト側の設定も確認しました)。
sysctl -n net.core.rmem_max
sysctl -n net.core.rmem_default解決方法 #
一時的にバッファサイズを増やしてみます。
sysctl -w net.core.rmem_max=新しい値
sysctl -w net.core.rmem_default=新しい値設定変更後、firewalld の設定を再試行したところ、問題なく動作するようになりました。
設定の永続化 #
上記の変更は一時的なものなので、再起動後も適用されるように sysctl の設定ファイルに追加します。
echo "net.core.rmem_max = 新しい値" >> /etc/sysctl.d/network_buffer.conf
echo "net.core.rmem_default = 新しい値" >> /etc/sysctl.d/network_buffer.confまとめ #
firewalldの設定時にNo buffer space availableエラーが発生した場合、net.core.rmem_maxとnet.core.rmem_defaultの値を調整することで解決できる可能性があります。同様のエラーに遭遇した場合は、この方法を試してみてください。ただし、ネットワークバッファの変更はシステム全体に影響を与える可能性がありますので、注意する必要があります。