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 コマンドがセットの正しいメモリー内サイズを表示し、出力が、ハッシュ セットタイプに対して実際に割り当てられたメモリーに一致します。

(BZ#1711520)

IPv6 プロトコルが無効になっていると、firewalld が IPv6 ルールの作成を試行しない

以前では、IPv6 プロトコルが無効になっていると、ip6tables ユーティリティーが利用できなくても、firewalld サービスが ip6tables ユーティリティーを使用してルールを誤って作成しようとしていました。したがって、firewalld がファイアウォールを初期化すると、サービスがエラーメッセージを記録していました。今回の更新で問題が修正され、IPv6 が無効になっていると、firewalld が IPv4 ルールのみを初期化するようになりました。

(BZ#1738785)

firewall-cmd--remove-rules オプションが、指定した基準に一致するダイレクトルールのみを削除

以前は、firewall-cmd コマンドの --remove-rules オプションが、削除するルールを確認しませんでした。したがって、このコマンドは、サブセットルールではなく、すべてのダイレクトルールを削除します。今回の更新でこの問題が修正されました。したがって、firewall-cmd は、指定した基準に一致するダイレクトルールだけを削除するようになりました。

(BZ#1723610)

forward-ports を使用した firewalld リッチルールの削除が期待どおりに機能

以前は、firewalld サービスが、forward-ports 設定でルールの削除を誤って処理していました。そのため、ランタイム設定から forward-ports が設定されたリッチルールの削除に失敗していました。今回の更新でこの問題が修正されました。これにより、forward-ports が設定されたリッチルールを削除すると、期待通りに機能します。

(BZ#1637675)

パケットが他のゾーンに飛んで、予期しない動作が発生しない

以前は、1 つのゾーンにルールを設定するときに、firewalld デーモンにより、パケットが複数のゾーンの影響を受けることができました。この動作は、パケットが 1 つのゾーンの一部にしかならない firewalld ゾーンの概念に違反していました。今回の更新でバグが修正され、firewalld はパケットが複数のゾーンの影響を受けないようになりました。

警告: ゾーンのドリフト動作に故意または無意識に依存している場合、この変更は一部のサービスの可用性に影響を与える可能性があります。

(BZ#1713823)