6.7. ネットワーク
tc filter show
コマンドが、ハンドルが 0xffffffff
の場合にフィルターを正しく表示
以前は、TC flower コードのバグにより、不要な整数オーバーフローが発生していました。そのため、0xffffffff
をハンドルを処理として使用した flower ルールをダンプすると、無限のループが発生していました。今回の更新で、64 ビットアーキテクチャーで整数オーバーフローが発生しないようにします。このため、このシナリオでは tc filter show
フィルターがループしなくなり、フィルターが正しく表示されるようになりました。
(BZ#1712737)
無効な TC ルールを適用しようとするとカーネルがクラッシュしなくなる
以前は、トラフィック制御 (TC) ルールを、無効な goto chain
パラメーターを持つルールに置き換えるとカーネルクラッシュが発生していました。今回の更新で、カーネルは、上記のシナリオで NULL 逆参照を回避します。その結果、カーネルがクラッシュせず、代わりにエラーメッセージがログに記録されます。
(BZ#1712918)
ICMPv6 Packet Too Big
メッセージの受信時にカーネルが PMTU を正しく更新
リンクローカルアドレスなどの特定の状況では、複数のルートがソースアドレスに適合できます。以前は、カーネルは、Internet Control Message Protocol Version 6 (ICMPv6) パケットを受信するときに、入力インターフェイスを確認しませんでした。そのため、ルート検索が、入力インターフェイスに一致しない宛先を返すことがありました。そのため、ICMPv6 Packet Too Big
メッセージを受信すると、カーネルが別の入力インターフェイスの Path Maximum Transmission Unit (PMTU) を更新する可能性があります。今回の更新で、カーネルはルートの検索時に入力インターフェイスを確認します。その結果、カーネルはソースアドレスに基づいて正しい宛先を更新し、上述のシナリオで PMTU が想定どおりに機能するようになりました。
(BZ#1722686)
MACsec が有効なフレームを削除しない
以前は、AES-GCM の暗号化コンテキストが完全に初期化されていない場合は、受信フレームの復号に失敗していました。したがって、MACsec は有効な受信フレームを破棄し、InPktsNotValid
カウンターを増やしていました。今回の更新で、暗号化コンテキストの初期化が修正されました。ここで、AES-GCM で復号に成功し、MACsec が有効なフレームを破棄しなくなりました。
(BZ#1698551)
goto chain
をセカンダリー TC 制御アクションとして使用する場合にカーネルがクラッシュしない
以前は、TC (traffic control) の act gact
ルールおよび act police
ルールを実行するのに、無効な goto chain
パラメーターがセカンダリー制御アクションとして使用された場合、カーネルは予期せずに終了していました。今回の更新で、カーネルは NULL 逆参照を使用した goto chain
の使用を回避し、上記のシナリオでクラッシュしなくなりました。代わりに、カーネルは -EINVAL
エラーメッセージを返します。
(BZ#1729033)
カーネルが、NLM_F_EXCL
セットを使用して重複したルールを追加できない
以前は、新しいポリシーのルーティングルールが追加される時に、カーネルがルールコンテンツを確認しませんでした。したがって、カーネルが、完全に同じルールを追加することができました。これによりルールセットが複雑になり、NetworkManager がルールのキャッシュを試行すると問題が発生する可能性があります。今回の更新で、NLM_F_EXCL
フラグがカーネルに追加されました。ルールが追加され、フラグが設定されていると、カーネルはルールの内容を確認し、ルールがすでに存在する場合には EEXIST
エラーを返すようになりました。これにより、カーネルは重複するルールを追加できなくなりました。
(BZ#1700691)
hash
セットタイプに対して一貫性のあるメモリーを ipset list
コマンドが報告
エントリーを hash
セットタイプに追加した場合は、ipset
ユーティリティーが、さらなるメモリーブロックを割り当てて、新しいエントリーのメモリー内表示のサイズを調整する必要があります。以前は、ipset
は、現在のメモリー内サイズに値を追加する代わりに、新しいブロックのサイズにのみ、セットごとに割り当てられた合計サイズを設定していました。これにより、ip list
コマンドで、一貫性のないメモリーサイズが報告されていました。今回の更新で、ipset
が、メモリー内のサイズを正しく計算するようになりました。これにより、ipset list
コマンドがセットの正しいメモリー内サイズを表示し、出力が、ハッシュ
セットタイプに対して実際に割り当てられたメモリーに一致します。
IPv6 プロトコルが無効になっていると、firewalld
が IPv6 ルールの作成を試行しない
以前では、IPv6 プロトコルが無効になっていると、ip6tables
ユーティリティーが利用できなくても、firewalld
サービスが ip6tables
ユーティリティーを使用してルールを誤って作成しようとしていました。したがって、firewalld
がファイアウォールを初期化すると、サービスがエラーメッセージを記録していました。今回の更新で問題が修正され、IPv6 が無効になっていると、firewalld
が IPv4 ルールのみを初期化するようになりました。
firewall-cmd
の --remove-rules
オプションが、指定した基準に一致するダイレクトルールのみを削除
以前は、firewall-cmd
コマンドの --remove-rules
オプションが、削除するルールを確認しませんでした。したがって、このコマンドは、サブセットルールではなく、すべてのダイレクトルールを削除します。今回の更新でこの問題が修正されました。したがって、firewall-cmd
は、指定した基準に一致するダイレクトルールだけを削除するようになりました。
(BZ#1723610)
forward-ports
を使用した firewalld
リッチルールの削除が期待どおりに機能
以前は、firewalld
サービスが、forward-ports
設定でルールの削除を誤って処理していました。そのため、ランタイム設定から forward-ports
が設定されたリッチルールの削除に失敗していました。今回の更新でこの問題が修正されました。これにより、forward-ports
が設定されたリッチルールを削除すると、期待通りに機能します。
パケットが他のゾーンに飛んで、予期しない動作が発生しない
以前は、1 つのゾーンにルールを設定するときに、firewalld
デーモンにより、パケットが複数のゾーンの影響を受けることができました。この動作は、パケットが 1 つのゾーンの一部にしかならない firewalld
ゾーンの概念に違反していました。今回の更新でバグが修正され、firewalld
はパケットが複数のゾーンの影響を受けないようになりました。
警告: ゾーンのドリフト動作に故意または無意識に依存している場合、この変更は一部のサービスの可用性に影響を与える可能性があります。