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
の値を調整することで解決できる可能性があります。同様のエラーに遭遇した場合は、この方法を試してみてください。ただし、ネットワークバッファの変更はシステム全体に影響を与える可能性がありますので、注意する必要があります。