第9章 ネットワーク

9.1. NetworkManager

9.1.1. 従来のネットワークスクリプトのサポート

Red Hat Enterprise Linux 8 では、従来のネットワークスクリプトが非推奨となっており、デフォルトでは提供されません。基本インストールでは、nmcli ツールを介して NetworkManager を呼び出す ifup スクリプトおよび ifdown スクリプトの新しいバージョンが提供されます。Red Hat Enterprise Linux 8 で ifup スクリプトおよび ifdown スクリプトを実行するには、NetworkManager が起動している必要があります。

注記

/sbin/ifup-local スクリプト、ifdown-pre-local スクリプト、およびifdown-local スクリプトのカスタムコマンドは実行されません。

このスクリプトが必要な場合は、次のコマンドを使用すれば、システム内に非推奨のネットワークスクリプトをインストールできます。

~]# yum install network-scripts

ifup スクリプトおよび ifdown スクリプトが、インストールされた従来のネットワークスクリプトにリンクします。

従来のネットワークスクリプトを呼び出すと、そのスクリプトが非推奨であることを示す警告が表示されます。

9.1.2. NetworkManager が SR-IOV 仮想機能に対応

Red Hat Enterprise Linux 8 では、NetworkManager で、SR-IOV (Single Root I/O virtualization) をサポートするインターフェースに仮想ファンクション (VF) の数を設定できます。また、NetworkManager では、MAC アドレス、VLAN、spoof checking 設定、許可されるビットレートなど、VF の属性の一部を設定できます。SR-IOV に関連するすべてのプロパティーは、sriov 接続設定で利用できます。詳細は、man ページの nm-settings(5) を参照してください。

9.1.3. NetworkManager が、接続に対するワイルドカードインターフェースの名前一致に対応

以前は、インターフェース名の完全一致のみを使用して、特定のインターフェースへの接続を制限していました。今回の更新で、接続には、ワイルドカードに対応する新しい match.interface-name プロパティーが含まれるようになり、ワイルドカードパターンを使用した柔軟な方法で、接続用インターフェースを選択できるようになりました。

9.1.4. NetworkManager が、ethtool オフロード機能の設定に対応

この機能強化により、NetworkManager は、ethtool オフロード機能の設定をサポートするため、init スクリプトまたは NetworkManager ディスパッチャースクリプトを使用しなくなりました。その結果、以下のいずれかのメソッドを使用して、接続プロファイルの一部としてオフロード機能を設定できるようになりました。

  • nmcli ユーティリティーを使用
  • /etc/NetworkManager/system-connections/ ディレクトリーの鍵ファイルを編集
  • /etc/sysconfig/network-scripts/ifcfg-* ファイルを編集

この機能は、現在、グラフィカルインターフェースと nmtui ユーティリティーではサポートされていないことに注意してください。

9.2. パケットのフィルタリング

9.2.1. nftables が、iptables を、デフォルトのネットワークパケットフィルタリングのフレークワークとして置き換え

nftables フレームワークは、パケットの分離機能を提供し、iptables ツール、ip6tables ツール、arptables ツール、および ebtables ツールの後継となります。利便性、機能、パフォーマンスにおいて、以前のパケットフィルタリングツールに多くの改良が追加されました。以下に例を示します。

  • 線形処理の代わりにルックアップテーブルを使用
  • IPv4 プロトコルおよび IPv6 プロトコルに対する単一のフレームワーク
  • 完全ルールセットのフェッチ、更新、および保存を行わず、すべてアトミックに適用されるルール
  • ルールセットにおけるデバッグおよびトレースのサポート (nftrace) およびトレースイベントの監視 (nft ツール)
  • より一貫性のあるコンパクトな構文、プロトコル固有の拡張なし
  • サードパーティーのアプリケーション用 Netlink API

iptables と同様、nftables は、チェーンを保存するテーブルを使用します。このチェーンには、アクションを実行する個々のルールが含まれます。nft ツールは、以前のパケットフィルタリングフレームワークのツールをすべて置き換えます。libnftables ライブラリーは、libmnl ライブラリーの nftables Netlink API で、低レベルの対話のために使用できます。

iptables ツール、ip6tables ツール、ebtables ツール、および arptables ツールは、nftables ベースの同じ名前のドロップインツールに置き換えられました。外部の挙動は従来のものと同じですが、内部的には必要に応じて互換インターフェースを通して、従来の netfilter カーネルモジュールを使用した nftables を使用します。

nftables ルールセットに対するモジュールの効果は、nft list ruleset コマンドを使用して確認できます。これらのツールは、テーブル、チェーン、およびルールを nftables ルールセットに追加するため、nft flush ruleset などの nftables ルールセット操作は、先に別々のコマンドを使用してインストールしたルールセットに影響を及ぼす可能性があることに注意してください。

どの種類のツールが存在するかをすばやく識別するために、バックエンド名を追加するようにバージョン情報が更新されました。RHEL 8 では、nftables ベースの iptables ツールで、次のバージョン文字列が出力されます。

$ iptables --version
iptables v1.8.0 (nf_tables)

一方、従来の iptables ツールが存在する場合は、次のバージョン情報が出力されます。

$ iptables --version
iptables v1.8.0 (legacy)

9.2.2. RHEL 8 で、フィルターテーブルから Arptables FORWARD が削除される

arptables FORWARD チェーン機能は、Red Hat Enterprise Linux (RHEL) 8 で削除されました。 ebtables の FORWARD チェーンを使用して、それにルールを追加します。

9.2.3. iptables-ebtables の出力が、ebtables と一部互換性がない

RHEL 8 では、ebtables コマンドは、 iptables-ebtables パッケージが提供します。これには、ツールの nftables ベースの再実装が含まれます。このツールには別のコードベースがあり、その出力は、側面が異なる場合があるため、無視できるか、設計上の選択を慎重に検討する必要があります。

その結果、ebtables 出力を解析するスクリプトを移行する際に、以下を反映するスクリプトを調整します。

  • MAC アドレスの書式は、長さが固定されるように変更されました。octet 値では、2 文字の書式を維持するために、必要に応じて、個々のバイト値の前にゼロが含まれます。
  • IPv6 プレフィックスのフォーマットは、RFC 4291 に準拠するように変更しています。スラッシュ文字の後ろの終了部分は、IPv6 アドレスフォーマットのネットマスクを含まなくなりましたが、プレフィックス長を含みます。この変更は、有効な (左連続の) マスクにしか適用されませんが、それ以外の場合は、古い形式で印刷されます。

9.2.4. iptablesnftables に変換する新しいツール

今回の更新で、既存の iptables ルールまたは ip6tables ルールを、nftables で同等のルールに変換する iptables-translate ツールおよび ip6tables-translate ツールが追加されました。拡張機能によっては対応する機能がない場合もあります。対応する機能がない拡張機能が存在する場合は、ツールにより、その前に # 記号が付いた未変換ルールが出力されます。以下に例を示します。

| % iptables-translate -A INPUT -j CHECKSUM --checksum-fill
| nft # -A INPUT -j CHECKSUM --checksum-fill

さらに、ユーザーは、iptables-restore-translate ツールおよび ip6tables-restore-translate ツールを使用して、ルールのダンプを変換できます。その前に、iptables-save コマンドまたは ip6tables-save コマンドを使用して、たとえば、現在のルールのダンプを出力できます。

| % sudo iptables-save >/tmp/iptables.dump
| % iptables-restore-translate -f /tmp/iptables.dump
| # Translated by iptables-restore-translate v1.8.0 on Wed Oct 17 17:00:13 2018
| add table ip nat
| ...

9.3. wpa_supplicant の変更点

9.3.1. journalctlwpa_supplicant ログを読み込む

Red Hat Enterprise Linux (RHEL) 8 の wpa_supplicant パッケージは、CONFIG_DEBUG_SYSLOG が有効になった状態で構築されています。これにより、/var/log/wpa_supplicant.log ファイルの内容を確認する代わりに、journalctl ユーティリティーを使用して wpa_supplicant ログを読み取ることができます。

9.3.2. wpa_supplicant のワイヤレス拡張に対する compile-time サポートが無効になっている

wpa_supplicant パッケージでは、ワイヤレス拡張がサポートされません。 コマンドラインの引数として wext を使用する場合、またはワイヤレス拡張だけをサポートする古いアダプターのみを使用する場合は、wpa_supplicant デーモンを実行できません。

9.4. 新しいデータチャンクタイプ I-DATA が SCTP に追加される

今回の更新で、新しいデータチャンクタイプ (I-DATA)、およびストリームスケジューラーが SCTP (Stream Control Transmission Protocol) に追加されました。以前は、ユーザーが送信する順序で SCTP がユーザーメッセージを送信していたため、SCTP ユーザメッセージが大きくなると、送信が完了するまで、ストリーム内の他のすべてのメッセージがブロックされていました。I-DATA チャンクを使用すると、TSN (Transmission Sequence Number) フィールドがオーバーロードされなくなるため、SCTP ではさまざまな方法でストリームをスケジュールできるようになり、I-DATA ではユーザーメッセージのインターリーブ (RFC 8260) が可能になりました。両方のピアが I-DATA チャンクタイプをサポートしなければならないことに注意してください。

9.5. RHEL 8 における TCP の新機能

Red Hat Enterprise Linux 8 には、TCP ネットワーキングスタックバージョン 4.18 が同梱され、より高いパフォーマンスおよび安定性と、より優れたスケーラビリティーが提供されます。特に、入力接続率が高い、ビジー状態の TCP サーバーのパフォーマンスが向上します。

また、2 つの新しい TCP 輻輳制御アルゴリズム (BBR および NV) が利用でき、ほとんどのシナリオで、キュービックよりも待ち時間が少なく、スループットも良くなります。

9.5.1. RHEL 8 における TCP BBR サポート

Red Hat Enterprise Linux (RHEL) 8 で、新しい TCP 輻輳制御アルゴリズム、ボトルネック帯域幅、およびラウンドトリップ時間 (BBR) がサポートされるようになりました。BBR は、ボトルネックリンクおよびラウンドトリップ時間 (RTT) の帯域幅を決定します。ほとんどの輻輳アルゴリズムは、パケットロス (デフォルトの Linux TCP 輻輳制御アルゴリズムである CUBIC を含む) に基づいており、高スループットのリンク上の問題をかかえています。BBR は、損失イベントに直接反応せず、利用可能な帯域幅をそれと合わせて、TCP ペーシングレートを調整します。TCP BBR のユーザーは、関係するすべてのインターフェースの fq キュー設定に切り替える必要があります。

ユーザーが明示的に fq を使用し、fq_codel は使用しないことに注意してください。

詳細は、man ページの tc-fq を参照してください。

9.6. IPVLAN 仮想ネットワークドライバーに対応

Red Hat Enterprise Linux 8.0 のカーネルには、IPVLAN 仮想ネットワークドライバーのサポートが含まれます。今回の更新で、IPVLAN の仮想ネットワークインターフェースカード (NIC) により、ローカルネットワークに 1 つの MAC アドレスを公開する複数のコンテナーに対するネットワーク接続が可能になります。これにより、ピアネットワーク機器でサポートされている MAC アドレス数の制限を改善するために、1 つのホストで多数のコンテナーを使用できるようになります。

9.7. tc コマンドの -ok オプションが削除される

tc コマンドの -ok オプションが、Red Hat Enterprise Linux 8 から削除されています。回避策として、ユーザーは、カーネルを使用した netlink から直接通信するコードを実装できます。受け取った応答メッセージは、送信した要求の完了およびステータスを示します。時間がそれほど重要ではないアプリケーションに対する別の方法は、各コマンドに対して個別に tc を呼び出すことです。これは、カスタムスクリプトで発生する可能性があります。これは、成功したそれぞれの tc 起動に対して呼び出し、OK を出力することで、tc -batch 動作をシミュレートします。