検索

ネットワークの設定および管理

download PDF
Red Hat Enterprise Linux 8

ネットワークインターフェイス、ファイアウォール、および高度なネットワーク機能の管理

Red Hat Customer Content Services

概要

Red Hat Enterprise Linux (RHEL) のネットワーク機能を使用すると、組織のネットワーク要件とセキュリティー要件に合わせてホストを設定できます。以下に例を示します。
  • ボンディング、VLAN、ブリッジ、トンネル、およびその他のネットワークタイプを設定して、ホストをネットワークに接続できます。
  • ローカルホストとネットワーク全体に対して、パフォーマンスが重要なファイアウォールを構築できます。REHL には、firewalld サービス、nftables フレームワーク、Express Data Path (XDP) などのパケットフィルタリングソフトウェアが含まれています。
  • RHEL は、ポリシーベースのルーティングや Multipath TCP (MPTCP) などの高度なネットワーク機能もサポートします。

Red Hat ドキュメントへのフィードバック (英語のみ)

Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。

Jira からのフィードバック送信 (アカウントが必要)

  1. Jira の Web サイトにログインします。
  2. 上部のナビゲーションバーで Create をクリックします。
  3. Summary フィールドにわかりやすいタイトルを入力します。
  4. Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
  5. ダイアログの下部にある Create をクリックします。

第1章 一貫したネットワークインターフェイス命名の実装

udev デバイスマネージャーは、Red Hat Enterprise Linux で一貫したデバイス命名を実装します。デバイスマネージャーは、さまざまな命名スキームをサポートしています。デフォルトでは、ファームウェア、トポロジー、および場所の情報に基づいて固定名を割り当てます。

一貫したデバイス命名を使用しない場合、Linux カーネルは固定の接頭辞とインデックスを組み合わせて名前をネットワークインターフェイスに割り当てます。カーネルがネットワークデバイスを初期化すると、インデックスが増加します。たとえば、eth0 は、起動時にプローブされる最初のイーサネットデバイスを表します。別のネットワークインターフェイスコントローラーをシステムに追加すると、再起動後にデバイスが異なる順序で初期化される可能性があるため、カーネルデバイス名の割り当てが一定でなくなります。その場合、カーネルはデバイスに別の名前を付けることがあります。

この問題を解決するために、udev は一貫したデバイス名を割り当てます。これには、次の利点があります。

  • 再起動してもデバイス名が変わりません。
  • ハードウェアを追加または削除しても、デバイス名が固定されたままになります。
  • 不具合のあるハードウェアをシームレスに交換できます。
  • ネットワークの命名はステートレスであり、明示的な設定ファイルは必要ありません。
警告

通常、Red Hat は、一貫したデバイス命名が無効になっているシステムはサポートしていません。例外については、Is it safe to set net.ifnames=0 ソリューションを参照してください。

1.1. udev デバイスマネージャーによるネットワークインターフェイスの名前変更の仕組み

ネットワークインターフェイスの一貫した命名スキームを実装するために、udev デバイスマネージャーは次のルールファイルを記載されている順番どおりに処理します。

  1. オプション: /usr/lib/udev/rules.d/60-net.rules

    /usr/lib/udev/rules.d/60-net.rules ファイルは、非推奨の /usr/lib/udev/rename_device ヘルパーユーティリティーが /etc/sysconfig/network-scripts/ifcfg-* ファイルの HWADDR パラメーターを検索することを定義します。変数に設定した値がインターフェイスの MAC アドレスに一致すると、ヘルパーユーティリティーは、インターフェイスの名前を、ifcfg ファイルの DEVICE パラメーターに設定した名前に変更します。

    システムがキーファイル形式の NetworkManager 接続プロファイルのみを使用する場合、udev はこの手順をスキップします。

  2. Dell システムのみ: /usr/lib/udev/rules.d/71-biosdevname.rules

    このファイルは、biosdevname パッケージがインストールされている場合にのみ存在します。このルールファイルは、前の手順でインターフェイスの名前が変更されていない場合に、biosdevname ユーティリティーが命名ポリシーに従ってインターフェイスの名前を変更することを定義します。

    注記

    biosdevname は Dell システムにのみインストールして使用してください。

  3. /usr/lib/udev/rules.d/75-net-description.rules

    このファイルは、udev がネットワークインターフェイスを検査し、udev の内部変数にプロパティーを設定する方法を定義します。これらの変数は、次のステップで /usr/lib/udev/rules.d/80-net-setup-link.rules ファイルによって処理されます。一部のプロパティーは未定義である場合があります。

  4. /usr/lib/udev/rules.d/80-net-setup-link.rules

    このファイルは udev サービスの net_setup_link ビルトインを呼び出します。udev/usr/lib/systemd/network/99-default.link ファイルの NamePolicy パラメーターのポリシーの順序に基づいてインターフェイスの名前を変更します。詳細は、ネットワークインターフェイスの命名ポリシー を参照してください。

    どのポリシーも適用されない場合、udev はインターフェイスの名前を変更しません。

1.2. ネットワークインターフェイスの命名ポリシー

デフォルトでは、udev デバイスマネージャーは /usr/lib/systemd/network/99-default.link ファイルを使用して、インターフェイスの名前を変更するときに適用するデバイス命名ポリシーを決定します。このファイルの NamePolicy パラメーターは、udev がどのポリシーをどの順序で使用するかを定義します。

NamePolicy=kernel database onboard slot path

次の表では、NamePolicy パラメーターで指定された最初に一致するポリシーに基づく、udev のさまざまなアクションを説明します。

ポリシー説明名前の例

kernel

デバイス名が予測可能であるとカーネルが通知した場合、udev はこのデバイスの名前を変更しません。

lo

database

このポリシーは、udev ハードウェアデータベース内のマッピングに基づいて名前を割り当てます。詳細は、システム上の hwdb(7) man ページを参照してください。

idrac

onboard

デバイス名には、ファームウェアまたは BIOS が提供するオンボードデバイスのインデックス番号が含まれます。

eno1

slot

デバイス名には、ファームウェアまたは BIOS が提供する PCI Express (PCIe) ホットプラグのスロットインデックス番号が含まれます。

ens1

path

デバイス名には、ハードウェアのコネクターの物理的な場所が含まれます。

enp1s0

mac

デバイス名には MAC アドレスが含まれます。デフォルトでは、Red Hat Enterprise Linux はこのポリシーを使用しませんが、管理者はこのポリシーを有効にすることができます。

enx525400d5e0fb

1.3. ネットワークインターフェイスの命名スキーム

udev デバイスマネージャーは、デバイスドライバーが提供する一定のインターフェイス属性を使用して、一貫したデバイス名を生成します。

新しいバージョンの udev によってサービスが特定のインターフェイス名を作成する方法が変更された場合、Red Hat は、新しいスキームバージョンを追加し、システム上の systemd.net-naming-scheme(7) man ページに詳細を記載します。デフォルトでは、Red Hat Enterprise Linux (RHEL) 9 は、ユーザーが RHEL のそれ以降のマイナーバージョンをインストールまたは更新した場合でも、rhel-9.0 命名スキームを使用します。

デフォルト以外のスキームを使用する場合は、ネットワークインターフェイスの命名スキームを切り替える ことができます。

さまざまなデバイスタイプおよびプラットフォームの命名スキームの詳細は、システム上の systemd.net-naming-scheme(7) man ページを参照してください。

1.4. 別のネットワークインターフェイス命名スキームへの切り替え

デフォルトでは、Red Hat Enterprise Linux (RHEL) 9 は、ユーザーが RHEL のそれ以降のマイナーバージョンをインストールまたは更新した場合でも、rhel-9.0 命名スキームを使用します。デフォルトの命名スキームはほとんどの状況に適していますが、次のような理由で別のスキームバージョンに切り替える必要がある場合もあります。

  • 新しいスキームによりインターフェイス名にスロット番号などの追加属性を追加すると、デバイスをより適切に識別できるようになります。
  • 新しいスキームにより、カーネルによって割り当てられたデバイス名 (eth*) に udev がフォールバックするのを防ぐことができます。これは、ドライバーが 2 つ以上のインターフェイスに対して一意の名前を生成するのに十分な一意の属性を提供していない場合に発生します。

前提条件

  • サーバーのコンソールにアクセスできる。

手順

  1. ネットワークインターフェイスをリスト表示します。

    # ip link show
    2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:00:5e:00:53:1a brd ff:ff:ff:ff:ff:ff
    ...

    インターフェイスの MAC アドレスを記録します。

  2. ネットワークインターフェイスの ID_NET_NAMING_SCHEME プロパティーを表示して、RHEL が現在使用している命名スキームを特定します。

    # udevadm info --query=property --property=ID_NET_NAMING_SCHEME /sys/class/net/eno1'
    ID_NET_NAMING_SCHEME=rhel-8.0

    このプロパティーは lo ループバックデバイスでは使用できないことに注意してください。

  3. インストールされているすべてのカーネルのコマンドラインに net.naming-scheme=<scheme> オプションを追加します。次に例を示します。

    # grubby --update-kernel=ALL --args=net.naming-scheme=rhel-8.4
  4. システムを再起動します。

    # reboot
  5. 記録した MAC アドレスに基づいて、命名スキームの変更により変更されたネットワークインターフェイスの新しい名前を特定します。

    # ip link show
    2: eno1np0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:00:5e:00:53:1a brd ff:ff:ff:ff:ff:ff
    ...

    この例では、スキームを切り替えた後、udev によって MAC アドレスが 00:00:5e:00:53:1a のデバイスに eno1np0 という名前が付けられます。これは以前は eno1 という名前でした。

  6. 以前の名前を持つインターフェイスを使用する NetworkManager 接続プロファイルを特定します。

    # nmcli -f device,name connection show
    DEVICE  NAME
    eno1  example_profile
    ...
  7. 接続プロファイルの connection.interface-name プロパティーを新しいインターフェイス名に設定します。

    # nmcli connection modify example_profile connection.interface-name "eno1np0"
  8. 接続プロファイルを再アクティブ化します。

    # nmcli connection up example_profile

検証

  • ネットワークインターフェイスの ID_NET_NAMING_SCHEME プロパティーを表示して、RHEL が現在使用している命名スキームを特定します。

    # udevadm info --query=property --property=ID_NET_NAMING_SCHEME /sys/class/net/eno1np0'
    ID_NET_NAMING_SCHEME=_rhel-8.4

1.5. IBM Z プラットフォームでの予測可能な RoCE デバイス名の決定

Red Hat Enterprise Linux (RHEL) 8.7 以降では、udev デバイスマネージャーは IBM Z 上の RoCE インターフェイスの名前を次のように設定します。

  • ホストがデバイスに一意の識別子 (UID) を強制する場合、udev はUID に基づく一貫したデバイス名 (例: eno<UID_in_decmal>) を割り当てます。
  • ホストがデバイスに UID を強制しない場合、設定によって動作が異なります。

    • デフォルトでは、udev は予測できない名前をデバイスに使用します。
    • net.naming-scheme=rhel-8.7 カーネルコマンドラインオプションを設定すると、udev はデバイスの機能識別子 (FID) に基づく一貫したデバイス名 (例: ens<FID_in_decmal>) を割り当てます。

次の場合は、IBM Z 上の RoCE インターフェイスに、予測可能なデバイス名を手動で設定します。

  • ホストが RHEL 8.6 以前を実行しており、デバイスに UID を強制している。RHEL 8.7 以降のバージョンに更新する予定である。

    RHEL 8.7 以降のバージョンに更新した後は、udev は一貫したインターフェイス名を使用します。ただし、更新前に予測できないデバイス名を使用していた場合、NetworkManager 接続プロファイルは引き続きそれらの名前を使用し、影響を受けるプロファイルを更新するまでアクティベートできません。

  • ホストが RHEL 8.7 以降を実行しており、UID を強制していない。RHEL 9 にアップグレードする予定である。

udev ルールまたは systemd リンクファイルを使用してインターフェイスの名前を手動で変更する前に、予測可能なデバイス名を決定する必要があります。

前提条件

  • RoCE コントローラーがシステムにインストールされている。
  • sysfsutils パッケージがインストールされている。

手順

  1. 利用可能なネットワークデバイスを表示し、RoCE デバイスの名前を確認します。

    # ip link show
    ...
    2: enP5165p0s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    ...
  2. /sys/ ファイルシステム内のデバイスパスを表示します。

    # systool -c net -p
    Class = "net"
    
      Class Device = "enP5165p0s0"
      Class Device path = "/sys/devices/pci142d:00/142d:00:00.0/net/enP5165p0s0"
        Device = "142d:00:00.0"
        Device path = "/sys/devices/pci142d:00/142d:00:00.0"

    次の手順では、Device path フィールドに表示されているパスを使用します。

  3. <device_path>/uid_id_unique ファイルの値を表示します。以下に例を示します。

    # cat /sys/devices/pci142d:00/142d:00:00.0/uid_id_unique

    表示された値は、UID の一意性が強制されるかどうかを示します。この値は後の手順で必要になります。

  4. 一意の識別子を決定します。

    • UID の一意性が強制されている場合 (1)、<device_path>/uid ファイルに保存されている UID を表示します。以下に例を示します。

      # cat /sys/devices/pci142d:00/142d:00:00.0/uid
    • UID の一意性が強制されていない場合 (0)、<device_path>/function_id ファイルに保存されている FID を表示します。以下に例を示します。

      # cat /sys/devices/pci142d:00/142d:00:00.0/function_id

    コマンドの出力には、UID 値と FID 値が 16 進数で表示されます。

  5. 16 進数の識別子を 10 進数に変換します。以下に例を示します。

    # printf "%d\n" 0x00001402
    5122
  6. 予測可能なデバイス名を決定するには、UID の一意性が強制されるかどうかに基づいて、対応する接頭辞に 10 進数の形式の識別子を追加します。

    • UID の一意性が強制される場合は、eno 接頭辞に識別子を追加します (例: eno5122)。
    • UID の一意性が強制されない場合は、ens 接頭辞に識別子を追加します (例: ens5122)。

関連情報

1.6. インストール時のイーサネットインターフェイスの接頭辞のカスタマイズ

イーサネットインターフェイスにデフォルトのデバイス命名ポリシーを使用しない場合は、Red Hat Enterprise Linux (RHEL) のインストール時にカスタムデバイス接頭辞を設定できます。

重要

Red Hat は、RHEL のインストール時に接頭辞を設定した場合にのみ、カスタマイズされたイーサネット接頭辞を持つシステムをサポートします。すでにデプロイされているシステムでの prefixdevname ユーティリティーの使用はサポートされていません。

インストール時にデバイス接頭辞を設定した場合、udev サービスはインストール後にイーサネットインターフェイスに <prefix><index> という形式を使用します。たとえば、接頭辞 net を設定すると、サービスはイーサネットインターフェイスに net0net1 などの名前を割り当てます。

udev サービスはカスタム接頭辞にインデックスを追加し、既知のイーサネットインターフェイスのインデックス値を保存します。インターフェイスを追加すると、udev は、以前に割り当てたインデックス値より 1 大きいインデックス値を新しいインターフェイスに割り当てます。

前提条件

  • 接頭辞が ASCII 文字で構成されている。
  • 接頭辞が英数字の文字列である。
  • 接頭辞が 16 文字未満である。
  • 接頭辞が、ethenoensem などの他の既知のネットワークインターフェイス接頭辞と競合しない。

手順

  1. Red Hat Enterprise Linux インストールメディアを起動します。
  2. ブートマネージャーで、次の手順を実行します。

    1. Install Red Hat Enterprise Linux <version> エントリーを選択します。
    2. Tab を押してエントリーを編集します。
    3. net.ifnames.prefix=<prefix> をカーネルオプションに追加します。
    4. Enter を押してインストールプログラムを起動します。
  3. Red Hat Enterprise Linux をインストールします。

検証

  • インターフェイス名を確認するには、ネットワークインターフェイスを表示します。

    # ip link show
    ...
    2: net0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:00:5e:00:53:1a brd ff:ff:ff:ff:ff:ff
    ...

1.7. udev ルールを使用したユーザー定義のネットワークインターフェイス名の設定

udev ルールを使用して、組織の要件を反映したカスタムネットワークインターフェイス名を実装できます。

手順

  1. 名前を変更するネットワークインターフェイスを特定します。

    # ip link show
    ...
    enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:00:5e:00:53:1a brd ff:ff:ff:ff:ff:ff
    ...

    インターフェイスの MAC アドレスを記録します。

  2. インターフェイスのデバイスタイプ ID を表示します。

    # cat /sys/class/net/enp1s0/type
    1
  3. /etc/udev/rules.d/70-persistent-net.rules ファイルを作成し、名前を変更する各インターフェイスのルールを追加します。

    SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="<MAC_address>",ATTR{type}=="<device_type_id>",NAME="<new_interface_name>"
    重要

    ブートプロセス中に一貫したデバイス名が必要な場合は、ファイル名として 70-persistent-net.rules のみを使用してください。RAM ディスクイメージを再生成すると、dracut ユーティリティーはこの名前のファイルを initrd イメージに追加します。

    たとえば、次のルールを使用して、MAC アドレス 00:00:5e:00:53:1a のインターフェイスの名前を provider0 に変更します。

    SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="00:00:5e:00:53:1a",ATTR{type}=="1",NAME="provider0"
  4. オプション: initrd RAM ディスクイメージを再生成します。

    # dracut -f

    この手順は、RAM ディスクにネットワーク機能が必要な場合にのみ必要です。たとえば、ルートファイルシステムが iSCSI などのネットワークデバイスに保存されている場合がこれに当てはまります。

  5. 名前を変更するインターフェイスを使用する NetworkManager 接続プロファイルを特定します。

    # nmcli -f device,name connection show
    DEVICE  NAME
    enp1s0  example_profile
    ...
  6. 接続プロファイルの connection.interface-name プロパティーの設定を解除します。

    # nmcli connection modify example_profile connection.interface-name ""
  7. 一時的に、新しいインターフェイス名と以前のインターフェイス名の両方に一致するように接続プロファイルを設定します。

    # nmcli connection modify example_profile match.interface-name "provider0 enp1s0"
  8. システムを再起動します。

    # reboot
  9. リンクファイルで指定した MAC アドレスを持つデバイスの名前が Provider0 に変更されていることを確認します。

    # ip link show
    provider0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 00:00:5e:00:53:1a brd ff:ff:ff:ff:ff:ff
    ...
  10. 新しいインターフェイス名のみと一致するように接続プロファイルを設定します。

    # nmcli connection modify example_profile match.interface-name "provider0"

    これで、接続プロファイルから古いインターフェイス名が削除されました。

  11. 接続プロファイルを再アクティブ化します。

    # nmcli connection up example_profile

関連情報

  • システム上の udev(7) man ページ

第2章 イーサネット接続の設定

NetworkManager は、ホストにインストールされている各イーサネットアダプターの接続プロファイルを作成します。デフォルトでは、このプロファイルは IPv4 接続と IPv6 接続の両方に DHCP を使用します。次の場合は、この自動作成されたプロファイルを変更するか、新しいプロファイルを追加してください。

  • ネットワークに、静的 IP アドレス設定などのカスタム設定が必要な場合
  • ホストが異なるネットワーク間をローミングするため、複数のプロファイルが必要な場合

Red Hat Enterprise Linux は、イーサネット接続を設定するためのさまざまなオプションを管理者に提供します。以下に例を示します。

  • nmcli を使用して、コマンドラインで接続を設定します。
  • nmtui を使用して、テキストベースのユーザーインターフェイスで接続を設定します。
  • GNOME Settings メニューまたは nm-connection-editor アプリケーションを使用して、グラフィカルインターフェイスで接続を設定します。
  • nmstatectl を使用して、Nmstate API を介して接続を設定します。
  • RHEL システムロールを使用して、1 つまたは複数のホストで接続の設定を自動化します。
注記

Microsoft Azure クラウドで実行しているホストでイーサネット接続を手動で設定する場合は、cloud-init サービスを無効にするか、クラウド環境から取得したネットワーク設定を無視するように設定します。それ以外の場合は、cloud-init は、手動で設定したネットワーク設定を次回の再起動時に上書きされます。

2.1. nmcli を使用したイーサネット接続の設定

イーサネット経由でホストをネットワークに接続する場合は、nmcli ユーティリティーを使用してコマンドラインで接続の設定を管理できます。

前提条件

  • 物理または仮想イーサネットネットワークインターフェイスコントローラー (NIC) がサーバーに設定されている。

手順

  1. NetworkManager 接続プロファイルをリストします。

    # nmcli connection show
    NAME                UUID                                  TYPE      DEVICE
    Wired connection 1  a5eb6490-cc20-3668-81f8-0314a27f3f75  ethernet  enp1s0

    デフォルトでは、NetworkManager はホスト内の各 NIC のプロファイルを作成します。この NIC を特定のネットワークにのみ接続する予定がある場合は、自動作成されたプロファイルを調整してください。この NIC をさまざまな設定のネットワークに接続する予定がある場合は、ネットワークごとに個別のプロファイルを作成してください。

  2. 追加の接続プロファイルを作成する場合は、次のように入力します。

    # nmcli connection add con-name <connection-name> ifname <device-name> type ethernet

    既存のプロファイルを変更するには、この手順をスキップしてください。

  3. オプション: 接続プロファイルの名前を変更します。

    # nmcli connection modify "Wired connection 1" connection.id "Internal-LAN"

    ホストに複数のプロファイルがある場合は、わかりやすい名前を付けると、プロファイルの目的を識別しやすくなります。

  4. 接続プロファイルの現在の設定を表示します。

    # nmcli connection show Internal-LAN
    ...
    connection.interface-name:     enp1s0
    connection.autoconnect:        yes
    ipv4.method:                   auto
    ipv6.method:                   auto
    ...
  5. IPv4 を設定します。

    • DHCP を使用するには、次のように入力します。

      # nmcli connection modify Internal-LAN ipv4.method auto

      ipv4.method がすでに auto (デフォルト) に設定されている場合は、この手順をスキップしてください。

    • 静的 IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および検索ドメインを設定するには、次のように入力します。

      # nmcli connection modify Internal-LAN ipv4.method manual ipv4.addresses 192.0.2.1/24 ipv4.gateway 192.0.2.254 ipv4.dns 192.0.2.200 ipv4.dns-search example.com
  6. IPv6 設定を行います。

    • ステートレスアドレス自動設定 (SLAAC) を使用するには、次のように入力します。

      # nmcli connection modify Internal-LAN ipv6.method auto

      ipv6.method がすでに auto (デフォルト) に設定されている場合は、この手順をスキップしてください。

    • 静的 IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および検索ドメインを設定するには、次のように入力します。

      # nmcli connection modify Internal-LAN ipv6.method manual ipv6.addresses 2001:db8:1::fffe/64 ipv6.gateway 2001:db8:1::fffe ipv6.dns 2001:db8:1::ffbb ipv6.dns-search example.com
  7. プロファイルの他の設定をカスタマイズするには、次のコマンドを使用します。

    # nmcli connection modify <connection-name> <setting> <value>

    値はスペースまたはセミコロンで引用符で囲みます。

  8. プロファイルをアクティブ化します。

    # nmcli connection up Internal-LAN

検証

  1. NIC の IP 設定を表示します。

    # ip address show enp1s0
    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:17:b8:b6 brd ff:ff:ff:ff:ff:ff
        inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute enp1s0
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::fffe/64 scope global noprefixroute
           valid_lft forever preferred_lft forever
  2. IPv4 デフォルトゲートウェイを表示します。

    # ip route show default
    default via 192.0.2.254 dev enp1s0 proto static metric 102
  3. IPv6 デフォルトゲートウェイを表示します。

    # ip -6 route show default
    default via 2001:db8:1::ffee dev enp1s0 proto static metric 102 pref medium
  4. DNS 設定を表示します。

    # cat /etc/resolv.conf
    search example.com
    nameserver 192.0.2.200
    nameserver 2001:db8:1::ffbb

    複数の接続プロファイルが同時にアクティブな場合、nameserver エントリーの順序は、これらのプロファイルの DNS 優先度の値と接続タイプによって異なります。

  5. ping ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。

    # ping <host-name-or-IP-address>

トラブルシューティング

  • ネットワークケーブルがホストとスイッチに差し込まれていることを確認します。
  • リンク障害がこのホストだけに存在するか、同じスイッチに接続された他のホストにも存在するかを確認します。
  • ネットワークケーブルとネットワークインターフェイスが予想どおりに機能していることを確認します。ハードウェア診断手順を実施して、不具合ケーブルとネットワークインターフェイスカードを置き換えます。
  • ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager を起動するか再起動して、インメモリー接続を作成することで、デバイスの設定を反映します。この問題を回避する方法および詳細は、NetworkManager サービスの再起動後に、NetworkManager が接続を複製する ソリューションを参照してください。

関連情報

  • システム上の nm-settings(5) man ページ

2.2. nmcli インタラクティブエディターを使用したイーサネット接続の設定

イーサネット経由でホストをネットワークに接続する場合は、nmcli ユーティリティーを使用してコマンドラインで接続の設定を管理できます。

前提条件

  • 物理または仮想イーサネットネットワークインターフェイスコントローラー (NIC) がサーバーに設定されている。

手順

  1. NetworkManager 接続プロファイルをリストします。

    # nmcli connection show
    NAME                UUID                                  TYPE      DEVICE
    Wired connection 1  a5eb6490-cc20-3668-81f8-0314a27f3f75  ethernet  enp1s0

    デフォルトでは、NetworkManager はホスト内の各 NIC のプロファイルを作成します。この NIC を特定のネットワークにのみ接続する予定がある場合は、自動作成されたプロファイルを調整してください。この NIC をさまざまな設定のネットワークに接続する予定がある場合は、ネットワークごとに個別のプロファイルを作成してください。

  2. nmcli インタラクティブモードで起動します。

    • 追加の接続プロファイルを作成するには、次のように入力します。

      # nmcli connection edit type ethernet con-name "<connection-name>"
    • 既存の接続プロファイルを変更するには、次のように入力します。

      # nmcli connection edit con-name "<connection-name>"
  3. オプション: 接続プロファイルの名前を変更します。

    nmcli> set connection.id Internal-LAN

    ホストに複数のプロファイルがある場合は、わかりやすい名前を付けると、プロファイルの目的を識別しやすくなります。

    nmcli が引用符を名前の一部としてしまうことを避けるため、スペースを含む ID を設定する場合は引用符を使用しないでください。たとえば、Example Connection を ID として設定するには、set connection.id Example Connection と入力します。

  4. 接続プロファイルの現在の設定を表示します。

    nmcli> print
    ...
    connection.interface-name:     enp1s0
    connection.autoconnect:        yes
    ipv4.method:                   auto
    ipv6.method:                   auto
    ...
  5. 新しい接続プロファイルを作成する場合は、ネットワークインターフェイスを設定します。

    nmcli> set connection.interface-name enp1s0
  6. IPv4 を設定します。

    • DHCP を使用するには、次のように入力します。

      nmcli> set ipv4.method auto

      ipv4.method がすでに auto (デフォルト) に設定されている場合は、この手順をスキップしてください。

    • 静的 IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および検索ドメインを設定するには、次のように入力します。

      nmcli> ipv4.addresses 192.0.2.1/24
      Do you also want to set 'ipv4.method' to 'manual'? [yes]: yes
      nmcli> ipv4.gateway 192.0.2.254
      nmcli> ipv4.dns 192.0.2.200
      nmcli> ipv4.dns-search example.com
  7. IPv6 設定を行います。

    • ステートレスアドレス自動設定 (SLAAC) を使用するには、次のように入力します。

      nmcli> set ipv6.method auto

      ipv6.method がすでに auto (デフォルト) に設定されている場合は、この手順をスキップしてください。

    • 静的 IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および検索ドメインを設定するには、次のように入力します。

      nmcli> ipv6.addresses 2001:db8:1::fffe/64
      Do you also want to set 'ipv6.method' to 'manual'? [yes]: yes
      nmcli> ipv6.gateway 2001:db8:1::fffe
      nmcli> ipv6.dns 2001:db8:1::ffbb
      nmcli> ipv6.dns-search example.com
  8. 接続をアクティベートして保存します。

    nmcli> save persistent
  9. インタラクティブモードを終了します。

    nmcli> quit

検証

  1. NIC の IP 設定を表示します。

    # ip address show enp1s0
    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:17:b8:b6 brd ff:ff:ff:ff:ff:ff
        inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute enp1s0
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::fffe/64 scope global noprefixroute
           valid_lft forever preferred_lft forever
  2. IPv4 デフォルトゲートウェイを表示します。

    # ip route show default
    default via 192.0.2.254 dev enp1s0 proto static metric 102
  3. IPv6 デフォルトゲートウェイを表示します。

    # ip -6 route show default
    default via 2001:db8:1::ffee dev enp1s0 proto static metric 102 pref medium
  4. DNS 設定を表示します。

    # cat /etc/resolv.conf
    search example.com
    nameserver 192.0.2.200
    nameserver 2001:db8:1::ffbb

    複数の接続プロファイルが同時にアクティブな場合、nameserver エントリーの順序は、これらのプロファイルの DNS 優先度の値と接続タイプによって異なります。

  5. ping ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。

    # ping <host-name-or-IP-address>

トラブルシューティング

  • ネットワークケーブルがホストとスイッチに差し込まれていることを確認します。
  • リンク障害がこのホストだけに存在するか、同じスイッチに接続された他のホストにも存在するかを確認します。
  • ネットワークケーブルとネットワークインターフェイスが予想どおりに機能していることを確認します。ハードウェア診断手順を実施して、不具合ケーブルとネットワークインターフェイスカードを置き換えます。
  • ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager を起動するか再起動して、インメモリー接続を作成することで、デバイスの設定を反映します。この問題を回避する方法および詳細は、NetworkManager サービスの再起動後に、NetworkManager が接続を複製する ソリューションを参照してください。

関連情報

  • システム上の nm-settings(5) および nmcli(1) man ページ

2.3. nmtui を使用したイーサネット接続の設定

イーサネット経由でホストをネットワークに接続する場合は、nmtui アプリケーションを使用して、テキストベースのユーザーインターフェイスで接続の設定を管理できます。nmtui では、グラフィカルインターフェイスを使用せずに、新しいプロファイルの作成や、ホスト上の既存のプロファイルの更新を行います。

注記

nmtui で 以下を行います。

  • カーソルキーを使用してナビゲートします。
  • ボタンを選択して Enter を押します。
  • Space を使用してチェックボックスをオンまたはオフにします。

前提条件

  • 物理または仮想イーサネットネットワークインターフェイスコントローラー (NIC) がサーバーに設定されている。

手順

  1. 接続に使用するネットワークデバイス名がわからない場合は、使用可能なデバイスを表示します。

    # nmcli device status
    DEVICE     TYPE      STATE                   CONNECTION
    enp1s0     ethernet  unavailable             --
    ...
  2. nmtui を開始します。

    # nmtui
  3. Edit a connection 選択し、Enter を押します。
  4. 新しい接続プロファイルを追加するか、既存の接続プロファイルを変更するかを選択します。

    • 新しいプロファイルを作成するには、以下を実行します。

      1. Add を押します。
      2. ネットワークタイプのリストから Ethernet を選択し、Enter を押します。
    • 既存のプロファイルを変更するには、リストからプロファイルを選択し、Enter を押します。
  5. オプション: 接続プロファイルの名前を更新します。

    ホストに複数のプロファイルがある場合は、わかりやすい名前を付けると、プロファイルの目的を識別しやすくなります。

  6. 新しい接続プロファイルを作成する場合は、ネットワークデバイス名を connection フィールドに入力します。
  7. 環境に応じて、IPv4 configuration および IPv6 configuration 領域に IP アドレス設定を設定します。これを行うには、これらの領域の横にあるボタンを押して、次を選択します。

    • この接続に IP アドレスが必要ない場合は、Disabled にします。
    • DHCP サーバーが IP アドレスをこの NIC に動的に割り当てる場合は、Automatic にします。
    • ネットワークで静的 IP アドレス設定が必要な場合は、Manual にします。この場合、さらにフィールドに入力する必要があります。

      1. 設定するプロトコルの横にある Show を押して、追加のフィールドを表示します。
      2. Addresses の横にある Add を押して、IP アドレスとサブネットマスクを Classless Inter-Domain Routing (CIDR) 形式で入力します。

        サブネットマスクを指定しない場合、NetworkManager は IPv4 アドレスに /32 サブネットマスクを設定し、IPv6 アドレスに /64 サブネットマスクを設定します。

      3. デフォルトゲートウェイのアドレスを入力します。
      4. DNS servers の横にある Add を押して、DNS サーバーのアドレスを入力します。
      5. Search domains の横にある Add を押して、DNS 検索ドメインを入力します。

    図2.1 静的 IP アドレス設定によるイーサネット接続の例

    nmtui ethernet static IP
  8. OK を押すと、新しい接続が作成され、自動的にアクティブ化されます。
  9. Back を押してメインメニューに戻ります。
  10. Quit を選択し、Enter キーを押して nmtui アプリケーションを閉じます。

検証

  1. NIC の IP 設定を表示します。

    # ip address show enp1s0
    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:17:b8:b6 brd ff:ff:ff:ff:ff:ff
        inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute enp1s0
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::fffe/64 scope global noprefixroute
           valid_lft forever preferred_lft forever
  2. IPv4 デフォルトゲートウェイを表示します。

    # ip route show default
    default via 192.0.2.254 dev enp1s0 proto static metric 102
  3. IPv6 デフォルトゲートウェイを表示します。

    # ip -6 route show default
    default via 2001:db8:1::ffee dev enp1s0 proto static metric 102 pref medium
  4. DNS 設定を表示します。

    # cat /etc/resolv.conf
    search example.com
    nameserver 192.0.2.200
    nameserver 2001:db8:1::ffbb

    複数の接続プロファイルが同時にアクティブな場合、nameserver エントリーの順序は、これらのプロファイルの DNS 優先度の値と接続タイプによって異なります。

  5. ping ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。

    # ping <host-name-or-IP-address>

トラブルシューティング

  • ネットワークケーブルがホストとスイッチに差し込まれていることを確認します。
  • リンク障害がこのホストだけに存在するか、同じスイッチに接続された他のホストにも存在するかを確認します。
  • ネットワークケーブルとネットワークインターフェイスが予想どおりに機能していることを確認します。ハードウェア診断手順を実施して、不具合ケーブルとネットワークインターフェイスカードを置き換えます。
  • ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager を起動するか再起動して、インメモリー接続を作成することで、デバイスの設定を反映します。この問題を回避する方法および詳細は、NetworkManager サービスの再起動後に、NetworkManager が接続を複製する ソリューションを参照してください。

2.4. control-center によるイーサネット接続の設定

イーサネット経由でホストをネットワークに接続する場合は、GNOME 設定メニューを使用して、グラフィカルインターフェイスで接続の設定を管理できます。

control-center は、nm-connection-editor アプリケーションまたは nmcli ユーティリティーほど多くの設定オプションに対応していないことに注意してください。

前提条件

  • 物理または仮想イーサネットネットワークインターフェイスコントローラー (NIC) がサーバーに設定されている。
  • GNOME がインストールされている。

手順

  1. Super キーを押して Settings を入力し、Enter を押します。
  2. 左側のナビゲーションにある Network を選択します。
  3. 新しい接続プロファイルを追加するか、既存の接続プロファイルを変更するかを選択します。

    • 新しいプロファイルを作成するには、Ethernet エントリーの横にある + ボタンをクリックします。
    • 既存のプロファイルを変更するには、プロファイルエントリーの横にある歯車アイコンをクリックします。
  4. オプション: ID タブで、接続プロファイルの名前を更新します。

    ホストに複数のプロファイルがある場合は、わかりやすい名前を付けると、プロファイルの目的を識別しやすくなります。

  5. 環境に応じて、IPv4 タブと IPv6 タブで IP アドレス設定を設定します。

    • DHCP または IPv6 ステートレスアドレス自動設定 (SLAAC) を使用するには、方法として Automatic (DHCP) を選択します (デフォルト)。
    • 静的 IP アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および検索ドメインを設定するには、方法として Manual を選択し、タブのフィールドに入力します。

      IP 設定 gnome 設定
  6. 接続プロファイルを追加するか変更するかに応じて、Add または Apply ボタンをクリックして接続を保存します。

    GNOME の control-center は、接続を自動的にアクティブにします。

検証

  1. NIC の IP 設定を表示します。

    # ip address show enp1s0
    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:17:b8:b6 brd ff:ff:ff:ff:ff:ff
        inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute enp1s0
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::fffe/64 scope global noprefixroute
           valid_lft forever preferred_lft forever
  2. IPv4 デフォルトゲートウェイを表示します。

    # ip route show default
    default via 192.0.2.254 dev enp1s0 proto static metric 102
  3. IPv6 デフォルトゲートウェイを表示します。

    # ip -6 route show default
    default via 2001:db8:1::ffee dev enp1s0 proto static metric 102 pref medium
  4. DNS 設定を表示します。

    # cat /etc/resolv.conf
    search example.com
    nameserver 192.0.2.200
    nameserver 2001:db8:1::ffbb

    複数の接続プロファイルが同時にアクティブな場合、nameserver エントリーの順序は、これらのプロファイルの DNS 優先度の値と接続タイプによって異なります。

  5. ping ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。

    # ping <host-name-or-IP-address>

トラブルシューティングの手順

  • ネットワークケーブルがホストとスイッチに差し込まれていることを確認します。
  • リンク障害がこのホストだけに存在するか、同じスイッチに接続された他のホストにも存在するかを確認します。
  • ネットワークケーブルとネットワークインターフェイスが予想どおりに機能していることを確認します。ハードウェア診断手順を実施して、不具合ケーブルとネットワークインターフェイスカードを置き換えます。
  • ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager を起動するか再起動して、インメモリー接続を作成することで、デバイスの設定を反映します。この問題を回避する方法および詳細は、NetworkManager サービスの再起動後に、NetworkManager が接続を複製する ソリューションを参照してください。

2.5. nm-connection-editor を使用したイーサネット接続の設定

イーサネット経由でホストをネットワークに接続する場合は、nm-connection-editor アプリケーションを使用して、グラフィカルインターフェイスで接続の設定を管理できます。

前提条件

  • 物理または仮想イーサネットネットワークインターフェイスコントローラー (NIC) がサーバーに設定されている。
  • GNOME がインストールされている。

手順

  1. ターミナルを開き、次のコマンドを入力します。

    $ nm-connection-editor
  2. 新しい接続プロファイルを追加するか、既存の接続プロファイルを変更するかを選択します。

    • 新しいプロファイルを作成するには、以下を実行します。

      1. + ボタンをクリックします。
      2. 接続タイプとして Ethernet を選択し、Create をクリックします。
    • 既存のプロファイルを変更するには、プロファイルエントリーをダブルクリックします。
  3. オプション: Connection フィールドでプロファイルの名前を更新します。

    ホストに複数のプロファイルがある場合は、わかりやすい名前を付けると、プロファイルの目的を識別しやすくなります。

  4. 新しいプロファイルを作成する場合は、Ethernet タブでデバイスを選択します。

    ethernet connection settings

  5. 環境に応じて、IPv4 Settings タブと IPv6 Settings タブで IP アドレス設定を設定します。

    • DHCP または IPv6 ステートレスアドレス自動設定 (SLAAC) を使用するには、方法として Automatic (DHCP) を選択します (デフォルト)。
    • 静的 IP アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および検索ドメインを設定するには、方法として Manual を選択し、タブのフィールドに入力します。

      nm 接続エディターにおける IP 設定
  6. Save をクリックします。
  7. nm-connection-editor を閉じます。

検証

  1. NIC の IP 設定を表示します。

    # ip address show enp1s0
    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:17:b8:b6 brd ff:ff:ff:ff:ff:ff
        inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute enp1s0
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::fffe/64 scope global noprefixroute
           valid_lft forever preferred_lft forever
  2. IPv4 デフォルトゲートウェイを表示します。

    # ip route show default
    default via 192.0.2.254 dev enp1s0 proto static metric 102
  3. IPv6 デフォルトゲートウェイを表示します。

    # ip -6 route show default
    default via 2001:db8:1::ffee dev enp1s0 proto static metric 102 pref medium
  4. DNS 設定を表示します。

    # cat /etc/resolv.conf
    search example.com
    nameserver 192.0.2.200
    nameserver 2001:db8:1::ffbb

    複数の接続プロファイルが同時にアクティブな場合、nameserver エントリーの順序は、これらのプロファイルの DNS 優先度の値と接続タイプによって異なります。

  5. ping ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。

    # ping <host-name-or-IP-address>

トラブルシューティングの手順

  • ネットワークケーブルがホストとスイッチに差し込まれていることを確認します。
  • リンク障害がこのホストだけに存在するか、同じスイッチに接続された他のホストにも存在するかを確認します。
  • ネットワークケーブルとネットワークインターフェイスが予想どおりに機能していることを確認します。ハードウェア診断手順を実施して、不具合ケーブルとネットワークインターフェイスカードを置き換えます。
  • ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager を起動するか再起動して、インメモリー接続を作成することで、デバイスの設定を反映します。この問題を回避する方法および詳細は、NetworkManager サービスの再起動後に、NetworkManager が接続を複製する ソリューションを参照してください。

2.6. nmstatectl を使用した静的 IP アドレスでのイーサネット接続の設定

nmstatectl ユーティリティーを使用して、Nmstate API を介してイーサネット接続を設定します。Nmstate API は、設定を行った後、結果が設定ファイルと一致することを確認します。何らかの障害が発生した場合には、nmstatectl は自動的に変更をロールバックし、システムが不正な状態のままにならないようにします。

前提条件

  • 物理または仮想イーサネットネットワークインターフェイスコントローラー (NIC) がサーバーに設定されている。
  • nmstate パッケージがインストールされている。

手順

  1. 以下の内容を含む YAML ファイル (例: ~/create-ethernet-profile.yml) を作成します。

    ---
    interfaces:
    - name: enp1s0
      type: ethernet
      state: up
      ipv4:
        enabled: true
        address:
        - ip: 192.0.2.1
          prefix-length: 24
        dhcp: false
      ipv6:
        enabled: true
        address:
        - ip: 2001:db8:1::1
          prefix-length: 64
        autoconf: false
        dhcp: false
    routes:
      config:
      - destination: 0.0.0.0/0
        next-hop-address: 192.0.2.254
        next-hop-interface: enp1s0
      - destination: ::/0
        next-hop-address: 2001:db8:1::fffe
        next-hop-interface: enp1s0
    dns-resolver:
      config:
        search:
        - example.com
        server:
        - 192.0.2.200
        - 2001:db8:1::ffbb

    これらの設定では、次の設定を使用して enp1s0 デバイスのイーサネット接続プロファイルを定義します。

    • 静的 IPv4 アドレス: 192.0.2.1 (サブネットマスクが /24)
    • 静的 IPv6 アドレス: 2001:db8:1::1 (サブネットマスクが /64)
    • IPv4 デフォルトゲートウェイ - 192.0.2.254
    • IPv6 デフォルトゲートウェイ - 2001:db8:1::fffe
    • IPv4 DNS サーバー - 192.0.2.200
    • IPv6 DNS サーバー - 2001:db8:1::ffbb
    • DNS 検索ドメイン - example.com
  2. 設定をシステムに適用します。

    # nmstatectl apply ~/create-ethernet-profile.yml

検証

  1. 現在の状態を YAML 形式で表示します。

    # nmstatectl show enp1s0
  2. NIC の IP 設定を表示します。

    # ip address show enp1s0
    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:17:b8:b6 brd ff:ff:ff:ff:ff:ff
        inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute enp1s0
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::fffe/64 scope global noprefixroute
           valid_lft forever preferred_lft forever
  3. IPv4 デフォルトゲートウェイを表示します。

    # ip route show default
    default via 192.0.2.254 dev enp1s0 proto static metric 102
  4. IPv6 デフォルトゲートウェイを表示します。

    # ip -6 route show default
    default via 2001:db8:1::ffee dev enp1s0 proto static metric 102 pref medium
  5. DNS 設定を表示します。

    # cat /etc/resolv.conf
    search example.com
    nameserver 192.0.2.200
    nameserver 2001:db8:1::ffbb

    複数の接続プロファイルが同時にアクティブな場合、nameserver エントリーの順序は、これらのプロファイルの DNS 優先度の値と接続タイプによって異なります。

  6. ping ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。

    # ping <host-name-or-IP-address>

関連情報

  • システム上の nmstatectl(8) man ページ
  • /usr/share/doc/nmstate/examples/ directory

2.7. network RHEL システムロールとインターフェイス名を使用した静的 IP アドレスでのイーサネット接続の設定

Red Hat Enterprise Linux ホストをイーサネットネットワークに接続するには、ネットワークデバイスの NetworkManager 接続プロファイルを作成します。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。

network RHEL システムロールを使用すると、静的 IP アドレス、ゲートウェイ、および DNS 設定を使用してイーサネット接続を設定し、それらを指定のインターフェイス名に割り当てることができます。

前提条件

  • コントロールノードと管理対象ノードの準備が完了している。
  • 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
  • 管理対象ノードへの接続に使用するアカウントに、そのノードに対する sudo 権限がある。
  • サーバーに、物理または仮想のイーサネットデバイスが設定されている。
  • 管理対象ノードが NetworkManager を使用してネットワークを設定している。

手順

  1. 次の内容を含む Playbook ファイル (例: ~/playbook.yml) を作成します。

    ---
    - name: Configure the network
      hosts: managed-node-01.example.com
      tasks:
        - name: Ethernet connection profile with static IP address settings
          ansible.builtin.include_role:
            name: rhel-system-roles.network
          vars:
            network_connections:
              - name: enp1s0
                interface_name: enp1s0
                type: ethernet
                autoconnect: yes
                ip:
                  address:
                    - 192.0.2.1/24
                    - 2001:db8:1::1/64
                  gateway4: 192.0.2.254
                  gateway6: 2001:db8:1::fffe
                  dns:
                    - 192.0.2.200
                    - 2001:db8:1::ffbb
                  dns_search:
                    - example.com
                state: up

    Playbook で使用されるすべての変数の詳細は、コントロールノードの /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイルを参照してください。

  2. Playbook の構文を検証します。

    $ ansible-playbook --syntax-check ~/playbook.yml

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  3. Playbook を実行します。

    $ ansible-playbook ~/playbook.yml

検証

  • 管理対象ノードの Ansible ファクトをクエリーし、アクティブなネットワーク設定を確認します。

    # ansible managed-node-01.example.com -m ansible.builtin.setup
    ...
            "ansible_default_ipv4": {
                "address": "192.0.2.1",
                "alias": "enp1s0",
                "broadcast": "192.0.2.255",
                "gateway": "192.0.2.254",
                "interface": "enp1s0",
                "macaddress": "52:54:00:17:b8:b6",
                "mtu": 1500,
                "netmask": "255.255.255.0",
                "network": "192.0.2.0",
                "prefix": "24",
                "type": "ether"
            },
            "ansible_default_ipv6": {
                "address": "2001:db8:1::1",
                "gateway": "2001:db8:1::fffe",
                "interface": "enp1s0",
                "macaddress": "52:54:00:17:b8:b6",
                "mtu": 1500,
                "prefix": "64",
                "scope": "global",
                "type": "ether"
            },
    	...
            "ansible_dns": {
                "nameservers": [
                    "192.0.2.1",
                    "2001:db8:1::ffbb"
                ],
                "search": [
                    "example.com"
                ]
            },
    ...

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイル
  • /usr/share/doc/rhel-system-roles/network/ ディレクトリー

2.8. network RHEL システムロールとデバイスパスを使用した静的 IP アドレスでのイーサネット接続の設定

Red Hat Enterprise Linux ホストをイーサネットネットワークに接続するには、ネットワークデバイスの NetworkManager 接続プロファイルを作成します。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。

network RHEL システムロールを使用すると、静的 IP アドレス、ゲートウェイ、および DNS 設定を使用してイーサネット接続を設定し、それらを名前ではなくパスに基づいてデバイスに割り当てることができます。

前提条件

  • コントロールノードと管理対象ノードの準備が完了している。
  • 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
  • 管理対象ノードへの接続に使用するアカウントに、そのノードに対する sudo 権限がある。
  • サーバーに、物理または仮想のイーサネットデバイスが設定されている。
  • 管理対象ノードが NetworkManager を使用してネットワークを設定している。
  • デバイスのパスがわかっている。udevadm info /sys/class/net/<device_name> | grep ID_PATH= コマンドを使用すると、デバイスパスを表示できます。

手順

  1. 次の内容を含む Playbook ファイル (例: ~/playbook.yml) を作成します。

    ---
    - name: Configure the network
      hosts: managed-node-01.example.com
      tasks:
        - name: Ethernet connection profile with static IP address settings
          ansible.builtin.include_role:
            name: rhel-system-roles.network
          vars:
            network_connections:
              - name: example
                match:
                  path:
                    - pci-0000:00:0[1-3].0
                    - &!pci-0000:00:02.0
                type: ethernet
                autoconnect: yes
                ip:
                  address:
                    - 192.0.2.1/24
                    - 2001:db8:1::1/64
                  gateway4: 192.0.2.254
                  gateway6: 2001:db8:1::fffe
                  dns:
                    - 192.0.2.200
                    - 2001:db8:1::ffbb
                  dns_search:
                    - example.com
                state: up

    サンプル Playbook で指定されている設定は次のとおりです。

    match
    設定を適用するために満たす必要がある条件を定義します。この変数は path オプションでのみ使用できます。
    path
    デバイスの永続パスを定義します。固定パスまたは式の形式で設定できます。値には修飾子とワイルドカードを含めることができます。この例では、PCI ID 0000:00:0[1-3].0 に一致するデバイスには設定を適用しますが、0000:00:02.0 に一致するデバイスには適用しません。

    Playbook で使用されるすべての変数の詳細は、コントロールノードの /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイルを参照してください。

  2. Playbook の構文を検証します。

    $ ansible-playbook --syntax-check ~/playbook.yml

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  3. Playbook を実行します。

    $ ansible-playbook ~/playbook.yml

検証

  • 管理対象ノードの Ansible ファクトをクエリーし、アクティブなネットワーク設定を確認します。

    # ansible managed-node-01.example.com -m ansible.builtin.setup
    ...
            "ansible_default_ipv4": {
                "address": "192.0.2.1",
                "alias": "enp1s0",
                "broadcast": "192.0.2.255",
                "gateway": "192.0.2.254",
                "interface": "enp1s0",
                "macaddress": "52:54:00:17:b8:b6",
                "mtu": 1500,
                "netmask": "255.255.255.0",
                "network": "192.0.2.0",
                "prefix": "24",
                "type": "ether"
            },
            "ansible_default_ipv6": {
                "address": "2001:db8:1::1",
                "gateway": "2001:db8:1::fffe",
                "interface": "enp1s0",
                "macaddress": "52:54:00:17:b8:b6",
                "mtu": 1500,
                "prefix": "64",
                "scope": "global",
                "type": "ether"
            },
            ...
            "ansible_dns": {
                "nameservers": [
                    "192.0.2.1",
                    "2001:db8:1::ffbb"
                ],
                "search": [
                    "example.com"
                ]
            },
    ...

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイル
  • /usr/share/doc/rhel-system-roles/network/ ディレクトリー

2.9. nmstatectl を使用した動的 IP アドレスでのイーサネット接続の設定

nmstatectl ユーティリティーを使用して、Nmstate API を介してイーサネット接続を設定します。Nmstate API は、設定を行った後、結果が設定ファイルと一致することを確認します。何らかの障害が発生した場合には、nmstatectl は自動的に変更をロールバックし、システムが不正な状態のままにならないようにします。

前提条件

  • 物理または仮想イーサネットネットワークインターフェイスコントローラー (NIC) がサーバーに設定されている。
  • DHCP サーバーをネットワークで使用できる。
  • nmstate パッケージがインストールされている。

手順

  1. 以下の内容を含む YAML ファイル (例: ~/create-ethernet-profile.yml) を作成します。

    ---
    interfaces:
    - name: enp1s0
      type: ethernet
      state: up
      ipv4:
        enabled: true
        auto-dns: true
        auto-gateway: true
        auto-routes: true
        dhcp: true
      ipv6:
        enabled: true
        auto-dns: true
        auto-gateway: true
        auto-routes: true
        autoconf: true
        dhcp: true

    これらの設定では、enp1s0 デバイスのイーサネット接続プロファイルを定義します。接続では、DHCP サーバーと IPv6 ステートレスアドレス自動設定 (SLAAC) から、IPv4 アドレス、IPv6 アドレス、デフォルトゲートウェイ、ルート、DNS サーバー、および検索ドメインを取得します。

  2. 設定をシステムに適用します。

    # nmstatectl apply ~/create-ethernet-profile.yml

検証

  1. 現在の状態を YAML 形式で表示します。

    # nmstatectl show enp1s0
  2. NIC の IP 設定を表示します。

    # ip address show enp1s0
    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:17:b8:b6 brd ff:ff:ff:ff:ff:ff
        inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute enp1s0
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::fffe/64 scope global noprefixroute
           valid_lft forever preferred_lft forever
  3. IPv4 デフォルトゲートウェイを表示します。

    # ip route show default
    default via 192.0.2.254 dev enp1s0 proto static metric 102
  4. IPv6 デフォルトゲートウェイを表示します。

    # ip -6 route show default
    default via 2001:db8:1::ffee dev enp1s0 proto static metric 102 pref medium
  5. DNS 設定を表示します。

    # cat /etc/resolv.conf
    search example.com
    nameserver 192.0.2.200
    nameserver 2001:db8:1::ffbb

    複数の接続プロファイルが同時にアクティブな場合、nameserver エントリーの順序は、これらのプロファイルの DNS 優先度の値と接続タイプによって異なります。

  6. ping ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。

    # ping <host-name-or-IP-address>

関連情報

  • システム上の nmstatectl(8) man ページ
  • /usr/share/doc/nmstate/examples/ directory

2.10. network RHEL システムロールとインターフェイス名を使用した動的 IP アドレスでのイーサネット接続の設定

Red Hat Enterprise Linux ホストをイーサネットネットワークに接続するには、ネットワークデバイスの NetworkManager 接続プロファイルを作成します。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。

network RHEL システムロールを使用すると、DHCP サーバーおよび IPv6 ステートレスアドレス自動設定 (SLAAC) から IP アドレス、ゲートウェイ、および DNS 設定を取得するイーサネット接続を設定できます。このロールを使用すると、指定のインターフェイス名に接続プロファイルを割り当てることができます。

前提条件

  • コントロールノードと管理対象ノードの準備が完了している。
  • 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
  • 管理対象ノードへの接続に使用するアカウントに、そのノードに対する sudo 権限がある。
  • サーバーに、物理または仮想のイーサネットデバイスが設定されている。
  • ネットワーク内で DHCP サーバーと SLAAC が利用できる。
  • 管理対象ノードが NetworkManager サービスを使用してネットワークを設定している。

手順

  1. 次の内容を含む Playbook ファイル (例: ~/playbook.yml) を作成します。

    ---
    - name: Configure the network
      hosts: managed-node-01.example.com
      tasks:
        - name: Ethernet connection profile with dynamic IP address settings
          ansible.builtin.include_role:
            name: rhel-system-roles.network
          vars:
            network_connections:
              - name: enp1s0
                interface_name: enp1s0
                type: ethernet
                autoconnect: yes
                ip:
                  dhcp4: yes
                  auto6: yes
                state: up

    サンプル Playbook で指定されている設定は次のとおりです。

    dhcp4: yes
    DHCP、PPP、または同様のサービスからの自動 IPv4 アドレス割り当てを有効にします。
    auto6: yes
    IPv6 自動設定を有効にします。デフォルトでは、NetworkManager はルーター広告を使用します。ルーターが managed フラグを通知すると、NetworkManager は DHCPv6 サーバーに IPv6 アドレスと接頭辞を要求します。

    Playbook で使用されるすべての変数の詳細は、コントロールノードの /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイルを参照してください。

  2. Playbook の構文を検証します。

    $ ansible-playbook --syntax-check ~/playbook.yml

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  3. Playbook を実行します。

    $ ansible-playbook ~/playbook.yml

検証

  • 管理対象ノードの Ansible ファクトをクエリーし、インターフェイスが IP アドレスと DNS 設定を受信したことを確認します。

    # ansible managed-node-01.example.com -m ansible.builtin.setup
    ...
            "ansible_default_ipv4": {
                "address": "192.0.2.1",
                "alias": "enp1s0",
                "broadcast": "192.0.2.255",
                "gateway": "192.0.2.254",
                "interface": "enp1s0",
                "macaddress": "52:54:00:17:b8:b6",
                "mtu": 1500,
                "netmask": "255.255.255.0",
                "network": "192.0.2.0",
                "prefix": "24",
                "type": "ether"
            },
            "ansible_default_ipv6": {
                "address": "2001:db8:1::1",
                "gateway": "2001:db8:1::fffe",
                "interface": "enp1s0",
                "macaddress": "52:54:00:17:b8:b6",
                "mtu": 1500,
                "prefix": "64",
                "scope": "global",
                "type": "ether"
            },
            ...
            "ansible_dns": {
                "nameservers": [
                    "192.0.2.1",
                    "2001:db8:1::ffbb"
                ],
                "search": [
                    "example.com"
                ]
            },
    ...

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイル
  • /usr/share/doc/rhel-system-roles/network/ ディレクトリー

2.11. network RHEL システムロールとデバイスパスを使用した動的 IP アドレスでのイーサネット接続の設定

Red Hat Enterprise Linux ホストをイーサネットネットワークに接続するには、ネットワークデバイスの NetworkManager 接続プロファイルを作成します。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。

network RHEL システムロールを使用すると、DHCP サーバーおよび IPv6 ステートレスアドレス自動設定 (SLAAC) から IP アドレス、ゲートウェイ、および DNS 設定を取得するイーサネット接続を設定できます。このロールにより、インターフェイス名ではなくパスに基づいてデバイスに接続プロファイルを割り当てることができます。

前提条件

  • コントロールノードと管理対象ノードの準備が完了している。
  • 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
  • 管理対象ノードへの接続に使用するアカウントに、そのノードに対する sudo 権限がある。
  • サーバーに、物理または仮想のイーサネットデバイスが設定されている。
  • ネットワーク内で DHCP サーバーと SLAAC が利用できる。
  • 管理対象ホストは、NetworkManager を使用してネットワークを設定します。
  • デバイスのパスがわかっている。udevadm info /sys/class/net/<device_name> | grep ID_PATH= コマンドを使用すると、デバイスパスを表示できます。

手順

  1. 次の内容を含む Playbook ファイル (例: ~/playbook.yml) を作成します。

    ---
    - name: Configure the network
      hosts: managed-node-01.example.com
      tasks:
        - name: Ethernet connection profile with dynamic IP address settings
          ansible.builtin.include_role:
            name: rhel-system-roles.network
          vars:
            network_connections:
              - name: example
                match:
                  path:
                    - pci-0000:00:0[1-3].0
                    - &!pci-0000:00:02.0
                type: ethernet
                autoconnect: yes
                ip:
                  dhcp4: yes
                  auto6: yes
                state: up

    サンプル Playbook で指定されている設定は次のとおりです。

    match: path
    設定を適用するために満たす必要がある条件を定義します。この変数は path オプションでのみ使用できます。
    path: <path_and_expressions>
    デバイスの永続パスを定義します。固定パスまたは式の形式で設定できます。値には修飾子とワイルドカードを含めることができます。この例では、PCI ID 0000:00:0[1-3].0 に一致するデバイスには設定を適用しますが、0000:00:02.0 に一致するデバイスには適用しません。
    dhcp4: yes
    DHCP、PPP、または同様のサービスからの自動 IPv4 アドレス割り当てを有効にします。
    auto6: yes
    IPv6 自動設定を有効にします。デフォルトでは、NetworkManager はルーター広告を使用します。ルーターが managed フラグを通知すると、NetworkManager は DHCPv6 サーバーに IPv6 アドレスと接頭辞を要求します。

    Playbook で使用されるすべての変数の詳細は、コントロールノードの /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイルを参照してください。

  2. Playbook の構文を検証します。

    $ ansible-playbook --syntax-check ~/playbook.yml

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  3. Playbook を実行します。

    $ ansible-playbook ~/playbook.yml

検証

  • 管理対象ノードの Ansible ファクトをクエリーし、インターフェイスが IP アドレスと DNS 設定を受信したことを確認します。

    # ansible managed-node-01.example.com -m ansible.builtin.setup
    ...
            "ansible_default_ipv4": {
                "address": "192.0.2.1",
                "alias": "enp1s0",
                "broadcast": "192.0.2.255",
                "gateway": "192.0.2.254",
                "interface": "enp1s0",
                "macaddress": "52:54:00:17:b8:b6",
                "mtu": 1500,
                "netmask": "255.255.255.0",
                "network": "192.0.2.0",
                "prefix": "24",
                "type": "ether"
            },
            "ansible_default_ipv6": {
                "address": "2001:db8:1::1",
                "gateway": "2001:db8:1::fffe",
                "interface": "enp1s0",
                "macaddress": "52:54:00:17:b8:b6",
                "mtu": 1500,
                "prefix": "64",
                "scope": "global",
                "type": "ether"
            },
            ...
            "ansible_dns": {
                "nameservers": [
                    "192.0.2.1",
                    "2001:db8:1::ffbb"
                ],
                "search": [
                    "example.com"
                ]
            },
    ...

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイル
  • /usr/share/doc/rhel-system-roles/network/ ディレクトリー

2.12. インターフェイス名による単一の接続プロファイルを使用した複数のイーサネットインターフェイスの設定

ほとんどの場合、1 つの接続プロファイルには 1 つのネットワークデバイスの設定が含まれています。ただし、接続プロファイルでインターフェイス名を設定する場合、NetworkManager はワイルドカードもサポートします。ホストが動的 IP アドレス割り当てを使用してイーサネットネットワーク間をローミングする場合、この機能を使用して、複数のイーサネットインターフェイスに使用できる単一の接続プロファイルを作成できます。

前提条件

  • サーバーの設定には、物理または仮想のイーサネットデバイスが複数存在します。
  • DHCP サーバーをネットワークで使用できる。
  • ホストに接続プロファイルが存在しません。

手順

  1. enp で始まるすべてのインターフェイス名に適用される接続プロファイルを追加します。

    # nmcli connection add con-name "Wired connection 1" connection.multi-connect multiple match.interface-name enp* type ethernet

検証

  1. 単一接続プロファイルのすべての設定を表示します。

    # nmcli connection show "Wired connection 1"
    connection.id:                      Wired connection 1
    ...
    connection.multi-connect:           3 (multiple)
    match.interface-name:               enp*
    ...

    3 は、接続プロファイルで同時にアクティブなインターフェイスの数を示し、接続プロファイルのネットワークインターフェイスの数ではありません。接続プロファイルは、match.interface-name パラメーターのパターンに一致するすべてのデバイスを使用するため、接続プロファイルには同じ Universally Unique Identifier (UUID) があります。

  2. 接続のステータスを表示します。

    # nmcli connection show
    NAME                UUID                                  TYPE      DEVICE
    ...
    Wired connection 1  6f22402e-c0cc-49cf-b702-eaf0cd5ea7d1  ethernet  enp7s0
    Wired connection 1  6f22402e-c0cc-49cf-b702-eaf0cd5ea7d1  ethernet  enp8s0
    Wired connection 1  6f22402e-c0cc-49cf-b702-eaf0cd5ea7d1  ethernet  enp9s0

関連情報

  • システム上の nmcli(1) man ページ
  • nm-settings(5) man ページ

2.13. PCI ID を使用した複数のイーサネットインターフェイスの単一接続プロファイルの設定

PCI ID は、システムに接続されているデバイスの一意の識別子です。接続プロファイルは、PCI ID のリストに基づいてインターフェイスを照合することにより、複数のデバイスを追加します。この手順を使用して、複数のデバイス PCI ID を単一の接続プロファイルに接続できます。

前提条件

  • サーバーの設定には、物理または仮想のイーサネットデバイスが複数存在します。
  • DHCP サーバーをネットワークで使用できる。
  • ホストに接続プロファイルが存在しません。

手順

  1. デバイスパスを特定します。たとえば、enp で始まるすべてのインターフェイスのデバイスパスを表示するには、次のように入力します。

    # udevadm info /sys/class/net/enp | grep ID_PATH=*
    ...
    E: ID_PATH=pci-0000:07:00.0
    E: ID_PATH=pci-0000:08:00.0
  2. 0000:00:0[7-8].0 式に一致するすべての PC IID に適用される接続プロファイルを追加します。

    # nmcli connection add type ethernet connection.multi-connect multiple match.path "pci-0000:07:00.0 pci-0000:08:00.0" con-name "Wired connection 1"

検証

  1. 接続のステータスを表示します。

    # nmcli connection show
    NAME                 UUID                                  TYPE      DEVICE
    Wired connection 1   9cee0958-512f-4203-9d3d-b57af1d88466  ethernet  enp7s0
    Wired connection 1   9cee0958-512f-4203-9d3d-b57af1d88466  ethernet  enp8s0
    ...
  2. 接続プロファイルのすべての設定を表示するには、次のコマンドを実行します。

    # nmcli connection show "Wired connection 1"
    connection.id:               Wired connection 1
    ...
    connection.multi-connect:    3 (multiple)
    match.path:                  pci-0000:07:00.0,pci-0000:08:00.0
    ...

    この接続プロファイルは、match.path パラメーターのパターンに一致する PCI ID を持つすべてのデバイスを使用するため、接続プロファイルには同じ Universally Unique Identifier (UUID) があります。

関連情報

  • システム上の nmcli(1) man ページ
  • nm-settings(5) man ページ

第3章 ネットワークボンディングの設定

ネットワークボンディングは、物理ネットワークインターフェイスと仮想ネットワークインターフェイスを組み合わせるか集約して、より高いスループットまたは冗長性を備えた論理インターフェイスを提供する方法です。ボンディングでは、カーネルがすべての操作を排他的に処理します。イーサネットデバイスや VLAN など、さまざまなタイプのデバイスでネットワークボンディングを作成できます。

Red Hat Enterprise Linux は、チームデバイスを設定するためのさまざまなオプションを管理者に提供します。以下に例を示します。

  • nmcli を使用し、コマンドラインを使用してボンディング接続を設定します。
  • RHEL Web コンソールを使用し、Web ブラウザーを使用してボンディング接続を設定します。
  • nmtui を使用して、テキストベースのユーザーインターフェイスでボンディング接続を設定します。
  • nm-connection-editor アプリケーションを使用して、グラフィカルインターフェイスでボンディング接続を設定します。
  • nmstatectl を使用して、Nmstate API を介してボンディング接続を設定します。
  • RHEL システムロールを使用して、1 つまたは複数のホストで ボンディング設定を自動化します。

3.1. コントローラーおよびポートインターフェイスのデフォルト動作の理解

NetworkManager サービスを使用してチームまたはボンディングのポートインターフェイスを管理またはトラブルシューティングする場合は、以下のデフォルトの動作を考慮してください。

  • コントローラーインターフェイスを起動しても、ポートインターフェイスは自動的に起動しない。
  • ポートインターフェイスを起動すると、コントローラーインターフェイスは毎回、起動する。
  • コントローラーインターフェイスを停止すると、ポートインターフェイスも停止する。
  • ポートのないコントローラーは、静的 IP 接続を開始できる。
  • コントローラーにポートがない場合は、DHCP 接続の開始時にポートを待つ。
  • DHCP 接続でポートを待機中のコントローラーは、キャリアを伴うポートの追加時に完了する。
  • DHCP 接続でポートを待機中のコントローラーは、キャリアを伴わないポートを追加する時に待機を継続する。

3.2. ボンディングモードに応じたアップストリームのスイッチ設定

使用するボンディングモードに応じて、スイッチでポートを設定する必要があります。

ボンディングモードスイッチの設定

0 - balance-rr

Link Aggregation Control Protocol (LACP) ネゴシエーションによるものではなく、静的な EtherChannel を有効にする必要があります。

1 - active-backup

このスイッチで必要な設定は必要ありません。

2 - balance-xor

LACP ネゴシエーションによるものではなく、静的な EtherChannel を有効にする必要があります。

3 - broadcast

LACP ネゴシエーションによるものではなく、静的な EtherChannel を有効にする必要があります。

4 - 802.3ad

LACP ネゴシエーションにより設定された EtherChannel が有効になっている必要があります。

5 - balance-tlb

このスイッチで必要な設定は必要ありません。

6 - balance-alb

このスイッチで必要な設定は必要ありません。

スイッチの設定方法の詳細は、スイッチのドキュメントを参照してください。

重要

特定のネットワークボンディング機能 (例: fail-over メカニズム) は、ネットワークスイッチなしでのダイレクトケーブル接続に対応していません。詳細は、ボンディングは、クロスオーバーケーブルを使用したダイレクトコレクションをサポートしますか? を参照してください。を参照してください。

3.3. nmcli を使用したネットワークボンディングの設定

コマンドラインでネットワークボンディングを設定するには、nmcli ユーティリティーを使用します。

前提条件

手順

  1. ボンドインターフェイスを作成します。

    # nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup"

    このコマンドは、active-backup モードを使用する bond0 という名前のボンディングを作成します。

    Media Independent Interface (MII) 監視間隔も設定する場合は、miimon=interval オプションを bond.options プロパティーに追加します。次に例を示します。

    # nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup,miimon=1000"
  2. ネットワークインターフェイスを表示して、ボンドに追加する予定のインターフェイス名を書き留めます。

    # nmcli device status
    DEVICE   TYPE      STATE         CONNECTION
    enp7s0   ethernet  disconnected  --
    enp8s0   ethernet  disconnected  --
    bridge0  bridge    connected     bridge0
    bridge1  bridge    connected     bridge1
    ...

    この例では、以下のように設定されています。

    • enp7s0 および enp8s0 は設定されません。これらのデバイスをポートとして使用するには、次のステップに接続プロファイルを追加します。
    • bridge0 および bridge1 には既存の接続プロファイルがあります。これらのデバイスをポートとして使用するには、次の手順でプロファイルを変更します。
  3. インターフェイスをボンディングに割り当てます。

    1. ボンディングに割り当てるインターフェイスが設定されていない場合は、インターフェイス用に新しい接続プロファイルを作成します。

      # nmcli connection add type ethernet slave-type bond con-name bond0-port1 ifname enp7s0 master bond0
      # nmcli connection add type ethernet slave-type bond con-name bond0-port2 ifname enp8s0 master bond0

      これらのコマンドは、enp7s0 および enp8s0 のプロファイルを作成し、bond0 接続に追加します。

    2. 既存の接続プロファイルをボンディングに割り当てるには、以下を実行します。

      1. これらの接続の master パラメーターを bond0 に設定します。

        # nmcli connection modify bridge0 master bond0
        # nmcli connection modify bridge1 master bond0

        これらのコマンドは、bridge0 および bridge1 という名前の既存の接続プロファイルを bond0 接続に割り当てます。

      2. 接続を再度アクティブにします。

        # nmcli connection up bridge0
        # nmcli connection up bridge1
  4. IPv4 を設定します。

    • このボンドデバイスを他のデバイスのポートとして使用するには、次のように入力します。

      # nmcli connection modify bond0 ipv4.method disabled
    • DHCP を使用するために必要な操作はありません。
    • 静的 IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを bond0 接続に設定するには、次のように入力します。

      # nmcli connection modify bond0 ipv4.addresses '192.0.2.1/24' ipv4.gateway '192.0.2.254' ipv4.dns '192.0.2.253' ipv4.dns-search 'example.com' ipv4.method manual
  5. IPv6 設定を行います。

    • このボンドデバイスを他のデバイスのポートとして使用するには、次のように入力します。

      # nmcli connection modify bond0 ipv6.method disabled
    • ステートレスアドレス自動設定 (SLAAC) を使用する場合、アクションは必要ありません。
    • 静的 IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを bond0 接続に設定するには、次のように入力します。

      # nmcli connection modify bond0 ipv6.addresses '2001:db8:1::1/64' ipv6.gateway '2001:db8:1::fffe' ipv6.dns '2001:db8:1::fffd' ipv6.dns-search 'example.com' ipv6.method manual
  6. オプション: ボンディングポートにパラメーターを設定する場合は、次のコマンドを使用します。

    # nmcli connection modify bond0-port1 bond-port.<parameter> <value>
  7. 接続をアクティベートします。

    # nmcli connection up bond0
  8. ポートが接続されており、CONNECTION コラムがポートの接続名を表示していることを確認します。

    # nmcli device
    DEVICE   TYPE      STATE      CONNECTION
    ...
    enp7s0   ethernet  connected  bond0-port1
    enp8s0   ethernet  connected  bond0-port2

    接続のいずれかのポートをアクティブにすると、NetworkManager はボンディングもアクティブにしますが、他のポートはアクティブにしません。ボンディングが有効な場合に、Red Hat Enterprise Linux がすべてのポートを自動的に有効にするように設定できます。

    1. ボンディングの接続で connection.autoconnect-slaves パラメーターを有効にします。

      # nmcli connection modify bond0 connection.autoconnect-slaves 1
    2. ブリッジを再度アクティブにします。

      # nmcli connection up bond0

検証

  1. ネットワークデバイスの 1 つからネットワークケーブルを一時的に取り外し、ボンディング内の他のデバイスがトラフィックを処理しているかどうかを確認します。

    ソフトウェアユーティリティーを使用して、リンク障害イベントを適切にテストする方法がないことに注意してください。nmcli などの接続を非アクティブにするツールでは、ポート設定の変更を処理するボンディングドライバーの機能のみが表示され、実際のリンク障害イベントは表示されません。

  2. ボンドのステータスを表示します。

    # cat /proc/net/bonding/bond0

3.4. RHEL Web コンソールを使用したネットワークボンディングの設定

Web ブラウザーベースのインターフェイスを使用してネットワーク設定を管理する場合は、RHEL Web コンソールを使用してネットワークボンディングを設定します。

前提条件

手順

  1. RHEL 8 Web コンソールにログインします。

    詳細は、Web コンソールへのログイン を参照してください。

  2. 画面左側のナビゲーションで Networking タブを選択します。
  3. Interfaces セクションで Add bond をクリックします。
  4. 作成するボンドデバイスの名前を入力します。
  5. 結合のメンバーにするインターフェイスを選択します。
  6. 結合のモードを選択します。

    Active backup を選択すると、Web コンソールに追加フィールド Primary が表示され、優先するアクティブデバイスを選択できます。

  7. リンクモニタリング監視モードを設定します。たとえば、Adaptive load balancing モードを使用する場合は、ARP に設定します。
  8. オプション: モニター間隔、リンクアップ遅延、およびリンクダウン遅延の設定を調整します。通常、トラブルシューティングの目的でのみデフォルトを変更します。

    ボンド設定
  9. Apply をクリックします。
  10. デフォルトでは、ボンドは動的 IP アドレスを使用します。静的 IP アドレスを設定する場合:

    1. Interfaces セクションでボンドの名前をクリックします。
    2. 設定するプロトコルの横にある Edit をクリックします。
    3. Addresses の横にある Manual を選択し、IP アドレス、接頭辞、およびデフォルトゲートウェイを入力します。
    4. DNS セクションで + ボタンをクリックし、DNS サーバーの IP アドレスを入力します。複数の DNS サーバーを設定するには、この手順を繰り返します。
    5. DNS search domains セクションで、+ ボタンをクリックし、検索ドメインを入力します。
    6. インターフェイスにスタティックルートが必要な場合は、Routes セクションで設定します。

      bond team bridge vlan.ipv4
    7. Apply をクリックします。

検証

  1. 画面左側のナビゲーションで Networking タブを選択し、インターフェイスに着信および発信トラフィックがあるかどうかを確認します。

    ボンド検証
  2. ネットワークデバイスの 1 つからネットワークケーブルを一時的に取り外し、ボンディング内の他のデバイスがトラフィックを処理しているかどうかを確認します。

    ソフトウェアユーティリティーを使用して、リンク障害イベントを適切にテストする方法がないことに注意してください。Web コンソールなどの接続を非アクティブ化するツールは、実際のリンク障害イベントではなく、メンバー設定の変更を処理するボンディングドライバーの機能のみを示します。

  3. ボンドのステータスを表示します。

    # cat /proc/net/bonding/bond0

3.5. nmtui を使用したネットワークボンディングの設定

nmtui アプリケーションは、NetworkManager 用のテキストベースのユーザーインターフェイスを提供します。nmtui を使用して、グラフィカルインターフェイスを使用せずにホスト上でネットワークボンドを設定できます。

注記

nmtui で 以下を行います。

  • カーソルキーを使用してナビゲートします。
  • ボタンを選択して Enter を押します。
  • Space を使用してチェックボックスをオンまたはオフにします。

前提条件

  • サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
  • ボンディングのポートとしてイーサネットデバイスを使用するには、物理または仮想のイーサネットデバイスがサーバーにインストールされている。

手順

  1. ネットワークボンドを設定するネットワークデバイス名がわからない場合は、使用可能なデバイスを表示します。

    # nmcli device status
    DEVICE     TYPE      STATE                   CONNECTION
    enp7s0     ethernet  unavailable             --
    enp8s0     ethernet  unavailable             --
    ...
  2. nmtui を開始します。

    # nmtui
  3. Edit a connection 選択し、Enter を押します。
  4. Add を押します。
  5. ネットワークタイプのリストから Bond を選択し、Enter を押します。
  6. オプション: 作成する NetworkManager プロファイルの名前を入力します。

    ホストに複数のプロファイルがある場合は、わかりやすい名前を付けると、プロファイルの目的を識別しやすくなります。

  7. 作成するボンドデバイス名を Device フィールドに入力します。
  8. 作成するボンドにポートを追加します。

    1. Slaves リストの横にある Add を押します。
    2. ボンドにポートとして追加するインターフェイスのタイプ (例: Ethernet) を選択します。
    3. オプション: このボンドポート用に作成する NetworkManager プロファイルの名前を入力します。
    4. ポートのデバイス名を Device フィールドに入力します。
    5. OK を押して、ボンディング設定のウィンドウに戻ります。

      図3.1 イーサネットデバイスをポートとしてボンドに追加する

      nmtui bond add port
    6. ボンドにさらにポートを追加するには、これらの手順を繰り返します。
  9. ボンディングモードを設定します。設定した値に応じて、nmtui は、選択したモードに関連する設定の追加フィールドを表示します。
  10. 環境に応じて、IPv4 configuration および IPv6 configuration 領域に IP アドレス設定を設定します。これを行うには、これらの領域の横にあるボタンを押して、次を選択します。

    • ボンドが IP アドレスを必要としない場合は Disabled にします。
    • DHCP サーバーまたはステートレスアドレス自動設定 (SLAAC) が IP アドレスをボンディングに動的に割り当てる場合は、Automatic にします。
    • ネットワークで静的 IP アドレス設定が必要な場合は、Manual にします。この場合、さらにフィールドに入力する必要があります。

      1. 設定するプロトコルの横にある Show を押して、追加のフィールドを表示します。
      2. Addresses の横にある Add を押して、IP アドレスとサブネットマスクを Classless Inter-Domain Routing (CIDR) 形式で入力します。

        サブネットマスクを指定しない場合、NetworkManager は IPv4 アドレスに /32 サブネットマスクを設定し、IPv6 アドレスに /64 サブネットマスクを設定します。

      3. デフォルトゲートウェイのアドレスを入力します。
      4. DNS servers の横にある Add を押して、DNS サーバーのアドレスを入力します。
      5. Search domains の横にある Add を押して、DNS 検索ドメインを入力します。

    図3.2 静的 IP アドレス設定によるボンド接続例

    nmtui bond static IP
  11. OK を押すと、新しい接続が作成され、自動的にアクティブ化されます。
  12. Back を押してメインメニューに戻ります。
  13. Quit を選択し、Enter キーを押して nmtui アプリケーションを閉じます。

検証

  1. ネットワークデバイスの 1 つからネットワークケーブルを一時的に取り外し、ボンディング内の他のデバイスがトラフィックを処理しているかどうかを確認します。

    ソフトウェアユーティリティーを使用して、リンク障害イベントを適切にテストする方法がないことに注意してください。nmcli などの接続を非アクティブにするツールでは、ポート設定の変更を処理するボンディングドライバーの機能のみが表示され、実際のリンク障害イベントは表示されません。

  2. ボンドのステータスを表示します。

    # cat /proc/net/bonding/bond0

3.6. nm-connection-editor を使用したネットワークボンディングの設定

グラフィカルインターフェイスで Red Hat Enterprise Linux を使用する場合は、nm-connection-editor アプリケーションを使用してネットワークボンディングを設定できます。

nm-connection-editor は、新しいポートだけをボンドに追加できることに注意してください。既存の接続プロファイルをポートとして使用するには、nmcli を使用したネットワークボンディングの設定 の説明に従って nmcli ユーティリティーを使用してボンディングを作成します。

前提条件

  • サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
  • ボンディングのポートとしてイーサネットデバイスを使用するには、物理または仮想のイーサネットデバイスがサーバーにインストールされている。
  • ボンディングのポートとしてチーム、ボンディング、または VLAN デバイスを使用するには、これらのデバイスがまだ設定されていないことを確認してください。

手順

  1. ターミナルを開き、nm-connection-editor と入力します。

    $ nm-connection-editor
  2. + ボタンをクリックして、新しい接続を追加します。
  3. 接続タイプ Bond を選択し、作成 をクリックします。
  4. Bond タブで、以下を行います。

    1. 必要に応じて、Interface name フィールドにボンドインターフェイスの名前を設定します。
    2. 追加 ボタンをクリックして、ネットワークインターフェイスをポートとしてボンドに追加します。

      1. インターフェイスの接続タイプを選択します。たとえば、有線接続に Ethernet を選択します。
      2. 必要に応じて、ポートの接続名を設定します。
      3. イーサネットデバイスの接続プロファイルを作成する場合は、Ethernet タブを開き、Device フィールドでポートとしてボンディングに追加するネットワークインターフェイスを選択します。別のデバイスタイプを選択した場合は、それに応じて設定します。イーサネットインターフェイスは、設定されていないボンディングでのみ使用できることに注意してください。
      4. Save をクリックします。
    3. ボンディングに追加する各インターフェイスで直前の手順を繰り返します。

      add nic to bond in nm connection editor

    4. 必要に応じて、Media Independent Interface (MII) の監視間隔などの他のオプションを設定します。
  5. IPv4 Settings タブと IPv6 Settings タブの両方で IP アドレス設定を設定します。

    • このブリッジデバイスを他のデバイスのポートとして使用するには、Method フィールドを Disabled に設定します。
    • DHCP を使用するには、Method フィールドをデフォルトの Automatic (DHCP) のままにします。
    • 静的 IP 設定を使用するには、Method フィールドを Manual に設定し、それに応じてフィールドに値を入力します。

      bond IP settings nm connection editor

  6. Save をクリックします。
  7. nm-connection-editor を閉じます。

検証

  1. ネットワークデバイスの 1 つからネットワークケーブルを一時的に取り外し、ボンディング内の他のデバイスがトラフィックを処理しているかどうかを確認します。

    ソフトウェアユーティリティーを使用して、リンク障害イベントを適切にテストする方法がないことに注意してください。nmcli などの接続を非アクティブにするツールでは、ポート設定の変更を処理するボンディングドライバーの機能のみが表示され、実際のリンク障害イベントは表示されません。

  2. ボンドのステータスを表示します。

    # cat /proc/net/bonding/bond0

3.7. nmstatectl を使用したネットワークボンディングの設定

nmstatectl ユーティリティーを使用して、Nmstate API を介してネットワークボンディングを設定します。Nmstate API は、設定を行った後、結果が設定ファイルと一致することを確認します。何らかの障害が発生した場合には、nmstatectl は自動的に変更をロールバックし、システムが不正な状態のままにならないようにします。

環境に応じて、YAML ファイルを適宜調整します。たとえば、ボンディングでイーサネットアダプターとは異なるデバイスを使用するには、ボンディングで使用するポートの Base-iface 属性と type 属性を調整します。

前提条件

  • サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
  • 物理または仮想のイーサネットデバイスをサーバーにインストールしてボンディングでポートとしてイーサネットデバイスを使用する。
  • ポート リストでインターフェイス名を設定し、対応するインターフェイスを定義して、ボンディングのポートとしてチーム、ブリッジ、または VLAN デバイスを使用する。
  • nmstate パッケージがインストールされている。

手順

  1. 以下の内容を含む YAML ファイルを作成します (例: ~/create-bond.yml)。

    ---
    interfaces:
    - name: bond0
      type: bond
      state: up
      ipv4:
        enabled: true
        address:
        - ip: 192.0.2.1
          prefix-length: 24
        dhcp: false
      ipv6:
        enabled: true
        address:
        - ip: 2001:db8:1::1
          prefix-length: 64
        autoconf: false
        dhcp: false
      link-aggregation:
        mode: active-backup
        port:
        - enp1s0
        - enp7s0
    - name: enp1s0
      type: ethernet
      state: up
    - name: enp7s0
      type: ethernet
      state: up
    
    routes:
      config:
      - destination: 0.0.0.0/0
        next-hop-address: 192.0.2.254
        next-hop-interface: bond0
      - destination: ::/0
        next-hop-address: 2001:db8:1::fffe
        next-hop-interface: bond0
    
    dns-resolver:
      config:
        search:
        - example.com
        server:
        - 192.0.2.200
        - 2001:db8:1::ffbb

    これらの設定では、次の設定を使用してネットワークボンディングを定義します。

    • ボンドのネットワークインターフェイス: enp1s0 および enp7s0
    • モード: active-backup
    • 静的 IPv4 アドレス: サブネットマスクが /24192.0.2.1
    • 静的 IPv6 アドレス: 2001:db8:1::1 (/64 サブネットマスクあり)
    • IPv4 デフォルトゲートウェイ: 192.0.2.254
    • IPv6 デフォルトゲートウェイ: 2001:db8:1::fffe
    • IPv4 DNS サーバー: 192.0.2.200
    • IPv6 DNS サーバー: 2001:db8:1::ffbb
    • DNS 検索ドメイン: example.com
  2. 設定をシステムに適用します。

    # nmstatectl apply ~/create-bond.yml

検証

  1. デバイスおよび接続の状態を表示します。

    # nmcli device status
    DEVICE      TYPE      STATE      CONNECTION
    bond0       bond      connected  bond0
  2. 接続プロファイルのすべての設定を表示します。

    # nmcli connection show bond0
    connection.id:              bond0
    connection.uuid:            79cbc3bd-302e-4b1f-ad89-f12533b818ee
    connection.stable-id:       --
    connection.type:            bond
    connection.interface-name:  bond0
    ...
  3. 接続設定を YAML 形式で表示します。

    # nmstatectl show bond0

関連情報

  • システム上の nmstatectl(8) man ページ
  • /usr/share/doc/nmstate/examples/ directory

3.8. network RHEL システムロールを使用したネットワークボンディングの設定

ネットワークインターフェイスをボンディングで組み合わせると、より高いスループットまたは冗長性を備えた論理インターフェイスを提供できます。ボンディングを設定するには、NetworkManager 接続プロファイルを作成します。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。

network RHEL システムロールを使用してネットワークボンディングを設定できます。ボンディングの親デバイスの接続プロファイルが存在しない場合は、このロールによって作成することもできます。

前提条件

  • コントロールノードと管理対象ノードの準備が完了している。
  • 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
  • 管理対象ノードへの接続に使用するアカウントに、そのノードに対する sudo 権限がある。
  • サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。

手順

  1. 次の内容を含む Playbook ファイル (例: ~/playbook.yml) を作成します。

    ---
    - name: Configure the network
      hosts: managed-node-01.example.com
      tasks:
        - name: Bond connection profile with two Ethernet ports
          ansible.builtin.include_role:
            name: rhel-system-roles.network
          vars:
            network_connections:
              # Bond profile
              - name: bond0
                type: bond
                interface_name: bond0
                ip:
                  dhcp4: yes
                  auto6: yes
                bond:
                  mode: active-backup
                state: up
    
              # Port profile for the 1st Ethernet device
              - name: bond0-port1
                interface_name: enp7s0
                type: ethernet
                controller: bond0
                state: up
    
              # Port profile for the 2nd Ethernet device
              - name: bond0-port2
                interface_name: enp8s0
                type: ethernet
                controller: bond0
                state: up

    サンプル Playbook で指定されている設定は次のとおりです。

    type: <profile_type>
    作成するプロファイルのタイプを設定します。このサンプル Playbook では、3 つの接続プロファイルを作成します。1 つはボンディング用、2 つはイーサネットデバイス用です。
    dhcp4: yes
    DHCP、PPP、または同様のサービスからの自動 IPv4 アドレス割り当てを有効にします。
    auto6: yes
    IPv6 自動設定を有効にします。デフォルトでは、NetworkManager はルーター広告を使用します。ルーターが managed フラグを通知すると、NetworkManager は DHCPv6 サーバーに IPv6 アドレスと接頭辞を要求します。
    mode: <bond_mode>

    ボンディングモードを設定します。可能な値は次のとおりです。

    • balance-rr (デフォルト)
    • active-backup
    • balance-xor
    • broadcast
    • 802.3ad
    • balance-tlb
    • balance-alb

    設定したモードに応じて、Playbook で追加の変数を設定する必要があります。

    Playbook で使用されるすべての変数の詳細は、コントロールノードの /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイルを参照してください。

  2. Playbook の構文を検証します。

    $ ansible-playbook --syntax-check ~/playbook.yml

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  3. Playbook を実行します。

    $ ansible-playbook ~/playbook.yml

検証

  • ネットワークデバイスの 1 つからネットワークケーブルを一時的に取り外し、ボンディング内の他のデバイスがトラフィックを処理しているかどうかを確認します。

    ソフトウェアユーティリティーを使用して、リンク障害イベントを適切にテストする方法がないことに注意してください。nmcli などの接続を非アクティブにするツールでは、ポート設定の変更を処理するボンディングドライバーの機能のみが表示され、実際のリンク障害イベントは表示されません。

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイル
  • /usr/share/doc/rhel-system-roles/network/ ディレクトリー

3.9. VPN を中断せずにイーサネットとワイヤレス接続間の切り替えを可能にするネットワークボンディングの作成

ワークステーションを会社のネットワークに接続する RHEL ユーザーは、通常、リモートリソースにアクセスするのに VPN を使用します。ただし、イーサネット接続と Wi-Fi 接続間のワークステーションスイッチ (たとえば、イーサネット接続のあるドッキングステーションからノート PC を解放した場合など) は、VPN 接続が中断されます。この問題を回避するには、active-backup モードでイーサネット接続および Wi-Fi 接続を使用するネットワークボンディングを作成します。

前提条件

  • ホストに、イーサネットデバイスと Wi-Fi デバイスが含まれている。
  • イーサネットおよび Wi-Fi NetworkManager 接続プロファイルが作成され、両方の接続が独立して機能します。

    この手順では、以下の接続プロファイルを使用して bond0 という名前のネットワークボンディングを作成します。

    • enp11s0u1 イーサネットデバイスに関連付けられた Docking_station
    • wlp1s0 Wi-Fi デバイスに関連付けられた Wi-Fi

手順

  1. active-backup モードでボンドインターフェイスを作成します。

    # nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup"

    このコマンドは、インターフェイスおよび接続プロファイル bond0 の両方に名前を付けます。

  2. ボンディングの IPv4 設定を設定します。

    • ネットワークの DHCP サーバーが IPv4 アドレスをホストに割り当てる場合は、何もする必要はありません。
    • ローカルネットワークに静的 IPv4 アドレスが必要な場合は、アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および DNS 検索ドメインを bond0 接続に設定します。

      # nmcli connection modify bond0 ipv4.addresses '192.0.2.1/24'
      # nmcli connection modify bond0 ipv4.gateway '192.0.2.254'
      # nmcli connection modify bond0 ipv4.dns '192.0.2.253'
      # nmcli connection modify bond0 ipv4.dns-search 'example.com'
      # nmcli connection modify bond0 ipv4.method manual
  3. ボンディングの IPv6 設定を設定します。

    • ネットワークのルーターまたは DHCP サーバーが IPv6 アドレスをホストに割り当てる場合、アクションは必要ありません。
    • ローカルネットワークに静的 IPv6 アドレスが必要な場合は、アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および DNS 検索ドメインを bond0 接続に設定します。

      # nmcli connection modify bond0 ipv6.addresses '2001:db8:1::1/64'
      # nmcli connection modify bond0 ipv6.gateway '2001:db8:1::fffe'
      # nmcli connection modify bond0 ipv6.dns '2001:db8:1::fffd'
      # nmcli connection modify bond0 ipv6.dns-search 'example.com'
      # nmcli connection modify bond0 ipv6.method manual
  4. 接続プロファイルを表示します。

    # nmcli connection show
    NAME             UUID                                  TYPE      DEVICE
    Docking_station  256dd073-fecc-339d-91ae-9834a00407f9  ethernet  enp11s0u1
    Wi-Fi            1f1531c7-8737-4c60-91af-2d21164417e8  wifi      wlp1s0
    ...

    次のステップでは、接続プロファイルとイーサネットデバイス名が必要です。

  5. イーサネット接続の接続プロファイルをボンドに割り当てます。

    # nmcli connection modify Docking_station master bond0
  6. Wi-Fi 接続の接続プロファイルをボンディングに割り当てます。

    # nmcli connection modify Wi-Fi master bond0
  7. Wi-Fi ネットワークが MAC フィルタリングを使用して、許可リストの MAC アドレスのみがネットワークにアクセスできるようにするには、NetworkManager がアクティブなポートの MAC アドレスをボンドに動的に割り当てるように設定します。

    # nmcli connection modify bond0 +bond.options fail_over_mac=1

    この設定では、イーサネットデバイスと Wi-Fi デバイスの両方の MAC アドレスの代わりに、Wi-Fi デバイスの MAC アドレスのみを許可リストに設定する必要があります。

  8. イーサネット接続に関連付けられたデバイスを、ボンドのプライマリーデバイスとして設定します。

    # nmcli con modify bond0 +bond.options "primary=enp11s0u1"

    この設定では、ボンディングが利用可能な場合は、イーサネット接続を常に使用します。

  9. bond0 デバイスがアクティブになると、NetworkManager がポートを自動的にアクティブになるように設定します。

    # nmcli connection modify bond0 connection.autoconnect-slaves 1
  10. bond0 接続をアクティベートします。

    # nmcli connection up bond0

検証

  • 現在アクティブなデバイス、ボンドおよびそのポートのステータスを表示します。

    # cat /proc/net/bonding/bond0
    Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
    
    Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)
    Primary Slave: enp11s0u1 (primary_reselect always)
    Currently Active Slave: enp11s0u1
    MII Status: up
    MII Polling Interval (ms): 1
    Up Delay (ms): 0
    Down Delay (ms): 0
    Peer Notification Delay (ms): 0
    
    Slave Interface: enp11s0u1
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: 00:53:00:59:da:b7
    Slave queue ID: 0
    
    Slave Interface: wlp1s0
    MII Status: up
    Speed: Unknown
    Duplex: Unknown
    Link Failure Count: 2
    Permanent HW addr: 00:53:00:b3:22:ba
    Slave queue ID: 0

3.10. 異なるネットワークボンディングモード

Linux ボンディングドライバーは、リンクアグリゲーションを提供します。ボンディングは、複数のネットワークインターフェイスを並行して集約して、単一の論理結合インターフェイスを提供するプロセスです。ボンディングされたインターフェイスのアクションは、モードとも呼ばれるボンディングポリシーによって異なります。さまざまなモードが、ロードバランシングサービスまたはホットスタンバイサービスのいずれかを提供します。

次のモードがあります。

Balance-rr (モード 0)

Balance-rr は、使用可能な最初のポートから最後のポートへとパケットを順次送信するラウンドロビンアルゴリズムを使用します。このモードは、ロードバランシングとフォールトトレランスを提供します。

このモードでは、EtherChannel または同様ポートのグループ化とも呼ばれるポートアグリゲーショングループのスイッチ設定が必要です。EtherChannel は、複数の物理イーサネットリンクを 1 つの論理イーサネットリンクにグループ化するポートリンクアグリゲーションテクノロジーです。

このモードの欠点は、負荷の高いワークロードや、TCP スループットと順序付けられたパケット配信が不可欠な場合には適していないことです。

Active-backup (Mode 1)

Active-backup は、結合内でアクティブなポートが 1 つだけであることを決定するポリシーを使用します。このモードはフォールトトレランスを提供し、スイッチ設定は必要ありません。

アクティブポートに障害が発生すると、代替ポートがアクティブになります。ボンディングは、Gratuitous Address Resolution Protocol (ARP) 応答をネットワークに送信します。Gratuitous ARP は、ARP フレームの受信者に転送テーブルの更新を強制します。Active-backup モードは、Gratuitous ARP を送信して、ホストの接続を維持するための新しいパスを通知します。

primary オプションは、ボンディングインターフェイスの優先ポートを定義します。

Balance-xor (Mode 2)

Balance-xor は、選択された送信ハッシュポリシーを使用してパケットを送信します。このモードは、ロードバランシングとフォールトトレランスを提供し、Etherchannel または同様のポートグループをセットアップするためのスイッチ設定を必要とします。

パケット送信を変更して送信のバランスを取るために、このモードでは xmit_hash_policy オプションを使用します。インターフェイス上のトラフィックの送信元または宛先に応じて、インターフェイスには追加の負荷分散設定が必要です。xmit_hash_policy bonding parameter の説明を参照してください。

Broadcast (Mode 3)

Broadcast は、すべてのインターフェイスですべてのパケットを送信するポリシーを使用します。このモードは、フォールトトレランスを提供し、EthercChannel または同様のポートグループをセットアップするためのスイッチ設定を必要とします。

このモードの欠点は、負荷の高いワークロードや、TCP スループットと順序付けられたパケット配信が不可欠な場合には適していないことです。

802.3ad (Mode 4)

802.3ad は、同じ名前の IEEE 標準の動的リンクアグリゲーションポリシーを使用します。このモードはフォールトトレランスを提供します。このモードでは、Link Aggregation Control Protocol (LACP) ポートグループを設定するためのスイッチ設定が必要です。

このモードは、同じ速度とデュプレックス設定を共有するアグリゲーショングループを作成し、アクティブなアグリゲーターのすべてのポートを利用します。インターフェイス上のトラフィックの送信元または宛先に応じて、モードには追加の負荷分散設定が必要です。

デフォルトでは、発信トラフィックのポート選択は送信ハッシュポリシーに依存します。送信ハッシュポリシーの xmit_hash_policy オプションを使用して、ポートの選択を変更し、送信を分散します。

802.3adBalance-xor の違いはコンプライアンスです。802.3ad ポリシーは、ポートアグリゲーショングループ間で LACP をネゴシエートします。xmit_hash_policy bonding parameter の説明を参照してください。

Balance-tlb (Mode 5)

Balance-tlb は、送信負荷分散ポリシーを使用します。このモードは、フォールトトレランスと負荷分散を提供し、スイッチサポートを必要としないチャネルボンディングを確立します。

アクティブポートは着信トラフィックを受信します。アクティブポートに障害が発生した場合、別のポートが障害ポートの MAC アドレスを引き継ぎます。発信トラフィックを処理するインターフェイスを決定するには、次のいずれかのモードを使用します。

  • 値が 0: ハッシュ分散ポリシーを使用して、負荷分散なしでトラフィックを配分します
  • 値が 1: 負荷分散を使用してトラフィックを各ポートに配分します

    ボンディングオプション tlb_dynamic_lb=0 を使用すると、このボンディングモードは xmit_hash_policy ボンディングオプションを使用して送信を分散します。primary オプションは、ボンディングインターフェイスの優先ポートを定義します。

xmit_hash_policy bonding parameter の説明を参照してください。

Balance-alb (Mode 6)

Balance-alb は、適応負荷分散ポリシーを使用します。このモードは、フォールトトレランスとロードバランシングを提供し、特別なスイッチサポートを必要としません。

このモードには、IPv4 および IPv6 トラフィックのバランス - 送信ロードバランシング (balance-tlb) と受信ロードバランシングが含まれます。ボンディングは、ローカルシステムから送信された ARP 応答を傍受し、ボンディング内のポートの 1 つの送信元ハードウェアアドレスを上書きします。ARP ネゴシエーションは、受信負荷分散を管理します。したがって、異なるポートは、サーバーに対して異なるハードウェアアドレスを使用します。

primary オプションは、ボンディングインターフェイスの優先ポートを定義します。ボンディングオプション tlb_dynamic_lb=0 を使用すると、このボンディングモードは xmit_hash_policy ボンディングオプションを使用して送信を分散します。xmit_hash_policy bonding parameter の説明を参照してください。

関連情報

3.11. xmit_hash_policy ボンディングパラメーター

xmit_hash_policy 負荷分散パラメーターは、balance-xor802.3adbalance-alb、および balance-tlb モードでのノード選択の送信ハッシュポリシーを選択します。tlb_dynamic_lb parameter is 0 の場合、モード 5 および 6 にのみ適用されます。このパラメーターで使用できる値は、layer2layer2+3layer3+4encap2+3encap3+4、および vlan+srcmac です。

詳細については、次の表を参照してください。

ポリシー層またはネットワーク層

Layer2

Layer2+3

Layer3+4

encap2+3

encap3+4

VLAN+srcmac

用途

送信元および宛先の MAC アドレスとイーサネットプロトコルタイプの XOR

送信元および宛先の MAC アドレスと IP アドレスの XOR

送信元および宛先のポートと IP アドレスの XOR

サポートされているトンネル内の送信元と宛先の MAC アドレスと IP アドレスの XOR (仮想拡張 LAN (VXLAN) など)。このモードは、skb_flow_dissect() 関数に依存してヘッダーフィールドを取得します。

サポートされているトンネル内の送信元ポートと宛先ポートおよび IP アドレスの XOR (VXLAN など)。このモードは、skb_flow_dissect() 関数に依存してヘッダーフィールドを取得します。

VLAN ID、送信元 MAC ベンダー、送信元 MAC デバイスの XOR

トラフィックの配置

基盤となる同一ネットワークインターフェイス上にある特定のネットワークピアに向かうすべてのトラフィック

基盤となる同一ネットワークインターフェイス上の特定の IP アドレスに向かうすべてのトラフィック

基盤となる同一ネットワークインターフェイス上の特定の IP アドレスとポートに向かうすべてのトラフィック

   

プライマリーの選択

このシステムと、同じブロードキャストドメイン内の他の複数システムとの間でネットワークトラフィックが発生している場合

このシステムと他の複数システム間のネットワークトラフィックがデフォルトゲートウェイを通過する場合

このシステムと別のシステムの間のネットワークトラフィックが同じ IP アドレスを使用しているが、複数のポートを通過する場合

カプセル化されたトラフィックが、ソースシステムと、複数の IP アドレスを使用する他の複数システムとの間に発生している場合

カプセル化されたトラフィックが、ソースシステムと、複数のポート番号を使用する他のシステムとの間で発生している場合

ボンディングが複数のコンテナーまたは仮想マシン (VM) からのネットワークトラフィックを伝送し、それらの MAC アドレスをブリッジネットワークなどの外部ネットワークに直接公開し、モード 2 またはモード 4 のスイッチを設定できない場合

セカンダリーの選択

ネットワークトラフィックの大部分が、このシステムとデフォルトゲートウェイの背後にある複数の他のシステムとの間で発生する場合

ネットワークトラフィックの大部分がこのシステムと別のシステムとの間で発生する場合

    

Compliant

802.3ad

802.3ad

802.3ad 以外

   

デフォルトポリシー

設定されていない場合、これがデフォルトポリシー

非 IP トラフィックの場合、式は layer2 送信ポリシーと同じ

非 IP トラフィックの場合、式は layer2 送信ポリシーと同じ

   

第4章 NIC チームの設定

ネットワークインターフェイスコントローラー (NIC) チーミングは、物理ネットワークインターフェイスと仮想ネットワークインターフェイスを結合または集約して、より高いスループットまたは冗長性を備えた論理インターフェイスを提供する方法です。NIC チーミングでは、小さなカーネルモジュールを使用して、パケットフローの高速処理と他のタスク用のユーザー空間サービスを実装します。このように、NIC チーミングは、負荷分散と冗長性の要件に応じて簡単に拡張できるスケーラブルなソリューションです。

Red Hat Enterprise Linux は、チームデバイスを設定するためのさまざまなオプションを管理者に提供します。以下に例を示します。

  • nmcli を使用し、コマンドラインを使用してチーム接続を設定します。
  • RHEL Web コンソールを使用し、Web ブラウザーを使用してチーム接続を設定します。
  • nm-connection-editor アプリケーションを使用して、グラフィカルインターフェイスでチーム接続を設定します。
重要

NIC チーミングは Red Hat Enterprise Linux 9 では非推奨です。サーバーを将来バージョンの RHEL にアップグレードする予定がある場合は、代替手段としてカーネルボンディングドライバーの使用を検討してください。詳細は、ネットワークボンディングの設定 を参照してください。

4.1. コントローラーおよびポートインターフェイスのデフォルト動作の理解

NetworkManager サービスを使用してチームまたはボンディングのポートインターフェイスを管理またはトラブルシューティングする場合は、以下のデフォルトの動作を考慮してください。

  • コントローラーインターフェイスを起動しても、ポートインターフェイスは自動的に起動しない。
  • ポートインターフェイスを起動すると、コントローラーインターフェイスは毎回、起動する。
  • コントローラーインターフェイスを停止すると、ポートインターフェイスも停止する。
  • ポートのないコントローラーは、静的 IP 接続を開始できる。
  • コントローラーにポートがない場合は、DHCP 接続の開始時にポートを待つ。
  • DHCP 接続でポートを待機中のコントローラーは、キャリアを伴うポートの追加時に完了する。
  • DHCP 接続でポートを待機中のコントローラーは、キャリアを伴わないポートを追加する時に待機を継続する。

4.3. nmcli を使用した NIC チームの設定

コマンドラインでネットワークインターフェイスコントローラー (NIC) チームを設定するには、nmcli ユーティリティーを使用します。

重要

NIC チーミングは Red Hat Enterprise Linux 9 では非推奨です。サーバーを将来バージョンの RHEL にアップグレードする予定がある場合は、代替手段としてカーネルボンディングドライバーの使用を検討してください。詳細は、ネットワークボンディングの設定 を参照してください。

前提条件

  • teamd および NetworkManager-team パッケージがインストールされている。
  • サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
  • チームのポートとしてイーサネットデバイスを使用するには、物理または仮想のイーサネットデバイスがサーバーにインストールされ、スイッチに接続されている必要があります。
  • チームのポートにボンディング、ブリッジ、または VLAN デバイスを使用するには、チームの作成時にこれらのデバイスを作成するか、次の説明に従って事前にデバイスを作成することができます。

手順

  1. チームインターフェイスを作成します。

    # nmcli connection add type team con-name team0 ifname team0 team.runner activebackup

    このコマンドは、activebackup ランナーを使用する team0 という名前の NIC チームを作成します。

  2. オプション: リンクウォッチャーを設定します。たとえば、team0 接続プロファイルで ethtool リンク監視を設定するには、次のコマンドを実行します。

    # nmcli connection modify team0 team.link-watchers "name=ethtool"

    リンク監視は、さまざまなパラメーターに対応します。リンク監視にパラメーターを設定するには、name プロパティーでスペースで区切って指定します。name プロパティーは引用符で囲む必要があることに注意してください。たとえば、ethtool リンク監視を使用し、delay-up パラメーターを 2500 ミリ秒 (2.5 秒) で設定するには、次のコマンドを実行します。

    # nmcli connection modify team0 team.link-watchers "name=ethtool delay-up=2500"

    複数のリンク監視および各リンク監視を、特定のパラメーターで設定するには、リンク監視をコンマで区切る必要があります。以下の例では、delay-up パラメーターで ethtool リンク監視を設定します。arp_ping リンク監視は、source-host パラメーターおよび target-host パラメーターで設定します。

    # nmcli connection modify team0 team.link-watchers "name=ethtool delay-up=2, name=arp_ping source-host=192.0.2.1 target-host=192.0.2.2"
  3. ネットワークインターフェイスを表示し、次のステップでチームに追加するインターフェイスの名前を書き留めておきます。

    # nmcli device status
    DEVICE  TYPE      STATE         CONNECTION
    enp7s0  ethernet  disconnected  --
    enp8s0  ethernet  disconnected  --
    bond0   bond      connected  bond0
    bond1   bond      connected  bond1
    ...

    この例では、以下のように設定されています。

    • enp7s0 および enp8s0 は設定されません。これらのデバイスをポートとして使用するには、次のステップに接続プロファイルを追加します。いずれの接続にも割り当てられていないチームのイーサネットインターフェイスのみを使用できる点に注意してください。
    • bond0 および bond1 には既存の接続プロファイルがあります。これらのデバイスをポートとして使用するには、次の手順でプロファイルを変更します。
  4. ポートインターフェイスをチームに割り当てます。

    1. チームに割り当てるインターフェイスが設定されていない場合は、それらの接続プロファイルを新たに作成します。

      # nmcli connection add type ethernet slave-type team con-name team0-port1 ifname enp7s0 master team0
      # nmcli connection add type ethernet slave--type team con-name team0-port2 ifname enp8s0 master team0

      これらのコマンドは、enp7s0 および enp8s0 にプロファイルを作成し、team0 接続に追加します。

    2. 既存の接続プロファイルをチームに割り当てるには、以下を実行します。

      1. これらの接続の master パラメーターを team0 に設定します。

        # nmcli connection modify bond0 master team0
        # nmcli connection modify bond1 master team0

        これらのコマンドは、bond0 および bond1 という名前の既存の接続プロファイルを team0 接続に割り当てます。

      2. 接続を再度アクティブにします。

        # nmcli connection up bond0
        # nmcli connection up bond1
  5. IPv4 を設定します。

    • このチームデバイスを他のデバイスのポートとして使用するには、次のように入力します。

      # nmcli connection modify team0 ipv4.method disabled
    • DHCP を使用するために必要な操作はありません。
    • 静的 IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを team0 接続に設定するには、次のように入力します。

      # nmcli connection modify team0 ipv4.addresses '192.0.2.1/24' ipv4.gateway '192.0.2.254' ipv4.dns '192.0.2.253' ipv4.dns-search 'example.com' ipv4.method manual
  6. IPv6 設定を行います。

    • このチームデバイスを他のデバイスのポートとして使用するには、次のように入力します。

      # nmcli connection modify team0 ipv6.method disabled
    • ステートレスアドレス自動設定 (SLAAC) を使用する場合、アクションは必要ありません。
    • 静的 IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを team0 接続に設定するには、次のように入力します。

      # nmcli connection modify team0 ipv6.addresses '2001:db8:1::1/64' ipv6.gateway '2001:db8:1::fffe' ipv6.dns '2001:db8:1::fffd' ipv6.dns-search 'example.com' ipv6.method manual
  7. 接続をアクティベートします。

    # nmcli connection up team0

検証

  • チームのステータスを表示します。

    # teamdctl team0 state
    setup:
      runner: activebackup
    ports:
      enp7s0
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
            down count: 0
      enp8s0
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
            down count: 0
    runner:
      active port: enp7s0

    この例では、両方のポートが起動しています。

4.4. RHEL Web コンソールを使用した NIC チームの設定

Web ブラウザーベースのインターフェイスを使用してネットワーク設定を管理する場合は、RHEL Web コンソールを使用してネットワークインターフェイスコントローラー (NIC) チームを設定します。

重要

NIC チーミングは Red Hat Enterprise Linux 9 では非推奨です。サーバーを将来バージョンの RHEL にアップグレードする予定がある場合は、代替手段としてカーネルボンディングドライバーの使用を検討してください。詳細は、ネットワークボンディングの設定 を参照してください。

前提条件

手順

  1. RHEL 8 Web コンソールにログインします。

    詳細は、Web コンソールへのログイン を参照してください。

  2. 画面左側のナビゲーションで Networking タブを選択します。
  3. Interfaces セクションで Add team をクリックします。
  4. 作成するチームデバイスの名前を入力します。
  5. チームのポートにするインターフェイスを選択します。
  6. チームのランナーを選択します。

    Load balancing または 802.3ad LACP を選択すると、Web コンソールに追加のフィールド Balancer が表示されます。

  7. リンクウォッチャーを設定します。

    • Ethtool を選択した場合は、さらに、リンクアップおよびリンクダウンの遅延を設定します。
    • ARP ping または NSNA ping を選択し、さらに ping の間隔と ping ターゲットを設定します。
    チーム設定
  8. Apply をクリックします。
  9. デフォルトでは、チームは動的 IP アドレスを使用します。静的 IP アドレスを設定する場合:

    1. Interfaces セクションでチームの名前をクリックします。
    2. 設定するプロトコルの横にある Edit をクリックします。
    3. Addresses の横にある Manual を選択し、IP アドレス、接頭辞、およびデフォルトゲートウェイを入力します。
    4. DNS セクションで + ボタンをクリックし、DNS サーバーの IP アドレスを入力します。複数の DNS サーバーを設定するには、この手順を繰り返します。
    5. DNS search domains セクションで、+ ボタンをクリックし、検索ドメインを入力します。
    6. インターフェイスにスタティックルートが必要な場合は、Routes セクションで設定します。

      bond team bridge vlan.ipv4
    7. Apply をクリックします。

検証

  1. 画面左側のナビゲーションで Networking タブを選択し、インターフェイスに着信および発信トラフィックがあるかどうかを確認します。

    team verify
  2. チームのステータスを表示します。

    # teamdctl team0 state
    setup:
      runner: activebackup
    ports:
      enp7s0
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
            down count: 0
      enp8s0
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
            down count: 0
    runner:
      active port: enp7s0

    この例では、両方のポートが起動しています。

4.5. nm-connection-editor を使用した NIC チームを設定

グラフィカルインターフェイスを備えた Red Hat Enterprise Linux を使用している場合は、nm-connection-editor アプリケーションを使用してネットワークインターフェイスコントローラー (NIC) チームを設定できます。

nm-connection-editor は、新しいポートだけをチームに追加できることに注意してください。既存の接続プロファイルをポートとして使用するには、nmcli を使用した NIC チームの設定 の説明に従って、nmcli ユーティリティーを使用してチームを作成します。

重要

NIC チーミングは Red Hat Enterprise Linux 9 では非推奨です。サーバーを将来バージョンの RHEL にアップグレードする予定がある場合は、代替手段としてカーネルボンディングドライバーの使用を検討してください。詳細は、ネットワークボンディングの設定 を参照してください。

前提条件

  • teamd および NetworkManager-team パッケージがインストールされている。
  • サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
  • 物理または仮想のイーサネットデバイスをサーバーにインストールし、チームのポートとしてイーサネットデバイスを使用する。
  • チーム、ボンディング、または VLAN デバイスをチームのポートとして使用するには、これらのデバイスがまだ設定されていないことを確認してください。

手順

  1. ターミナルを開き、nm-connection-editor と入力します。

    $ nm-connection-editor
  2. + ボタンをクリックして、新しい接続を追加します。
  3. 接続タイプ Team を選択し、作成 をクリックします。
  4. Team タブで、以下を行います。

    1. 必要に応じて、Interface name フィールドにチームインターフェイスの名前を設定します。
    2. Add ボタンをクリックして、ネットワークインターフェイスの新しい接続プロファイルを追加し、プロファイルをポートとしてチームに追加します。

      1. インターフェイスの接続タイプを選択します。たとえば、有線接続に Ethernet を選択します。
      2. 必要に応じて、ポートの接続名を設定します。
      3. イーサネットデバイスの接続プロファイルを作成する場合は、Ethernet タブを開き、Device フィールドでポートとしてチームに追加するネットワークインターフェイスを選択します。別のデバイスタイプを選択した場合は、それに応じて設定します。いずれの接続にも割り当てられていないチームのイーサネットインターフェイスのみを使用できる点に注意してください。
      4. Save をクリックします。
    3. チームに追加する各インターフェイスに直前の手順を繰り返します。

      add nic to team in nm connection editor

    4. Advanced ボタンをクリックして、チーム接続に高度なオプションを設定します。

      1. Runner タブで、ランナーを選択します。
      2. Link Watcher タブで、リンク監視とそのオプションを設定します。
      3. OK をクリックします。
  5. IPv4 Settings タブと IPv6 Settings タブの両方で IP アドレス設定を設定します。

    • このブリッジデバイスを他のデバイスのポートとして使用するには、Method フィールドを Disabled に設定します。
    • DHCP を使用するには、Method フィールドをデフォルトの Automatic (DHCP) のままにします。
    • 静的 IP 設定を使用するには、Method フィールドを Manual に設定し、それに応じてフィールドに値を入力します。

      team IP settings nm connection editor

  6. Save をクリックします。
  7. nm-connection-editor を閉じます。

検証

  • チームのステータスを表示します。

    # teamdctl team0 state
    setup:
      runner: activebackup
    ports:
      enp7s0
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
            down count: 0
      enp8s0
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
            down count: 0
    runner:
      active port: enp7s0

第5章 VLAN タグの設定

仮想ローカルエリアネットワーク (VLAN) は、物理ネットワーク内の論理ネットワークです。VLAN インターフェイスは、インターフェイスを通過する際に VLAN ID でパケットをタグ付けし、返信パケットのタグを削除します。VLAN インターフェイスを、イーサネット、ボンド、チーム、ブリッジデバイスなどの別のインターフェイスに作成します。これらのインターフェイスは parent interface と呼ばれます。

Red Hat Enterprise Linux は、VLAN デバイスを設定するためのさまざまなオプションを管理者に提供します。以下に例を示します。

  • nmcli を使用し、コマンドラインを使用して VLAN のタグ付けを設定します。
  • RHEL Web コンソールを使用し、Web ブラウザーを使用して VLAN のタグ付けを設定します。
  • nmtui を使用し、テキストベースのユーザーインターフェイスで VLAN のタグ付けを設定します。
  • nm-connection-editor アプリケーションを使用して、グラフィカルインターフェイスで接続を設定します。
  • nmstatectl を使用して、Nmstate API を介して接続を設定します。
  • RHEL システムロールを使用して、1 つまたは複数のホストで VLAN 設定を自動化します。

5.1. nmcli を使用した VLAN タグ付けの設定

nmcli ユーティリティーを使用して、コマンドラインで仮想ローカルエリアネットワーク (VLAN) のタグ付けを設定できます。

前提条件

  • 仮想 VLAN インターフェイスに対する親として使用するインターフェイスが VLAN タグに対応している。
  • ボンドインターフェイスに VLAN を設定する場合は、以下のようになります。

    • ボンディングのポートが起動している。
    • ボンドが、fail_over_mac=follow オプションで設定されていない。VLAN 仮想デバイスは、親の新規 MAC アドレスに一致する MAC アドレスを変更できません。このような場合、トラフィックは間違ったソースの MAC アドレスで送信されます。
    • ボンドは通常、DHCP サーバーまたは IPv6 自動設定から IP アドレスを取得することは想定されていません。ボンディングの作成時に ipv4.method=disable オプションおよび ipv6.method=ignore オプションを設定してこれを確認します。そうしないと、DHCP または IPv6 の自動設定がしばらくして失敗した場合に、インターフェイスがダウンする可能性があります。
  • ホストが接続するスイッチは、VLAN タグに対応するように設定されています。詳細は、スイッチのドキュメントを参照してください。

手順

  1. ネットワークインターフェイスを表示します。

    # nmcli device status
    DEVICE   TYPE      STATE         CONNECTION
    enp1s0   ethernet  disconnected  enp1s0
    bridge0  bridge    connected     bridge0
    bond0    bond      connected     bond0
    ...
  2. VLAN インターフェイスを作成します。たとえば、VLAN インターフェイス vlan10 を作成し、enp1s0 を親インターフェイスとして使用し、VLAN ID 10 のタグパケットを作成するには、次のコマンドを実行します。

    # nmcli connection add type vlan con-name vlan10 ifname vlan10 vlan.parent enp1s0 vlan.id 10

    VLAN は、0 から 4094 の範囲内に存在する必要があります。

  3. デフォルトでは、VLAN 接続は、親インターフェイスから最大伝送単位 (MTU) を継承します。必要に応じて、別の MTU 値を設定します。

    # nmcli connection modify vlan10 ethernet.mtu 2000
  4. IPv4 を設定します。

    • この VLAN デバイスを他のデバイスのポートとして使用するには、次のように入力します。

      # nmcli connection modify vlan10 ipv4.method disabled
    • DHCP を使用するために必要な操作はありません。
    • 静的 IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを vlan10 接続に設定するには、次のように入力します。

      # nmcli connection modify vlan10 ipv4.addresses '192.0.2.1/24' ipv4.gateway '192.0.2.254' ipv4.dns '192.0.2.253' ipv4.method manual
  5. IPv6 設定を行います。

    • この VLAN デバイスを他のデバイスのポートとして使用するには、次のように入力します。

      # nmcli connection modify vlan10 ipv6.method disabled
    • ステートレスアドレス自動設定 (SLAAC) を使用する場合、アクションは必要ありません。
    • 静的 IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを vlan10 接続に設定するには、次のように入力します。

      # nmcli connection modify vlan10 ipv6.addresses '2001:db8:1::1/32' ipv6.gateway '2001:db8:1::fffe' ipv6.dns '2001:db8:1::fffd' ipv6.method manual
  6. 接続をアクティベートします。

    # nmcli connection up vlan10

検証

  • 設定を確認します。

    # ip -d addr show vlan10
    4: vlan10@enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 52:54:00:72:2f:6e brd ff:ff:ff:ff:ff:ff promiscuity 0
        vlan protocol 802.1Q id 10 <REORDER_HDR> numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
        inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute vlan10
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::1/32 scope global noprefixroute
           valid_lft forever preferred_lft forever
        inet6 fe80::8dd7:9030:6f8e:89e6/64 scope link noprefixroute
           valid_lft forever preferred_lft forever

関連情報

  • システム上の nm-settings(5) man ページ

5.2. RHEL Web コンソールを使用した VLAN タグ付けの設定

RHEL Web コンソールで Web ブラウザーベースのインターフェイスを使用してネットワーク設定を管理する場合は、VLAN タグ付けを設定できます。

前提条件

  • 仮想 VLAN インターフェイスに対する親として使用するインターフェイスが VLAN タグに対応している。
  • ボンドインターフェイスに VLAN を設定する場合は、以下のようになります。

    • ボンディングのポートが起動している。
    • ボンドが、fail_over_mac=follow オプションで設定されていない。VLAN 仮想デバイスは、親の新規 MAC アドレスに一致する MAC アドレスを変更できません。このような場合、トラフィックは間違ったソースの MAC アドレスで送信されます。
    • ボンドは通常、DHCP サーバーまたは IPv6 自動設定から IP アドレスを取得することは想定されていません。結合を作成する IPv4 および IPv6 プロトコルを無効にして、これを確認します。そうしないと、DHCP または IPv6 の自動設定がしばらくして失敗した場合に、インターフェイスがダウンする可能性があります。
  • ホストが接続するスイッチは、VLAN タグに対応するように設定されています。詳細は、スイッチのドキュメントを参照してください。

手順

  1. RHEL 8 Web コンソールにログインします。

    詳細は、Web コンソールへのログイン を参照してください。

  2. 画面左側のナビゲーションで Networking タブを選択します。
  3. Interfaces セクションで Add VLAN をクリックします。
  4. 親デバイスを選択します。
  5. VLAN ID を入力します。
  6. VLAN デバイスの名前を入力するか、自動生成された名前のままにします。

    VLAN 設定
  7. Apply をクリックします。
  8. デフォルトでは、VLAN デバイスは動的 IP アドレスを使用します。静的 IP アドレスを設定する場合:

    1. Interfaces セクションで VLAN デバイスの名前をクリックします。
    2. 設定するプロトコルの横にある Edit をクリックします。
    3. Addresses の横にある Manual を選択し、IP アドレス、接頭辞、およびデフォルトゲートウェイを入力します。
    4. DNS セクションで + ボタンをクリックし、DNS サーバーの IP アドレスを入力します。複数の DNS サーバーを設定するには、この手順を繰り返します。
    5. DNS search domains セクションで、+ ボタンをクリックし、検索ドメインを入力します。
    6. インターフェイスにスタティックルートが必要な場合は、Routes セクションで設定します。

      bond team bridge vlan.ipv4
    7. Apply をクリックします。

検証

  • 画面左側のナビゲーションで Networking タブを選択し、インターフェイスに着信および発信トラフィックがあるかどうかを確認します。

    VLAN 検証

5.3. nmtui を使用した VLAN タグ付けの設定

nmtui アプリケーションは、NetworkManager 用のテキストベースのユーザーインターフェイスを提供します。nmtui を使用して、グラフィカルインターフェイスを使用せずにホスト上で VLAN タグ付けを設定できます。

注記

nmtui で 以下を行います。

  • カーソルキーを使用してナビゲートします。
  • ボタンを選択して Enter を押します。
  • Space を使用してチェックボックスをオンまたはオフにします。

前提条件

  • 仮想 VLAN インターフェイスに対する親として使用するインターフェイスが VLAN タグに対応している。
  • ボンドインターフェイスに VLAN を設定する場合は、以下のようになります。

    • ボンディングのポートが起動している。
    • ボンドが、fail_over_mac=follow オプションで設定されていない。VLAN 仮想デバイスは、親の新規 MAC アドレスに一致する MAC アドレスを変更できません。このような場合、トラフィックは間違ったソースの MAC アドレスで送信されます。
    • ボンドは通常、DHCP サーバーまたは IPv6 自動設定から IP アドレスを取得することは想定されていません。ボンディングの作成時に ipv4.method=disable オプションおよび ipv6.method=ignore オプションを設定してこれを確認します。そうしないと、DHCP または IPv6 の自動設定がしばらくして失敗した場合に、インターフェイスがダウンする可能性があります。
  • ホストが接続するスイッチは、VLAN タグに対応するように設定されています。詳細は、スイッチのドキュメントを参照してください。

手順

  1. VLAN タグ付けを設定するネットワークデバイス名がわからない場合は、使用可能なデバイスを表示します。

    # nmcli device status
    DEVICE     TYPE      STATE                   CONNECTION
    enp1s0     ethernet  unavailable             --
    ...
  2. nmtui を開始します。

    # nmtui
  3. Edit a connection 選択し、Enter を押します。
  4. Add を押します。
  5. ネットワークタイプのリストから VLAN を選択し、Enter を押します。
  6. オプション: 作成する NetworkManager プロファイルの名前を入力します。

    ホストに複数のプロファイルがある場合は、わかりやすい名前を付けると、プロファイルの目的を識別しやすくなります。

  7. 作成する VLAN デバイス名を Device フィールドに入力します。
  8. VLAN タグ付けを設定するデバイスの名前を Parent フィールドに入力します。
  9. VLAN ID を入力します。ID は 0 から 4094 の範囲内である必要があります。
  10. 環境に応じて、IPv4 configuration および IPv6 configuration 領域に IP アドレス設定を設定します。これを行うには、これらの領域の横にあるボタンを押して、次を選択します。

    • この VLAN デバイスが IP アドレスを必要としない場合、または他のデバイスのポートとして使用する場合は、Disabled にします。
    • DHCP サーバーまたはステートレスアドレス自動設定 (SLAAC) が IP アドレスを VLAN デバイスに動的に割り当てる場合は、Automatic にします。
    • ネットワークで静的 IP アドレス設定が必要な場合は、Manual にします。この場合、さらにフィールドに入力する必要があります。

      1. 設定するプロトコルの横にある Show を押して、追加のフィールドを表示します。
      2. Addresses の横にある Add を押して、IP アドレスとサブネットマスクを Classless Inter-Domain Routing (CIDR) 形式で入力します。

        サブネットマスクを指定しない場合、NetworkManager は IPv4 アドレスに /32 サブネットマスクを設定し、IPv6 アドレスに /64 サブネットマスクを設定します。

      3. デフォルトゲートウェイのアドレスを入力します。
      4. DNS servers の横にある Add を押して、DNS サーバーのアドレスを入力します。
      5. Search domains の横にある Add を押して、DNS 検索ドメインを入力します。

    図5.1 静的 IP アドレス設定による VLAN 接続例

    nmtui vlan static IP
  11. OK を押すと、新しい接続が作成され、自動的にアクティブ化されます。
  12. Back を押してメインメニューに戻ります。
  13. Quit を選択し、Enter キーを押して nmtui アプリケーションを閉じます。

検証

  • 設定を確認します。

    # ip -d addr show vlan10
    4: vlan10@enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 52:54:00:72:2f:6e brd ff:ff:ff:ff:ff:ff promiscuity 0
        vlan protocol 802.1Q id 10 <REORDER_HDR> numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
        inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute vlan10
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::1/32 scope global noprefixroute
           valid_lft forever preferred_lft forever
        inet6 fe80::8dd7:9030:6f8e:89e6/64 scope link noprefixroute
           valid_lft forever preferred_lft forever

5.4. nm-connection-editor を使用した VLAN タグ付けの設定

nm-connection-editor アプリケーションを使用して、グラフィカルインターフェイスで仮想ローカルエリアネットワーク (VLAN) のタグ付けを設定できます。

前提条件

  • 仮想 VLAN インターフェイスに対する親として使用するインターフェイスが VLAN タグに対応している。
  • ボンドインターフェイスに VLAN を設定する場合は、以下のようになります。

    • ボンディングのポートが起動している。
    • ボンドが、fail_over_mac=follow オプションで設定されていない。VLAN 仮想デバイスは、親の新規 MAC アドレスに一致する MAC アドレスを変更できません。このような場合、トラフィックは間違ったソースの MAC アドレスで送信されます。
  • ホストが接続するスイッチは、VLAN タグに対応するように設定されています。詳細は、スイッチのドキュメントを参照してください。

手順

  1. ターミナルを開き、nm-connection-editor と入力します。

    $ nm-connection-editor
  2. + ボタンをクリックして、新しい接続を追加します。
  3. VLAN 接続タイプを選択し、作成 をクリックします。
  4. VLAN タブで、以下を行います。

    1. 親インターフェイスを選択します。
    2. VLAN id を選択します。VLAN は、0 から 4094 の範囲内に存在する必要があります。
    3. デフォルトでは、VLAN 接続は、親インターフェイスから最大伝送単位 (MTU) を継承します。必要に応じて、別の MTU 値を設定します。
    4. 必要に応じて、VLAN インターフェイスの名前および VLAN 固有のオプションを設定します。

      vlan settings nm connection editor

  5. IPv4 Settings タブと IPv6 Settings タブの両方で IP アドレス設定を設定します。

    • このブリッジデバイスを他のデバイスのポートとして使用するには、Method フィールドを Disabled に設定します。
    • DHCP を使用するには、Method フィールドをデフォルトの Automatic (DHCP) のままにします。
    • 静的 IP 設定を使用するには、Method フィールドを Manual に設定し、それに応じてフィールドに値を入力します。

      vlan IP settings nm connection editor

  6. Save をクリックします。
  7. nm-connection-editor を閉じます。

検証

  1. 設定を確認します。

    # ip -d addr show vlan10
    4: vlan10@enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 52:54:00:d5:e0:fb brd ff:ff:ff:ff:ff:ff promiscuity 0
        vlan protocol 802.1Q id 10 <REORDER_HDR> numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
        inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute vlan10
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::1/32 scope global noprefixroute
           valid_lft forever preferred_lft forever
        inet6 fe80::8dd7:9030:6f8e:89e6/64 scope link noprefixroute
           valid_lft forever preferred_lft forever

5.5. nmstatectl を使用した VLAN タグ付けの設定

nmstatectl ユーティリティーを使用して、Nmstate API を介して仮想ローカルエリアネットワーク VLAN を設定します。Nmstate API は、設定を行った後、結果が設定ファイルと一致することを確認します。何らかの障害が発生した場合には、nmstatectl は自動的に変更をロールバックし、システムが不正な状態のままにならないようにします。

環境に応じて、YAML ファイルを適宜調整します。たとえば、VLAN でイーサネットアダプターとは異なるデバイスを使用するには、VLAN で使用するポートの Base-iface 属性と type 属性を調整します。

前提条件

  • 物理または仮想のイーサネットデバイスをサーバーにインストールし、VLAN でイーサネットデバイスをポートとして使用する。
  • nmstate パッケージがインストールされている。

手順

  1. 以下の内容を含む YAML ファイル (例: ~/create-vlan.yml) を作成します。

    ---
    interfaces:
    - name: vlan10
      type: vlan
      state: up
      ipv4:
        enabled: true
        address:
        - ip: 192.0.2.1
          prefix-length: 24
        dhcp: false
      ipv6:
        enabled: true
        address:
        - ip: 2001:db8:1::1
          prefix-length: 64
        autoconf: false
        dhcp: false
      vlan:
        base-iface: enp1s0
        id: 10
    - name: enp1s0
      type: ethernet
      state: up
    
    routes:
      config:
      - destination: 0.0.0.0/0
        next-hop-address: 192.0.2.254
        next-hop-interface: vlan10
      - destination: ::/0
        next-hop-address: 2001:db8:1::fffe
        next-hop-interface: vlan10
    
    dns-resolver:
      config:
        search:
        - example.com
        server:
        - 192.0.2.200
        - 2001:db8:1::ffbb

    これらの設定では、enp1s0 デバイスを使用する ID 10 の VLAN を定義します。子デバイスの VLAN 接続の設定は以下のようになります。

    • 静的 IPv4 アドレス: 192.0.2.1 (サブネットマスクが /24)
    • 静的 IPv6 アドレス: 2001:db8:1::1 (サブネットマスクが /64)
    • IPv4 デフォルトゲートウェイ - 192.0.2.254
    • IPv6 デフォルトゲートウェイ - 2001:db8:1::fffe
    • IPv4 DNS サーバー - 192.0.2.200
    • IPv6 DNS サーバー - 2001:db8:1::ffbb
    • DNS 検索ドメイン - example.com
  2. 設定をシステムに適用します。

    # nmstatectl apply ~/create-vlan.yml

検証

  1. デバイスおよび接続の状態を表示します。

    # nmcli device status
    DEVICE      TYPE      STATE      CONNECTION
    vlan10      vlan      connected  vlan10
  2. 接続プロファイルのすべての設定を表示します。

    # nmcli connection show vlan10
    connection.id:              vlan10
    connection.uuid:            1722970f-788e-4f81-bd7d-a86bf21c9df5
    connection.stable-id:       --
    connection.type:            vlan
    connection.interface-name:  vlan10
    ...
  3. 接続設定を YAML 形式で表示します。

    # nmstatectl show vlan0

関連情報

  • システム上の nmstatectl(8) man ページ
  • /usr/share/doc/nmstate/examples/ directory

5.6. network RHEL システムロールを使用した VLAN タグ付けの設定

ネットワークで仮想ローカルエリアネットワーク (VLAN) を使用してネットワークトラフィックを論理ネットワークに分離する場合は、NetworkManager 接続プロファイルを作成して VLAN タグ付けを設定します。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。

network RHEL システムロールを使用して VLAN タグ付けを設定できます。VLAN の親デバイスの接続プロファイルが存在しない場合は、このロールによって作成することもできます。

注記

VLAN デバイスに IP アドレス、デフォルトゲートウェイ、および DNS 設定が必要な場合は、親デバイスではなく VLAN デバイスで設定してください。

前提条件

手順

  1. 次の内容を含む Playbook ファイル (例: ~/playbook.yml) を作成します。

    ---
    - name: Configure the network
      hosts: managed-node-01.example.com
      tasks:
        - name: VLAN connection profile with Ethernet port
          ansible.builtin.include_role:
            name: rhel-system-roles.network
          vars:
            network_connections:
              # Ethernet profile
              - name: enp1s0
                type: ethernet
                interface_name: enp1s0
                autoconnect: yes
                state: up
                ip:
                  dhcp4: no
                  auto6: no
    
              # VLAN profile
              - name: enp1s0.10
                type: vlan
                vlan:
                  id: 10
                ip:
                  dhcp4: yes
                  auto6: yes
                parent: enp1s0
                state: up

    サンプル Playbook で指定されている設定は次のとおりです。

    type: <profile_type>
    作成するプロファイルのタイプを設定します。このサンプル Playbook では、2 つの接続プロファイルを作成します。1 つは親イーサネットデバイス用、もう 1 つは VLAN デバイス用です。
    dhcp4: <value>
    yes に設定すると、DHCP、PPP、または同様のサービスからの自動 IPv4 アドレス割り当てが有効になります。親デバイスの IP アドレス設定を無効にします。
    auto6: <value>
    yes に設定すると、IPv6 自動設定が有効になります。この場合、デフォルトで NetworkManager がルーター広告を使用します。ルーターが managed フラグを通知すると、NetworkManager は DHCPv6 サーバーから IPv6 アドレスと接頭辞を要求します。親デバイスの IP アドレス設定を無効にします。
    parent: <parent_device>
    VLAN 接続プロファイルの親デバイスを設定します。この例では、親はイーサネットインターフェイスです。

    Playbook で使用されるすべての変数の詳細は、コントロールノードの /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイルを参照してください。

  2. Playbook の構文を検証します。

    $ ansible-playbook --syntax-check ~/playbook.yml

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  3. Playbook を実行します。

    $ ansible-playbook ~/playbook.yml

検証

  • VLAN 設定を確認します。

    # ansible managed-node-01.example.com -m command -a 'ip -d addr show enp1s0.10'
    managed-node-01.example.com | CHANGED | rc=0 >>
    4: vlan10@enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 52:54:00:72:2f:6e brd ff:ff:ff:ff:ff:ff promiscuity 0
        vlan protocol 802.1Q id 10 <REORDER_HDR> numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
        ...

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイル
  • /usr/share/doc/rhel-system-roles/network/ ディレクトリー

第6章 ネットワークブリッジの設定

ネットワークブリッジは、MAC アドレスのテーブルに基づいてネットワーク間のトラフィックを転送するリンク層デバイスです。ブリッジは、ネットワークトラフィックをリッスンし、どのホストが各ネットワークに接続しているかを把握して、MAC アドレステーブルを構築します。たとえば、Red Hat Enterprise Linux ホストのソフトウェアブリッジを使用して、ハードウェアブリッジまたは仮想環境をエミュレートし、仮想マシンをホストと同じネットワークに統合できます。

ブリッジには、ブリッジが接続する必要がある各ネットワークにネットワークデバイスが必要です。ブリッジを設定する場合には、ブリッジは コントローラー と呼ばれ、ポート を使用するデバイスです。

以下のように、さまざまなタイプのデバイスにブリッジを作成できます。

  • 物理および仮想イーサネットデバイス
  • ネットワークボンド
  • ネットワークチーム
  • VLAN デバイス

Wi-Fi で効率的に使用するために、Wi-Fi で 3-address フレームの使用を指定する IEEE 802.11 規格により、Ad-Hoc モードまたは Infrastructure モードで稼働している Wi-Fi ネットワークにはブリッジを設定できません。

6.1. nmcli を使用したネットワークブリッジの設定

コマンドラインでネットワークブリッジを設定するには、nmcli ユーティリティーを使用します。

前提条件

手順

  1. ブリッジインターフェイスを作成します。

    # nmcli connection add type bridge con-name bridge0 ifname bridge0

    このコマンドにより bridge0 という名前のブリッジが作成されます。以下を入力します。

  2. ネットワークインターフェイスを表示し、ブリッジに追加するインターフェイスの名前を書き留めます。

    # nmcli device status
    DEVICE  TYPE      STATE         CONNECTION
    enp7s0  ethernet  disconnected  --
    enp8s0  ethernet  disconnected  --
    bond0   bond      connected     bond0
    bond1   bond      connected     bond1
    ...

    この例では、以下のように設定されています。

    • enp7s0 および enp8s0 は設定されません。これらのデバイスをポートとして使用するには、次のステップに接続プロファイルを追加します。
    • bond0 および bond1 には既存の接続プロファイルがあります。これらのデバイスをポートとして使用するには、次の手順でプロファイルを変更します。
  3. インターフェイスをブリッジに割り当てます。

    1. ブリッジに割り当てるインターフェイスが設定されていない場合は、それらのブリッジに新しい接続プロファイルを作成します。

      # nmcli connection add type ethernet slave-type bridge con-name bridge0-port1 ifname enp7s0 master bridge0
      # nmcli connection add type ethernet slave-type bridge con-name bridge0-port2 ifname enp8s0 master bridge0

      これらのコマンドにより、enp7s0 および enp8s0 のプロファイルが作成され、それらを bridge0 接続に追加します。

    2. 既存の接続プロファイルをブリッジに割り当てるには、以下を実行します。

      1. これらの接続の master パラメーターを bridge0 に設定します。

        # nmcli connection modify bond0 master bridge0
        # nmcli connection modify bond1 master bridge0

        これらのコマンドは、bond0 および bond1 という名前の既存の接続プロファイルを bridge0 接続に割り当てます。

      2. 接続を再度アクティブにします。

        # nmcli connection up bond0
        # nmcli connection up bond1
  4. IPv4 を設定します。

    • このブリッジデバイスを他のデバイスのポートとして使用するには、次のように入力します。

      # nmcli connection modify bridge0 ipv4.method disabled
    • DHCP を使用するために必要な操作はありません。
    • 静的 IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを bridge0 接続に設定するには、次のように入力します。

      # nmcli connection modify bridge0 ipv4.addresses '192.0.2.1/24' ipv4.gateway '192.0.2.254' ipv4.dns '192.0.2.253' ipv4.dns-search 'example.com' ipv4.method manual
  5. IPv6 設定を行います。

    • このブリッジデバイスを他のデバイスのポートとして使用するには、次のように入力します。

      # nmcli connection modify bridge0 ipv6.method disabled
    • ステートレスアドレス自動設定 (SLAAC) を使用する場合、アクションは必要ありません。
    • 静的 IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを bridge0 接続に設定するには、次のように入力します。

      # nmcli connection modify bridge0 ipv6.addresses '2001:db8:1::1/64' ipv6.gateway '2001:db8:1::fffe' ipv6.dns '2001:db8:1::fffd' ipv6.dns-search 'example.com' ipv6.method manual
  6. 必要に応じて、ブリッジのその他のプロパティーを設定します。たとえば、bridge0 の STP (Spanning Tree Protocol) の優先度を 16384 に設定するには、次のコマンドを実行します。

    # nmcli connection modify bridge0 bridge.priority '16384'

    デフォルトでは STP が有効になっています。

  7. 接続をアクティベートします。

    # nmcli connection up bridge0
  8. ポートが接続されており、CONNECTION コラムがポートの接続名を表示していることを確認します。

    # nmcli device
    DEVICE   TYPE      STATE      CONNECTION
    ...
    enp7s0   ethernet  connected  bridge0-port1
    enp8s0   ethernet  connected  bridge0-port2

    接続のいずれかのポートをアクティブにすると、NetworkManager はブリッジもアクティブにしますが、他のポートはアクティブにしません。ブリッジが有効な場合には、Red Hat Enterprise Linux がすべてのポートを自動的に有効にするように設定できます。

    1. ブリッジ接続の connection.autoconnect-slaves パラメーターを有効にします。

      # nmcli connection modify bridge0 connection.autoconnect-slaves 1
    2. ブリッジを再度アクティブにします。

      # nmcli connection up bridge0

検証

  • ip ユーティリティーを使用して、特定のブリッジのポートであるイーサネットデバイスのリンクステータスを表示します。

    # ip link show master bridge0
    3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP mode DEFAULT group default qlen 1000
        link/ether 52:54:00:62:61:0e brd ff:ff:ff:ff:ff:ff
    4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP mode DEFAULT group default qlen 1000
        link/ether 52:54:00:9e:f1:ce brd ff:ff:ff:ff:ff:ff
  • bridge ユーティリティーを使用して、任意のブリッジデバイスのポートであるイーサネットデバイスの状態を表示します。

    # bridge link show
    3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state forwarding priority 32 cost 100
    4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state listening priority 32 cost 100
    5: enp9s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge1 state forwarding priority 32 cost 100
    6: enp11s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge1 state blocking priority 32 cost 100
    ...

    特定のイーサネットデバイスのステータスを表示するには、bridge link show dev <ethernet_device_name> コマンドを使用します。

6.2. RHEL Web コンソールを使用したネットワークブリッジの設定

Web ブラウザーベースのインターフェイスを使用してネットワーク設定を管理する場合は、RHEL Web コンソールを使用してネットワークブリッジを設定します。

前提条件

手順

  1. RHEL 8 Web コンソールにログインします。

    詳細は、Web コンソールへのログイン を参照してください。

  2. 画面左側のナビゲーションで Networking タブを選択します。
  3. Interfaces セクションで Add bridge をクリックします。
  4. 作成するブリッジデバイスの名前を入力します。
  5. ブリッジのポートにするインターフェイスを選択します。
  6. オプション: Spanning tree protocol (STP) 機能を有効にして、ブリッジループとブロードキャスト放射を回避します。

    ブリッジ設定
  7. Apply をクリックします。
  8. デフォルトでは、ブリッジは動的 IP アドレスを使用します。静的 IP アドレスを設定する場合:

    1. Interfaces セクションでブリッジの名前をクリックします。
    2. 設定するプロトコルの横にある Edit をクリックします。
    3. Addresses の横にある Manual を選択し、IP アドレス、接頭辞、およびデフォルトゲートウェイを入力します。
    4. DNS セクションで + ボタンをクリックし、DNS サーバーの IP アドレスを入力します。複数の DNS サーバーを設定するには、この手順を繰り返します。
    5. DNS search domains セクションで、+ ボタンをクリックし、検索ドメインを入力します。
    6. インターフェイスにスタティックルートが必要な場合は、Routes セクションで設定します。

      bond team bridge vlan.ipv4
    7. Apply をクリックします。

検証

  1. 画面左側のナビゲーションで Networking タブを選択し、インターフェイスに着信および発信トラフィックがあるかどうかを確認します。

    ブリッジ検証

6.3. nmtui を使用したネットワークブリッジの設定

nmtui アプリケーションは、NetworkManager 用のテキストベースのユーザーインターフェイスを提供します。nmtui を使用して、グラフィカルインターフェイスを使用せずにホスト上でネットワークブリッジを設定できます。

注記

nmtui で 以下を行います。

  • カーソルキーを使用してナビゲートします。
  • ボタンを選択して Enter を押します。
  • Space を使用してチェックボックスをオンまたはオフにします。

前提条件

  • サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
  • ブリッジのポートとしてイーサネットデバイスを使用するには、物理または仮想のイーサネットデバイスをサーバーにインストールする必要があります。

手順

  1. ネットワークブリッジを設定するネットワークデバイス名がわからない場合は、使用可能なデバイスを表示します。

    # nmcli device status
    DEVICE     TYPE      STATE                   CONNECTION
    enp7s0     ethernet  unavailable             --
    enp8s0     ethernet  unavailable             --
    ...
  2. nmtui を開始します。

    # nmtui
  3. Edit a connection 選択し、Enter を押します。
  4. Add を押します。
  5. ネットワークタイプのリストから Bridge を選択し、Enter を押します。
  6. オプション: 作成する NetworkManager プロファイルの名前を入力します。

    ホストに複数のプロファイルがある場合は、わかりやすい名前を付けると、プロファイルの目的を識別しやすくなります。

  7. 作成するブリッジデバイス名を Device フィールドに入力します。
  8. 作成するブリッジにポートを追加します。

    1. Slaves リストの横にある Add を押します。
    2. ブリッジにポートとして追加するインターフェイスのタイプ (例: Ethernet) を選択します。
    3. オプション: このブリッジポート用に作成する NetworkManager プロファイルの名前を入力します。
    4. ポートのデバイス名を Device フィールドに入力します。
    5. OK を押して、ブリッジ設定のウィンドウに戻ります。

      図6.1 イーサネットデバイスをポートとしてブリッジに追加する

      nmtui bridge add port
    6. ブリッジにさらにポートを追加するには、これらの手順を繰り返します。
  9. 環境に応じて、IPv4 configuration および IPv6 configuration 領域に IP アドレス設定を設定します。これを行うには、これらの領域の横にあるボタンを押して、次を選択します。

    • ブリッジが IP アドレスを必要としない場合は Disabled にします。
    • DHCP サーバーまたはステートレスアドレス自動設定 (SLAAC) が IP アドレスをブリッジに動的に割り当てる場合は、Automatic にします。
    • ネットワークで静的 IP アドレス設定が必要な場合は、Manual にします。この場合、さらにフィールドに入力する必要があります。

      1. 設定するプロトコルの横にある Show を押して、追加のフィールドを表示します。
      2. Addresses の横にある Add を押して、IP アドレスとサブネットマスクを Classless Inter-Domain Routing (CIDR) 形式で入力します。

        サブネットマスクを指定しない場合、NetworkManager は IPv4 アドレスに /32 サブネットマスクを設定し、IPv6 アドレスに /64 サブネットマスクを設定します。

      3. デフォルトゲートウェイのアドレスを入力します。
      4. DNS servers の横にある Add を押して、DNS サーバーのアドレスを入力します。
      5. Search domains の横にある Add を押して、DNS 検索ドメインを入力します。

    図6.2 IP アドレス設定なしのブリッジ接続例

    nmtui bridge no IP
  10. OK を押すと、新しい接続が作成され、自動的にアクティブ化されます。
  11. Back を押してメインメニューに戻ります。
  12. Quit を選択し、Enter キーを押して nmtui アプリケーションを閉じます。

検証

  1. ip ユーティリティーを使用して、特定のブリッジのポートであるイーサネットデバイスのリンクステータスを表示します。

    # ip link show master bridge0
    3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP mode DEFAULT group default qlen 1000
        link/ether 52:54:00:62:61:0e brd ff:ff:ff:ff:ff:ff
    4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP mode DEFAULT group default qlen 1000
        link/ether 52:54:00:9e:f1:ce brd ff:ff:ff:ff:ff:ff
  2. bridge ユーティリティーを使用して、任意のブリッジデバイスのポートであるイーサネットデバイスの状態を表示します。

    # bridge link show
    3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state forwarding priority 32 cost 100
    4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state listening priority 32 cost 100
    ...

    特定のイーサネットデバイスのステータスを表示するには、bridge link show dev <ethernet_device_name> コマンドを使用します。

6.4. nm-connection-editor を使用したネットワークブリッジの設定

グラフィカルインターフェイスで Red Hat Enterprise Linux を使用する場合は、nm-connection-editor アプリケーションを使用してネットワークブリッジを設定できます。

nm-connection-editor は、新しいポートだけをブリッジに追加できることに注意してください。既存の接続プロファイルをポートとして使用するには、nmcli を使用したネットワークブリッジの設定 の説明に従って、nmcli ユーティリティーを使用してブリッジを作成します。

前提条件

  • サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
  • ブリッジのポートとしてイーサネットデバイスを使用するには、物理または仮想のイーサネットデバイスをサーバーにインストールする必要があります。
  • ブリッジのポートとしてチーム、ボンディング、または VLAN デバイスを使用するには、これらのデバイスがまだ設定されていないことを確認してください。

手順

  1. ターミナルを開き、nm-connection-editor と入力します。

    $ nm-connection-editor
  2. + ボタンをクリックして、新しい接続を追加します。
  3. 接続タイプ Bridge を選択し、作成 をクリックします。
  4. Bridge タブで以下を行います。

    1. 必要に応じて、Interface name フィールドにブリッジインターフェイスの名前を設定します。
    2. 追加 ボタンをクリックして、ネットワークインターフェイスの新しい接続プロファイルを作成し、プロファイルをポートとしてブリッジに追加します。

      1. インターフェイスの接続タイプを選択します。たとえば、有線接続に Ethernet を選択します。
      2. 必要に応じて、ポートの接続名を設定します。
      3. イーサネットデバイスの接続プロファイルを作成する場合は、Ethernet タブを開き、Device フィールドで選択し、ポートとしてブリッジに追加するネットワークインターフェイスを選択します。別のデバイスタイプを選択した場合は、それに応じて設定します。
      4. Save をクリックします。
    3. ブリッジに追加する各インターフェイスに、直前の手順を繰り返します。

      add nic to bridge in nm connection editor

  5. 必要に応じて、スパニングツリープロトコル (STP) オプションなどの追加のブリッジ設定を行います。
  6. IPv4 Settings タブと IPv6 Settings タブの両方で IP アドレス設定を設定します。

    • このブリッジデバイスを他のデバイスのポートとして使用するには、Method フィールドを Disabled に設定します。
    • DHCP を使用するには、Method フィールドをデフォルトの Automatic (DHCP) のままにします。
    • 静的 IP 設定を使用するには、Method フィールドを Manual に設定し、それに応じてフィールドに値を入力します。

      bridge IP settings nm connection editor

  7. Save をクリックします。
  8. nm-connection-editor を閉じます。

検証

  • ip ユーティリティーを使用して、特定のブリッジのポートであるイーサネットデバイスのリンクステータスを表示します。

    # ip link show master bridge0
    3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP mode DEFAULT group default qlen 1000
        link/ether 52:54:00:62:61:0e brd ff:ff:ff:ff:ff:ff
    4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP mode DEFAULT group default qlen 1000
        link/ether 52:54:00:9e:f1:ce brd ff:ff:ff:ff:ff:ff
  • bridge ユーティリティーを使用して、任意のブリッジデバイスのポートであるイーサネットデバイスの状態を表示します。

    # bridge link show
    3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state forwarding priority 32 cost 100
    4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state listening priority 32 cost 100
    5: enp9s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge1 state forwarding priority 32 cost 100
    6: enp11s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge1 state blocking priority 32 cost 100
    ...

    特定のイーサネットデバイスのステータスを表示するには、bridge link show dev ethernet_device_name コマンドを使用します。

6.5. nmstatectl を使用したネットワークブリッジの設定

nmstatectl ユーティリティーを使用して、Nmstate API を介してネットワークブリッジを設定します。Nmstate API は、設定を行った後、結果が設定ファイルと一致することを確認します。何らかの障害が発生した場合には、nmstatectl は自動的に変更をロールバックし、システムが不正な状態のままにならないようにします。

環境に応じて、YAML ファイルを適宜調整します。たとえば、ブリッジでイーサネットアダプターとは異なるデバイスを使用するには、ブリッジで使用するポートの Base-iface 属性と type 属性を調整します。

前提条件

  • サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
  • 物理または仮想のイーサネットデバイスをサーバーにインストールし、ブリッジでイーサネットデバイスをポートとして使用する。
  • ポート リストでインターフェイス名を設定し、対応するインターフェイスを定義して、ブリッジのポートとしてチーム、ボンディング、または VLAN デバイスを使用する。
  • nmstate パッケージがインストールされている。

手順

  1. 以下の内容を含む YAML ファイル (例: ~/create-bridge.yml) を作成します。

    ---
    interfaces:
    - name: bridge0
      type: linux-bridge
      state: up
      ipv4:
        enabled: true
        address:
        - ip: 192.0.2.1
          prefix-length: 24
        dhcp: false
      ipv6:
        enabled: true
        address:
        - ip: 2001:db8:1::1
          prefix-length: 64
        autoconf: false
        dhcp: false
      bridge:
        options:
          stp:
            enabled: true
        port:
          - name: enp1s0
          - name: enp7s0
    - name: enp1s0
      type: ethernet
      state: up
    - name: enp7s0
      type: ethernet
      state: up
    
    routes:
      config:
      - destination: 0.0.0.0/0
        next-hop-address: 192.0.2.254
        next-hop-interface: bridge0
      - destination: ::/0
        next-hop-address: 2001:db8:1::fffe
        next-hop-interface: bridge0
    dns-resolver:
      config:
        search:
        - example.com
        server:
        - 192.0.2.200
        - 2001:db8:1::ffbb

    これらの設定では、次の設定でネットワークブリッジを定義します。

    • ブリッジのネットワークインターフェイス: enp1s0 および enp7s0
    • スパニングツリープロトコル (STP): 有効化
    • 静的 IPv4 アドレス: 192.0.2.1 (サブネットマスクが /24)
    • 静的 IPv6 アドレス: 2001:db8:1::1 (サブネットマスクが /64)
    • IPv4 デフォルトゲートウェイ: 192.0.2.254
    • IPv6 デフォルトゲートウェイ: 2001:db8:1::fffe
    • IPv4 DNS サーバー: 192.0.2.200
    • IPv6 DNS サーバー: 2001:db8:1::ffbb
    • DNS 検索ドメイン: example.com
  2. 設定をシステムに適用します。

    # nmstatectl apply ~/create-bridge.yml

検証

  1. デバイスおよび接続の状態を表示します。

    # nmcli device status
    DEVICE      TYPE      STATE      CONNECTION
    bridge0     bridge    connected  bridge0
  2. 接続プロファイルのすべての設定を表示します。

    # nmcli connection show bridge0
    connection.id:              bridge0_
    connection.uuid:            e2cc9206-75a2-4622-89cf-1252926060a9
    connection.stable-id:       --
    connection.type:            bridge
    connection.interface-name:  bridge0
    ...
  3. 接続設定を YAML 形式で表示します。

    # nmstatectl show bridge0

関連情報

6.6. network RHEL システムロールを使用したネットワークブリッジの設定

ネットワークブリッジを作成することにより、Open Systems Interconnection (OSI) モデルのレイヤー 2 で複数のネットワークを接続できます。ブリッジを設定するには、NetworkManager で接続プロファイルを作成します。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。

network RHEL システムロールを使用してブリッジを設定できます。ブリッジの親デバイスの接続プロファイルが存在しない場合は、このロールによって作成することもできます。

注記

IP アドレス、ゲートウェイ、DNS 設定をブリッジに割り当てる場合は、ポートではなくブリッジで設定してください。

前提条件

  • コントロールノードと管理対象ノードの準備が完了している。
  • 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
  • 管理対象ノードへの接続に使用するアカウントに、そのノードに対する sudo 権限がある。
  • サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。

手順

  1. 次の内容を含む Playbook ファイル (例: ~/playbook.yml) を作成します。

    ---
    - name: Configure the network
      hosts: managed-node-01.example.com
      tasks:
        - name: Bridge connection profile with two Ethernet ports
          ansible.builtin.include_role:
            name: rhel-system-roles.network
          vars:
            network_connections:
              # Bridge profile
              - name: bridge0
                type: bridge
                interface_name: bridge0
                ip:
                  dhcp4: yes
                  auto6: yes
                state: up
    
              # Port profile for the 1st Ethernet device
              - name: bridge0-port1
                interface_name: enp7s0
                type: ethernet
                controller: bridge0
                port_type: bridge
                state: up
    
              # Port profile for the 2nd Ethernet device
              - name: bridge0-port2
                interface_name: enp8s0
                type: ethernet
                controller: bridge0
                port_type: bridge
                state: up

    サンプル Playbook で指定されている設定は次のとおりです。

    type: <profile_type>
    作成するプロファイルのタイプを設定します。このサンプル Playbook では、3 つの接続プロファイルを作成します。1 つはブリッジ用、2 つはイーサネットデバイス用です。
    dhcp4: yes
    DHCP、PPP、または同様のサービスからの自動 IPv4 アドレス割り当てを有効にします。
    auto6: yes
    IPv6 自動設定を有効にします。デフォルトでは、NetworkManager はルーター広告を使用します。ルーターが managed フラグを通知すると、NetworkManager は DHCPv6 サーバーに IPv6 アドレスと接頭辞を要求します。

    Playbook で使用されるすべての変数の詳細は、コントロールノードの /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイルを参照してください。

  2. Playbook の構文を検証します。

    $ ansible-playbook --syntax-check ~/playbook.yml

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  3. Playbook を実行します。

    $ ansible-playbook ~/playbook.yml

検証

  1. 特定のブリッジのポートであるイーサネットデバイスのリンクステータスを表示します。

    # ansible managed-node-01.example.com -m command -a 'ip link show master bridge0'
    managed-node-01.example.com | CHANGED | rc=0 >>
    3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP mode DEFAULT group default qlen 1000
        link/ether 52:54:00:62:61:0e brd ff:ff:ff:ff:ff:ff
    4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP mode DEFAULT group default qlen 1000
        link/ether 52:54:00:9e:f1:ce brd ff:ff:ff:ff:ff:ff
  2. ブリッジデバイスのポートであるイーサネットデバイスのステータスを表示します。

    # ansible managed-node-01.example.com -m command -a 'bridge link show'
    managed-node-01.example.com | CHANGED | rc=0 >>
    3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state forwarding priority 32 cost 100
    4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state listening priority 32 cost 100

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイル
  • /usr/share/doc/rhel-system-roles/network/ ディレクトリー

第7章 IPsec VPN のセットアップ

仮想プライベートネットワーク (VPN) は、インターネット経由でローカルネットワークに接続する方法です。Libreswan により提供される IPsec は、VPN を作成するための望ましい方法です。Libreswan は、VPN のユーザー空間 IPsec 実装です。VPN は、インターネットなどの中間ネットワークにトンネルを設定して、使用中の LAN と別のリモート LAN との間の通信を可能にします。セキュリティー上の理由から、VPN トンネルは常に認証と暗号化を使用します。暗号化操作では、LibreswanNSS ライブラリーを使用します。

7.1. IPsec VPN 実装としての Libreswan

RHEL では、IPsec プロトコルを使用して仮想プライベートネットワーク (VPN) を設定できます。これは、Libreswan アプリケーションによりサポートされます。Libreswan は、Openswan アプリケーションの延長であり、Openswan ドキュメントの多くの例は Libreswan でも利用できます。

VPN の IPsec プロトコルは、IKE (Internet Key Exchange) プロトコルを使用して設定されます。IPsec と IKE は同義語です。IPsec VPN は、IKE VPN、IKEv2 VPN、XAUTH VPN、Cisco VPN、または IKE/IPsec VPN とも呼ばれます。Layer 2 Tunneling Protocol (L2TP) も使用する IPsec VPN のバリアントは、通常、L2TP/IPsec VPN と呼ばれ、optional のリポジトリーによって提供される xl2tpd パッケージが必要です。

Libreswan は、オープンソースのユーザー空間の IKE 実装です。IKE v1 および v2 は、ユーザーレベルのデーモンとして実装されます。IKE プロトコルも暗号化されています。IPsec プロトコルは Linux カーネルで実装され、Libreswan は、VPN トンネル設定を追加および削除するようにカーネルを設定します。

IKE プロトコルは、UDP ポート 500 および 4500 を使用します。IPsec プロトコルは、以下の 2 つのプロトコルで構成されます。

  • 暗号セキュリティーペイロード (ESP) (プロトコル番号が 50)
  • 認証ヘッダー (AH) (プロトコル番号 51)

AH プロトコルの使用は推奨されていません。AH のユーザーは、null 暗号化で ESP に移行することが推奨されます。

IPsec プロトコルは、以下の 2 つの操作モードを提供します。

  • トンネルモード (デフォルト)
  • トランスポートモード

IKE を使用せずに IPsec を使用してカーネルを設定できます。これは、手動キーリング と呼ばれます。また、ip xfrm コマンドを使用して手動キーを設定できますが、これはセキュリティー上の理由からは強く推奨されません。Libreswan は、Netlink インターフェイスを使用して Linux カーネルと通信します。カーネルはパケットの暗号化と復号化を実行します。

Libreswan は、ネットワークセキュリティーサービス (NSS) 暗号化ライブラリーを使用します。NSS は、連邦情報処理標準 (FIPS) の公開文書 140-2 での使用が認定されています。

重要

Libreswan および Linux カーネルが実装する IKE/IPsec の VPN は、RHEL で使用することが推奨される唯一の VPN 技術です。その他の VPN 技術は、そのリスクを理解せずに使用しないでください。

RHEL では、Libreswan はデフォルトで システム全体の暗号化ポリシー に従います。これにより、Libreswan は、デフォルトのプロトコルとして IKEv2 を含む現在の脅威モデルに対して安全な設定を使用するようになります。詳細は、Using system-wide crypto policies を参照してください。

IKE/IPsec はピアツーピアプロトコルであるため、Libreswan では、ソースおよび宛先、またはサーバーおよびクライアントという用語を使用しません。終了点 (ホスト) を参照する場合は、代わりに左と右という用語を使用します。これにより、ほとんどの場合、両方の終了点で同じ設定も使用できます。ただし、管理者は通常、ローカルホストに左を使用し、リモートホストに右を使用します。

leftidrightid オプションは、認証プロセス内の各ホストの識別として機能します。詳細は、man ページの ipsec.conf(5) を参照してください。

7.2. Libreswan の認証方法

Libreswan は複数の認証方法をサポートしますが、それぞれは異なるシナリオとなっています。

事前共有キー (PSK)

事前共有キー (PSK) は、最も簡単な認証メソッドです。セキュリティー上の理由から、PSK は 64 文字未満は使用しないでください。FIPS モードでは、PSK は、使用される整合性アルゴリズムに応じて、、最低強度の要件に準拠する必要があります。authby=secret 接続を使用して PSK を設定できます。

Raw RSA 鍵

Raw RSA 鍵 は、静的なホスト間またはサブネット間の IPsec 設定で一般的に使用されます。各ホストは、他のすべてのホストのパブリック RSA 鍵を使用して手動で設定され、Libreswan はホストの各ペア間で IPsec トンネルを設定します。この方法は、多数のホストでは適切にスケーリングされません。

ipsec newhostkey コマンドを使用して、ホストで Raw RSA 鍵を生成できます。ipsec showhostkey コマンドを使用して、生成された鍵をリスト表示できます。leftrsasigkey= の行は、CKA ID キーを使用する接続設定に必要です。Raw RSA 鍵に authby=rsasig 接続オプションを使用します。

X.509 証明書

X.509 証明書 は、共通の IPsec ゲートウェイに接続するホストが含まれる大規模なデプロイメントに一般的に使用されます。中央の 認証局 (CA) は、ホストまたはユーザーの RSA 証明書に署名します。この中央 CA は、個別のホストまたはユーザーの取り消しを含む、信頼のリレーを行います。

たとえば、openssl コマンドおよび NSS certutil コマンドを使用して X.509 証明書を生成できます。Libreswan は、leftcert= 設定オプションの証明書のニックネームを使用して NSS データベースからユーザー証明書を読み取るため、証明書の作成時にニックネームを指定します。

カスタム CA 証明書を使用する場合は、これを Network Security Services(NSS) データベースにインポートする必要があります。ipsec import コマンドを使用して、PKCS #12 形式の証明書を Libreswan NSS データベースにインポートできます。

警告

Libreswan は、section 3.1 of RFC 4945 で説明されているように、すべてのピア証明書のサブジェクト代替名 (SAN) としてインターネット鍵 Exchange(IKE) ピア ID を必要とします。require-id-on-certificated= オプションを変更してこのチェックを無効にすると、システムが中間者攻撃に対して脆弱になる可能性があります。

SHA-1 および SHA-2 で RSA を使用した X.509 証明書に基づく認証に authby=rsasig 接続オプションを使用します。authby=ecdsa に設定し、authby=rsa-sha2 を介した SHA-2 による RSA Probabilistic Signature Scheme (RSASSA-PSS) デジタル署名ベースの認証を設定することにより、SHA-2 を使用する ECDSA デジタル署名に対してさらに制限することができます。デフォルト値は authby=rsasig,ecdsa です。

証明書と authby= 署名メソッドが一致する必要があります。これにより、相互運用性が向上し、1 つのデジタル署名システムでの認証が維持されます。

NULL 認証

null 認証 は、認証なしでメッシュの暗号化を取得するために使用されます。これは、パッシブ攻撃は防ぎますが、アクティブ攻撃は防ぎません。ただし、IKEv2 は非対称認証メソッドを許可するため、NULL 認証はインターネットスケールのオポチュニスティック IPsec にも使用できます。このモデルでは、クライアントはサーバーを認証しますが、サーバーはクライアントを認証しません。このモデルは、TLS を使用して Web サイトのセキュリティーを保護するのと似ています。NULL 認証に authby=null を使用します。

量子コンピューターに対する保護

上記の認証方法に加えて、Post-quantum Pre-shared Key (PPK) メソッドを使用して、量子コンピューターによる潜在的な攻撃から保護することができます。個々のクライアントまたはクライアントグループは、帯域外で設定された事前共有鍵に対応する PPK ID を指定することにより、独自の PPK を使用できます。

事前共有キーで IKEv1 を使用すると、量子攻撃者から保護されます。IKEv2 の再設計は、この保護をネイティブに提供しません。Libreswan は、Post-quantum Pre-shared Key (PPK) を使用して、量子攻撃から IKEv2 接続を保護します。

任意の PPK 対応を有効にする場合は、接続定義に ppk=yes を追加します。PPK が必要な場合は ppk=insist を追加します。次に、各クライアントには、帯域外で通信する (および可能であれば量子攻撃に対して安全な) シークレット値を持つ PPK ID を付与できます。PPK はランダム性において非常に強力で、辞書の単語に基づいていません。PPK ID と PPK データは、次のように ipsec.secrets ファイルに保存されます。

@west @east : PPKS "user1" "thestringismeanttobearandomstr"

PPKS オプションは、静的な PPK を参照します。実験的な関数は、ワンタイムパッドに基づいた動的 PPK を使用します。各接続では、ワンタイムパッドの新しい部分が PPK として使用されます。これを使用すると、ファイル内の動的な PPK の部分がゼロで上書きされ、再利用を防ぐことができます。複数のタイムパッドマテリアルが残っていないと、接続は失敗します。詳細は、man ページの ipsec.secrets(5) を参照してください。

警告

動的 PPK の実装はサポート対象外のテクノロジープレビューとして提供されます。注意して使用してください。

7.3. Libreswan のインストール

Libreswan IPsec/IKE 実装を通じて VPN を設定する前に、対応するパッケージをインストールし、ipsec サービスを開始して、ファイアウォールでサービスを許可する必要があります。

前提条件

  • AppStream リポジトリーが有効になっている。

手順

  1. libreswan パッケージをインストールします。

    # yum install libreswan
  2. Libreswan を再インストールする場合は、古いデータベースファイルを削除し、新しいデータベースを作成します。

    # systemctl stop ipsec
    # rm /etc/ipsec.d/*db
    # ipsec initnss
  3. ipsec サービスを開始して有効にし、システムの起動時にサービスを自動的に開始できるようにします。

    # systemctl enable ipsec --now
  4. ファイアウォールで、ipsec サービスを追加して、IKE プロトコル、ESP プロトコル、および AH プロトコルの 500/UDP ポートおよび 4500/UDP ポートを許可するように設定します。

    # firewall-cmd --add-service="ipsec"
    # firewall-cmd --runtime-to-permanent

7.4. ホスト間の VPN の作成

raw RSA キーによる認証を使用して、 および と呼ばれる 2 つのホスト間に、ホストツーホスト IPsec VPN を作成するように Libreswan を設定できます。

前提条件

  • Libreswan がインストールされ、ipsec サービスが各ノードで開始している。

手順

  1. 各ホストで Raw RSA 鍵ペアを生成します。

    # ipsec newhostkey
  2. 前の手順で生成した鍵の ckaid を返します。 で次のコマンドを実行して、その ckaid を使用します。以下に例を示します。

    # ipsec showhostkey --left --ckaid 2d3ea57b61c9419dfd6cf43a1eb6cb306c0e857d

    上のコマンドの出力により、設定に必要な leftrsasigkey= 行が生成されます。次のホスト () でも同じ操作を行います。

    # ipsec showhostkey --right --ckaid a9e1f6ce9ecd3608c24e8f701318383f41798f03
  3. /etc/ipsec.d/ ディレクトリーで、新しい my_host-to-host.conf ファイルを作成します。上の手順の ipsec showhostkey コマンドの出力から、RSA ホストの鍵を新規ファイルに書き込みます。以下に例を示します。

    conn mytunnel
        leftid=@west
        left=192.1.2.23
        leftrsasigkey=0sAQOrlo+hOafUZDlCQmXFrje/oZm [...] W2n417C/4urYHQkCvuIQ==
        rightid=@east
        right=192.1.2.45
        rightrsasigkey=0sAQO3fwC6nSSGgt64DWiYZzuHbc4 [...] D/v8t5YTQ==
        authby=rsasig
  4. 鍵をインポートしたら、ipsec サービスを再起動します。

    # systemctl restart ipsec
  5. 接続を読み込みます。

    # ipsec auto --add mytunnel
  6. トンネルを確立します。

    # ipsec auto --up mytunnel
  7. ipsec サービスの開始時に自動的にトンネルを開始するには、以下の行を接続定義に追加します。

    auto=start

7.5. サイト間 VPN の設定

2 つのネットワークを結合してサイト間の IPsec VPN を作成する場合は、その 2 つのホスト間の IPsec トンネルを作成します。これにより、ホストは終了点として動作し、1 つまたは複数のサブネットからのトラフィックが通過できるように設定されます。したがって、ホストを、ネットワークのリモート部分にゲートウェイとして見なすことができます。

サイト間の VPN の設定は、設定ファイル内で複数のネットワークまたはサブネットを指定する必要がある点のみが、ホスト間の VPN とは異なります。

前提条件

手順

  1. ホスト間の VPN の設定が含まれるファイルを、新規ファイルにコピーします。以下に例を示します。

    # cp /etc/ipsec.d/my_host-to-host.conf /etc/ipsec.d/my_site-to-site.conf
  2. 上の手順で作成したファイルに、サブネット設定を追加します。以下に例を示します。

    conn mysubnet
         also=mytunnel
         leftsubnet=192.0.1.0/24
         rightsubnet=192.0.2.0/24
         auto=start
    
    conn mysubnet6
         also=mytunnel
         leftsubnet=2001:db8:0:1::/64
         rightsubnet=2001:db8:0:2::/64
         auto=start
    
    # the following part of the configuration file is the same for both host-to-host and site-to-site connections:
    
    conn mytunnel
        leftid=@west
        left=192.1.2.23
        leftrsasigkey=0sAQOrlo+hOafUZDlCQmXFrje/oZm [...] W2n417C/4urYHQkCvuIQ==
        rightid=@east
        right=192.1.2.45
        rightrsasigkey=0sAQO3fwC6nSSGgt64DWiYZzuHbc4 [...] D/v8t5YTQ==
        authby=rsasig

7.6. リモートアクセスの VPN の設定

ロードウォーリアーとは、モバイルクライアントと動的に割り当てられた IP アドレスを使用する移動するユーザーのことです。モバイルクライアントは、X.509 証明書を使用して認証します。

以下の例では、IKEv2 の設定を示しています。IKEv1 XAUTH プロトコルは使用していません。

サーバー上では以下の設定になります。

conn roadwarriors
    ikev2=insist
    # support (roaming) MOBIKE clients (RFC 4555)
    mobike=yes
    fragmentation=yes
    left=1.2.3.4
    # if access to the LAN is given, enable this, otherwise use 0.0.0.0/0
    # leftsubnet=10.10.0.0/16
    leftsubnet=0.0.0.0/0
    leftcert=gw.example.com
    leftid=%fromcert
    leftxauthserver=yes
    leftmodecfgserver=yes
    right=%any
    # trust our own Certificate Agency
    rightca=%same
    # pick an IP address pool to assign to remote users
    # 100.64.0.0/16 prevents RFC1918 clashes when remote users are behind NAT
    rightaddresspool=100.64.13.100-100.64.13.254
    # if you want remote clients to use some local DNS zones and servers
    modecfgdns="1.2.3.4, 5.6.7.8"
    modecfgdomains="internal.company.com, corp"
    rightxauthclient=yes
    rightmodecfgclient=yes
    authby=rsasig
    # optionally, run the client X.509 ID through pam to allow or deny client
    # pam-authorize=yes
    # load connection, do not initiate
    auto=add
    # kill vanished roadwarriors
    dpddelay=1m
    dpdtimeout=5m
    dpdaction=clear

ロードウォーリアーのデバイスであるモバイルクライアントでは、上記の設定に多少変更を加えて使用します。

conn to-vpn-server
    ikev2=insist
    # pick up our dynamic IP
    left=%defaultroute
    leftsubnet=0.0.0.0/0
    leftcert=myname.example.com
    leftid=%fromcert
    leftmodecfgclient=yes
    # right can also be a DNS hostname
    right=1.2.3.4
    # if access to the remote LAN is required, enable this, otherwise use 0.0.0.0/0
    # rightsubnet=10.10.0.0/16
    rightsubnet=0.0.0.0/0
    fragmentation=yes
    # trust our own Certificate Agency
    rightca=%same
    authby=rsasig
    # allow narrowing to the server’s suggested assigned IP and remote subnet
    narrowing=yes
    # support (roaming) MOBIKE clients (RFC 4555)
    mobike=yes
    # initiate connection
    auto=start

7.7. メッシュ VPN の設定

any-to-any VPN とも呼ばれるメッシュ VPN ネットワークは、全ノードが IPsec を使用して通信するネットワークです。この設定では、IPsec を使用できないノードの例外が許可されます。メッシュの VPN ネットワークは、以下のいずれかの方法で設定できます。

  • IPSec を必要とする。
  • IPsec を優先するが、平文通信へのフォールバックを可能にする。

ノード間の認証は、X.509 証明書または DNSSEC (DNS Security Extensions) を基にできます。

これらの接続は通常の Libreswan 設定であるため、オポチュニスティック IPsec に通常の IKEv2 認証方法を使用できます。ただし、right=%opportunisticgroup エントリーで定義されるオポチュニスティック IPsec を除きます。一般的な認証方法は、一般に共有される認証局 (CA) を使用して、X.509 証明書に基づいてホストを相互に認証させる方法です。クラウドデプロイメントでは通常、標準の手順の一部として、クラウド内の各ノードに証明書を発行します。

重要

1 つのホストが侵害されると、グループの PSK シークレットも侵害されるため、PreSharedKey (PSK) 認証は使用しないでください。

NULL 認証を使用すると、認証なしでノード間に暗号化をデプロイできます。これを使用した場合、受動的な攻撃者からのみ保護されます。

以下の手順では、X.509 証明書を使用します。この証明書は、Dogtag Certificate System などの任意の種類の CA 管理システムを使用して生成できます。Dogtag は、各ノードの証明書が PKCS #12 形式 (.p12 ファイル) で利用可能であることを前提としています。これには、秘密鍵、ノード証明書、およびその他のノードの X.509 証明書を検証するのに使用されるルート CA 証明書が含まれます。

各ノードでは、その X.509 証明書を除いて、同じ設定を使用します。これにより、ネットワーク内で既存ノードを再設定せずに、新規ノードを追加できます。PKCS #12 ファイルには分かりやすい名前が必要であるため、名前には node を使用します。これにより、すべてのノードに対して、この名前を参照する設定ファイルが同一になります。

前提条件

  • Libreswan がインストールされ、ipsec サービスが各ノードで開始している。
  • 新しい NSS データベースが初期化されている。

    1. すでに古い NSS データベースがある場合は、古いデータベースファイルを削除します。

      # systemctl stop ipsec
      # rm /etc/ipsec.d/*db
    2. 次のコマンドを使用して、新しいデータベースを初期化できます。

      # ipsec initnss

手順

  1. 各ノードで PKCS #12 ファイルをインポートします。この手順では、PKCS #12 ファイルの生成に使用するパスワードが必要になります。

    # ipsec import nodeXXX.p12
  2. IPsec required (private)、IPsec optional (private-or-clear)、および No IPsec (clear) プロファイルに、以下のような 3 つの接続定義を作成します。

    # cat /etc/ipsec.d/mesh.conf
    conn clear
    	auto=ondemand 1
    	type=passthrough
    	authby=never
    	left=%defaultroute
    	right=%group
    
    conn private
    	auto=ondemand
    	type=transport
    	authby=rsasig
    	failureshunt=drop
    	negotiationshunt=drop
    	ikev2=insist
    	left=%defaultroute
    	leftcert=nodeXXXX
    	leftid=%fromcert 2
    	rightid=%fromcert
    	right=%opportunisticgroup
    
    conn private-or-clear
    	auto=ondemand
    	type=transport
    	authby=rsasig
    	failureshunt=passthrough
    	negotiationshunt=passthrough
    	# left
    	left=%defaultroute
    	leftcert=nodeXXXX 3
    	leftid=%fromcert
    	leftrsasigkey=%cert
    	# right
    	rightrsasigkey=%cert
    	rightid=%fromcert
    	right=%opportunisticgroup
1
auto 変数にはいくつかのオプションがあります。

ondemand 接続オプションは、IPsec 接続を開始するオポチュニスティック IPsec や、常にアクティブにする必要のない明示的に設定した接続に使用できます。このオプションは、カーネル内にトラップ XFRM ポリシーを設定し、そのポリシーに一致する最初のパケットを受信したときに IPsec 接続を開始できるようにします。

オポチュニスティック IPsec を使用する場合も、明示的に設定した接続を使用する場合も、次のオプションを使用すると、IPsec 接続を効果的に設定および管理できます。

add オプション
接続設定をロードし、リモート開始に応答できるように準備します。ただし、接続はローカル側から自動的に開始されません。コマンド ipsec auto --up を使用して、IPsec 接続を手動で開始できます。
start オプション
接続設定をロードし、リモート開始に応答できるように準備します。さらに、リモートピアへの接続を即座に開始します。このオプションは、永続的かつ常にアクティブな接続に使用できます。
2
leftid 変数と rightid 変数は、IPsec トンネル接続の右チャネルと左チャネルを指定します。これらの変数を使用して、ローカル IP アドレスの値、またはローカル証明書のサブジェクト DN を取得できます (設定している場合)。
3
leftcert 変数は、使用する NSS データベースのニックネームを定義します。
  1. ネットワークの IP アドレスを対応するカテゴリーに追加します。たとえば、すべてのノードが 10.15.0.0/16 ネットワーク内に存在し、すべてのノードで IPsec 暗号化を使用する必要がある場合は、次のコマンドを実行します。

    # echo "10.15.0.0/16" >> /etc/ipsec.d/policies/private
  2. 特定のノード (10.15.34.0/24 など) を IPsec の有無にかかわらず機能させるには、そのノードを private-or-clear グループに追加します。

    # echo "10.15.34.0/24" >> /etc/ipsec.d/policies/private-or-clear
  3. ホストを、10.15.1.2 など、IPsec の機能がない clear グループに定義する場合は、次のコマンドを実行します。

    # echo "10.15.1.2/32" >> /etc/ipsec.d/policies/clear

    /etc/ipsec.d/policies ディレクトリーのファイルは、各新規ノードのテンプレートから作成することも、Puppet または Ansible を使用してプロビジョニングすることもできます。

    すべてのノードでは、例外のリストが同じか、異なるトラフィックフローが期待される点に注意してください。したがって、あるノードで IPsec が必要になり、別のノードで IPsec を使用できないために、ノード間の通信ができない場合もあります。

  4. ノードを再起動して、設定したメッシュに追加します。

    # systemctl restart ipsec

検証

  1. ping コマンドを使用して IPsec トンネルを開きます。

    # ping <nodeYYY>
  2. インポートされた証明書を含む NSS データベースを表示します。

    # certutil -L -d sql:/etc/ipsec.d
    
    Certificate Nickname    Trust Attributes
                            SSL,S/MIME,JAR/XPI
    
    west                    u,u,u
    ca                      CT,,
  3. ノード上の開いているトンネルを確認します。

    # ipsec trafficstatus
    006 #2: "private#10.15.0.0/16"[1] ...<nodeYYY>, type=ESP, add_time=1691399301, inBytes=512, outBytes=512, maxBytes=2^63B, id='C=US, ST=NC, O=Example Organization, CN=east'

関連情報

7.8. FIPS 準拠の IPsec VPN のデプロイ

Libreswan を使用して、FIPS 準拠の IPsec VPN ソリューションをデプロイできます。これを行うには、FIPS モードの Libreswan で使用できる暗号化アルゴリズムと無効になっている暗号化アルゴリズムを特定します。

前提条件

  • AppStream リポジトリーが有効になっている。

手順

  1. libreswan パッケージをインストールします。

    # yum install libreswan
  2. Libreswan を再インストールする場合は、古い NSS データベースを削除します。

    # systemctl stop ipsec
    # rm /etc/ipsec.d/*db
  3. ipsec サービスを開始して有効にし、システムの起動時にサービスを自動的に開始できるようにします。

    # systemctl enable ipsec --now
  4. ファイアウォールで、ipsec サービスを追加して、IKE プロトコル、ESP プロトコル、および AH プロトコルの 500 および 4500 UDP ポートを許可するように設定します。

    # firewall-cmd --add-service="ipsec"
    # firewall-cmd --runtime-to-permanent
  5. システムを FIPS モードに切り替えます。

    # fips-mode-setup --enable
  6. システムを再起動して、カーネルを FIPS モードに切り替えます。

    # reboot

検証

  1. Libreswan が FIPS モードで実行されていることを確認します。

    # ipsec whack --fipsstatus
    000 FIPS mode enabled
  2. または、systemd ジャーナルで ipsec ユニットのエントリーを確認します。

    $ journalctl -u ipsec
    ...
    Jan 22 11:26:50 localhost.localdomain pluto[3076]: FIPS Product: YES
    Jan 22 11:26:50 localhost.localdomain pluto[3076]: FIPS Kernel: YES
    Jan 22 11:26:50 localhost.localdomain pluto[3076]: FIPS Mode: YES
  3. FIPS モードで使用可能なアルゴリズムを表示するには、次のコマンドを実行します。

    # ipsec pluto --selftest 2>&1 | head -11
    FIPS Product: YES
    FIPS Kernel: YES
    FIPS Mode: YES
    NSS DB directory: sql:/etc/ipsec.d
    Initializing NSS
    Opening NSS database "sql:/etc/ipsec.d" read-only
    NSS initialized
    NSS crypto library initialized
    FIPS HMAC integrity support [enabled]
    FIPS mode enabled for pluto daemon
    NSS library is running in FIPS mode
    FIPS HMAC integrity verification self-test passed
  4. FIPS モードで無効化されたアルゴリズムをクエリーするには、次のコマンドを実行します。

    # ipsec pluto --selftest 2>&1 | grep disabled
    Encryption algorithm CAMELLIA_CTR disabled; not FIPS compliant
    Encryption algorithm CAMELLIA_CBC disabled; not FIPS compliant
    Encryption algorithm SERPENT_CBC disabled; not FIPS compliant
    Encryption algorithm TWOFISH_CBC disabled; not FIPS compliant
    Encryption algorithm TWOFISH_SSH disabled; not FIPS compliant
    Encryption algorithm NULL disabled; not FIPS compliant
    Encryption algorithm CHACHA20_POLY1305 disabled; not FIPS compliant
    Hash algorithm MD5 disabled; not FIPS compliant
    PRF algorithm HMAC_MD5 disabled; not FIPS compliant
    PRF algorithm AES_XCBC disabled; not FIPS compliant
    Integrity algorithm HMAC_MD5_96 disabled; not FIPS compliant
    Integrity algorithm HMAC_SHA2_256_TRUNCBUG disabled; not FIPS compliant
    Integrity algorithm AES_XCBC_96 disabled; not FIPS compliant
    DH algorithm MODP1024 disabled; not FIPS compliant
    DH algorithm MODP1536 disabled; not FIPS compliant
    DH algorithm DH31 disabled; not FIPS compliant
  5. FIPS モードで許可されているすべてのアルゴリズムと暗号のリストを表示するには、次のコマンドを実行します。

    # ipsec pluto --selftest 2>&1 | grep ESP | grep FIPS | sed "s/^.*FIPS//"
    {256,192,*128}  aes_ccm, aes_ccm_c
    {256,192,*128}  aes_ccm_b
    {256,192,*128}  aes_ccm_a
    [*192]  3des
    {256,192,*128}  aes_gcm, aes_gcm_c
    {256,192,*128}  aes_gcm_b
    {256,192,*128}  aes_gcm_a
    {256,192,*128}  aesctr
    {256,192,*128}  aes
    {256,192,*128}  aes_gmac
    sha, sha1, sha1_96, hmac_sha1
    sha512, sha2_512, sha2_512_256, hmac_sha2_512
    sha384, sha2_384, sha2_384_192, hmac_sha2_384
    sha2, sha256, sha2_256, sha2_256_128, hmac_sha2_256
    aes_cmac
    null
    null, dh0
    dh14
    dh15
    dh16
    dh17
    dh18
    ecp_256, ecp256
    ecp_384, ecp384
    ecp_521, ecp521

7.9. パスワードによる IPsec NSS データベースの保護

デフォルトでは、IPsec サービスは、初回起動時に空のパスワードを使用して Network Security Services (NSS) データベースを作成します。セキュリティーを強化するために、パスワード保護を追加できます。

注記

以前の RHEL 6.6 リリースでは、NSS 暗号化ライブラリーが FIPS 140-2 Level 2 標準で認定されているため、FIPS 140-2 要件を満たすパスワードで IPsec NSS データベースを保護する必要がありました。RHEL 8 では、この規格の NIST 認定 NSS がこの規格のレベル 1 に認定されており、このステータスではデータベースのパスワード保護は必要ありません。

前提条件

  • /etc/ipsec.d/ ディレクトリーに NSS データベースファイルが含まれます。

手順

  1. Libreswan の NSS データベースのパスワード保護を有効にします。

    # certutil -N -d sql:/etc/ipsec.d
    Enter Password or Pin for "NSS Certificate DB":
    Enter a password which will be used to encrypt your keys.
    The password should be at least 8 characters long,
    and should contain at least one non-alphabetic character.
    
    Enter new password:
  2. 前の手順で設定したパスワードを含む /etc/ipsec.d/nsspassword ファイルを作成します。次に例を示します。

    # cat /etc/ipsec.d/nsspassword
    NSS Certificate DB:_<password>_

    nsspassword ファイルは次の構文を使用します。

    <token_1>:<password1>
    <token_2>:<password2>

    デフォルトの NSS ソフトウェアトークンは NSS Certificate DB です。システムが FIPS モードで実行し場合は、トークンの名前が NSS FIPS 140-2 Certificate DB になります。

  3. 選択したシナリオに応じて、nsspassword ファイルの完了後に ipsec サービスを起動または再起動します。

    # systemctl restart ipsec

検証

  1. NSS データベースに空でないパスワードを追加した後に、ipsec サービスが実行中であることを確認します。

    # systemctl status ipsec
    ● ipsec.service - Internet Key Exchange (IKE) Protocol Daemon for IPsec
       Loaded: loaded (/usr/lib/systemd/system/ipsec.service; enabled; vendor preset: disable>
       Active: active (running)...

検証

  • Journal ログに初期化が成功したことを確認するエントリーが含まれていることを確認します。

    # journalctl -u ipsec
    ...
    pluto[6214]: Initializing NSS using read-write database "sql:/etc/ipsec.d"
    pluto[6214]: NSS Password from file "/etc/ipsec.d/nsspassword" for token "NSS Certificate DB" with length 20 passed to NSS
    pluto[6214]: NSS crypto library initialized
    ...

関連情報

7.10. TCP を使用するように IPsec VPN を設定

Libreswan は、RFC 8229 で説明されているように、IKE パケットおよび IPsec パケットの TCP カプセル化に対応します。この機能により、UDP 経由でトラフィックが転送されないように、IPsec VPN をネットワークに確立し、セキュリティーのペイロード (ESP) を強化できます。フォールバックまたはメインの VPN トランスポートプロトコルとして TCP を使用するように VPN サーバーおよびクライアントを設定できます。TCP カプセル化にはパフォーマンスコストが大きくなるため、UDP がシナリオで永続的にブロックされている場合に限り、TCP を主な VPN プロトコルとして使用してください。

前提条件

手順

  1. config setup セクションの /etc/ipsec.conf ファイルに以下のオプションを追加します。

    listen-tcp=yes
  2. UDP で最初の試行に失敗した場合に TCP カプセル化をフォールバックオプションとして使用するには、クライアントの接続定義に以下の 2 つのオプションを追加します。

    enable-tcp=fallback
    tcp-remoteport=4500

    または、UDP を永続的にブロックしている場合は、クライアントの接続設定で以下のオプションを使用します。

    enable-tcp=yes
    tcp-remoteport=4500

7.11. IPsec 接続を高速化するために、ESP ハードウェアオフロードの自動検出と使用を設定

Encapsulating Security Payload (ESP) をハードウェアにオフロードすると、Ethernet で IPsec 接続が加速します。デフォルトでは、Libreswan は、ハードウェアがこの機能に対応しているかどうかを検出するため、ESP ハードウェアのオフロードを有効にします。機能が無効になっているか、明示的に有効になっている場合は、自動検出に戻すことができます。

前提条件

  • ネットワークカードは、ESP ハードウェアオフロードに対応します。
  • ネットワークドライバーは、ESP ハードウェアのオフロードに対応します。
  • IPsec 接続が設定され、動作する。

手順

  1. ESP ハードウェアオフロードサポートの自動検出を使用する接続の /etc/ipsec.d/ ディレクトリーにある Libreswan 設定ファイルを編集します。
  2. 接続の設定で nic-offload パラメーターが設定されていないことを確認します。
  3. nic-offload を削除した場合は、ipsec を再起動します。

    # systemctl restart ipsec

検証

  1. IPsec 接続が使用するイーサネットデバイスの tx_ipsec および rx_ipsec カウンターを表示します。

    # ethtool -S enp1s0 | egrep "_ipsec"
         tx_ipsec: 10
         rx_ipsec: 10
  2. IPsec トンネルを介してトラフィックを送信します。たとえば、リモート IP アドレスに ping します。

    # ping -c 5 remote_ip_address
  3. イーサネットデバイスの tx_ipsec および rx_ipsec カウンターを再度表示します。

    # ethtool -S enp1s0 | egrep "_ipsec"
         tx_ipsec: 15
         rx_ipsec: 15

    カウンターの値が増えると、ESP ハードウェアオフロードが動作します。

7.12. IPsec 接続を加速化するためにボンディングでの ESP ハードウェアオフロードの設定

Encapsulating Security Payload (ESP) をハードウェアにオフロードすると、IPsec 接続が加速します。フェイルオーバーの理由でネットワークボンディングを使用する場合、ESP ハードウェアオフロードを設定する要件と手順は、通常のイーサーネットデバイスを使用する要件と手順とは異なります。たとえば、このシナリオでは、ボンディングでオフロードサポートを有効にし、カーネルはボンディングのポートに設定を適用します。

前提条件

  • ボンディングのすべてのネットワークカードが、ESP ハードウェアオフロードをサポートしている。
  • ネットワークドライバーが、ボンドデバイスで ESP ハードウェアオフロードに対応している。RHEL では、ixgbe ドライバーのみがこの機能をサポートします。
  • ボンディングが設定されており動作する。
  • ボンディングで active-backup モードを使用している。ボンディングドライバーは、この機能の他のモードはサポートしていません。
  • IPsec 接続が設定され、動作する。

手順

  1. ネットワークボンディングで ESP ハードウェアオフロードのサポートを有効にします。

    # nmcli connection modify bond0 ethtool.feature-esp-hw-offload on

    このコマンドにより、bond0 接続での ESP ハードウェアオフロードのサポートが有効になります。

  2. bond0 接続を再度アクティブにします。

    # nmcli connection up bond0
  3. ESP ハードウェアオフロードに使用すべき接続の /etc/ipsec.d/ ディレクトリーにある Libreswan 設定ファイルを編集し、nic-offload=yes ステートメントを接続エントリーに追加します。

    conn example
        ...
        nic-offload=yes
  4. ipsec サービスを再起動します。

    # systemctl restart ipsec

検証

  1. ボンディングのアクティブなポートを表示します。

    # grep "Currently Active Slave" /proc/net/bonding/bond0
    Currently Active Slave: enp1s0
  2. アクティブなポートの tx_ipsec カウンターおよび rx_ipsec カウンターを表示します。

    # ethtool -S enp1s0 | egrep "_ipsec"
         tx_ipsec: 10
         rx_ipsec: 10
  3. IPsec トンネルを介してトラフィックを送信します。たとえば、リモート IP アドレスに ping します。

    # ping -c 5 remote_ip_address
  4. アクティブなポートの tx_ipsec カウンターおよび rx_ipsec カウンターを再度表示します。

    # ethtool -S enp1s0 | egrep "_ipsec"
         tx_ipsec: 15
         rx_ipsec: 15

    カウンターの値が増えると、ESP ハードウェアオフロードが動作します。

関連情報

7.13. RHEL システムロールを使用した IPsec による VPN 接続の設定

vpn システムロールを使用すると、Red Hat Ansible Automation Platform を使用して RHEL システムで VPN 接続を設定できます。これを使用して、ホスト間、ネットワーク間、VPN リモートアクセスサーバー、およびメッシュ設定をセットアップできます。

ホスト間接続の場合、ロールは、必要に応じてキーを生成するなど、デフォルトのパラメーターを使用して、vpn_connections のリスト内のホストの各ペア間に VPN トンネルを設定します。または、リストされているすべてのホスト間にオポチュニスティックメッシュ設定を作成するように設定することもできます。このロールは、hosts の下にあるホストの名前が Ansible インベントリーで使用されているホストの名前と同じであり、それらの名前を使用してトンネルを設定できることを前提としています。

注記

vpn RHEL システムロールは、現在 VPN プロバイダーとして、IPsec 実装である Libreswan のみをサポートしています。

7.13.1. vpn RHEL システムロールを使用して IPsec によるホスト間 VPN を作成する

vpn システムロールを使用して、コントロールノードで Ansible Playbook を実行することにより、ホスト間接続を設定できます。これにより、インベントリーファイルにリストされているすべての管理対象ノードが設定されます。

前提条件

手順

  1. 次の内容を含む Playbook ファイル (例: ~/playbook.yml) を作成します。

    - name: Host to host VPN
      hosts: managed-node-01.example.com, managed-node-02.example.com
      roles:
        - rhel-system-roles.vpn
      vars:
        vpn_connections:
          - hosts:
              managed-node-01.example.com:
              managed-node-02.example.com:
        vpn_manage_firewall: true
        vpn_manage_selinux: true

    この Playbook は、システムロールによって自動生成されたキーを使用した事前共有キー認証を使用して、接続 managed-node-01.example.com-to-managed-node-02.example.com を設定します。vpn_manage_firewallvpn_manage_selinux は両方とも true に設定されているため、vpn ロールは firewall ロールと selinux ロールを使用して、vpn ロールが使用するポートを管理します。

    管理対象ホストから、インベントリーファイルにリストされていない外部ホストへの接続を設定するには、ホストの vpn_connections リストに次のセクションを追加します。

        vpn_connections:
          - hosts:
              managed-node-01.example.com:
              <external_node>:
                hostname: <IP_address_or_hostname>

    これにより、追加の接続 managed-node-01.example.com-to-<external_node> が 1 つ設定されます。

    注記

    接続は管理対象ノードでのみ設定され、外部ノードでは設定されません。

  2. 必要に応じて、vpn_connections 内の追加セクション (コントロールプレーンやデータプレーンなど) を使用して、管理対象ノードに複数の VPN 接続を指定できます。

    - name: Multiple VPN
      hosts: managed-node-01.example.com, managed-node-02.example.com
      roles:
        - rhel-system-roles.vpn
      vars:
        vpn_connections:
          - name: control_plane_vpn
            hosts:
              managed-node-01.example.com:
                hostname: 192.0.2.0 # IP for the control plane
              managed-node-02.example.com:
                hostname: 192.0.2.1
          - name: data_plane_vpn
            hosts:
              managed-node-01.example.com:
                hostname: 10.0.0.1 # IP for the data plane
              managed-node-02.example.com:
                hostname: 10.0.0.2
  3. Playbook の構文を検証します。

    $ ansible-playbook --syntax-check ~/playbook.yml

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  4. Playbook を実行します。

    $ ansible-playbook ~/playbook.yml

検証

  1. マネージドノードで、接続が正常にロードされていることを確認します。

    # ipsec status | grep <connection_name>

    <connection_name> は、このノードからの接続の名前に置き換えます (例: managed_node1-to-managed_node2)。

    注記

    デフォルトでは、ロールは、各システムの観点から作成する接続ごとにわかりやすい名前を生成します。たとえば、managed_node1managed_node2 との間の接続を作成するときに、managed_node1 上のこの接続のわかりやすい名前は managed_node1-to-managed_node2 ですが、managed_node2 では、この接続の名前は managed_node2-to-managed_node1 となります。

  2. マネージドノードで、接続が正常に開始されたことを確認します。

    # ipsec trafficstatus | grep <connection_name>
  3. オプション: 接続が正常にロードされない場合は、次のコマンドを入力して手動で接続を追加します。これにより、接続の確立に失敗した理由を示す、より具体的な情報が提供されます。

    # ipsec auto --add <connection_name>
    注記

    接続のロードおよび開始のプロセスで発生する可能性のあるエラーは、/var/log/pluto.log ファイルに報告されます。これらのログは解析が難しいため、代わりに接続を手動で追加して、標準出力からログメッセージを取得してください。

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.vpn/README.md ファイル
  • /usr/share/doc/rhel-system-roles/vpn/ ディレクトリー

7.13.2. vpn RHEL システムロールを使用して IPsec によるオポチュニスティックメッシュ VPN 接続を作成する

vpn システムロールを使用して、コントロールノードで Ansible Playbook を実行することにより、認証に証明書を使用するオポチュニスティックメッシュ VPN 接続を設定できます。これにより、インベントリーファイルにリストされているすべての管理対象ノードが設定されます。

前提条件

  • コントロールノードと管理対象ノードの準備が完了している。
  • 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
  • 管理対象ノードへの接続に使用するアカウントに、そのノードに対する sudo 権限がある。
  • /etc/ipsec.d/ ディレクトリーの IPsec ネットワークセキュリティーサービス (NSS) 暗号ライブラリーに、必要な証明書が含まれている。

手順

  1. 次の内容を含む Playbook ファイル (例: ~/playbook.yml) を作成します。

    - name: Mesh VPN
      hosts: managed-node-01.example.com, managed-node-02.example.com, managed-node-03.example.com
      roles:
        - rhel-system-roles.vpn
      vars:
        vpn_connections:
          - opportunistic: true
            auth_method: cert
            policies:
              - policy: private
                cidr: default
              - policy: private-or-clear
                cidr: 198.51.100.0/24
              - policy: private
                cidr: 192.0.2.0/24
              - policy: clear
                cidr: 192.0.2.7/32
        vpn_manage_firewall: true
        vpn_manage_selinux: true

    証明書による認証は、Playbook で auth_method: cert パラメーターを定義することによって設定されます。デフォルトでは、ノード名が証明書のニックネームとして使用されます。この例では、managed-node-01.example.com です。インベントリーで cert_name 属性を使用して、さまざまな証明書名を定義できます。

    この例の手順では、Ansible Playbook の実行元のシステムであるコントロールノードが、両方の管理対象ノードと同じ Classless Inter-Domain Routing (CIDR) 番号 (192.0.2.0/24) を共有し、IP アドレス 192.0.2.7 を持ちます。したがって、コントロールノードは、CIDR 192.0.2.0/24 用に自動的に作成されるプライベートポリシーに該当します。

    再生中の SSH 接続の損失を防ぐために、コントロールノードの明確なポリシーがポリシーのリストに含まれています。ポリシーリストには、CIDR がデフォルトと等しい項目もあることに注意してください。これは、この Playbook がデフォルトポリシーのルールを上書きして、private-or-clear ではなく private にするためです。

    vpn_manage_firewallvpn_manage_selinux は両方とも true に設定されているため、vpn ロールは firewall ロールと selinux ロールを使用して、vpn ロールが使用するポートを管理します。

  2. Playbook の構文を検証します。

    $ ansible-playbook --syntax-check ~/playbook.yml

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  3. Playbook を実行します。

    $ ansible-playbook ~/playbook.yml

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.vpn/README.md ファイル
  • /usr/share/doc/rhel-system-roles/vpn/ ディレクトリー

7.14. システム全体の暗号化ポリシーをオプトアウトする IPsec 接続の設定

接続向けのシステム全体の暗号化ポリシーのオーバーライド

RHEL のシステム全体の暗号化ポリシーでは、%default と呼ばれる特別な接続が作成されます。この接続には、ikev2 オプション、esp オプション、および ike オプションのデフォルト値が含まれます。ただし、接続設定ファイルに上記のオプションを指定すると、デフォルト値を上書きできます。

たとえば、次の設定では、AES および SHA-1 または SHA-2 で IKEv1 を使用し、AES-GCM または AES-CBC で IPsec (ESP) を使用する接続が可能です。

conn MyExample
  ...
  ikev2=never
  ike=aes-sha2,aes-sha1;modp2048
  esp=aes_gcm,aes-sha2,aes-sha1
  ...

AES-GCM は IPsec (ESP) および IKEv2 で利用できますが、IKEv1 では利用できません。

全接続向けのシステム全体の暗号化ポリシーの無効化

すべての IPsec 接続のシステム全体の暗号化ポリシーを無効にするには、/etc/ipsec.conf ファイルで次の行をコメントアウトします。

include /etc/crypto-policies/back-ends/libreswan.config

次に、接続設定ファイルに ikev2=never オプションを追加してください。

7.15. IPsec VPN 設定のトラブルシューティング

IPsec VPN 設定に関連する問題は主に、一般的な理由が原因で発生する可能性が高くなっています。このような問題が発生した場合は、問題の原因が以下のシナリオのいずれかに該当するかを確認して、対応するソリューションを適用します。

基本的な接続のトラブルシューティング

VPN 接続関連の問題の多くは、管理者が不適当な設定オプションを指定してエンドポイントを設定した新しいデプロイメントで発生します。また、互換性のない値が新たに実装された場合に、機能していた設定が突然動作が停止する可能性があります。管理者が設定を変更した場合など、このような結果になることがあります。また、管理者が暗号化アルゴリズムなど、特定のオプションに異なるデフォルト値を使用して、ファームウェアまたはパッケージの更新をインストールした場合などです。

IPsec VPN 接続が確立されていることを確認するには、次のコマンドを実行します。

# ipsec trafficstatus
006 #8: "vpn.example.com"[1] 192.0.2.1, type=ESP, add_time=1595296930, inBytes=5999, outBytes=3231, id='@vpn.example.com', lease=100.64.13.5/32

出力が空の場合や、エントリーで接続名が表示されない場合など、トンネルが破損します。

接続に問題があることを確認するには、以下を実行します。

  1. vpn.example.com 接続をもう一度読み込みます。

    # ipsec auto --add vpn.example.com
    002 added connection description "vpn.example.com"
  2. 次に、VPN 接続を開始します。

    # ipsec auto --up vpn.example.com

ファイアウォール関連の問題

最も一般的な問題は、IPSec エンドポイントの 1 つ、またはエンドポイント間にあるルーターにあるファイアウォールで Internet Key Exchange (IKE) パケットがドロップされるという点が挙げられます。

  • IKEv2 の場合には、以下の例のような出力は、ファイアウォールに問題があることを示しています。

    # ipsec auto --up vpn.example.com
    181 "vpn.example.com"[1] 192.0.2.2 #15: initiating IKEv2 IKE SA
    181 "vpn.example.com"[1] 192.0.2.2 #15: STATE_PARENT_I1: sent v2I1, expected v2R1
    010 "vpn.example.com"[1] 192.0.2.2 #15: STATE_PARENT_I1: retransmission; will wait 0.5 seconds for response
    010 "vpn.example.com"[1] 192.0.2.2 #15: STATE_PARENT_I1: retransmission; will wait 1 seconds for response
    010 "vpn.example.com"[1] 192.0.2.2 #15: STATE_PARENT_I1: retransmission; will wait 2 seconds for
    ...
  • IKEv1 の場合は、最初のコマンドの出力は以下のようになります。

    # ipsec auto --up vpn.example.com
    002 "vpn.example.com" #9: initiating Main Mode
    102 "vpn.example.com" #9: STATE_MAIN_I1: sent MI1, expecting MR1
    010 "vpn.example.com" #9: STATE_MAIN_I1: retransmission; will wait 0.5 seconds for response
    010 "vpn.example.com" #9: STATE_MAIN_I1: retransmission; will wait 1 seconds for response
    010 "vpn.example.com" #9: STATE_MAIN_I1: retransmission; will wait 2 seconds for response
    ...

IPsec の設定に使用される IKE プロトコルは暗号化されているため、tcpdump ツールを使用して、トラブルシューティングできるサブセットは一部のみです。ファイアウォールが IKE パケットまたは IPsec パケットをドロップしている場合は、tcpdump ユーティリティーを使用して原因を見つけることができます。ただし、tcpdump は IPsec VPN 接続に関する他の問題を診断できません。

  • eth0 インターフェイスで VPN および暗号化データすべてのネゴシエーションを取得するには、次のコマンドを実行します。

    # tcpdump -i eth0 -n -n esp or udp port 500 or udp port 4500 or tcp port 4500

アルゴリズム、プロトコル、およびポリシーが一致しない場合

VPN 接続では、エンドポイントが IKE アルゴリズム、IPsec アルゴリズム、および IP アドレス範囲に一致する必要があります。不一致が発生した場合には接続は失敗します。以下の方法のいずれかを使用して不一致を特定した場合は、アルゴリズム、プロトコル、またはポリシーを調整して修正します。

  • リモートエンドポイントが IKE/IPsec を実行していない場合は、そのパケットを示す ICMP パケットが表示されます。以下に例を示します。

    # ipsec auto --up vpn.example.com
    ...
    000 "vpn.example.com"[1] 192.0.2.2 #16: ERROR: asynchronous network error report on wlp2s0 (192.0.2.2:500), complainant 198.51.100.1: Connection refused [errno 111, origin ICMP type 3 code 3 (not authenticated)]
    ...
  • IKE アルゴリズムが一致しない例:

    # ipsec auto --up vpn.example.com
    ...
    003 "vpn.example.com"[1] 193.110.157.148 #3: dropping unexpected IKE_SA_INIT message containing NO_PROPOSAL_CHOSEN notification; message payloads: N; missing payloads: SA,KE,Ni
  • IPsec アルゴリズムが一致しない例:

    # ipsec auto --up vpn.example.com
    ...
    182 "vpn.example.com"[1] 193.110.157.148 #5: STATE_PARENT_I2: sent v2I2, expected v2R2 {auth=IKEv2 cipher=AES_GCM_16_256 integ=n/a prf=HMAC_SHA2_256 group=MODP2048}
    002 "vpn.example.com"[1] 193.110.157.148 #6: IKE_AUTH response contained the error notification NO_PROPOSAL_CHOSEN

    また、IKE バージョンが一致しないと、リモートエンドポイントが応答なしの状態でリクエストをドロップする可能性がありました。これは、すべての IKE パケットをドロップするファイアウォールと同じです。

  • IKEv2 (Traffic Selectors - TS) の IP アドレス範囲が一致しない例:

    # ipsec auto --up vpn.example.com
    ...
    1v2 "vpn.example.com" #1: STATE_PARENT_I2: sent v2I2, expected v2R2 {auth=IKEv2 cipher=AES_GCM_16_256 integ=n/a prf=HMAC_SHA2_512 group=MODP2048}
    002 "vpn.example.com" #2: IKE_AUTH response contained the error notification TS_UNACCEPTABLE
  • IKEv1 の IP アドレス範囲で一致しない例:

    # ipsec auto --up vpn.example.com
    ...
    031 "vpn.example.com" #2: STATE_QUICK_I1: 60 second timeout exceeded after 0 retransmits.  No acceptable response to our first Quick Mode message: perhaps peer likes no proposal
  • IKEv1 で PreSharedKeys (PSK) を使用する場合には、どちらでも同じ PSK に配置されなければ、IKE メッセージ全体の読み込みができなくなります。

    # ipsec auto --up vpn.example.com
    ...
    003 "vpn.example.com" #1: received Hash Payload does not match computed value
    223 "vpn.example.com" #1: sending notification INVALID_HASH_INFORMATION to 192.0.2.23:500
  • IKEv2 では、 mismatched-PSK エラーが原因で AUTHENTICATION_FAILED メッセージが表示されます。

    # ipsec auto --up vpn.example.com
    ...
    002 "vpn.example.com" #1: IKE SA authentication request rejected by peer: AUTHENTICATION_FAILED

最大伝送単位 (MTU)

ファイアウォールが IKE または IPSec パケットをブロックする以外で、ネットワークの問題の原因として、暗号化パケットのパケットサイズの増加が最も一般的です。ネットワークハードウェアは、最大伝送単位 (MTU) を超えるパケットを 1500 バイトなどのサイズに断片化します。多くの場合、断片化されたパケットは失われ、パケットの再アセンブルに失敗します。これにより、小さいサイズのパケットを使用する ping テスト時には機能し、他のトラフィックでは失敗するなど、断続的な問題が発生します。このような場合に、SSH セッションを確立できますが、リモートホストに 'ls -al /usr' コマンドに入力した場合など、すぐにターミナルがフリーズします。

この問題を回避するには、トンネル設定ファイルに mtu=1400 のオプションを追加して、MTU サイズを縮小します。

または、TCP 接続の場合は、MSS 値を変更する iptables ルールを有効にします。

# iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

各シナリオで上記のコマンドを使用して問題が解決されない場合は、set-mss パラメーターで直接サイズを指定します。

# iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1380

ネットワークアドレス変換 (NAT)

IPsec ホストが NAT ルーターとしても機能すると、誤ってパケットが再マッピングされる可能性があります。以下の設定例はこの問題について示しています。

conn myvpn
    left=172.16.0.1
    leftsubnet=10.0.2.0/24
    right=172.16.0.2
    rightsubnet=192.168.0.0/16
…

アドレスが 172.16.0.1 のシステムには NAT ルールが 1 つあります。

iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

アドレスが 10.0.2.33 のシステムがパケットを 192.168.0.1 に送信する場合に、ルーターは IPsec 暗号化を適用する前にソースを 10.0.2.33 から 172.16.0.1 に変換します。

次に、ソースアドレスが 10.0.2.33 のパケットは conn myvpn 設定と一致しなくなるので、IPsec ではこのパケットが暗号化されません。

この問題を解決するには、ルーターのターゲット IPsec サブネット範囲の NAT を除外するルールを挿入します。以下に例を示します。

iptables -t nat -I POSTROUTING -s 10.0.2.0/24 -d 192.168.0.0/16 -j RETURN

カーネル IPsec サブシステムのバグ

たとえば、バグが原因で IKE ユーザー空間と IPsec カーネルの同期が解除される場合など、カーネル IPsec サブシステムに問題が発生する可能性があります。このような問題がないかを確認するには、以下を実行します。

$ cat /proc/net/xfrm_stat
XfrmInError                 0
XfrmInBufferError           0
...

上記のコマンドの出力でゼロ以外の値が表示されると、問題があることを示しています。この問題が発生した場合は、新しい サポートケース を作成し、1 つ前のコマンドの出力と対応する IKE ログを添付してください。

Libreswan のログ

デフォルトでは、Libreswan は syslog プロトコルを使用してログに記録します。journalctl コマンドを使用して、IPsec に関連するログエントリーを検索できます。ログへの対応するエントリーは pluto IKE デーモンにより送信されるため、以下のように、キーワード pluto を検索します。

$ journalctl -b | grep pluto

ipsec サービスのライブログを表示するには、次のコマンドを実行します。

$ journalctl -f -u ipsec

ロギングのデフォルトレベルで設定問題が解決しない場合は、/etc/ipsec.conf ファイルの config setup セクションに plutodebug=all オプションを追加してデバッグログを有効にします。

デバッグロギングは多くのエントリーを生成し、journald サービスまたは syslogd サービスレートのいずれかが syslog メッセージを制限する可能性があることに注意してください。完全なログを取得するには、ロギングをファイルにリダイレクトします。/etc/ipsec.conf を編集し、config setup セクションに logfile=/var/log/pluto.log を追加します。

7.16. control-center による VPN 接続の確立

グラフィカルインターフェイスで Red Hat Enterprise Linux を使用する場合は、この VPN 接続を GNOME control-center で設定できます。

前提条件

  • NetworkManager-libreswan-gnome パッケージがインストールされている。

手順

  1. Super キーを押して Settings と入力し、Enter を押して control-center アプリケーションを開きます。
  2. 左側の Network エントリーを選択します。
  3. + アイコンをクリックします。
  4. VPN を選択します。
  5. Identity メニューエントリーを選択して、基本的な設定オプションを表示します。

    一般

    Gateway - リモート VPN ゲートウェイの名前または IP アドレスです。

    認証

    Type

    • IKEv2 (証明書)- クライアントは、証明書により認証されます。これはより安全です (デフォルト)。
    • IKEv1(XAUTH): クライアントは、ユーザー名とパスワード、または事前共有キー (PSK) で認証されます。

      Advanced セクションでは、以下の設定が可能です。

      図7.1 VPN 接続の詳細なオプション

      Networking vpn の詳細なオプション
      警告

      gnome-control-center アプリケーションを使用して IPsec ベースの VPN 接続を設定すると、Advanced ダイアログには設定が表示されますが、変更することはできません。したがって、詳細な IPsec オプションを変更できません。nm-connection-editor ツールまたは nmcli ツールを使用して、詳細なプロパティーの設定を実行します。

      識別

    • Domain - 必要な場合は、ドメイン名を入力します。

      セキュリティー

    • Phase1 Algorithms - Libreswan パラメーター ike に対応します。暗号化チャンネルの認証および設定に使用するアルゴリズムを入力します。
    • Phase2 Algorithms - Libreswan パラメーター esp に対応します。IPsec ネゴシエーションに使用するアルゴリズムを入力します。

      Disable PFS フィールドで PFS (Perfect Forward Secrecy) を無効にし、PFS に対応していない古いサーバーとの互換性があることを確認します。

    • Phase1 Lifetime - Libreswan パラメーター ikelifetime に対応します。このパラメーターは、トラフィックの暗号化に使用される鍵がどのぐらい有効であるかどうかを示します。
    • Phase2 Lifetime - Libreswan パラメーター salifetime に対応します。このパラメーターは、接続の特定インスタンスが最後に終了するまでの時間を指定します。

      セキュリティー上の理由から、暗号化キーは定期的に変更する必要があります。

    • Remote network - Libreswan パラメーター rightsubnet に対応します。このパラメーターは、VPN から到達できる宛先のプライベートリモートネットワークです。

      絞り込むことのできる narrowing フィールドを確認します。これは IKEv2 ネゴシエーションの場合にのみ有効であることに注意してください。

    • Enable fragmentation - Libreswan パラメーターの 断片化 に対応します。IKE 断片化を許可するかどうかを指定します。有効な値は、yes (デフォルト) または no です。
    • Enable Mobike - Libreswan パラメーター mobike に対応します。最初から接続を再起動しなくても、接続がエンドポイントを移行することを Mobility and Multihoming Protocol (MOBIKE, RFC 4555) が許可するかどうかを設定します。これは、有線、無線、またはモバイルデータの接続の切り替えを行うモバイルデバイスで使用されます。値は、no (デフォルト) または yes です。
  6. IPv4 メニューエントリーを選択します。

    IPv4 Method

    • Automatic (DHCP) - 接続しているネットワークが動的 IP アドレスの割り当てに DHCP サーバーを使用する場合は、このオプションを選択します。
    • Link-Local Only - 接続しているネットワークに DHCP サーバーがなく、IP アドレスを手動で割り当てない場合は、このオプションを選択します。接頭辞 169.254/16 付きのランダムなアドレスが、RFC 3927 に従って割り当てられます。
    • Manual - IP アドレスを手動で割り当てる場合は、このオプションを選択します。
    • Disable - この接続では IPv4 は無効です。

      DNS

      DNS セクションでは、AutomaticON になっているときに、これを OFF に切り替えて、使用する DNS サーバーの IP アドレスを入力します。IP アドレスはコンマで区切ります。

      Routes

      Routes セクションでは、AutomaticON になっている場合は、DHCP からのルートが使用されますが、他の静的ルートを追加することもできることに注意してください。OFF の場合は、静的ルートだけが使用されます。

    • Address - リモートネットワークまたはホストの IP アドレスを入力します。
    • Netmask - 上に入力した IP アドレスのネットマスクまたは接頭辞長。
    • Gateway - 上に入力したリモートネットワーク、またはホストにつながるゲートウェイの IP アドレス。
    • Metric - このルートに付与する優先値であるネットワークコスト。数値が低い方が優先されます。

      Use this connection only for resources on its network (この接続はネットワーク上のリソースのためだけに使用)

      このチェックボックスを選択すると、この接続はデフォルトルートになりません。このオプションを選択すると、この接続で自動的に学習したルートを使用することが明確なトラフィックか、手動で入力したトラフィックのみがこの接続を経由します。

  7. VPN 接続の IPv6 設定を設定するには、IPv6 メニューエントリーを選択します。

    IPv6 Method

    • Automatic - IPv6 ステートレスアドレス自動設定 (SLAAC) を使用して、ハードウェアのアドレスとルーター通知 (RA) に基づくステートレスの自動設定を作成するには、このオプションを選択します。
    • Automatic, DHCP only - RA を使用せず、直接 DHCPv6 に情報を要求してステートフルな設定を作成する場合は、このオプションを選択します。
    • Link-Local Only - 接続しているネットワークに DHCP サーバーがなく、IP アドレスを手動で割り当てない場合は、このオプションを選択します。接頭辞 FE80::0 付きのランダムなアドレスが、RFC 4862 に従って割り当てられます。
    • Manual - IP アドレスを手動で割り当てる場合は、このオプションを選択します。
    • Disable - この接続では IPv6 は無効です。

      DNSRoutesUse this connection only for resources on its network が、一般的な IPv4 設定となることに注意してください。

  8. VPN 接続の編集が終了したら、追加 ボタンをクリックして設定をカスタマイズするか、適用 ボタンをクリックして、既存の接続に保存します。
  9. プロファイルを ON に切り替え、VPN 接続をアクティブにします。

関連情報

  • nm-settings-libreswan(5)

7.17. nm-connection-editor による VPN 接続の設定

Red Hat Enterprise Linux をグラフィカルインターフェイスで使用する場合は、nm-connection-editor アプリケーションを使用して VPN 接続を設定できます。

前提条件

  • NetworkManager-libreswan-gnome パッケージがインストールされている。
  • インターネット鍵交換バージョン 2 (IKEv2) 接続を設定する場合は、以下のようになります。

    • 証明書が、IPsec ネットワークセキュリティーサービス (NSS) データベースにインポートされている。
    • NSS データベースの証明書のニックネームが知られている。

手順

  1. ターミナルを開き、次のコマンドを入力します。

    $ nm-connection-editor
  2. + ボタンをクリックして、新しい接続を追加します。
  3. IPsec ベースの VPN 接続タイプを選択し、作成 をクリックします。
  4. VPN タブで、以下を行います。

    1. Gateway フィールドに VPN ゲートウェイのホスト名または IP アドレスを入力し、認証タイプを選択します。認証タイプに応じて、異なる追加情報を入力する必要があります。

      • IKEv2 (Certifiate) は、証明書を使用してクライアントを認証します。これは、より安全です。この設定には、IPsec NSS データベースの証明書のニックネームが必要です。
      • IKEv1 (XAUTH) は、ユーザー名とパスワード (事前共有鍵) を使用してユーザーを認証します。この設定は、以下の値を入力する必要があります。

        • ユーザー名
        • Password
        • グループ名
        • シークレット
    2. リモートサーバーが IKE 交換のローカル識別子を指定する場合は、Remote ID フィールドに正確な文字列を入力します。リモートサーバーで Libreswan を実行すると、この値はサーバーの leftid パラメーターに設定されます。

      nm connection editor vpn tab

    3. 必要に応じて、詳細 ボタンをクリックして、追加設定を設定します。以下の設定を指定できます。

      • 識別

        • ドメイン - 必要な場合は、ドメイン名を入力します。
      • セキュリティー

        • Phase1 アルゴリズム は、Libreswan パラメーター ike に対応します。暗号化チャンネルの認証および設定に使用するアルゴリズムを入力します。
        • Phase2 アルゴリズム は、Libreswan パラメーター esp に対応します。IPsec ネゴシエーションに使用するアルゴリズムを入力します。

          Disable PFS フィールドで PFS (Perfect Forward Secrecy) を無効にし、PFS に対応していない古いサーバーとの互換性があることを確認します。

        • Phase1 ライフタイム は、Libreswan パラメーター ikelifetime に対応します。このパラメーターは、トラフィックの暗号化に使用される鍵が有効である期間を定義します。
        • Phase2 ライフタイム は、Libreswan パラメーター salifetime に対応します。このパラメーターは、セキュリティー関連が有効である期間を定義します。
      • 接続性

        • リモートネットワーク は、Libreswan パラメーター rightsubnet に対応し、VPN から到達できる宛先のプライベートリモートネットワークです。

          絞り込むことのできる narrowing フィールドを確認します。これは IKEv2 ネゴシエーションの場合にのみ有効であることに注意してください。

        • フラグメンテーションの有効化 は、Libreswan パラメーターの 断片化 に対応します。IKE 断片化を許可するかどうかを指定します。有効な値は、yes (デフォルト) または no です。
        • Mobike の有効化 は、Libreswan パラメーター mobike に対応します。パラメーターは、最初から接続を再起動しなくても、接続がエンドポイントを移行するようにするため、MOBIKE (Mobility and Multihoming Protocol) (RFC 4555) を許可するかどうかを定義します。これは、有線、無線、またはモバイルデータの接続の切り替えを行うモバイルデバイスで使用されます。値は、no (デフォルト) または yes です。
  5. IPv4 設定 タブで、IP 割り当て方法を選択し、必要に応じて、追加の静的アドレス、DNS サーバー、検索ドメイン、ルートを設定します。

    IPsec IPv4 tab

  6. 接続を読み込みます。
  7. nm-connection-editor を閉じます。
注記

+ ボタンをクリックして新しい接続を追加する場合は、NetworkManager により、その接続用の新しい設定が作成され、既存の接続の編集に使用するのと同じダイアログが表示されます。このダイアログの違いは、既存の接続プロファイルに Details メニューエントリーがあることです。

関連情報

  • システム上の nm-settings-libreswan(5) man ページ

第8章 IP トンネルの設定

VPN と同様に、IP トンネルは、インターネットなどの 3 番目のネットワークを介して 2 つのネットワークを直接接続します。ただし、すべてのトンネルプロトコルが暗号化に対応しているわけではありません。

トンネルを確立する両方のネットワークのルーターには、最低でも 2 つのインターフェイスが必要です。

  • ローカルネットワークに接続されているインターフェイス 1 つ
  • トンネルが確立されたネットワークに接続されたインターフェイス 1 つ。

トンネルを確立するには、リモートサブネットから IP アドレスを使用して、両方のルーターに仮想インターフェイスを作成します。

NetworkManager は、以下の IP トンネルに対応します。

  • GRE (Generic Routing Encapsulation)
  • IP6GRE (Generic Routing Encapsulation over IPv6)
  • GRETAP (Generic Routing Encapsulation Terminal Access Point)
  • IP6GRETAP (Generic Routing Encapsulation Terminal Access Point over IPv6)
  • IPIP (IPv4 over IPv4)
  • IPIP6 (IPv4 over IPv6)
  • IP6IP6 (IPv6 over IPv6)
  • SIT (Simple Internet Transition)

このトンネルは、タイプに応じて、OSI (Open Systems Interconnection) モデルのレイヤー 2 または 3 で動作します。

8.1. IPv4 トラフィックを IPv4 パケットにカプセル化するための IPIP トンネルの設定

IP over IP (IPIP) トンネルは、RFC 2003 で説明されているように、OSI レイヤー 3 で動作し、IPv4 トラフィックを IPv4 パケットにカプセル化します。

重要

IPIP トンネルを介して送信されるデータは暗号化されません。セキュリティー上の理由から、すでに暗号化されたデータにはトンネルを使用してください (HTTPS などの他のプロトコル)。

IPIP トンネルはユニキャストパケットのみをサポートすることに注意してください。マルチキャストをサポートする IPv4 トンネルが必要な場合は、レイヤー 3 トラフィックを IPv4 パケットにカプセル化するための GRE トンネルの設定 を参照してください。

たとえば、以下の図に示すように、2 つの RHEL ルーター間で IPIP トンネルを作成し、インターネット経由で 2 つの内部サブネットに接続できます。

IPIP トンネル

前提条件

  • 各 RHEL ルーターには、ローカルサブネットに接続されているネットワークインターフェイスがあります。
  • 各 RHEL ルーターには、インターネットに接続しているネットワークインターフェイスがあります。
  • トンネル経由で送信するトラフィックは IPv4 ユニキャストです。

手順

  1. ネットワーク A の RHEL ルーターで、次のコマンドを実行します。

    1. tun0 という名前の IPIP トンネルインターフェイスを作成します。

      # nmcli connection add type ip-tunnel ip-tunnel.mode ipip con-name tun0 ifname tun0 remote 198.51.100.5 local 203.0.113.10

      remote パラメーターおよび local パラメーターは、リモートルーターおよびローカルルーターのパブリック IP アドレスを設定します。

    2. IPv4 アドレスを tun0 デバイスに設定します。

      # nmcli connection modify tun0 ipv4.addresses '10.0.1.1/30'

      トンネルには、2 つの使用可能な IP アドレスを持つ /30 サブネットで十分であることに注意してください。

    3. IPv 4 設定を使用するように手動で tun0 接続を設定します。

      # nmcli connection modify tun0 ipv4.method manual
    4. トラフィックを 172.16.0.0/24 ネットワークにルーティングする静的ルートをルーター B のトンネル IP に追加します。

      # nmcli connection modify tun0 +ipv4.routes "172.16.0.0/24 10.0.1.2"
    5. tun0 接続を有効にします。

      # nmcli connection up tun0
    6. パケット転送を有効にします。

      # echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf
      # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf
  2. ネットワーク B の RHEL ルーターで、次のコマンドを実行します。

    1. tun0 という名前の IPIP トンネルインターフェイスを作成します。

      # nmcli connection add type ip-tunnel ip-tunnel.mode ipip con-name tun0 ifname tun0 remote 203.0.113.10 local 198.51.100.5

      remote パラメーターおよび local パラメーターは、リモートルーターおよびローカルルーターのパブリック IP アドレスを設定します。

    2. IPv4 アドレスを tun0 デバイスに設定します。

      # nmcli connection modify tun0 ipv4.addresses '10.0.1.2/30'
    3. IPv 4 設定を使用するように手動で tun0 接続を設定します。

      # nmcli connection modify tun0 ipv4.method manual
    4. トラフィックを 192.0.2.0/24 ネットワークにルーティングする静的ルートをルーター A のトンネル IP に追加します。

      # nmcli connection modify tun0 +ipv4.routes "192.0.2.0/24 10.0.1.1"
    5. tun0 接続を有効にします。

      # nmcli connection up tun0
    6. パケット転送を有効にします。

      # echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf
      # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf

検証

  • 各 RHEL ルーターから、他のルーターの内部インターフェイスの IP アドレスに ping します。

    1. ルーター A で 172.16.0.1 に ping します。

      # ping 172.16.0.1
    2. ルーター B で 192.0.2.1 に ping します。

      # ping 192.0.2.1

8.2. レイヤー 3 トラフィックを IPv4 パケットにカプセル化するための GRE トンネルの設定

Generic Routing Encapsulation (GRE) トンネルは、RFC 2784 で説明されているように、レイヤー 3 トラフィックを IPv4 パケットにカプセル化します。GRE トンネルは、有効なイーサネットタイプで任意のレイヤー 3 プロトコルをカプセル化できます。

重要

GRE トンネルを介して送信されるデータは暗号化されません。セキュリティー上の理由から、すでに暗号化されたデータにはトンネルを使用してください (HTTPS などの他のプロトコル)。

たとえば、以下の図に示すように、2 つの RHEL ルーター間で GRE トンネルを作成し、インターネット経由で 2 つの内部サブネットに接続できます。

GRE トンネル

前提条件

  • 各 RHEL ルーターには、ローカルサブネットに接続されているネットワークインターフェイスがあります。
  • 各 RHEL ルーターには、インターネットに接続しているネットワークインターフェイスがあります。

手順

  1. ネットワーク A の RHEL ルーターで、次のコマンドを実行します。

    1. gre1 という名前の GRE トンネルインターフェイスを作成します。

      # nmcli connection add type ip-tunnel ip-tunnel.mode gre con-name gre1 ifname gre1 remote 198.51.100.5 local 203.0.113.10

      remote パラメーターおよび local パラメーターは、リモートルーターおよびローカルルーターのパブリック IP アドレスを設定します。

      重要

      gre0 デバイス名は予約されています。デバイスに gre1 または別の名前を使用します。

    2. IPv4 アドレスを gre1 デバイスに設定します。

      # nmcli connection modify gre1 ipv4.addresses '10.0.1.1/30'

      トンネルには、2 つの使用可能な IP アドレスを持つ /30 サブネットで十分であることに注意してください。

    3. 手動の IPv 4 設定を使用するように gre1 接続を設定します。

      # nmcli connection modify gre1 ipv4.method manual
    4. トラフィックを 172.16.0.0/24 ネットワークにルーティングする静的ルートをルーター B のトンネル IP に追加します。

      # nmcli connection modify gre1 +ipv4.routes "172.16.0.0/24 10.0.1.2"
    5. gre1 コネクションを有効にします。

      # nmcli connection up gre1
    6. パケット転送を有効にします。

      # echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf
      # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf
  2. ネットワーク B の RHEL ルーターで、次のコマンドを実行します。

    1. gre1 という名前の GRE トンネルインターフェイスを作成します。

      # nmcli connection add type ip-tunnel ip-tunnel.mode gre con-name gre1 ifname gre1 remote 203.0.113.10 local 198.51.100.5

      remote パラメーターおよび local パラメーターは、リモートルーターおよびローカルルーターのパブリック IP アドレスを設定します。

    2. IPv4 アドレスを gre1 デバイスに設定します。

      # nmcli connection modify gre1 ipv4.addresses '10.0.1.2/30'
    3. 手動の IPv 4 設定を使用するように gre1 接続を設定します。

      # nmcli connection modify gre1 ipv4.method manual
    4. トラフィックを 192.0.2.0/24 ネットワークにルーティングする静的ルートをルーター A のトンネル IP に追加します。

      # nmcli connection modify gre1 +ipv4.routes "192.0.2.0/24 10.0.1.1"
    5. gre1 コネクションを有効にします。

      # nmcli connection up gre1
    6. パケット転送を有効にします。

      # echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf
      # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf

検証

  1. 各 RHEL ルーターから、他のルーターの内部インターフェイスの IP アドレスに ping します。

    1. ルーター A で 172.16.0.1 に ping します。

      # ping 172.16.0.1
    2. ルーター B で 192.0.2.1 に ping します。

      # ping 192.0.2.1

8.3. IPv4 でイーサネットフレームを転送するための GRETAP トンネルの設定

GRETAP (Generic Routing Encapsulation Terminal Access Point) トンネルは OSI レベル 2 で動作し、RFC 2784 で説明されているように IPv4 パケットのイーサネットトラフィックをカプセル化します。

重要

GRETAP トンネルを介して送信されるデータは暗号化されません。セキュリティー上の理由から、VPN または別の暗号化された接続にトンネルを確立します。

たとえば、以下の図に示すように、2 つの RHEL ルーター間で GRETAP トンネルを作成し、ブリッジを使用して 2 つのネットワークに接続します。

GRETAP トンネル

前提条件

  • 各 RHEL ルーターには、ローカルネットワークに接続されたネットワークインターフェイスがあり、IP 設定は割り当てられません。
  • 各 RHEL ルーターには、インターネットに接続しているネットワークインターフェイスがあります。

手順

  1. ネットワーク A の RHEL ルーターで、次のコマンドを実行します。

    1. bridge0 という名前のブリッジインターフェイスを作成します。

      # nmcli connection add type bridge con-name bridge0 ifname bridge0
    2. ブリッジの IP 設定を設定します。

      # nmcli connection modify bridge0 ipv4.addresses '192.0.2.1/24'
      # nmcli connection modify bridge0 ipv4.method manual
    3. ローカルネットワークに接続されたインターフェイス用の新しい接続プロファイルをブリッジに追加します。

      # nmcli connection add type ethernet slave-type bridge con-name bridge0-port1 ifname enp1s0 master bridge0
    4. GRETAP トンネルインターフェイスの新しい接続プロファイルをブリッジに追加します。

      # nmcli connection add type ip-tunnel ip-tunnel.mode gretap slave-type bridge con-name bridge0-port2 ifname gretap1 remote 198.51.100.5 local 203.0.113.10 master bridge0

      remote パラメーターおよび local パラメーターは、リモートルーターおよびローカルルーターのパブリック IP アドレスを設定します。

      重要

      gretap0 デバイス名が予約されています。デバイスに gretap1 または別の名前を使用します。

    5. 必要に応じて、STP (Spanning Tree Protocol) を無効にする必要がない場合は、これを無効にします。

      # nmcli connection modify bridge0 bridge.stp no

      デフォルトでは、STP は有効になり、接続を使用する前に遅延が生じます。

    6. bridge0 接続がアクティベートするように、ブリッジのポートが自動的にアクティブになるようにします。

      # nmcli connection modify bridge0 connection.autoconnect-slaves 1
    7. bridge0 接続をアクティブにします。

      # nmcli connection up bridge0
  2. ネットワーク B の RHEL ルーターで、次のコマンドを実行します。

    1. bridge0 という名前のブリッジインターフェイスを作成します。

      # nmcli connection add type bridge con-name bridge0 ifname bridge0
    2. ブリッジの IP 設定を設定します。

      # nmcli connection modify bridge0 ipv4.addresses '192.0.2.2/24'
      # nmcli connection modify bridge0 ipv4.method manual
    3. ローカルネットワークに接続されたインターフェイス用の新しい接続プロファイルをブリッジに追加します。

      # nmcli connection add type ethernet slave-type bridge con-name bridge0-port1 ifname enp1s0 master bridge0
    4. GRETAP トンネルインターフェイスの新しい接続プロファイルをブリッジに追加します。

      # nmcli connection add type ip-tunnel ip-tunnel.mode gretap slave-type bridge con-name bridge0-port2 ifname gretap1 remote 203.0.113.10 local 198.51.100.5 master bridge0

      remote パラメーターおよび local パラメーターは、リモートルーターおよびローカルルーターのパブリック IP アドレスを設定します。

    5. 必要に応じて、STP (Spanning Tree Protocol) を無効にする必要がない場合は、これを無効にします。

      # nmcli connection modify bridge0 bridge.stp no
    6. bridge0 接続がアクティベートするように、ブリッジのポートが自動的にアクティブになるようにします。

      # nmcli connection modify bridge0 connection.autoconnect-slaves 1
    7. bridge0 接続をアクティブにします。

      # nmcli connection up bridge0

検証

  1. 両方のルーターで、enp1s0 接続および gretap1 接続が接続され、CONNECTION 列にポートの接続名が表示されていることを確認します。

    # nmcli device
    nmcli device
    DEVICE   TYPE      STATE      CONNECTION
    ...
    bridge0  bridge    connected  bridge0
    enp1s0   ethernet  connected  bridge0-port1
    gretap1  iptunnel  connected  bridge0-port2
  2. 各 RHEL ルーターから、他のルーターの内部インターフェイスの IP アドレスに ping します。

    1. ルーター A で 192.0.2.2 に ping します。

      # ping 192.0.2.2
    2. ルーター B で 192.0.2.1 に ping します。

      # ping 192.0.2.1

第9章 VXLAN を使用した仮想マシンの仮想レイヤー 2 ドメインの作成

仮想拡張可能な LAN (VXLAN) は、UDP プロトコルを使用して IP ネットワーク経由でレイヤー 2 トラフィックをトンネルするネットワークプロトコルです。たとえば、別のホストで実行している特定の仮想マシンは、VXLAN トンネルを介して通信できます。ホストは、世界中の異なるサブネットやデータセンターに存在できます。仮想マシンの視点からは、同じ VXLAN 内のその他の仮想マシンは、同じレイヤー 2 ドメイン内にあります。

vxlan トンネル

この例では、RHEL-host-A と RHEL-host-B は、ブリッジである br0 を使用して、VXLAN 名が vxlan10 である各ホストの仮想マシンの仮想ネットワークを接続します。この設定により、VXLAN は仮想マシンには表示されなくなり、仮想マシンに特別な設定は必要ありません。その後、別の仮想マシンを同じ仮想ネットワークに接続すると、仮想マシンは自動的に同じ仮想レイヤー 2 ドメインのメンバーになります。

重要

通常のレイヤー 2 トラフィックと同様、VXLAN のデータは暗号化されません。セキュリティー上の理由から、VPN 経由で VXLAN を使用するか、その他のタイプの暗号化接続を使用します。

9.1. VXLAN の利点

仮想拡張可能 LAN (VXLAN) の主な利点は、以下のとおりです。

  • VXLAN は 24 ビット ID を使用します。そのため、最大 16,777,216 の分離されたネットワークを作成できます。たとえば、仮想 LAN (VLAN) は 4,096 の分離されたネットワークのみをサポートします。
  • VXLAN は IP プロトコルを使用します。これにより、トラフィックをルーティングし、仮想的に実行するシステムを、同じレイヤー 2 ドメイン内の異なるネットワークと場所に置くことができます。
  • ほとんどのトンネルプロトコルとは異なり、VXLAN はポイントツーポイントネットワークだけではありません。VXLAN は、他のエンドポイントの IP アドレスを動的に学習するか、静的に設定された転送エントリーを使用できます。
  • 特定のネットワークカードは、UDP トンネル関連のオフロード機能に対応します。

関連情報

  • kernel-doc パッケージにより提供されている /usr/share/doc/kernel-doc-<kernel_version>/Documentation/networking/vxlan.rst

9.2. ホストでのイーサネットインターフェイスの設定

RHEL 仮想マシンホストをイーサネットに接続するには、ネットワーク接続プロファイルを作成し、IP 設定を設定して、プロファイルをアクティブにします。

両方の RHEL ホストでこの手順を実行し、IP アドレス設定を調整します。

前提条件

  • ホストがイーサネットに接続されている。

手順

  1. NetworkManager に新しいイーサネット接続プロファイルを追加します。

    # nmcli connection add con-name Example ifname enp1s0 type ethernet
  2. IPv4 を設定します。

    # nmcli connection modify Example ipv4.addresses 198.51.100.2/24 ipv4.method manual ipv4.gateway 198.51.100.254 ipv4.dns 198.51.100.200 ipv4.dns-search example.com

    ネットワークが DHCP を使用する場合は、この手順をスキップします。

  3. Example コネクションをアクティブにします。

    # nmcli connection up Example

検証

  1. デバイスおよび接続の状態を表示します。

    # nmcli device status
    DEVICE      TYPE      STATE      CONNECTION
    enp1s0      ethernet  connected  Example
  2. リモートネットワークでホストに ping を実行して、IP 設定を確認します。

    # ping RHEL-host-B.example.com

    そのホストでネットワークを設定する前に、その他の仮想マシンホストに ping を実行することはできないことに注意してください。

関連情報

  • システム上の nm-settings(5) man ページ

9.3. VXLAN が接続されたネットワークブリッジの作成

仮想拡張可能な LAN (VXLAN) を仮想マシンに表示しないようにするには、ホストでブリッジを作成し、VXLAN をブリッジに割り当てます。NetworkManager を使用して、ブリッジと VXLAN の両方を作成します。仮想マシンのトラフィックアクセスポイント (TAP) デバイス (通常はホスト上の vnet*) をブリッジに追加することはありません。libvirtd は、仮想マシンの起動時に動的に追加します。

両方の RHEL ホストでこの手順を実行し、必要に応じて IP アドレスを調整します。

手順

  1. ブリッジ br0 を作成します。

    # nmcli connection add type bridge con-name br0 ifname br0 ipv4.method disabled ipv6.method disabled

    このコマンドは、ブリッジデバイスに IPv4 アドレスおよび IPv6 アドレスを設定しません。これは、このブリッジがレイヤー 2 で機能するためです。

  2. VXLAN インターフェイスを作成し、br0 に割り当てます。

    # nmcli connection add type vxlan slave-type bridge con-name br0-vxlan10 ifname vxlan10 id 10 local 198.51.100.2 remote 203.0.113.1 master br0

    このコマンドは、次の設定を使用します。

    • id 10: VXLAN ID を設定します。
    • local 198.51.100.2: 送信パケットの送信元 IP アドレスを設定します。
    • remote 203.0.113.1: VXLAN デバイスフォワーディングデータベースで宛先リンク層アドレスが不明な場合に、送信パケットで使用するユニキャストまたはマルチキャストの IP アドレスを設定します。
    • master br0: この VXLAN 接続を、br0 接続のポートとして作成するように設定します。
    • ipv4.method disabled および ipv6.method disabled: ブリッジで IPv4 および IPv6 を無効にします。

    初期設定では、NetworkManager は 8472 を宛先ポートとして使用します。宛先ポートが異なる場合は、追加で、destination-port <port_number> オプションをコマンドに渡します。

  3. br0 接続プロファイルを有効にします。

    # nmcli connection up br0
  4. ローカルファイアウォールで、着信 UDP 接続用にポート 8472 を開くには、次のコマンドを実行します。

    # firewall-cmd --permanent --add-port=8472/udp
    # firewall-cmd --reload

検証

  • 転送テーブルを表示します。

    # bridge fdb show dev vxlan10
    2a:53:bd:d5:b3:0a master br0 permanent
    00:00:00:00:00:00 dst 203.0.113.1 self permanent
    ...

関連情報

  • システム上の nm-settings(5) man ページ

9.4. 既存のブリッジを使用した libvirt での仮想ネットワークの作成

仮想マシンが、接続した仮想拡張可能 LAN (VXLAN) で br0 ブリッジを使用できるようにするには、最初に、このブリッジを使用する libvirtd サービスに仮想ネットワークを追加します。

前提条件

  • libvirt をインストールしている。
  • libvirtd を起動して有効にしている。
  • RHEL 上の VXLAN で br0 デバイスーを設定している。

手順

  1. 以下の内容で ~/vxlan10-bridge.xml を作成します。

    <network>
     <name>vxlan10-bridge</name>
     <forward mode="bridge" />
     <bridge name="br0" />
    </network>
  2. ~/vxlan10-bridge.xml を使用して、libvirt に新しい仮想ネットワークを作成します。

    # virsh net-define ~/vxlan10-bridge.xml
  3. ~/vxlan10-bridge.xml を削除します。

    # rm ~/vxlan10-bridge.xml
  4. vxlan10-bridge 仮想ネットワークを起動します。

    # virsh net-start vxlan10-bridge
  5. libvirtd の起動時に自動的に起動するように vxlan10-bridge 仮想ネットワークを設定します。

    # virsh net-autostart vxlan10-bridge

検証

  • 仮想ネットワークのリストを表示します。

    # virsh net-list
     Name              State    Autostart   Persistent
    ----------------------------------------------------
     vxlan10-bridge    active   yes         yes
     ...

関連情報

  • システム上の virsh(1) man ページ

9.5. VXLAN を使用するように仮想マシンの設定

ホストで、接続されている仮想拡張 LAN (VXLAN) でブリッジデバイスを使用するように仮想マシンを設定するには、vxlan10-bridge 仮想ネットワークを使用する新しい仮想マシンを作成するか、このネットワークを使用する既存の仮想マシンの設定を更新します。

RHEL ホストでこの手順を実行します。

前提条件

  • libvirtdvxlan10-bridge 仮想ネットワークを設定している。

手順

  • 新しい仮想マシンを作成し、vxlan10-bridge ネットワークを使用するように設定するには、仮想マシンの作成時に、--network network:vxlan10-bridge オプションを virt-install に渡します。

    # virt-install ... --network network:vxlan10-bridge
  • 既存の仮想マシンのネットワーク設定を変更するには、次のコマンドを実行します。

    1. 仮想マシンのネットワークインターフェイスを、vxlan10-bridge 仮想ネットワークに接続します。

      # virt-xml VM_name --edit --network network=vxlan10-bridge
    2. 仮想マシンをシャットダウンして、再起動します。

      # virsh shutdown VM_name
      # virsh start VM_name

検証

  1. ホストの仮想マシンの仮想ネットワークインターフェイスを表示します。

    # virsh domiflist VM_name
     Interface   Type     Source           Model    MAC
    -------------------------------------------------------------------
     vnet1       bridge   vxlan10-bridge   virtio   52:54:00:c5:98:1c
  2. vxlan10-bridge ブリッジに接続されているインターフェイスを表示します。

    # ip link show master vxlan10-bridge
    18: vxlan10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UNKNOWN mode DEFAULT group default qlen 1000
        link/ether 2a:53:bd:d5:b3:0a brd ff:ff:ff:ff:ff:ff
    19: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UNKNOWN mode DEFAULT group default qlen 1000
        link/ether 52:54:00:c5:98:1c brd ff:ff:ff:ff:ff:ff

    libvirtd は、ブリッジの設定を動的に更新することに注意してください。vxlan10-bridge ネットワークを使用する仮想マシンを起動すると、ホストの対応する vnet* デバイスがブリッジのポートとして表示されます。

  3. アドレス解決プロトコル (ARP) 要求を使用して、仮想マシンが同じ VXLAN にあるかどうかを確認します。

    1. 同じ VXLAN で、2 つ以上の仮想マシンを起動します。
    2. 仮想マシンから別の仮想マシンに ARP 要求を送信します。

      # arping -c 1 192.0.2.2
      ARPING 192.0.2.2 from 192.0.2.1 enp1s0
      Unicast reply from 192.0.2.2 [52:54:00:c5:98:1c] 1.450ms
      Sent 1 probe(s) (0 broadcast(s))
      Received 1 response(s) (0 request(s), 0 broadcast(s))

      コマンドが応答を示す場合、仮想マシンは同じレイヤー 2 ドメイン、およびこの場合は同じ VXLAN にあります。

      arping ユーティリティーを使用するには、iputils をインストールします。

関連情報

  • システム上の virt-install(1) および virt-xml(1) man ページ
  • システム上の virsh(1) および arping(8) man ページ

第10章 wifi 接続の管理

RHEL には、wifi ネットワークを設定して接続するための複数のユーティリティーとアプリケーションが用意されています。次に例を示します。

  • nmcli ユーティリティーを使用して、コマンドラインで接続を設定する。
  • nmtui アプリケーションを使用して、テキストベースのユーザーインターフェイスで接続を設定する。
  • GNOME システムメニューを使用すると、設定を必要としない Wi-Fi ネットワークにすばやく接続する。
  • GNOME Settings アプリケーションを使用して、GNOME アプリケーションで接続を設定する。
  • nm-connection-editor アプリケーションを使用して、グラフィカルユーザーインターフェイスで接続を設定する。
  • network RHEL システムロールを使用して、1 つまたは複数のホストでの接続の設定を自動化する。

10.1. サポートされている wifi セキュリティータイプ

wifi ネットワークがサポートするセキュリティータイプに応じて、多かれ少なかれ安全にデータを送信できます。

警告

暗号化を使用しない、または安全でない WEP または WPA 標準のみをサポートする wifi ネットワークには接続しないでください。

RHEL 8 は、次の Wi-Fi セキュリティータイプをサポートしています。

  • None: 暗号化は無効になり、ネットワーク経由でプレーンテキスト形式でデータが転送されます。
  • Enhanced Open: opportunistic wireless encryption (OWE) を使用すると、デバイスは一意のペアワイズマスターキー (PMK) をネゴシエートして、認証なしでワイヤレスネットワークの接続を暗号化します。
  • WEP 40/128 ビットキー (16 進数または ASCII): このモードの Wired Equivalent Privacy (WEP) プロトコルは、16 進数または ASCII 形式の事前共有キーのみを使用します。WEP は推奨されておらず、RHEL 9.1 で削除されます。
  • WEP 128 ビットパスフレーズ。このモードの WEP プロトコルは、パスフレーズの MD5 ハッシュを使用して WEP キーを取得します。WEP は推奨されておらず、RHEL 9.1 で削除されます。
  • 動的 WEP (802.1x) : 802.1X と EAP の組み合わせで、動的キーを使用する WEP プロトコルを使用します。WEP は推奨されておらず、RHEL 9.1 で削除されます。
  • LEAP: Cisco が開発した Lightweight Extensible Authentication Protocol は、拡張認証プロトコル (EAP) の独自バージョンです。
  • WPA & WPA2 Personal: パーソナルモードでは、Wi-Fi Protected Access (WPA) および Wi-Fi Protected Access 2 (WPA2) 認証方法で事前共有キーが使用されます。
  • WPA & WPA2 Personal: エンタープライズモードでは、WPA と WPA2 は EAP フレームワークを使用し、リモート認証ダイヤルインユーザーサービス (RADIUS) サーバーに対してユーザーを認証します。
  • WPA3 Personal: Wi-Fi Protected Access 3 (WPA3) Personal は、辞書攻撃を防ぐために pre-shared keys (PSK) の代わりに simultaneous authentication of equals (SAE) を使用します。WPA3 では、Perfect Forward Secrecy (PFS) が使用されます。

10.2. nmcli を使用した WiFi ネットワークへの接続

nmcli ユーティリティーを使用して、wifi ネットワークに接続できます。初めてネットワークに接続しようとすると、ユーティリティーは NetworkManager 接続プロファイルを自動的に作成します。ネットワークに静的 IP アドレスなどの追加設定が必要な場合は、プロファイルが自動的に作成された後にプロファイルを変更できます。

前提条件

  • ホストに wifi デバイスがインストールされている。
  • ハードウェアスイッチがある場合は、wifi デバイスが有効になっている。

手順

  1. NetworkManager で wifi 無線が無効になっている場合は、この機能を有効にします。

    # nmcli radio wifi on
  2. オプション: 利用可能な Wi-Fi ネットワークを表示します。

    # nmcli device wifi list
    IN-USE  BSSID              SSID          MODE   CHAN  RATE        SIGNAL  BARS  SECURITY
            00:53:00:2F:3B:08  Office        Infra  44    270 Mbit/s  57      ▂▄▆_  WPA2 WPA3
            00:53:00:15:03:BF  --            Infra  1     130 Mbit/s  48      ▂▄__  WPA2 WPA3

    サービスセット識別子 (SSID) 列には、ネットワークの名前が含まれています。列に -- が表示されている場合、このネットワークのアクセスポイントは SSID をブロードキャストしていません。

  3. wifi ネットワークに接続します。

    # nmcli device wifi connect Office --ask
    Password: wifi-password

    対話的に入力するのではなく、コマンドでパスワードを設定する場合は、コマンドで --ask の代わりに password <wifi_password> オプションを使用します。

    # nmcli device wifi connect Office <wifi_password>

    ネットワークが静的 IP アドレスを必要とする場合、NetworkManager はこの時点で接続のアクティブ化に失敗することに注意してください。後の手順で IP アドレスを設定できます。

  4. ネットワークに静的 IP アドレスが必要な場合:

    1. IPv4 アドレス設定を設定します。次に例を示します。

      # nmcli connection modify Office ipv4.method manual ipv4.addresses 192.0.2.1/24 ipv4.gateway 192.0.2.254 ipv4.dns 192.0.2.200 ipv4.dns-search example.com
    2. IPv6 アドレス設定を設定します。次に例を示します。

      # nmcli connection modify Office ipv6.method manual ipv6.addresses 2001:db8:1::1/64 ipv6.gateway 2001:db8:1::fffe ipv6.dns 2001:db8:1::ffbb ipv6.dns-search example.com
  5. 接続を再度有効にします。

    # nmcli connection up Office

検証

  1. アクティブな接続を表示します。

    # nmcli connection show --active
    NAME    ID                                    TYPE  DEVICE
    Office  2501eb7e-7b16-4dc6-97ef-7cc460139a58  wifi  wlp0s20f3

    作成した wifi 接続が出力にリストされている場合、その接続はアクティブです。

  2. ホスト名または IP アドレスに ping を実行します。

    # *ping -c 3 example.com

関連情報

  • システム上の nm-settings-nmcli(5) man ページ

10.3. GNOME システムメニューを使用した Wi-Fi ネットワークへの接続

GNOME システムメニューを使用して、wifi ネットワークに接続できます。初めてネットワークに接続するとき、GNOME は NetworkManager 接続プロファイルを作成します。接続プロファイルを自動的に接続しないように設定した場合、GNOME システムメニューを用いて、既存の NetworkManager 接続プロファイルを使用して wifi ネットワークに手動で接続することもできます。

注記

GNOME システムメニューを使用して初めて wifi ネットワークへの接続を確立する場合、一定の制限があります。たとえば、IP アドレス設定を構成することはできません。この場合、最初に接続を設定します。

前提条件

  • ホストに wifi デバイスがインストールされている。
  • ハードウェアスイッチがある場合は、wifi デバイスが有効になっている。

手順

  1. トップバーの右側にあるシステムメニューを開きます。
  2. Wi-Fi Not Connected エントリーを展開します。
  3. Select Network をクリックします。

    gnome select wifi
  4. 接続する wifi ネットワークを選択します。
  5. Connect をクリックします。
  6. このネットワークに初めて接続する場合は、ネットワークのパスワードを入力し、Connect をクリックします。

検証

  1. トップバーの右側にあるシステムメニューを開き、wifi ネットワークが接続されていることを確認します。

    gnome wifi connected

    ネットワークがリストに表示されていれば、接続されています。

  2. ホスト名または IP アドレスに ping を実行します。

    # ping -c 3 example.com

10.4. GNOME 設定アプリケーションを使用した Wi-Fi ネットワークへの接続

gnome-control-center という名前の GNOME settings アプリケーションを使用して、wifi ネットワークに接続し、接続を設定できます。初めてネットワークに接続するとき、GNOME は NetworkManager 接続プロファイルを作成します。

GNOME settings では、RHEL がサポートするすべての wifi ネットワークセキュリティータイプの wifi 接続を設定できます。

前提条件

  • ホストに wifi デバイスがインストールされている。
  • ハードウェアスイッチがある場合は、wifi デバイスが有効になっている。

手順

  1. Super キーを押し、Wi-Fi と入力して Enter を押します。
  2. 接続したい wifi ネットワークの名前をクリックします。
  3. ネットワークのパスワードを入力し、Connect をクリックします。
  4. 静的 IP アドレスや WPA2 パーソナル以外のセキュリティータイプなど、ネットワークに追加の設定が必要な場合:

    1. ネットワーク名の横にある歯車のアイコンをクリックします。
    2. オプション: Details タブでネットワークプロファイルを設定して、自動的に接続しないようにします。

      この機能を無効にした場合は、GNOME settings や GNOME システムメニューなどを使用して、常に手動でネットワークに接続する必要があります。

    3. IPv4 タブで IPv4 設定を設定し、IPv6 タブで IPv6 設定を設定します。
    4. Security タブで、ネットワークの認証 (WPA3 Personal など) を選択し、パスワードを入力します。

      選択したセキュリティーに応じて、アプリケーションは追加のフィールドを表示します。それに応じてそれらを埋めます。詳しくは wifi ネットワークの管理者におたずねください。

    5. Apply をクリックします。

検証

  1. トップバーの右側にあるシステムメニューを開き、wifi ネットワークが接続されていることを確認します。

    gnome wifi connected

    ネットワークがリストに表示されていれば、接続されています。

  2. ホスト名または IP アドレスに ping を実行します。

    # ping -c 3 example.com

10.5. nmtui を使用した Wi-Fi 接続の設定

nmtui アプリケーションは、NetworkManager 用のテキストベースのユーザーインターフェイスを提供します。nmtui を使用して Wi-Fi ネットワークに接続できます。

注記

nmtui で 以下を行います。

  • カーソルキーを使用してナビゲートします。
  • ボタンを選択して Enter を押します。
  • Space を使用してチェックボックスをオンまたはオフにします。

手順

  1. 接続に使用するネットワークデバイス名がわからない場合は、使用可能なデバイスを表示します。

    # nmcli device status
    DEVICE     TYPE      STATE                   CONNECTION
    wlp2s0     wifi      unavailable             --
    ...
  2. nmtui を開始します。

    # nmtui
  3. Edit a connection 選択し、Enter を押します。
  4. Add ボタンを押します。
  5. ネットワークタイプのリストから Wi-Fi を選択し、Enter を押します。
  6. オプション: 作成する NetworkManager プロファイルの名前を入力します。

    ホストに複数のプロファイルがある場合は、わかりやすい名前を付けると、プロファイルの目的を識別しやすくなります。

  7. Device フィールドにネットワークデバイス名を入力します。
  8. Wi-Fi ネットワークの名前である Service Set Identifier (SSID) を SSID フィールドに入力します。
  9. Mode フィールドはデフォルトの Client のままにします。
  10. Security フィールドを選択して Enter を押し、リストからネットワークの認証タイプを設定します。

    選択した認証タイプに応じて、nmtui は異なるフィールドを表示します。

  11. 認証タイプ関連のフィールドに入力します。
  12. Wi-Fi ネットワークに静的 IP アドレスが必要な場合:

    1. プロトコルの横にある Automatic ボタンを押し、表示されたリストから Manual を選択します。
    2. 設定するプロトコルの横にある Show ボタンを押して、追加のフィールドを表示し、それらに入力します。
  13. OK ボタンを押して、新しい接続を作成し、自動的にアクティブにします。

    nmtui wi fi dynamic IP
  14. Back ボタンを押してメインメニューに戻ります。
  15. Quit を選択し、Enter キーを押して nmtui アプリケーションを閉じます。

検証

  1. アクティブな接続を表示します。

    # nmcli connection show --active
    NAME    ID                                    TYPE  DEVICE
    Office  2501eb7e-7b16-4dc6-97ef-7cc460139a58  wifi  wlp0s20f3

    作成した wifi 接続が出力にリストされている場合、その接続はアクティブです。

  2. ホスト名または IP アドレスに ping を実行します。

    # ping -c 3 example.com

10.6. nm-connection-editor を使用した WiFi 接続の設定

nm-connection-editor アプリケーションを使用して、ワイヤレスネットワークの接続プロファイルを作成できます。このアプリケーションでは、RHEL がサポートするすべての wifi ネットワーク認証タイプを設定できます。

デフォルトでは、NetworkManager は接続プロファイルの自動接続機能を有効にし、保存されたネットワークが利用可能な場合は自動的に接続します。

前提条件

  • ホストに wifi デバイスがインストールされている。
  • ハードウェアスイッチがある場合は、wifi デバイスが有効になっている。

手順

  1. ターミナルを開き、次のコマンドを入力します。

    # nm-connection-editor
  2. + ボタンをクリックして、新しい接続を追加します。
  3. Wi-Fi 接続タイプを選択し、Create をクリックします。
  4. オプション: 接続プロファイルの名前を設定します。
  5. オプション: General タブでネットワークプロファイルを設定して、自動的に接続しないようにします。

    この機能を無効にした場合は、GNOME settings や GNOME システムメニューなどを使用して、常に手動でネットワークに接続する必要があります。

  6. Wi-Fi タブで、SSID フィールドにサービスセット識別子 (SSID) を入力します。
  7. Wi-Fi Security タブで、ネットワークの認証タイプ (WPA3 Personal など) を選択し、パスワードを入力します。

    選択したセキュリティーに応じて、アプリケーションは追加のフィールドを表示します。それに応じてそれらを埋めます。詳しくは wifi ネットワークの管理者におたずねください。

  8. IPv4 タブで IPv4 設定を設定し、IPv6 タブで IPv6 設定を設定します。
  9. Save をクリックします。
  10. Network Connections ウィンドウを閉じます。

検証

  1. トップバーの右側にあるシステムメニューを開き、wifi ネットワークが接続されていることを確認します。

    gnome wifi connected

    ネットワークがリストに表示されていれば、接続されています。

  2. ホスト名または IP アドレスに ping を実行します。

    # ping -c 3 example.com

10.7. network RHEL システムロールを使用した 802.1X ネットワーク認証による Wi-Fi 接続の設定

ネットワークアクセス制御 (NAC) は、不正なクライアントからネットワークを保護します。クライアントがネットワークにアクセスできるようにするために、認証に必要な詳細を NetworkManager 接続プロファイルで指定できます。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。

Ansible Playbook を使用して秘密鍵、証明書、および CA 証明書をクライアントにコピーしてから、network RHEL システムロールを使用して 802.1X ネットワーク認証による接続プロファイルを設定できます。

前提条件

  • コントロールノードと管理対象ノードの準備が完了している。
  • 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
  • 管理対象ノードへの接続に使用するアカウントに、そのノードに対する sudo 権限がある。
  • ネットワークは 802.1X ネットワーク認証をサポートしている。
  • マネージドノードに wpa_supplicant パッケージをインストールしました。
  • DHCP は、管理対象ノードのネットワークで使用できる。
  • TLS 認証に必要な以下のファイルがコントロールノードにある。

    • クライアントキーが /srv/data/client.key ファイルに保存されている。
    • クライアント証明書が /srv/data/client.crt ファイルに保存されている。
    • CA 証明書は /srv/data/ca.crt ファイルに保存されます。

手順

  1. 機密性の高い変数を暗号化されたファイルに保存します。

    1. vault を作成します。

      $ ansible-vault create vault.yml
      New Vault password: <vault_password>
      Confirm New Vault password: <vault_password>
    2. ansible-vault create コマンドでエディターが開いたら、機密データを <key>: <value> 形式で入力します。

      pwd: <password>
    3. 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
  2. 次の内容を含む Playbook ファイル (例: ~/playbook.yml) を作成します。

    ---
    - name: Configure a wifi connection with 802.1X authentication
      hosts: managed-node-01.example.com
      tasks:
        - name: Copy client key for 802.1X authentication
          ansible.builtin.copy:
            src: "/srv/data/client.key"
            dest: "/etc/pki/tls/private/client.key"
            mode: 0400
    
        - name: Copy client certificate for 802.1X authentication
          ansible.builtin.copy:
            src: "/srv/data/client.crt"
            dest: "/etc/pki/tls/certs/client.crt"
    
        - name: Copy CA certificate for 802.1X authentication
          ansible.builtin.copy:
            src: "/srv/data/ca.crt"
            dest: "/etc/pki/ca-trust/source/anchors/ca.crt"
    
        - name: Wifi connection profile with dynamic IP address settings and 802.1X
          ansible.builtin.import_role:
            name: rhel-system-roles.network
          vars:
            network_connections:
              - name: Wifi connection profile with dynamic IP address settings and 802.1X
                interface_name: wlp1s0
                state: up
                type: wireless
                autoconnect: yes
                ip:
                  dhcp4: true
                  auto6: true
                wireless:
                  ssid: "Example-wifi"
                  key_mgmt: "wpa-eap"
                ieee802_1x:
                  identity: <user_name>
                  eap: tls
                  private_key: "/etc/pki/tls/client.key"
                  private_key_password: "{{ pwd }}"
                  private_key_password_flags: none
                  client_cert: "/etc/pki/tls/client.pem"
                  ca_cert: "/etc/pki/tls/cacert.pem"
                  domain_suffix_match: "example.com"

    サンプル Playbook で指定されている設定は次のとおりです。

    ieee802_1x
    この変数には、802.1X 関連の設定を含めます。
    eap: tls
    Extensible Authentication Protocol (EAP) に証明書ベースの TLS 認証方式を使用するようにプロファイルを設定します。

    Playbook で使用されるすべての変数の詳細は、コントロールノードの /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイルを参照してください。

  3. Playbook の構文を検証します。

    $ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  4. Playbook を実行します。

    $ ansible-playbook --ask-vault-pass ~/playbook.yml

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイル
  • /usr/share/doc/rhel-system-roles/network/ ディレクトリー

10.8. nmcli を使用した既存のプロファイルでの 802.1X ネットワーク認証による Wi-Fi 接続の設定

nmcli ユーティリティーを使用して、クライアントがネットワークに対して自己認証するように設定できます。たとえば、wlp1s0 という名前の既存の NetworkManager wifi 接続プロファイルで、MSCHAPv2 (Microsoft Challenge-Handshake Authentication Protocol version 2) を使用する PEAP (Protected Extensible Authentication Protocol) 認証を設定します。

前提条件

  • ネットワークには 802.1X ネットワーク認証が必要です。
  • wifi 接続プロファイルが NetworkManager に存在し、有効な IP 設定があります。
  • クライアントがオーセンティケーターの証明書を検証する必要がある場合は、認証局 (CA) 証明書を /etc/pki/ca-trust/source/anchors/ ディレクトリーに保存する必要があります。
  • wpa_supplicant パッケージがインストールされている。

手順

  1. wifi セキュリティーモードを wpa-eap に設定し、Extensible Authentication Protocol (EAP) を peap に設定し、内部認証プロトコルを mschapv2 に設定し、ユーザー名を設定します。

    # nmcli connection modify wlp1s0 wireless-security.key-mgmt wpa-eap 802-1x.eap peap 802-1x.phase2-auth mschapv2 802-1x.identity user_name

    1 つのコマンドで wireless-security.key-mgmt パラメーター、802-1x.eap パラメーター、802-1x.phase2-auth パラメーター、および 802-1x.identity パラメーターを設定する必要があります。

  2. オプション: 設定にパスワードを保存します。

    # nmcli connection modify wlp1s0 802-1x.password password
    重要

    デフォルトでは、NetworkManager はパスワードをプレーンテキストで /etc/sysconfig/network-scripts/keys-connection_name ファイルに保存します。このファイルは root ユーザーのみが読み取ることができます。ただし、設定ファイル内のプレーンテキストのパスワードは、セキュリティーリスクになる可能性があります。

    セキュリティーを強化するには、802-1x.password-flags パラメーターを 0x1 に設定します。この設定では、GNOME デスクトップ環境または nm-applet が実行中のサーバーで、NetworkManager がこれらのサービスからパスワードを取得します。その他の場合は、NetworkManager によりパスワードの入力が求められます。

  3. クライアントがオーセンティケーターの証明書を検証する必要がある場合は、接続プロファイルの 802-1x.ca-cert パラメーターを CA 証明書のパスに設定します。

    # nmcli connection modify wlp1s0 802-1x.ca-cert /etc/pki/ca-trust/source/anchors/ca.crt
    注記

    セキュリティー上の理由から、クライアントでオーセンティケーターの証明書を検証することを推奨します。

  4. 接続プロファイルをアクティベートします。

    # nmcli connection up wlp1s0

検証

  • ネットワーク認証が必要なネットワーク上のリソースにアクセスします。

関連情報

10.9. ワイヤレス規制ドメインの手動設定

RHEL では、udev ルールが setregdomain ユーティリティーを実行してワイヤレス規制ドメインを設定します。次に、ユーティリティーはこの情報をカーネルに提供します。

デフォルトでは、setregdomain は国コードを自動的に決定しようとします。これが失敗する場合は、ワイヤレス規制ドメインの設定が間違っている可能性があります。この問題を回避するには、国コードを手動で設定します。

重要

規制ドメインを手動で設定すると、自動検出が無効になります。そのため、後で別の国でコンピューターを使用すると、以前に設定された設定が正しくなくなる可能性があります。この場合、/etc/sysconfig/regdomain ファイルを削除して自動検出に戻すか、以下の手順を使用して規制ドメイン設定を手動で再度更新します。

手順

  1. オプション: 現在の規制ドメイン設定を表示します。

    # iw reg get
    global
    country US: DFS-FCC
    ...
  2. 次の内容で /etc/sysconfig/regdomain ファイルを作成します。

    COUNTRY=<country_code>

    COUNTRY 変数を ISO 3166-1 alpha2 国コード (ドイツの場合は DE、アメリカ合衆国の場合は US など) に設定します。

  3. 規制ドメインを設定します。

    # setregdomain

検証

  • 規制ドメインの設定を表示します。

    # iw reg get
    global
    country DE: DFS-ETSI
    ...

関連情報

  • システム上の iw(8)setregdomain(1)、および regular.bin(5) man ページ
  • ISO 3166 国コード

第11章 RHEL を WPA2 または WPA3 パーソナルアクセスポイントとして設定する方法

Wi-Fi デバイスを備えたホストでは、NetworkManager を使用して、このホストをアクセスポイントとして設定できます。Wi-Fi Protected Access 2 (WPA2) および Wi-Fi Protected Access 3 (WPA3) Personal はセキュアな認証方法を提供します。ワイヤレスクライアントは事前共有キー (PSK) を使用してアクセスポイントに接続し、RHEL ホスト上およびネットワーク内のサービスを使用できます。

アクセスポイントを設定すると、NetworkManager は自動的に以下を行います。

  • クライアントに DHCP および DNS サービスを提供するように dnsmasq サービスを設定します
  • IP 転送を有効にします
  • nftables ファイアウォールルールを追加して、wifi デバイスからのトラフィックをマスカレードし、IP 転送を設定します

前提条件

  • Wi-Fi デバイスが、アクセスポイントモードでの実行をサポートしている
  • Wi-Fi デバイスは使用していない
  • ホストがインターネットにアクセスできる

手順

  1. Wi-Fi デバイスを一覧表示して、アクセスポイントを提供するデバイスを特定します。

    # nmcli device status | grep wifi
    wlp0s20f3    wifi   disconnected    --
  2. デバイスがアクセスポイントモードをサポートしていることを確認します。

    # nmcli -f WIFI-PROPERTIES.AP device show wlp0s20f3
    WIFI-PROPERTIES.AP:     yes

    Wi-Fi デバイスをアクセスポイントとして使用するには、デバイスがこの機能をサポートしている必要があります。

  3. dnsmasq および NetworkManager-wifi パッケージをインストールします。

    # yum install dnsmasq NetworkManager-wifi

    NetworkManager は dnsmasq サービスを使用して、アクセスポイントのクライアントに DHCP および DNS サービスを提供します。

  4. アクセスポイントの初期設定を作成します。

    # nmcli device wifi hotspot ifname wlp0s20f3 con-name Example-Hotspot ssid Example-Hotspot password "password"

    このコマンドは、WPA2 および WPA3 Personal 認証を提供する wlp0s20f3 デバイス上のアクセスポイントの接続プロファイルを作成します。ワイヤレスネットワークの名前である Service Set Identifier (SSID) は Example-Hotspot で、事前共有キーの password を使用します。

  5. オプション: WPA3 のみをサポートするようにアクセスポイントを設定します。

    # nmcli connection modify Example-Hotspot 802-11-wireless-security.key-mgmt sae
  6. デフォルトでは、NetworkManager は wifi デバイスに IP アドレス 10.42.0.1 を使用し、残りの 10.42.0.0/24 サブネットからの IP アドレスをクライアントに割り当てます。別のサブネットと IP アドレスを設定するには、次のように入力します。

    # nmcli connection modify Example-Hotspot ipv4.addresses 192.0.2.254/24

    設定した IP アドレス (この場合は 192.0.2.254) は、NetworkManager が wifi デバイスに割り当てるものです。クライアントは、この IP アドレスをデフォルトゲートウェイおよび DNS サーバーとして使用します。

  7. 接続プロファイルをアクティベートします。

    # nmcli connection up Example-Hotspot

検証

  1. サーバーの場合:

    1. NetworkManager が dnsmasq サービスを開始し、そのサービスがポート 67 (DHCP) および 53 (DNS) でリッスンしていることを確認します。

      # ss -tulpn | egrep ":53|:67"
      udp   UNCONN 0  0   10.42.0.1:53    0.0.0.0:*    users:(("dnsmasq",pid=55905,fd=6))
      udp   UNCONN 0  0     0.0.0.0:67    0.0.0.0:*    users:(("dnsmasq",pid=55905,fd=4))
      tcp   LISTEN 0  32  10.42.0.1:53    0.0.0.0:*    users:(("dnsmasq",pid=55905,fd=7))
    2. nftables ルールセットを表示して、NetworkManager が 10.42.0.0/24 サブネットからのトラフィックの転送とマスカレードを有効にしていることを確認します。

      # nft list ruleset
      table ip nm-shared-wlp0s20f3 {
          chain nat_postrouting {
              type nat hook postrouting priority srcnat; policy accept;
              ip saddr 10.42.0.0/24 ip daddr != 10.42.0.0/24 masquerade
          }
      
          chain filter_forward {
              type filter hook forward priority filter; policy accept;
              ip daddr 10.42.0.0/24 oifname "wlp0s20f3" ct state { established, related } accept
              ip saddr 10.42.0.0/24 iifname "wlp0s20f3" accept
              iifname "wlp0s20f3" oifname "wlp0s20f3" accept
              iifname "wlp0s20f3" reject
              oifname "wlp0s20f3" reject
          }
      }
  2. Wi-Fi アダプターを備えたクライアントの場合:

    1. 利用可能なネットワークのリストを表示します。

      # nmcli device wifi
      IN-USE  BSSID              SSID             MODE   CHAN  RATE      SIGNAL  BARS  SECURITY
              00:53:00:88:29:04  Example-Hotspot  Infra  11    130 Mbit/s  62      ▂▄▆_  WPA3
      ...
    2. Example-Hotspot ワイヤレスネットワークに接続します。Managing Wi-Fi connections を参照してください。
    3. リモートネットワークまたはインターネット上のホストに ping を実行し、接続が機能していることを確認します。

      # ping -c 3 www.redhat.com

関連情報

  • システム上の nm-settings(5) man ページ

第12章 MACsec を使用した同じ物理ネットワーク内のレイヤー 2 トラフィックの暗号化

MACsec を使用して、2 つのデバイス間の通信を (ポイントツーポイントで) セキュリティー保護できます。たとえば、ブランチオフィスがメトロイーサネット接続を介してセントラルオフィスに接続されている場合、オフィスを接続する 2 つのホストで MACsec を設定して、セキュリティーを強化できます。

Media Access Control Security (MACsec) は、イーサーネットリンクで異なるトラフィックタイプを保護するレイヤー 2 プロトコルです。これには以下が含まれます。

  • Dynamic Host Configuration Protocol (DHCP)
  • アドレス解決プロトコル (ARP)
  • IPv4 および IPv6 トラフィック
  • TCP や UDP などの IP 経由のトラフィック

MACsec はデフォルトで、LAN 内のすべてのトラフィックを GCM-AES-128 アルゴリズムで暗号化および認証し、事前共有キーを使用して参加者ホスト間の接続を確立します。共有前の鍵を変更する場合は、MACsec を使用するネットワーク内のすべてのホストで NM 設定を更新する必要があります。

MACsec 接続は、親としてイーサネットネットワークカード、VLAN、トンネルデバイスなどのイーサネットデバイスを使用します。暗号化された接続のみを使用して他のホストと通信するように MACsec デバイスにのみ IP 設定を指定することも、親デバイスに IP 設定を設定することもできます。後者の場合、親デバイスを使用して暗号化されていない接続で他のホストと通信し、MACsec デバイスを使用して暗号化された接続で通信することができます。

MACsec には特別なハードウェアは必要ありません。たとえば、ホストとスイッチの間のトラフィックのみを暗号化する場合を除き、任意のスイッチを使用できます。このシナリオでは、スイッチが MACsec もサポートする必要があります。

つまり、MACsec を設定する方法は 2 つあります。

  • ホストからホストへ設定する
  • ホストからスイッチへ設定した後、スイッチからその他のホストへ設定する
重要

MACsec は、同じ (物理または仮想) LAN のホスト間でのみ使用することができます。

12.1. nmcli を使用した MACsec 接続の設定

nmcli ユーティリティーを使用して、MACsec を使用するようにイーサネットインターフェイスを設定できます。たとえば、イーサネット経由で接続された 2 つのホスト間に MACsec 接続を作成できます。

手順

  1. MACsec を設定する最初のホストで:

    • 事前共有鍵の接続アソシエーション鍵 (CAK) と接続アソシエーション鍵名 (CKN) を作成します。

      1. 16 バイトの 16 進 CAK を作成します。

        # dd if=/dev/urandom count=16 bs=1 2> /dev/null | hexdump -e '1/2 "%04x"'
        50b71a8ef0bd5751ea76de6d6c98c03a
      2. 32 バイトの 16 進 CKN を作成します。

        # dd if=/dev/urandom count=32 bs=1 2> /dev/null | hexdump -e '1/2 "%04x"'
        f2b4297d39da7330910a74abc0449feb45b5c0b9fc23df1430e1898fcf1c4550
  2. 両方のホストで、MACsec 接続を介して接続します。
  3. MACsec 接続を作成します。

    # nmcli connection add type macsec con-name macsec0 ifname macsec0 connection.autoconnect yes macsec.parent enp1s0 macsec.mode psk macsec.mka-cak 50b71a8ef0bd5751ea76de6d6c98c03a macsec.mka-ckn f2b4297d39da7330910a74abc0449feb45b5c0b9fc23df1430e1898fcf1c4550

    前の手順で生成された CAK および CKN を macsec.mka-cak および macsec.mka-ckn パラメーターで使用します。この値は、MACsec で保護されるネットワーク内のすべてのホストで同じである必要があります。

  4. MACsec 接続で IP を設定します。

    1. IPv4 設定を指定します。たとえば、静的 IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを macsec0 接続に設定するには、以下のコマンドを実行します。

      # nmcli connection modify macsec0 ipv4.method manual ipv4.addresses '192.0.2.1/24' ipv4.gateway '192.0.2.254' ipv4.dns '192.0.2.253'
    2. IPv6 設定を指定しますたとえば、静的 IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを macsec0 接続に設定するには、以下のコマンドを実行します。

      # nmcli connection modify macsec0 ipv6.method manual ipv6.addresses '2001:db8:1::1/32' ipv6.gateway '2001:db8:1::fffe' ipv6.dns '2001:db8:1::fffd'
  5. 接続をアクティベートします。

    # nmcli connection up macsec0