Menu Close

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

Red Hat Enterprise Linux 9

Red Hat Enterprise Linux 9 におけるネットワークの設定と管理に関するガイド

概要

本書は、Red Hat Enterprise Linux 9 でネットワークを管理する方法を説明します。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、弊社の CTO、Chris Wright のメッセージ を参照してください。

Red Hat ドキュメントへのフィードバックの提供

ご意見ご要望をお聞かせください。ドキュメントの改善点はございませんか。

  • 特定の部分についての簡単なコメントをお寄せいただく場合は、以下をご確認ください。

    1. ドキュメントの表示が Multi-page HTML 形式になっていて、ドキュメントの右上隅に Feedback ボタンがあることを確認してください。
    2. マウスカーソルで、コメントを追加する部分を強調表示します。
    3. そのテキストの下に表示される Add Feedback ポップアップをクリックします。
    4. 表示される手順に従ってください。
  • Bugzilla を介してフィードバックを送信するには、新しいチケットを作成します。

    1. Bugzilla の Web サイトに移動します。
    2. Component で Documentation を選択します。
    3. Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも記入してください。
    4. Submit Bug をクリックします。

第1章 一貫性のあるネットワークインターフェースデバイスの命名

Red Hat Enterprise Linux は、ネットワークインターフェース用に一貫した予測可能なデバイスの命名方法を提供します。このような機能により、ネットワークインターフェースの検出と区別が容易になります。

カーネルは、固定接頭辞と、カーネルがネットワークデバイスを初期化する際に増加する数を連結させて、ネットワークインターフェースに名前を割り当てます。たとえば、eth0 は、システムの起動時にプローブされる最初のデバイスを表します。ただし、この名前がシャーシのラベルに対応しているとは限りません。複数のネットワークアダプターを使用する最新のサーバープラットフォームでは、このインターフェースの非決定論的および反直感的な命名が行われています。これは、システムボードに組み込まれたネットワークアダプターと、アドインアダプターの両方に影響します。

Red Hat Enterprise Linux では、udev デバイスマネージャーがさまざまな命名規則に対応しています。デフォルトでは、udev は、ファームウェア、トポロジー、場所の情報に基づいて固定名を割り当てます。これには、次の利点があります。

  • デバイス名は完全に予測可能です。
  • ハードウェアを追加または削除しても、再列挙が行われないため、デバイス名は固定されたままになります。
  • 不具合のあるハードウェアをシームレスに交換できます。

1.1. ネットワークインターフェースのデバイス命名階層

一貫したデバイスの命名が有効 (Red Hat Enterprise Linux のデフォルト) になると、udev デバイスマネージャーは以下のスキームに基づいてデバイス名を生成します。

Scheme説明

1

デバイス名には、ファームウェアまたは BIOS が提供するオンボードデバイスのインデックス番号が含まれます。この情報が利用できない、または該当しない場合は、udev によりスキーム 2 が使用されます。

eno1

2

デバイス名には、ファームウェアまたは BIOS が提供する PCI Express (PCIe) ホットプラグインスロットのインデックス番号が含まれます。この情報が利用できない、または該当しない場合は、udev によりスキーム 3 が使用されます。

ens1

3

デバイス名には、ハードウェアのコネクターの物理的な場所が含まれます。この情報が利用できない、または該当しない場合は、udev によりスキーム 5 が使用されます。

enp2s0

4

デバイス名には MAC アドレスが含まれます。Red Hat Enterprise Linux では、デフォルトではこのスキームが使用されません。管理者は、必要に応じて使用できます。

enx525400d5e0fb

5

従来の、予測できないカーネル命名スキーム。udev がその他のスキームを適用できない場合は、デバイスマネージャーによりこのスキームが使用されます。

eth0

Red Hat Enterprise Linux では、デフォルトでは、/usr/lib/systemd/network/99-default.link ファイルの NamePolicy 設定に基づいてデバイス名が選択されます。NamePolicy の値の順序は重要です。Red Hat Enterprise Linux では、そのファイルで指定され、udev が生成した最初のデバイス名が使用されます。

udev ルールを手動で設定し、カーネルデバイス名を変更すると、このルールが優先されます。

1.2. ネットワークデバイスの名前変更の仕組み

デフォルトでは、Red Hat Enterprise Linux では一貫したデバイス命名が有効になっています。udev デバイスマネージャーは、デバイスの名前を変更するさまざまなルールを処理します。以下の一覧では、udev がルールを処理する順番と、ルールを実行するアクションを説明します。

  1. /usr/lib/udev/rules.d/60-net.rules ファイルは、/lib/udev/rename_device ヘルパーユーティリティーが、/etc/sysconfig/network-scripts/ifcfg-* ファイルの HWADDR パラメーターを検索することを定義します。変数に設定した値がインターフェースの MAC アドレスに一致すると、ヘルパーユーティリティーは、インターフェースの名前を、ファイルの DEVICE パラメーターに設定した名前に変更します。このファイルは、initscripts パッケージをインストールした後にのみ存在します。
  2. /usr/lib/udev/rules.d/71-biosdevname.rules ファイルは、biosdevname ユーティリティーが直前の手順で名前が変更されていない場合に、命名ポリシーに従ってインターフェースの名前を変更することを定義します。
  3. /usr/lib/udev/rules.d/75-net-description.rules ファイルは、udev がネットワークインターフェースデバイスを検査し、udev の内部変数のプロパティーが次の手順で処理されることを定義します。このプロパティーの一部は未定義である可能性があることに注意してください。
  4. /usr/lib/udev/rules.d/80-net-setup-link.rules ファイルは net_setup_link udev のビルトインを呼び出し、ポリシーを適用します。以下は、/usr/lib/systemd/network/99-default.link ファイルに保存されているデフォルトポリシーです。

    [Link]
    NamePolicy=kernel database onboard slot path
    MACAddressPolicy=persistent

    このポリシーでは、カーネルが永続名を使用すると、udev がインターフェースの名前を変更します。カーネルが永続名を使用しないと、udev はインターフェースを、udev のハードウェアデータベースが提供する名前に変更します。このデータベースが利用できない場合、Red Hat Enterprise Linux は上記のメカニズムにフォールバックします。

    別の方法では、メディアアクセス制御 (MAC) アドレスベースのインターフェース名に対して、このファイルの NamePolicy パラメーターを mac に設定します。

  5. /usr/lib/udev/rules.d/80-net-setup-link.rules ファイルは、udev が、以下の順番で udev 内のパラメーターに基づいてインターフェースの名前を変更することを定義します。

    1. ID_NET_NAME_ONBOARD
    2. ID_NET_NAME_SLOT
    3. ID_NET_NAME_PATH

    あるパラメーターが設定されていないと、udev は次のパラメーターを使用します。パラメーターが設定されていないと、インターフェースの名前が変更されません。

手順 3 および 4 では、ネットワークインターフェースのデバイス命名階層 で説明されている命名スキーム 1 から 4 を実装します。

関連情報

1.3. x86_64 プラットフォームで説明されている予想可能なネットワークインターフェースのデバイス名

一貫性のあるネットワークデバイス名機能が有効になると、udev デバイスマネージャーは異なる基準に基づいてデバイスの名前を作成します。本セクションでは、Red Hat Enterprise Linux を x86_64 プラットフォームにインストールする場合の命名スキームを説明します。

インターフェース名は、インターフェースの種類に基づいて 2 文字の接頭辞で始まります。

  • イーサネットの場合は en
  • ワイヤレス LAN (WLAN) の場合は wl
  • WWAN (Wireless Wide Area Network) の場合は ww

さらに、udev デバイスマネージャーが適用するスキーマに基づいて、上記の接頭辞のいずれかに、次のいずれかが追加されます。

  • o<on-board_index_number>
  • s<hot_plug_slot_index_number>[f<function>][d<device_id>]

    すべての多機能 PCI デバイスには、関数 0 デバイスを含め、デバイス名に [f<function>] 番号がある点に注意してください。

  • x<MAC_address>
  • [P<domain_number>]p<bus>s<slot>[f<function>][d<device_id>]

    [P<domain_number>] の部分は、PCI の地理的な場所を定義します。この部分は、ドメイン番号が 0 でない場合にのみ設定されます。

  • [P<domain_number>]p<bus>s<slot>[f<function>][u<usb_port>][…​][c<config>][i<interface>]

    USB デバイスの場合は、ハブのポート番号の完全なチェーンで構成されます。名前が最大 (15 文字) より長い場合、この名前はエクスポートされません。チェーンに複数の USB デバイスがある場合、udev は USB 設定記述子 (c1) および USB インターフェース記述子 (i0) のデフォルト値を表示しません。

1.4. System z プラットフォームで予測可能なネットワークインターフェースデバイス名

一貫性のあるネットワークデバイス名機能が有効になると、System z プラットフォームの udev デバイスマネージャーにより、バス ID に基づいてデバイス名が作成されます。バス ID は、s390 チャンネルサブシステム内のデバイスを識別します。

CCW (Channel Command Word) デバイスの場合、バス ID は、先頭に 0.n 接頭辞が付いたデバイス番号です。ここで n は、サブチャンネルのセット ID です。

イーサネットインターフェースの名前は enccw0.0.1234 などになります。SLIP (Serial Line Internet Protocol) の CTC (Channel-to-Channel) ネットワークデバイスの名前は、slccw0.0.1234 などになります。

znetconf -c コマンドまたは lscss -a コマンドを使用して、利用可能なネットワークデバイスとそのバス ID を表示します。

1.5. インストール時の一貫性のあるインターフェースデバイスの命名の無効化

本セクションは、インストール時に、一貫性のあるインターフェースデバイスの命名を無効にする方法を説明します。

警告

Red Hat では、一貫したデバイス命名を無効にしないことを推奨しており、複数のネットワークインターフェースを持つホストではこの機能をサポートしていません。一貫性のあるデバイスの命名を無効にすると、さまざまな問題が発生する可能性があります。たとえば、別のネットワークインターフェースカードをシステムに追加する場合は、eth0 などのカーネルデバイス名の割り当てが修正されなくなります。したがって、システムの再起動後に、カーネルに別の名前を付けることができます。

手順

  1. Red Hat Enterprise Linux 9 インストールメディアを起動します。
  2. ブートマネージャーで Install Red Hat Enterprise Linux 9 を選択し、Tab キーを押してエントリーを編集します。
  3. net.ifnames=0 パラメーターをカーネルコマンドラインに追加します。

    vmlinuz... net.ifnames=0
  4. Enter を押してインストールを開始します。

1.6. インストール済みのシステムでの一貫したインターフェイスデバイスの命名を無効にする

本セクションでは、インストール済みの RHEL システムで、一貫したインターフェースデバイスの命名を無効にする方法を説明します。

警告

Red Hat では、一貫したデバイス命名を無効にしないことを推奨しており、複数のネットワークインターフェースを持つホストではこの機能をサポートしていません。一貫したデバイス命名を無効にすると、さまざまな種類の問題が発生する可能性があります。たとえば、別のネットワークインターフェースカードをシステムに追加する場合は、eth0 などのカーネルデバイス名の割り当てが修正されなくなります。したがって、システムの再起動後に、カーネルに別の名前を付けることができます。

前提条件

  • システムが、一貫性のあるインターフェースデバイスの命名を使用している (デフォルト)。

手順

  1. /etc/default/grub ファイルを編集し、net.ifnames=0 パラメーターを GRUB_CMDLINE_LINUX 変数に追加します。

    GRUB_CMDLINE_LINUX="... net.ifnames=0"
  2. grub.cfg ファイルを再構築します。

    • システムで UEFI ブートモードを使用している場合は、次のコマンドを実行します。

      # grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
    • システムでレガシーブートモードを使用している場合は、次のコマンドを実行します。

      # grub2-mkconfig -o /boot/grub2/grub.cfg
  3. 現在のプロファイル名と、関連付けられているデバイス名を表示します。

    # nmcli -f NAME,DEVICE,FILENAME connection show
    NAME           DEVICE  FILENAME
    System enp1s0  enp1s0  /etc/sysconfig/network-scripts/ifcfg-enp1s0
    System enp7s0  enp7s0  /etc/NetworkManager/system-connections/enp7s0.nmconnection

    どのプロファイル名および設定ファイルが各デバイスに関連付けられているかに注意してください。

  4. すべてのコネクションプロファイルから HWADDR パラメーターを削除します。

    # sed -i '/^HWADDR=/d' /etc/sysconfig/network-scripts/ifcfg-enp1s0 /etc/NetworkManager/system-connections/enp7s0.nmconnection
  5. イーサネットデバイスに関連付けられている MAC アドレスを表示します。

    # ip link show
    ...
    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:53:00:c5:98:1c brd ff:ff:ff:ff:ff:ff
    3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:53:00:b6:87:c6 brd ff:ff:ff:ff:ff:ff
  6. ホストを再起動します。

    # reboot
  7. 再起動したら、イーサネットデバイスを表示し、MAC アドレスに基づいて新しいインターフェース名を識別します。

    # ip link show
    ...
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:53:00:b6:87:c6 brd ff:ff:ff:ff:ff:ff
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:53:00:c5:98:1c brd ff:ff:ff:ff:ff:ff

    現在の出力を、以前の出力と比較する場合は、以下を行います。

    • インターフェース enp7s0 (MAC アドレス 00:53:00:b6:87:c6) の名前が eth0 になりました。
    • インターフェース enp1s0 (MAC アドレス 00:53:00:c5:98:1c) の名前が eth1 になりました。
  8. 設定ファイルの名前を変更します。

    # mv /etc/NetworkManager/system-connections/enp7s0.nmconnection /etc/NetworkManager/system-connections/eth0.nmconnection
    # mv /etc/sysconfig/network-scripts/ifcfg-enp1s0 /etc/sysconfig/network-scripts/ifcfg-eth1
  9. NetworkManager の再読み込み:

    # nmcli connection reload
  10. 設定ファイルにプロファイル名が設定されていない場合、NetworkManager はデフォルト値を使用します。接続の名前を変更して再読み込みした後に、現在のプロファイル名を確認するには、次のコマンドを実行します。

    # nmcli -f NAME,DEVICE,FILENAME connection show
    NAME           FILENAME
    System enp7s0  /etc/NetworkManager/system-connections/eth0.nmconnection
    System enp1s0  /etc/sysconfig/network-scripts/ifcfg-eth1

    次の手順でプロファイル名を使用する必要があります。

  11. NetworkManager の接続プロファイルの名前を変更し、各プロファイルのインターフェース名を更新します。

    # nmcli connection modify "System enp7s0" connection.id eth0 connection.interface-name eth0
    # nmcli connection modify "System enp1s0" connection.id eth1 connection.interface-name eth1
  12. NetworkManager 接続を再アクティブ化します。

    # nmcli connection up eth0
    # nmcli connection up eth1

1.7. Customizing the prefix of Ethernet interfaces

Red Hat Enterprise Linux のインストール時に、イーサネットインターフェース名の接頭辞をカスタマイズできます。

重要

Red Hat は、デプロイ済みシステムで prefixdevname ユーティリティーを使用した接頭辞のカスタマイズをサポートしていません。

RHEL のインストール後、udev サービスは、イーサネットデバイスに <prefix>.<index> という名前を付けます。たとえば、接頭辞 net を選択すると、RHEL はイーサネットインターフェースの名前を net0net1 などに設定します。

前提条件

  • 設定する接頭辞は、以下の要件を満たします。

    • ASCII 文字で構成される。
    • 英数字の文字列である。
    • 16 文字より短い。
    • ethenoens、および em など、ネットワークインターフェースの命名に使用される他の周知の接頭辞と競合しない。

手順

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

    1. Install Red Hat Enterprise Linux <version> のエントリーを選択し、Tab を押してエントリーを編集します。
    2. net.ifnames.prefix=<prefix> をカーネルオプションに追加します。
    3. 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:53:00:c5:98:1c brd ff:ff:ff:ff:ff:ff
    3: net1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:53:00:c2:39:9e brd ff:ff:ff:ff:ff:ff
    ...

1.8. udev ルールを使用したユーザー定義のネットワークインターフェイス名の割り当て

udev デバイスマネージャーは、インターフェイス名をカスタマイズするための一連のルールをサポートしています。

手順

  1. すべてのネットワークインターフェイスとその MAC アドレスを表示します。

    # ip link list
    
    enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether b4:96:91:14:ae:58 brd ff:ff:ff:ff:ff:ff
    enp6s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether b4:96:91:14:ae:5a brd ff:ff:ff:ff:ff:ff
    enp4s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:90:fa:6a:7d:90 brd ff:ff:ff:ff:ff:ff
  2. 次のコンテンツでファイル /etc/udev/rules.d/70-custom-ifnames.rules を作成します。

    SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="b4:96:91:14:ae:58",ATTR{type}=="1",NAME="provider0"
    SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="b4:96:91:14:ae:5a",ATTR{type}=="1",NAME="provider1"
    SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="00:90:fa:6a:7d:90",ATTR{type}=="1",NAME="dmz"

    これらのルールはネットワークインターフェイスの MAC アドレスと一致し、NAME プロパティーで指定された名前に変更します。これらの例では、ATTR{type} パラメーター値 1 は、インターフェイスがイーサネットタイプであることを定義しています。

検証

  1. システムを再起動します。

    # reboot
  2. 各 MAC アドレスのインターフェイス名が、ルールファイルの NAME パラメーターで設定した値と一致することを確認します。

    # ip link show
    
    provider0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether b4:96:91:14:ae:58 brd ff:ff:ff:ff:ff:ff
       altname enp6s0f0
    provider1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether b4:96:91:14:ae:5a brd ff:ff:ff:ff:ff:ff
        altname enp6s0f1
    dmz: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 00:90:fa:6a:7d:90 brd ff:ff:ff:ff:ff:ff
        altname enp4s0f0

関連情報

  • udev(7) man ページ
  • udevadm(8) man page
  • /usr/src/kernels/<kernel_version>/include/uapi/linux/if_arp.h は、kernel-doc パッケージによって提供されます

1.10. 関連情報

  • udev デバイスマネージャーの詳細は、man ページの udev(7) を参照してください。

第2章 NetworkManager の使用

デフォルトでは、RHEL は NetworkManager を使用して、ネットワーク設定と接続を管理します。

2.1. NetworkManager を使用する利点

NetworkManager を使用する主な利点は、次の通りです。

  • ネットワーク設定と状態にクエリーと制御を可能にする、D-Bus を介した API を提供します。この方法では、複数のアプリケーションでネットワークを確認して設定し、ネットワークステータスを同期して最新にすることができます。たとえば、Web ブラウザー経由でサーバーを監視して設定する RHEL Web コンソールは、NetworkManager の D-BUS インターフェースを使用して、ネットワークの設定および Gnome GUI ツール、nmcli ツール、および nm-connection-editor ツールを使用します。このツールのいずれかに対する変更はすべて、残りのツールにより検出されます。
  • ネットワーク管理が容易になります。NetworkManager は、ネットワーク接続を確実に機能させます。NetworkManager は、システムにネットワーク設定がなく、ネットワークデバイスがあることを検出すると、一時的な接続を作成して接続を提供します。
  • ユーザーの接続設定が容易になります。NetworkManager は、GUI、nmtui、nmcli などのさまざまなツールにより管理機能を提供します。
  • 柔軟な設定に対応します。たとえば、WiFi インターフェースを設定すると、NetworkManager は使用可能な WiFi ネットワークをスキャンして表示します。インターフェースを選択すると、NetworkManager が、再起動プロセス後の自動接続を提供するのに必要な資格情報を表示します。NetworkManager では、ネットワークエイリアス、IP アドレス、静的ルート、DNS 情報、VPN 接続のほかに、接続固有のパラメーターを多数設定できます。設定オプションは、必要に応じて修正できます。
  • 再起動プロセス後もデバイスの状態を維持し、再起動中に管理モードに設定されているインターフェースを引き継ぎます。
  • 明示的に管理対象外として設定されていませんが、ユーザーまたは他のネットワークサービスによって手動で制御されているデバイスを処理します。

2.2. NetworkManager 接続の管理に使用できるユーティリティーおよびアプリケーションの概要

以下のユーティリティーおよびアプリケーションを使用して、NetworkManager 接続を管理できます。

  • nmcli:接続を管理するコマンドラインユーティリティー。
  • nmtui:パスワードベースのテキストユーザーインターフェース (TUI)。このアプリケーションを使用するには、NetworkManager-tui パッケージをインストールします。
  • nm-connection-editor:NetworkManager 関連のタスクのグラフィカルユーザーインターフェース (GUI)。このアプリケーションを起動するには、GNOME セッションの端末に nm-connection-editor と入力します。
  • control-center:デスクトップユーザー用に GNOME シェルによって提供される GUI。このアプリケーションは nm-connection-editor よりも対応している機能が少ないことに注意してください。
  • GNOME シェルの network connection icon:このアイコンは、ネットワーク接続の状態を表し、使用している接続の種類を視覚的に表示します。

第3章 特定のデバイスを無視するように NetworkManager の設定

デフォルトでは、NetworkManager は lo (loopback) デバイス以外のすべてのデバイスを管理します。ただし、特定のデバイスを unmanaged に設定すると、NetworkManager がこのデバイスを無視するように設定できます。この設定では、スクリプトなどを使用して、このデバイスを手動で管理できます。

3.1. NetworkManager でデバイスを管理対象外として永続的に設定

インターフェース名、MAC アドレス、デバイスタイプなど、複数の基準に基づいてデバイスを 管理対象外 として設定できます。この手順では、NetworkManager で、enp1s0 インターフェースを 管理対象外 として永続的に設定する方法を説明します。

ネットワークデバイスを一時的に unmanaged として設定する場合は、Temporarily configuring a device as unmanaged in NetworkManager を参照してください。

手順

  1. オプション:デバイスの一覧を表示して、unmanaged に設定するデバイスを特定します。

    # nmcli device status
    DEVICE  TYPE      STATE         CONNECTION
    enp1s0  ethernet  disconnected  --
    ...
  2. 以下の内容で /etc/NetworkManager/conf.d/99-unmanaged-devices.conf ファイルを作成します。

    [keyfile]
    unmanaged-devices=interface-name:enp1s0

    複数のデバイスを管理対象外に設定するには、unmanaged-devices パラメーターのエントリーをセミコロンで区切ります。

    [keyfile]
    unmanaged-devices=interface-name:interface_1;interface-name:interface_2;...
  3. NetworkManager サービスを再読み込みします。

    # systemctl reload NetworkManager

検証手順

  • デバイスの一覧を表示します。

    # nmcli device status
    DEVICE  TYPE      STATE      CONNECTION
    enp1s0  ethernet  unmanaged  --
    ...

    enp1s0 デバイスの横にある 管理対象外 状態は、NetworkManager がこのデバイスを管理していないことを示しています。

関連情報

  • NetworkManager.conf(5) の man ページの Device List Format セクション

3.2. NetworkManager でデバイスを管理対象外として一時的に設定

インターフェース名、MAC アドレス、デバイスタイプなど、複数の基準に基づいてデバイスを 管理対象外 として設定できます。この手順では、NetworkManager で、enp1s0 インターフェースを unmanaged として一時的に設定する方法を説明します。

この方法は、たとえば、テスト目的で使用します。ネットワークデバイスを unmanaged に応じて永続的に設定するには、Permanently configuring a device as unmanaged in NetworkManager を参照してください。

手順

  1. オプション:デバイスの一覧を表示して、unmanaged に設定するデバイスを特定します。

    # nmcli device status
    DEVICE  TYPE      STATE         CONNECTION
    enp1s0  ethernet  disconnected  --
    ...
  2. enp1s0 デバイスを unmanaged の状態に設定します。

    # nmcli device set enp1s0 managed no

検証手順

  • デバイスの一覧を表示します。

    # nmcli device status
    DEVICE  TYPE      STATE      CONNECTION
    enp1s0  ethernet  unmanaged  --
    ...

    enp1s0 デバイスの横にある 管理対象外 状態は、NetworkManager がこのデバイスを管理していないことを示しています。

関連情報

  • NetworkManager.conf(5) の man ページの Device List Format セクション

第4章 Using nmtui to manage network connections using a text-based interface

nmtui アプリケーションは、NetworkManager のテキストユーザーインターフェース (TUI) です。本章では、nmtui を使用してネットワークインターフェースを設定する方法を説明します。

注記

nmtui アプリケーションは、すべての接続タイプに対応していません。特に、802.1X 認証を必要とする VPN 接続またはイーサネット接続を追加または変更することはできません。

4.1. nmtui ユーティリティーの起動

この手順では、NetworkManager テキストユーザーインターフェース nmtui を起動する方法を説明します。

前提条件

  • NetworkManager-tui パッケージがインストールされている。

手順

  1. nmtui を起動するには、次のコマンドを実行します。

    # nmtui
    nmtui でのオプションの選択
  2. 以下に移動します。

    • カーソルを使用するか Tab を押して次に進むか、Shift+Tab を押して前に戻ります。
    • Enter を押してオプションを選択します。
    • Space バーを使用して、チェックボックスのステータスを切り替えます。

4.2. nmtui を使用した接続プロファイルの追加

nmtui アプリケーションで、NetworkManager へのテキストユーザーインターフェースが含まれます。この手順では、新しい接続プロファイルを追加する方法を説明します。

前提条件

  • NetworkManager-tui パッケージがインストールされている。

手順

  1. NetworkManager のテキストユーザーインターフェースユーティリティーを起動します。

    # nmtui
  2. 接続の編集 メニューエントリーを選択し、Enter を押します。
  3. Add ボタンを選択し、Enter を押します。
  4. Ethernet を選択し、Enter を押します。
  5. フィールドにコネクションの詳細を入力します。

    nmtui で接続の追加
  6. OK をクリックして変更を保存します。
  7. Back を選択してメインメニューに戻ります。
  8. Activate a connection を選択し、Enter を押します。
  9. 新しい接続エントリーを選択し、Enter を押して接続をアクティベートします。
  10. Back を選択してメインメニューに戻ります。
  11. Quit を選択します。

検証手順

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

    # nmcli device status
    DEVICE      TYPE      STATE      CONNECTION
    enp1s0      ethernet  connected  Example-Connection
  2. 接続プロファイルのすべての設定を表示するには、次のコマンドを実行します。

    # nmcli connection show Example-Connection
    connection.id:              Example-Connection
    connection.uuid:            b6cdfa1c-e4ad-46e5-af8b-a75f06b79f76
    connection.stable-id:       --
    connection.type:            802-3-ethernet
    connection.interface-name:  enp1s0
    ...

    ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager を起動するか再起動して、インメモリー接続を作成することで、デバイスの設定を反映します。詳細と、この問題を回避する方法は、「NetworkManager duplicates a connection after restart of NetworkManager service」 を参照してください。

    関連情報

4.3. nmtui で編集済み接続への変更の適用

nmtui で接続を修正したら、接続を再度アクティブにする必要があります。nmtui で接続を再有効にすると、一時的に接続が非アクティブになることに注意してください。

前提条件

  • 接続プロファイルで自動接続設定が有効になっていません。

手順

  1. メインメニューで、Activate a connection メニューエントリーを選択します。

    nmtui 接続のアクティブ化
  2. 修正した接続を選択します。
  3. 右側で Deactivate ボタンを選択し、Enter を押します。

    nmtui で修正した接続の無効化
  4. 接続を再度選択します。
  5. 右側で Activate ボタンを選択し、Enter を押します。

    nmtui で修正した接続をアクティブに

第5章 nmcli の使用

本セクションでは、nmcli ユーティリティーに関する一般的な情報を説明します。

5.1. nmcli における出力形式

nmcli ユーティリティーは、nmcli コマンドの出力を修正するさまざまなオプションに対応します。このオプションを使用すると、必要な情報のみを表示できます。これにより、スクリプトの出力の処理が容易になります。

デフォルトでは、nmcli ユーティリティーは、出力をテーブルのような形式で表示します。

# nmcli device
DEVICE  TYPE      STATE      CONNECTION
enp1s0  ethernet  connected  enp1s0
lo      loopback  unmanaged  --

-f オプションを使用すると、特定の列をカスタム順序で表示できます。たとえば、DEVICE 列および STATE 列のみを表示するには、次のコマンドを実行します。

# nmcli -f DEVICE,STATE device
DEVICE  STATE
enp1s0  connected
lo      unmanaged

-t オプションを指定すると、出力の個別のフィールドをコロンで区切って表示できます。

# nmcli -t device
enp1s0:ethernet:connected:enp1s0
lo:loopback:unmanaged:

-f-t を組み合わせて、コロン区切り形式で特定のフィールドのみを表示すると、スクリプトで出力を処理する場合に便利です。

# nmcli -f DEVICE,STATE -t device
enp1s0:connected
lo:unmanaged

5.2. nmcli でタブ補完の使用

ホストに bash-completion パッケージがインストールされている場合は、nmcli ユーティリティーがタブ補完に対応します。これにより、オプション名を自動補完し、可能なオプションおよび値を特定できます。

たとえば、nmcli con と入力して Tab を押すと、シェルが自動的に nmcli connection に対してコマンドを完了します。

補完では、入力したオプションまたは値が一意である必要があります。一意でない場合は、nmcli がすべての可能性を表示します。たとえば、nmcli connection d と入力して Tab を押すと、コマンドが、可能なオプションとして delete および down を表示します。

タブ補完を使用して、接続プロファイルに設定できるプロパティーをすべて表示することもできます。たとえば、nmcli connection modify connection_name と入力して Tab を押すと、利用可能なプロパティーの完全リストが表示されます。

5.3. nmcli でよく使用されるコマンド

頻繁に使用する nmcli コマンドの概要を以下に示します。

  • リスト接続プロファイルを表示するには、次のコマンドを実行します。

    # nmcli connection show
    NAME    UUID                                  TYPE      DEVICE
    enp1s0  45224a39-606f-4bf7-b3dc-d088236c15ee  ethernet  enp1s0
  • 特定の接続プロファイルの設定を表示するには、次のコマンドを実行します。

    # nmcli connection show connection_name
    connection.id:             enp1s0
    connection.uuid:           45224a39-606f-4bf7-b3dc-d088236c15ee
    connection.stable-id:      --
    connection.type:           802-3-ethernet
    ...
  • 接続のプロパティーを変更するには、次のコマンドを実行します。

    # nmcli connection modify connection_name property value

    複数のプロパティー の組み合わせをコマンドに渡すと、1 つのコマンドを使用して複数のプロパティーを変更できます。

  • ネットワークデバイスの一覧、その状態、およびデバイスを使用する接続プロファイルを表示するには、次のコマンドを実行します。

    # nmcli device
    DEVICE  TYPE      STATE         CONNECTION
    enp1s0  ethernet  connected     enp1s0
    enp8s0  ethernet  disconnected  --
    enp7s0  ethernet  unmanaged     --
    ...
  • 接続を有効にするには、次のコマンドを実行します。

    # nmcli connection up connection_name
  • 接続を無効にするには、次のコマンドを実行します。

    # nmcli connection down connection_name

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

本セクションでは、静的および動的の IP アドレスでイーサネット接続を構成するさまざまな方法を説明します。

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

この手順では、nmcli ユーティリティーを使用して、以下の設定でイーサネット接続を追加する方法を説明します。

  • 静的 IPv4 アドレス: /24 サブネットマスクを持つ 192.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

手順

  1. Ethernet 接続の NetworkManager 接続プロファイルを新たに追加します。

    # nmcli connection add con-name Example-Connection ifname enp7s0 type ethernet

    以下の手順は、作成した Example-Connection 接続プロファイルを変更します。

  2. IPv4 アドレスを設定します。

    # nmcli connection modify Example-Connection ipv4.addresses 192.0.2.1/24
  3. IPv6 アドレスを設定します。

    # nmcli connection modify Example-Connection ipv6.addresses 2001:db8:1::1/64
  4. IPv4 および IPv6 接続メソッドを manual に設定します。

    # nmcli connection modify Example-Connection ipv4.method manual
    # nmcli connection modify Example-Connection ipv6.method manual
  5. IPv4 および IPv6 のデフォルトゲートウェイを設定します。

    # nmcli connection modify Example-Connection ipv4.gateway 192.0.2.254
    # nmcli connection modify Example-Connection ipv6.gateway 2001:db8:1::fffe
  6. IPv4 および IPv6 DNS サーバーアドレスを設定します。

    # nmcli connection modify Example-Connection ipv4.dns "192.0.2.200"
    # nmcli connection modify Example-Connection ipv6.dns "2001:db8:1::ffbb"

    複数の DNS サーバーを設定するには、空白で区切って引用符で囲みます。

  7. IPv4 および IPv6 接続の DNS 検索ドメインを設定します。

    # nmcli connection modify Example-Connection ipv4.dns-search example.com
    # nmcli connection modify Example-Connection ipv6.dns-search example.com
  8. 接続プロファイルをアクティベートします。

    # nmcli connection up Example-Connection
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/13)

検証手順

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

    # nmcli device status
    DEVICE      TYPE      STATE      CONNECTION
    enp7s0      ethernet  connected  Example-Connection
  2. 接続プロファイルのすべての設定を表示するには、次のコマンドを実行します。

    # nmcli connection show Example-Connection
    connection.id:              Example-Connection
    connection.uuid:            b6cdfa1c-e4ad-46e5-af8b-a75f06b79f76
    connection.stable-id:       --
    connection.type:            802-3-ethernet
    connection.interface-name:  enp7s0
    ...
  3. ping ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。

    • 同じサブネットの IP アドレスに ping します。

      IPv4 の場合:

      # ping 192.0.2.3

      IPv6 の場合:

      # ping 2001:db8:1::2

      コマンドが失敗した場合は、IP およびサブネットの設定を確認します。

    • リモートサブネットの IP アドレスに ping します。

      IPv4 の場合:

      # ping 198.162.3.1

      IPv6 の場合:

      # ping 2001:db8:2::1
      • コマンドが失敗した場合は、デフォルトゲートウェイに ping して設定を確認します。

        IPv4 の場合:

        # ping 192.0.2.254

        IPv6 の場合:

        # ping 2001:db8:1::fff3
  4. host ユーティリティーを使用して名前解決が機能することを確認します。以下に例を示します。

    # host client.example.com

    connection timed outno servers could be reached など、コマンドがエラーを返した場合は、DNS 設定を確認してください。

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

  1. 接続に失敗するか、ネットワークインターフェースが up と down の状態の間で切り替わる場合は、以下を行います。

    • ネットワークケーブルがホストとスイッチにプラグインされていることを確認します。
    • リンクの失敗がこのホストのみに存在するか、またはサーバーの接続先と同じスイッチに接続されている他のホストでも存在するかどうかを確認します。
    • ネットワークケーブルとネットワークインターフェースが予想どおりに機能していることを確認します。ハードウェア診断手順を実施して、不具合ケーブルとネットワークインターフェースカードを置き換えます。
    • ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager を起動するか再起動して、インメモリー接続を作成することで、デバイスの設定を反映します。詳細と、この問題を回避する方法は、「 NetworkManager duplicates a connection after restart of NetworkManager service」を参照してください。

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

この手順では、nmcli 対話モードを使用して、以下の設定でイーサネット接続を追加する方法を説明します。

  • 静的 IPv4 アドレス: /24 サブネットマスクを持つ 192.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

手順

  1. イーサネット接続に新しい NetworkManager 接続プロファイルを追加して、対話モードを開始するには、次のコマンドを実行します。

    # nmcli connection edit type ethernet con-name Example-Connection
  2. ネットワークインターフェースを設定します。

    nmcli> set connection.interface-name enp7s0
  3. IPv4 アドレスを設定します。

    nmcli> set ipv4.addresses 192.0.2.1/24
  4. IPv6 アドレスを設定します。

    nmcli> set ipv6.addresses 2001:db8:1::1/64
  5. IPv4 および IPv6 接続メソッドを manual に設定します。

    nmcli> set ipv4.method manual
    nmcli> set ipv6.method manual
  6. IPv4 および IPv6 のデフォルトゲートウェイを設定します。

    nmcli> set ipv4.gateway 192.0.2.254
    nmcli> set ipv6.gateway 2001:db8:1::fffe
  7. IPv4 および IPv6 DNS サーバーアドレスを設定します。

    nmcli> set ipv4.dns 192.0.2.200
    nmcli> set ipv6.dns 2001:db8:1::ffbb

    複数の DNS サーバーを設定するには、空白で区切って引用符で囲みます。

  8. IPv4 および IPv6 接続の DNS 検索ドメインを設定します。

    nmcli> set ipv4.dns-search example.com
    nmcli> set ipv6.dns-search example.com
  9. 接続をアクティベートして保存します。

    nmcli> save persistent
    Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection.
    Do you still want to save? (yes/no) [yes] yes
  10. インタラクティブモードを終了します。

    nmcli> quit

検証手順

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

    # nmcli device status
    DEVICE      TYPE      STATE      CONNECTION
    enp7s0      ethernet  connected  Example-Connection
  2. 接続プロファイルのすべての設定を表示するには、次のコマンドを実行します。

    # nmcli connection show Example-Connection
    connection.id:              Example-Connection
    connection.uuid:            b6cdfa1c-e4ad-46e5-af8b-a75f06b79f76
    connection.stable-id:       --
    connection.type:            802-3-ethernet
    connection.interface-name:  enp7s0
    ...
  3. ping ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。

    • 同じサブネットの IP アドレスに ping します。

      IPv4 の場合:

      # ping 192.0.2.3

      IPv6 の場合:

      # ping 2001:db8:1::2

      コマンドが失敗した場合は、IP およびサブネットの設定を確認します。

    • リモートサブネットの IP アドレスに ping します。

      IPv4 の場合:

      # ping 198.162.3.1

      IPv6 の場合:

      # ping 2001:db8:2::1
      • コマンドが失敗した場合は、デフォルトゲートウェイに ping して設定を確認します。

        IPv4 の場合:

        # ping 192.0.2.254

        IPv6 の場合:

        # ping 2001:db8:1::fff3
  4. host ユーティリティーを使用して名前解決が機能することを確認します。以下に例を示します。

    # host client.example.com

    connection timed outno servers could be reached など、コマンドがエラーを返した場合は、DNS 設定を確認してください。

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

  1. 接続に失敗するか、ネットワークインターフェースが up と down の状態の間で切り替わる場合は、以下を行います。

    • ネットワークケーブルがホストとスイッチにプラグインされていることを確認します。
    • リンクの失敗がこのホストのみに存在するか、またはサーバーの接続先と同じスイッチに接続されている他のホストでも存在するかどうかを確認します。
    • ネットワークケーブルとネットワークインターフェースが予想どおりに機能していることを確認します。ハードウェア診断手順を実施して、不具合ケーブルとネットワークインターフェースカードを置き換えます。

ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager を起動するか再起動して、インメモリー接続を作成することで、デバイスの設定を反映します。詳細と、この問題を回避する方法は、「 NetworkManager duplicates a connection after restart of NetworkManager service」を参照してください。

6.3. nmstatectl を使用した静的イーサネット接続の設定

この手順では、nmstatectl ユーティリティーを使用した以下の設定で、enp7s0 デバイスのイーサネット接続を設定する方法を説明します。

  • 静的 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

nmstatectl ユーティリティーを使用すると、設定後にその設定結果が設定ファイルと同じになります。何らかの障害が発生した場合には、nmstatectl は自動的に変更をロールバックし、システムが不正な状態のままにならないようにします。

手順では、YAML 形式でインターフェース設定を定義します。または、JSON 形式で設定を指定することもできます。

前提条件

  • nmstate パッケージがインストールされている。

手順

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

    ---
    interfaces:
    - name: enp7s0
      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: enp7s0
      - destination: ::/0
        next-hop-address: 2001:db8:1::fffe
        next-hop-interface: enp7s0
    dns-resolver:
      config:
        search:
        - example.com
        server:
        - 192.0.2.200
        - 2001:db8:1::ffbb
  2. 設定をシステムに適用します。

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

検証手順

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

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

    # nmcli connection show enp7s0
    connection.id:              enp7s0
    connection.uuid:            b6cdfa1c-e4ad-46e5-af8b-a75f06b79f76
    connection.stable-id:       --
    connection.type:            802-3-ethernet
    connection.interface-name:  enp7s0
    ...
  3. 接続設定を YAML 形式で表示します。

    # nmstatectl show enp7s0

関連情報

  • man ページの nmstatectl(8)
  • /usr/share/doc/nmstate/examples/

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

この手順では、Networking の RHEL システムロールを使用し、Ansible Playbook を実行して以下の設定でenp7s0 インターフェースにイーサネット接続をリモートで追加する方法を説明します。

  • 静的 IPv4 アドレス: /24 サブネットマスクを持つ 192.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

Ansible コントロールノードで以下の手順を実行します。

前提条件

  • ansible-core パッケージおよび rhel-system-roles パッケージが制御ノードにインストールされている。
  • Playbook の実行時に root 以外のリモートユーザーを使用する場合は、管理ノードで適切な sudo パーミッションが付与される。
  • ホストは NetworkManager を使用してネットワークを設定している。

手順

  1. Playbook の命令を実行するホストのインベントリーがまだ指定されていない場合は、そのホストの IP または名前を Ansible インベントリーファイル /etc/ansible/hosts に追加します。

    node.example.com
  2. ~/ethernet-static-IP.yml ファイルを以下の内容で作成します。

    ---
    - name: Configure an Ethernet connection with static IP
      hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: rhel-system-roles.network
    
        vars:
          network_connections:
            - name: enp7s0
              interface_name: enp7s0
              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
  3. Playbook を実行します。

    • root ユーザーとして管理対象ホストに接続するには、次のコマンドを実行します。

      # ansible-playbook -u root ~/ethernet-static-IP.yml
    • 管理ホストにユーザーとして接続するには、次のコマンドを実行します。

      # ansible-playbook -u user_name --ask-become-pass ~/ethernet-static-IP.yml

      --ask-become-pass オプションは、ansible-playbook コマンドが -u user_name オプションで定義したユーザーの sudo パスワードを要求するようにします。

    -u user_name オプションを指定しないと、ansible-playbook は、コントロールノードに現在ログインしているユーザーとして管理ホストに接続します。

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md
  • ansible-playbook(1) の man ページ

6.5. デバイスパスで RHEL システムロールを使用した静的イーサネット接続の設定

この手順では、RHEL システムロール を使用して、Ansible Playbook を実行することにより、特定のデバイスパスに一致するデバイスの静的 IP アドレスでイーサネット接続をリモートで追加する方法を説明します。

デバイスパスは、次のコマンドで識別できます。

# udevadm info /sys/class/net/<device_name> | grep ID_PATH=

この手順では、PCI ID 0000:00:0[1-3].0 式に一致するが、0000:00:02.0 には一致しないデバイスーに、次の設定を設定します。

  • 静的 IPv4 アドレス: /24 サブネットマスクを持つ 192.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

Ansible コントロールノードで以下の手順を実行します。

前提条件

  • ansible-core パッケージおよび rhel-system-roles パッケージが制御ノードにインストールされている。
  • Playbook の実行時に root 以外のリモートユーザーを使用する場合は、管理ノードで適切な sudo パーミッションが付与される。
  • ホストは NetworkManager を使用してネットワークを設定している。

手順

  1. Playbook の命令を実行するホストのインベントリーがまだ指定されていない場合は、そのホストの IP または名前を Ansible インベントリーファイル /etc/ansible/hosts に追加します。

    node.example.com
  2. ~/ethernet-dynamic-IP.yml Playbook を以下の内容で作成します。

    ---
    - name: Configure an Ethernet connection with dynamic IP
      hosts: node.example.com
      become: true
      tasks:
      - 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

    この例の match パラメーターは、Ansible が PCI ID 0000:00:0[1-3].0 に一致するデバイスに再生を適用するが、0000:00:02.0 には適用しないことを定義します。使用できる特殊な修飾子およびワイルドカードの詳細は、/usr/share/ansible/roles/rhel-system-roles.network/README.md ファイルーの match パラメーターの説明を参照してください。

  3. Playbook を実行します。

    • root ユーザーとして管理対象ホストに接続するには、次のコマンドを実行します。

      # ansible-playbook -u root ~/ethernet-dynamic-IP.yml
    • 管理ホストにユーザーとして接続するには、次のコマンドを実行します。

      # ansible-playbook -u user_name --ask-become-pass ~/ethernet-dynamic-IP.yml

      --ask-become-pass オプションは、ansible-playbook コマンドが -u user_name オプションで定義したユーザーの sudo パスワードを要求するようにします。

    -u user_name オプションを指定しないと、ansible-playbook は、コントロールノードに現在ログインしているユーザーとして管理ホストに接続します。

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイル
  • ansible-playbook(1) の man ページ

6.6. nmcli で動的イーサネット接続の設定

この手順では、nmcli ユーティリティーを使用して、動的イーサネット接続を追加する方法を説明します。この設定では、NetworkManager はこの接続の IP 設定を DHCP サーバーから要求します。

前提条件

  • DHCP サーバーをネットワークで使用できる。

手順

  1. Ethernet 接続の NetworkManager 接続プロファイルを新たに追加します。

    # nmcli connection add con-name Example-Connection ifname enp7s0 type ethernet
  2. 必要に応じて、Example-Connection プロファイルを使用するときに NetworkManager が DHCP サーバーに送信するホスト名を変更します。

    # nmcli connection modify Example-Connection ipv4.dhcp-hostname Example ipv6.dhcp-hostname Example
  3. 必要に応じて、Example-Connection プロファイルを使用するときに NetworkManager が IPv4 DHCP サーバーに送信するクライアント ID を変更します。

    # nmcli connection modify Example-Connection ipv4.dhcp-client-id client-ID

    IPv6 には dhcp-client-id パラメーターがないことに注意してください。IPv6 の識別子を作成するには、dhclient サービスを構成します。

検証手順

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

    # nmcli device status
    DEVICE      TYPE      STATE      CONNECTION
    enp7s0      ethernet  connected  Example-Connection
  2. 接続プロファイルのすべての設定を表示するには、次のコマンドを実行します。

    # nmcli connection show Example-Connection
    connection.id:              Example-Connection
    connection.uuid:            b6cdfa1c-e4ad-46e5-af8b-a75f06b79f76
    connection.stable-id:       --
    connection.type:            802-3-ethernet
    connection.interface-name:  enp7s0
    ...
  3. ping ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。

    • 同じサブネットの IP アドレスに ping します。

      IPv4 の場合:

      # ping 192.0.2.3

      IPv6 の場合:

      # ping 2001:db8:1::2

      コマンドが失敗した場合は、IP およびサブネットの設定を確認します。

    • リモートサブネットの IP アドレスに ping します。

      IPv4 の場合:

      # ping 198.162.3.1

      IPv6 の場合:

      # ping 2001:db8:2::1
      • コマンドが失敗した場合は、デフォルトゲートウェイに ping して設定を確認します。

        IPv4 の場合:

        # ping 192.0.2.254

        IPv6 の場合:

        # ping 2001:db8:1::fff3
  4. host ユーティリティーを使用して名前解決が機能することを確認します。以下に例を示します。

    # host client.example.com

    connection timed outno servers could be reached など、コマンドがエラーを返した場合は、DNS 設定を確認してください。

関連情報

6.7. nmcli インタラクティブエディターで動的イーサネット接続の設定

この手順では、nmcli ユーティリティーのインタラクティブエディターを使用して、動的イーサネット接続を追加する方法を説明します。この設定では、NetworkManager はこの接続の IP 設定を DHCP サーバーから要求します。

前提条件

  • DHCP サーバーをネットワークで使用できる。

手順

  1. イーサネット接続に新しい NetworkManager 接続プロファイルを追加して、対話モードを開始するには、次のコマンドを実行します。

    # nmcli connection edit type ethernet con-name Example-Connection
  2. ネットワークインターフェースを設定します。

    nmcli> set connection.interface-name enp7s0
  3. 必要に応じて、Example-Connection プロファイルを使用するときに NetworkManager が DHCP サーバーに送信するホスト名を変更します。

    nmcli> set ipv4.dhcp-hostname Example
    nmcli> set ipv6.dhcp-hostname Example
  4. 必要に応じて、Example-Connection プロファイルを使用するときに NetworkManager が IPv4 DHCP サーバーに送信するクライアント ID を変更します。

    nmcli> set ipv4.dhcp-client-id client-ID

    IPv6 には dhcp-client-id パラメーターがないことに注意してください。IPv6 の識別子を作成するには、dhclient サービスを構成します。

  5. 接続をアクティベートして保存します。

    nmcli> save persistent
    Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection.
    Do you still want to save? (yes/no) [yes] yes
  6. インタラクティブモードを終了します。

    nmcli> quit

検証手順

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

    # nmcli device status
    DEVICE      TYPE      STATE      CONNECTION
    enp7s0      ethernet  connected  Example-Connection
  2. 接続プロファイルのすべての設定を表示するには、次のコマンドを実行します。

    # nmcli connection show Example-Connection
    connection.id:              Example-Connection
    connection.uuid:            b6cdfa1c-e4ad-46e5-af8b-a75f06b79f76
    connection.stable-id:       --
    connection.type:            802-3-ethernet
    connection.interface-name:  enp7s0
    ...
  3. ping ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。

    • 同じサブネットの IP アドレスに ping します。

      IPv4 の場合:

      # ping 192.0.2.3

      IPv6 の場合:

      # ping 2001:db8:1::2

      コマンドが失敗した場合は、IP およびサブネットの設定を確認します。

    • リモートサブネットの IP アドレスに ping します。

      IPv4 の場合:

      # ping 198.162.3.1

      IPv6 の場合:

      # ping 2001:db8:2::1
      • コマンドが失敗した場合は、デフォルトゲートウェイに ping して設定を確認します。

        IPv4 の場合:

        # ping 192.0.2.254

        IPv6 の場合:

        # ping 2001:db8:1::fff3
  4. host ユーティリティーを使用して名前解決が機能することを確認します。以下に例を示します。

    # host client.example.com

    connection timed outno servers could be reached など、コマンドがエラーを返した場合は、DNS 設定を確認してください。

関連情報

6.8. nmstatectl を使用した動的イーサネット接続の設定

この手順では、nmstatectl ユーティリティーを使用して enp7s0 デバイスの動的イーサネットを追加する方法を説明します。この手順の設定により、NetworkManager は、DHCP サーバーからこの接続の IP 設定を要求します。

nmstatectl ユーティリティーを使用すると、設定後にその設定結果が設定ファイルと同じになります。何らかの障害が発生した場合には、nmstatectl は自動的に変更をロールバックし、システムが不正な状態のままにならないようにします。

手順では、YAML 形式でインターフェース設定を定義します。または、JSON 形式で設定を指定することもできます。

前提条件

  • nmstate パッケージがインストールされている。

手順

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

    ---
    interfaces:
    - name: enp7s0
      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
  2. 設定をシステムに適用します。

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

検証手順

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

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

    # nmcli connection show enp7s0
    connection.id:              enp7s0_
    connection.uuid:            b6cdfa1c-e4ad-46e5-af8b-a75f06b79f76
    connection.stable-id:       --
    connection.type:            802-3-ethernet
    connection.interface-name:  enp7s0
    ...
  3. 接続設定を YAML 形式で表示します。

    # nmstatectl show enp7s0

関連情報

  • man ページの nmstatectl(8)
  • /usr/share/doc/nmstate/examples/

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

この手順では、RHEL システムロールを使用して、Ansible Playbook を実行して enp7s0 インターフェースの動的イーサネット接続をリモートに追加する方法を説明します。この設定により、ネットワーク接続は、DHCP サーバーからこの接続の IP 設定を要求するようになりました。Ansible コントロールノードで以下の手順を実行します。

前提条件

  • DHCP サーバーをネットワークで使用できる。
  • ansible-core パッケージおよび rhel-system-roles パッケージが制御ノードにインストールされている。
  • Playbook の実行時に root 以外のリモートユーザーを使用する場合は、管理ノードで適切な sudo パーミッションが付与される。
  • ホストは NetworkManager を使用してネットワークを設定している。

手順

  1. Playbook の命令を実行するホストのインベントリーがまだ指定されていない場合は、そのホストの IP または名前を Ansible インベントリーファイル /etc/ansible/hosts に追加します。

    node.example.com
  2. ~/ethernet-dynamic-IP.yml Playbook を以下の内容で作成します。

    ---
    - name: Configure an Ethernet connection with dynamic IP
      hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: rhel-system-roles.network
    
        vars:
          network_connections:
            - name: enp7s0
              interface_name: enp7s0
              type: ethernet
              autoconnect: yes
              ip:
                dhcp4: yes
                auto6: yes
              state: up
  3. Playbook を実行します。

    • root ユーザーとして管理対象ホストに接続するには、次のコマンドを実行します。

      # ansible-playbook -u root ~/ethernet-dynamic-IP.yml
    • 管理ホストにユーザーとして接続するには、次のコマンドを実行します。

      # ansible-playbook -u user_name --ask-become-pass ~/ethernet-dynamic-IP.yml

      --ask-become-pass オプションは、ansible-playbook コマンドが -u user_name オプションで定義したユーザーの sudo パスワードを要求するようにします。

    -u user_name オプションを指定しないと、ansible-playbook は、コントロールノードに現在ログインしているユーザーとして管理ホストに接続します。

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイル
  • ansible-playbook(1) の man ページ

6.10. デバイスパスでの RHEL システムロールを使用した動的イーサネット接続の設定

この手順では、RHEL システムロール を使用して、Ansible Playbook を実行して特定のデバイスパスに一致するデバイスに、動的イーサネット接続をリモートで追加する方法を説明します。動的 IP 設定を使用すると、ネットワーク接続は、DHCP サーバーからこの接続の IP 設定を要求します。Ansible コントロールノードで以下の手順を実行します。

デバイスパスは、次のコマンドで識別できます。

# udevadm info /sys/class/net/<device_name> | grep ID_PATH=

前提条件

  • DHCP サーバーをネットワークで使用できる。
  • ansible-core パッケージおよび rhel-system-roles パッケージが制御ノードにインストールされている。
  • Playbook の実行時に root 以外のリモートユーザーを使用する場合は、管理ノードで適切な sudo パーミッションが付与される。
  • ホストは NetworkManager を使用してネットワークを設定している。

手順

  1. Playbook の命令を実行するホストのインベントリーがまだ指定されていない場合は、そのホストの IP または名前を Ansible インベントリーファイル /etc/ansible/hosts に追加します。

    node.example.com
  2. ~/ethernet-dynamic-IP.yml Playbook を以下の内容で作成します。

    ---
    - name: Configure an Ethernet connection with dynamic IP
      hosts: node.example.com
      become: true
      tasks:
      - 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

    この例の match パラメーターは、Ansible が PCI ID 0000:00:0[1-3].0 に一致するデバイスに再生を適用するが、0000:00:02.0 には適用しないことを定義します。使用できる特殊な修飾子およびワイルドカードの詳細は、/usr/share/ansible/roles/rhel-system-roles.network/README.md ファイルーの match パラメーターの説明を参照してください。

  3. Playbook を実行します。

    • root ユーザーとして管理対象ホストに接続するには、次のコマンドを実行します。

      # ansible-playbook -u root ~/ethernet-dynamic-IP.yml
    • 管理ホストにユーザーとして接続するには、次のコマンドを実行します。

      # ansible-playbook -u user_name --ask-become-pass ~/ethernet-dynamic-IP.yml

      --ask-become-pass オプションは、ansible-playbook コマンドが -u user_name オプションで定義したユーザーの sudo パスワードを要求するようにします。

    -u user_name オプションを指定しないと、ansible-playbook は、コントロールノードに現在ログインしているユーザーとして管理ホストに接続します。

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイル
  • ansible-playbook(1) の man ページ

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

イーサネット接続は、物理サーバーまたは仮想マシンで最も頻繁に使用される接続タイプになります。本セクションでは、GNOME control-center でこの接続タイプを設定する方法を説明します。

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

前提条件

  • サーバーに、物理または仮想のイーサネットデバイスが設定されている。
  • GNOME がインストールされている。

手順

  1. Super キーを押して Settings を入力し、Enter を押します。
  2. 左側のナビゲーションにある Network を選択します。
  3. Wired エントリーの横にある + ボタンをクリックして、新規プロファイルを作成します。
  4. オプション:必要に応じて、Identity タブで接続の名前を設定します。
  5. IPv4 タブで、IPv4 設定を構成します。たとえば、Manual メソッドを選択し、静的な IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを設定します。

    IPv4 設定コントロールセンター RHEL9
  6. IPv6 タブで、IPv6 設定を構成します。たとえば、Manual メソッドを選択し、静的な IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを設定します。

    IPv6 設定コントロールセンター RHEL9
  7. 追加 ボタンをクリックして接続を保存します。GNOME の control-center は、接続を自動的にアクティブにします。

検証手順

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

    # nmcli device status
    DEVICE      TYPE      STATE      CONNECTION
    enp7s0      ethernet  connected  Example-Connection
  2. 接続プロファイルのすべての設定を表示するには、次のコマンドを実行します。

    # nmcli connection show Example-Connection
    connection.id:              Example-Connection
    connection.uuid:            b6cdfa1c-e4ad-46e5-af8b-a75f06b79f76
    connection.stable-id:       --
    connection.type:            802-3-ethernet
    connection.interface-name:  enp7s0
    ...
  3. ping ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。

    • 同じサブネットの IP アドレスに ping します。

      IPv4 の場合:

      # ping 192.0.2.3

      IPv6 の場合:

      # ping 2001:db8:1::2

      コマンドが失敗した場合は、IP およびサブネットの設定を確認します。

    • リモートサブネットの IP アドレスに ping します。

      IPv4 の場合:

      # ping 198.162.3.1

      IPv6 の場合:

      # ping 2001:db8:2::1
      • コマンドが失敗した場合は、デフォルトゲートウェイに ping して設定を確認します。

        IPv4 の場合:

        # ping 192.0.2.254

        IPv6 の場合:

        # ping 2001:db8:1::fffe
  4. host ユーティリティーを使用して名前解決が機能することを確認します。以下に例を示します。

    # host client.example.com

    connection timed outno servers could be reached など、コマンドがエラーを返した場合は、DNS 設定を確認してください。

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

  1. 接続に失敗するか、ネットワークインターフェースが up と down の状態の間で切り替わる場合は、以下を行います。

    • ネットワークケーブルがホストとスイッチにプラグインされていることを確認します。
    • リンクの失敗がこのホストのみに存在するか、またはサーバーの接続先と同じスイッチに接続されている他のホストでも存在するかどうかを確認します。
    • ネットワークケーブルとネットワークインターフェースが予想どおりに機能していることを確認します。ハードウェア診断手順を実施して、不具合ケーブルとネットワークインターフェースカードを置き換えます。

関連情報

  • 接続にデフォルトゲートウェイがない場合は、「NetworkManager の設定」を参照して、特定のプロファイルを使用してデフォルトゲートウェイが指定されないようにします。

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

イーサネット接続は、物理サーバーまたは仮想サーバーで最も頻繁に使用される接続タイプになります。本セクションでは、nm-connection-editor アプリケーションを使用して接続タイプを設定する方法を説明します。

前提条件

  • サーバーに、物理または仮想のイーサネットデバイスが設定されている。
  • GNOME がインストールされている。

手順

  1. 端末を開き、次のコマンドを入力します。

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

    1. システムの起動時または NetworkManager サービスを再起動する際にこの接続を自動的に有効にするには、以下を行います。

      1. Connect automatically with priority を選択します。
      2. オプション:必要に応じて、Connect automatically with priority の横にある優先度の値を変更します。

        同じデバイスに複数の接続プロファイルが存在する場合は、NetworkManager はプロファイルを 1 つだけ有効にします。デフォルトでは、NetworkManager は、自動接続が有効になっている最後のプロファイルをアクティブにします。ただし、プロファイルに優先度の値を設定すると、NetworkManager は、最も優先度が高いプロファイルをアクティブにします。

    2. プロファイルが、この接続プロファイルを作成したユーザーに対してのみ利用可能になる場合は、All users may connect to this network チェックボックスの選択を解除します。

    ethernet connection general tab

  5. Ethernet タブで、デバイスを選択します。必要に応じて、イーサネット関連の設定をさらに選択します。 ethernet connection settings
  6. IPv4 Settings タブで、IPv4 設定を構成します。たとえば、静的な IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを設定します。 IPv4 settings nm connection editor
  7. IPv6 設定 タブで、IPv6 設定を構成します。たとえば、静的な IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを設定します。 IPv6 settings nm connection editor
  8. 接続を読み込みます。
  9. nm-connection-editor を閉じます。

検証手順

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

    • 同じサブネットの IP アドレスに ping します。

      IPv4 の場合:

      # ping 192.0.2.3

      IPv6 の場合:

      # ping 2001:db8:1::2

      コマンドが失敗した場合は、IP およびサブネットの設定を確認します。

    • リモートサブネットの IP アドレスに ping します。

      IPv4 の場合:

      # ping 198.162.3.1

      IPv6 の場合:

      # ping 2001:db8:2::1
      • コマンドが失敗した場合は、デフォルトゲートウェイに ping して設定を確認します。

        IPv4 の場合:

        # ping 192.0.2.254

        IPv6 の場合:

        # ping 2001:db8:1::fff3
    • host ユーティリティーを使用して名前解決が機能することを確認します。以下に例を示します。

      # host client.example.com

      connection timed outno servers could be reached など、コマンドがエラーを返した場合は、DNS 設定を確認してください。

関連情報

  • 接続にデフォルトゲートウェイがない場合は、「NetworkManager の設定」を参照して、特定のプロファイルを使用してデフォルトゲートウェイが指定されないようにします。

6.13. NetworkManager の DHCP クライアントの変更

デフォルトでは、NetworkManager は内部 DHCP クライアントを使用します。ただし、ビルトインクライアントが提供しない機能を備えた DHCP クライアントが必要な場合は、代わりに dhclient を使用するように NetworkManager を設定できます。

RHEL は dhcpcd を提供しないため、NetworkManager はこのクライアントを使用できないことに注意してください。

手順

  1. 次のコンテンツで /etc/NetworkManager/conf.d/dhcp-client.conf ファイルを作成します。

    [main]
    dhcp=dhclient

    dhcp パラメーターを internal (デフォルト) または dhclient に設定できます。

  2. dhcp パラメーターを dhclient に設定した場合は、dhcp-client パッケージをインストールします。

    # dnf install dhcp-client
  3. NetworkManager を再起動します。

    # systemctl restart NetworkManager

    再起動すると、すべてのネットワーク接続が一時的に中断されることに注意してください。

検証

  • /var/log/messages ログファイルで、次のようなエントリーを検索します。

    Apr 26 09:54:19 server NetworkManager[27748]: <info>  [1650959659.8483] dhcp-init: Using DHCP client 'dhclient'

    このログエントリーは、NetworkManager が DHCP クライアントとして dhclient を使用していることを確認します。

関連情報

  • NetworkManager.conf(5) man page

6.14. NetworkManager 接続の DHCP 動作の設定

DHCP (Dynamic Host Configuration Protocol) クライアントは、クライアントがネットワークに接続するたびに、動的 IP アドレスと対応する設定情報を DHCP サーバーに要求します。

DHCP サーバーから IP アドレスを取得するように接続を設定すると、NetworkManager は DHCP サーバーから IP アドレスを要求します。デフォルトでは、クライアントはこのリクエストが完了するまで 45 秒待機します。dhcp クライアントは、DHCP 接続が開始する際に、DHCP サーバーに IP アドレスを要求します。

前提条件

  • DHCP を使用する接続がホストに設定されている。

手順

  1. ipv4.dhcp-timeout および ipv6.dhcp-timeout プロパティーを設定します。たとえば、両方のオプションを 30 秒に設定するには、次のコマンドを実行します。

    # nmcli connection modify connection_name ipv4.dhcp-timeout 30 ipv6.dhcp-timeout 30

    パラメーターを infinity に設定すると、成功するまで NetworkManager が IP アドレスのリクエストおよび更新を停止しないようにします。

  2. オプション:タイムアウト前に NetworkManager が IPv4 アドレスを受信しない場合にこの動作を設定します。

    # nmcli connection modify connection_name ipv4.may-fail value

    ipv4.may-fail オプションを以下のように設定します。

    • はい、接続の状態は IPv6 設定により異なります。

      • IPv6 設定が有効になり、成功すると、NetworkManager は IPv6 接続をアクティブにし、IPv4 接続のアクティブ化を試みなくなります。
      • IPv6 設定が無効であるか、または設定されていないと、接続は失敗します。
    • いいえ、接続は非アクティブになります。この場合は、以下のようになります。

      • 接続の autoconnect プロパティーが有効になっている場合、NetworkManager は、autoconnect-retries プロパティーに設定された回数だけ、接続のアクティベーションを再試行します。デフォルト値は 4 です。
      • それでも接続が DHCP アドレスを取得できないと、自動アクティベーションは失敗します。5 分後に自動接続プロセスが再開され、DHCP サーバーから IP アドレスを取得するようになりました。
  3. オプション:必要に応じて、タイムアウト前に NetworkManager が IPv6 アドレスを受信しない場合にこの動作を設定します。

    # nmcli connection modify connection_name ipv6.may-fail value

関連情報

  • man ページの nm-settings(5)

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

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

前提条件

  • DHCP はネットワークで利用可能です
  • ホストには複数のイーサネットアダプターがあります
  • ホストに接続プロファイルが存在しません

手順

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

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

検証手順

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

    #nmcli connection show Example
    connection.id:                      Example
    ...
    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
    ...
    Example  6f22402e-c0cc-49cf-b702-eaf0cd5ea7d1  ethernet  enp7s0
    Example  6f22402e-c0cc-49cf-b702-eaf0cd5ea7d1  ethernet  enp8s0
    Example  6f22402e-c0cc-49cf-b702-eaf0cd5ea7d1  ethernet  enp9s0

関連情報

  • man ページの nmcli(1)
  • man ページの nm-settings(5)

6.16. 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 Example

検証手順

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

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

    #nmcli connection show Example
    
    connection.id:               Example
    ...
    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) があります。

関連情報

  • man ページの nmcli(1)
  • man ページの nm-settings(5)

第7章 Wi-Fi 接続の管理

本セクションでは、Wi-Fi 接続を設定し、管理する方法を説明します。

7.1. ワイヤレス規制ドメインの設定

Red Hat Enterprise Linux では、crda パッケージに、特定地区のワイヤレス規制ルールをカーネルに提供する Central Regulatory Domain Agent が含まれています。これは特定の udev スクリプトで使用するもので、udev スクリプトをデバッグしない限り手動で実行しないでください。カーネルは、新しい規制ドメインの変更にあたり、udev イベントを送信することで crda を実行します。規制ドメインの変更は、Linux ワイヤレスサブシステム (IEEE-802.11) により起こります。このサブシステムでは、regulatory.bin ファイルを使って規制データベース情報が維持されます。

setregdomain ユーティリティーは、システムの規制ドメインを設定します。Setregdomain は引数を取らず、通常は管理者が手動で呼び出す代わりに、udev などのシステムスクリプトを介して呼び出します。国コードの検索に失敗すると、システム管理者は、/etc/sysconfig/regdomain ファイルで COUNTRY 環境変数を定義できます。

関連情報

  • man ページの setregdomain(1)
  • man ページの crda(8)
  • man ページの regulatory.bin(5)
  • man ページの iw(8)

7.2. nmcli による Wi-Fi 接続の設定

この手順では、nmcli を使用して Wi-fi 接続プロファイルを設定する方法を説明します。

前提条件

  • nmcli ユーティリティーがインストールされている。
  • WiFi ラジオボタンがオンになっている (デフォルト)。

    $ nmcli radio wifi on

手順

  1. 静的な IP 設定で Wi-Fi 接続プロファイルを作成するには、次のコマンドを実行します。

    $ nmcli con add con-name MyCafe ifname wlan0 type wifi ssid MyCafe ip4 192.0.2.101/24 gw4 192.0.2.1
  2. DNS サーバーを設定します。たとえば、192.0.2.1 を DNS サーバーとして設定するには、次のコマンドを実行します。

    $ nmcli con modify con-name MyCafe ipv4.dns "192.0.2.1"
  3. 必要に応じて、DNS 検索ドメインを設定します。たとえば、検索ドメインを example.com に設定するには、次のコマンドを実行します。

    $ nmcli con modify con-name MyCafe ipv4.dns-search "example.com"
  4. 特定のプロパティー (例: mtu) を確認するには、次のコマンドを実行します。

    $ nmcli connection show id MyCafe | grep mtu
    802-11-wireless.mtu:                     auto
  5. 設定のプロパティーを変更するには、次のコマンドを実行します。

    $ nmcli connection modify id MyCafe wireless.mtu 1350
  6. 変更を確認するには、次のコマンドを実行します。

    $ nmcli connection show id MyCafe | grep mtu
    802-11-wireless.mtu:                     1350

検証手順

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

    • 同じサブネットの IP アドレスに ping します。以下に例を示します。

      # ping 192.0.2.103

      コマンドが失敗した場合は、IP およびサブネットの設定を確認します。

    • リモートサブネットの IP アドレスに ping します。以下に例を示します。

      # ping 198.51.16.3
      • コマンドが失敗した場合は、デフォルトゲートウェイに ping して設定を確認します。

        # ping 192.0.2.1
  2. host ユーティリティーを使用して名前解決が機能することを確認します。以下に例を示します。

    # host client.example.com

    connection timed outno servers could be reached など、コマンドがエラーを返した場合は、DNS 設定を確認してください。

7.3. control-center による Wi-Fi 接続の設定

Wi-Fi に接続すると、現在のネットワーク接続に応じてネットワーク設定が事前に入力されます。これは、インターフェースがネットワークに接続すると、設定が自動的に検出されることを意味します。

この手順では、control-center を使用して、Wi-Fi 設定を手動で設定する方法を説明します。

手順

  1. Super キーを押して アクティビティーの概要 を表示し、Wi-Fi と入力して Enter キーを押します。左側のメニューエントリーでは、利用可能なネットワークの一覧が表示されます。
  2. 編集する Wi-Fi 接続名の右側にある歯車アイコンを選択すると、接続の編集ダイアログが表示されます。Details メニューウィンドウには、詳細な設定が可能となる接続の詳細が表示されます。

    オプション

    1. Connect automatically を選択すると、その接続が利用可能であることを NetworkManager が検出すると、NetworkManager をこの接続に自動接続します。NetworkManager が自動的に接続しないようにする場合は、チェックボックスの選択を解除します。チェックボックスの選択を解除した場合は、ネットワーク接続のアイコンメニューでその接続を手動で選択すると、その接続が接続するようになります。
    2. 他のユーザーにも利用可能にするには、他のユーザーにも利用可能にする チェックボックスを選択します。
    3. Restrict background data usage オプションを変更して、バックグラウンドデータの使用を制御することもできます。

      注記

      Wi-Fi 接続を削除するには、赤い Forget Connection をクリックします。

  3. Identity メニューエントリーを選択して、基本的な設定オプションを表示します。

    SSID - アクセスポイント (AP) の SSID (Service Set Identifier)

    BSSID - Basic Service Set Identifier (BSSID) は、インフラストラクチャー モードで接続する特定のワイヤレスアクセスポイントの MAC アドレスです (ハードウェアアドレス とも呼ばれています)。このフィールドはデフォルトで空白になっており、BSSID を指定せずに SSID によりワイヤレスアクセスポイントに接続できます。BSSID を指定している場合は、システムによる特定のアクセスポイントのみへの関連付けが強制的に実行されます。アドホックネットワークが生成されるときに、BSSID が、mac80211 サブシステムにより無作為に生成されます。NetworkManager では表示されません。

    MAC アドレス - MAC アドレス により、特定のワイヤレスアダプターを特定の接続 (1 つまたは複数) に関連付けることができます。

    Cloned Address - 実際のハードウェアアドレスの代わりに使用する、クローンを作成した MAC アドレス必要でない限り、空白のままにします。

  4. さらに IP アドレスを設定するには、メニューエントリーの IPv4 および IPv6 を選択します。

    デフォルトでは、現在のネットワーク設定に応じて、IPv4IPv6 の両方が自動設定に指定されています。つまり、ローカルの IP アドレス、DNS アドレスなどのアドレスは、インターフェースがネットワークに接続すると自動的に検出されます。DHCP サーバーがこのネットワークの IP 設定を割り当てるだけで十分ですが、IPv4 設定および IPv6 設定に静的な構成を指定することもできます。IPv4 メニューエントリーおよび IPv6 メニューエントリーでは、以下の設定を確認できます。

    • IPv4 Method

      • Automatic (DHCP) - 接続しているネットワークがルーター通知 (RA) または DHCP サーバーを使用して動的 IP アドレスを割り当てる場合は、このオプションを選択します。割り当てた IP アドレスは、詳細 メニューエントリーで確認できます。
      • Link-Local Only - 接続しているネットワークに DHCP サーバーがなく、IP アドレスを手動で割り当てない場合は、このオプションを選択します。接頭辞 169.254/16 付きのランダムなアドレスが、RFC 3927 に従って割り当てられます。
      • Manual - IP アドレスを手動で割り当てる場合は、このオプションを選択します。
      • Disable - この接続では IPv4 は無効です。
    • DNS

      自動ON で、この接続に DNS サーバーを割り当てる DHCP サーバーがない場合は、これを OFF に切り替えて、使用する DNS サーバーの IP アドレスを入力します。IP アドレスはコンマで区切ります。

    • Routes

      Routes セクションでは、AutomaticON になっている場合は、ルート通知 (RA) または使用する DHCP からのルートが使用されますが、他の静的ルートを追加することもできることに注意してください。OFF の場合は、静的ルートだけが使用されます。

      • Address - リモートネットワーク、サブネット、またはホストの IP アドレスを入力します。
      • Netmask - 上に入力した IP アドレスのネットマスクまたはプレフィックス長。
      • Gateway - 上に入力したリモートネットワーク、サブネット、またはホストにつながるゲートウェイの IP アドレス。
      • Metric - このルートに付与する優先値であるネットワークコスト。数値が低い方が優先されます。
    • Use this connection only for resources on its network (この接続はネットワーク上のリソースのためだけに使用)

      このチェックボックスを選択すると、この接続はデフォルトルートになりません。

    また、Wi-Fi 接続に 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 設定です。
  5. Wi-Fi 接続の セキュリティー を設定する場合は、Security メニューエントリーを選択します。

    警告

    暗号化されていない Wi-Fi ネットワークへの接続や、安全でない WEP または WPA 規格のみに対応する Wi-Fi ネットワークへの接続はしないでください。

    以下の設定オプションが利用できます。

    • セキュリティー

      • None - 暗号化は無効になり、ネットワーク経由でプレーンテキスト形式でデータが転送されます。
      • WEP 40/128-bit キー - IEEE 802.11 標準からの Wired Equivalent Privacy (WEP)。共有キー (PSK) を 1 つ使用します。
      • WEP 128-bit Passphrase - パスフレーズの MD5 ハッシュで WEP キーを引き出します。
      • 動的 WEP (802.1X) - WEP キーは動的に変更します。
      • LEAP - Cisco Systems の Lightweight Extensible Authentication Protocol。
      • WPA & WPA2 Personal - IEEE 802.11i 標準からの Wi-Fi Protected Access (WPA)。802.11i-2004 規格の Wi-Fi Protected Access 2 (WPA2)。個人モードは、事前共有キー (WPA-PSK) を使用します。
      • WPA & WPA2 Enterprise - WPA および WPA 2 は、IEEE 802.1X ネットワークアクセス制御を提供するために RADIUS 認証サーバーと一緒に使用します。
      • WPA3 Personal - WPA3 (Wi-Fi Protected Access 3) Personal は、辞書攻撃を防ぐために PSK (Pre-shared Key) の代わりに SAE (Simultaneous Authentication of Equals) を使用します。WPA3 では、Perfect Forward Secrecy (PFS) が使用されます。
    • Password - 認証プロセスで使用するパスワードを入力します。
  6. 設定が完了したら、適用 ボタンをクリックして保存します。
注記

プラス ボタンをクリックして新しい接続を追加する場合は、NetworkManager により、その接続用の新しい設定が作成され、既存の接続の編集に使用するのと同じダイアログが表示されます。このダイアログの違いは、既存の接続プロファイルに Details メニューエントリーがあることです。

7.4. nmcli による Wi-Fi ネットワークへの接続

この手順では、nmcli ユーティリティーを使用して ワイヤレス 接続に接続する方法を説明します。

前提条件

  • nmcli ユーティリティーがインストールされている。
  • WiFi ラジオボタンがオンになっている (デフォルト)。

    $ nmcli radio wifi on

手順

  1. 利用可能な Wi-Fi 接続リストを更新するには、次のコマンドを実行します。

    $ nmcli device wifi rescan
  2. 利用可能な Wi-Fi アクセスポイントを表示するには、次のコマンドを実行します。

    $ nmcli dev wifi list
    
    IN-USE  SSID      MODE   CHAN  RATE        SIGNAL  BARS  SECURITY
    ...
            MyCafe    Infra  3     405 Mbit/s  85      ▂▄▆█  WPA1 WPA2
  3. nmcli を使用して Wi-Fi 接続に接続するには、次のコマンドを実行します。

    $ nmcli dev wifi connect SSID-Name password wireless-password

    以下に例を示します。

    $ nmcli dev wifi connect MyCafe password wireless-password

    Wi-Fi 状態を無効にする場合は、次のコマンドを実行します。

    $ nmcli radio wifi off

7.5. nmcli を使用した非表示の Wi-Fi ネットワーク接続

すべてのアクセスポイントには、アクセスポイントを特定するための SSID (Service Set Identifier) があります。ただし、アクセスポイントはその SSID をブロードキャストしないように設定されていることがあります。この場合は非表示となり、NetworkManager の利用可能なネットワーク一覧には表示されなくなります。

この手順では、nmcli ツールを使用して非表示のネットワークに接続する方法を説明します。

前提条件

  • nmcli ユーティリティーがインストールされている。
  • (次のコマンドを実行し) SSID と Wi-Fi 接続のパスワードを確認している。
  • WiFi ラジオボタンがオンになっている (デフォルト)。

    $ nmcli radio wifi on

手順

  • 非表示の SSID に接続します。

    $ nmcli dev wifi connect SSID_Name password wireless_password hidden yes

7.6. GNOME GUI による Wi-Fi ネットワークへの接続

この手順では、ワイヤレスネットワークに接続してインターネットにアクセスする方法を説明します。

手順

  1. 画面右上にあるGNOME Shell ネットワーク接続アイコンメニューを開きます。
  2. Wi-Fi Not Connected を選択します。
  3. Select Network オプションをクリックします。
  4. 接続するネットワークの名前をクリックし、Connect をクリックします。

    ネットワークが表示されない場合は、ネットワークが表示されなくなります。

  5. ネットワークがパスワードまたは暗号鍵で保護されている場合は、パスワードを入力し、Connect をクリックします。

    パスワードが分からない場合は、Wi-Fi ネットワークの管理者に連絡してください。

  6. 接続に成功すると、接続アイコンメニューでネットワーク名が表示され、ワイヤレスインジケーターが画面の右上隅に表示されます。

7.7. nmcli を使用した、既存の Wi-Fi 接続での 802.1X ネットワーク認証の設定

nmcli ユーティリティーを使用して、クライアントがネットワークに対して自己認証するように設定できます。この手順では、wlp1s0 という名前の既存の NetworkManager Wi-Fi 接続プロファイルで、MSCHAPv2 (Microsoft Challenge-Handshake Authentication Protocol version 2) を使用する PEAP (Protected Extensible Authentication Protocol) 認証を設定する方法を説明します。

前提条件

  1. ネットワークには 802.1X ネットワーク認証が必要です。
  2. Wi-Fi 接続プロファイルが NetworkManager に存在し、有効な IP 設定があります。
  3. クライアントがオーセンティケーターの証明書を検証する必要がある場合は、認証局 (CA) 証明書を /etc/pki/ca-trust/source/anchors/ ディレクトリーに保存する必要があります。
  4. wpa_supplicant パッケージがインストールされている。

手順

  1. Wi-Fi セキュリティーモードを 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
    注記

    セキュリティー上の理由から、Red Hat はオーセンティケーターの証明書を使用して、クライアントがオーセンティケーターの ID を検証できるようにすることを推奨します。

  4. 接続プロファイルをアクティベートします。

    # nmcli connection up wlp1s0

検証手順

  • ネットワーク認証が必要なネットワーク上のリソースにアクセスします。

関連情報

  • Wi-Fi 接続の管理
  • nm-settings(5) の man ページの 802-1x settings セクション
  • man ページの nmcli(1)

第8章 VLAN タグの設定

本セクションでは、仮想ローカルエリアネットワーク (VLAN) を設定する方法を説明します。VLAN は、物理ネットワーク内の論理ネットワークです。VLAN インターフェースは、インターフェースを通過する際に VLAN ID でパケットをタグ付けし、返信パケットのタグを削除します。

VLAN インターフェースを、イーサネット、ボンド、チーム、ブリッジデバイスなどの別のインターフェースに作成します。このインターフェースは、親インターフェース と呼ばれます。

8.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. VLAN デバイスの IP 設定を構成します。この VLAN デバイスを他のデバイスのポートとして使用する場合は、この手順を省略します。

    1. IPv4 設定を構成します。たとえば、静的 IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを vlan10 接続に設定するには、次のコマンドを実行します。

      # nmcli connection modify vlan10 ipv4.addresses '192.0.2.1/24'
      # nmcli connection modify vlan10 ipv4.gateway '192.0.2.254'
      # nmcli connection modify vlan10 ipv4.dns '192.0.2.253'
      # nmcli connection modify vlan10 ipv4.method manual
    2. IPv6 設定を構成します。たとえば、静的 IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを vlan10 接続に設定するには、次のコマンドを実行します。

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

    # 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

関連情報

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

本セクションでは、RHEL Web コンソールを使用してネットワークブリッジを設定する方法を説明します。

前提条件

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

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

手順

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

    VLAN の設定
  6. 適用 をクリックします。
  7. デフォルトでは、VLAN デバイスは動的 IP アドレスを使用します。静的 IP アドレスを設定する場合は、以下を実行します。

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

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

検証

  • 画面左側のナビゲーションにある ネットワーク タブを選択し、インターフェースに送受信トラフィックがあるかどうかを確認します。

    VLAN の検証

8.3. 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. VLAN デバイスの IP 設定を構成します。この VLAN デバイスを他のデバイスのポートとして使用する場合は、この手順を省略します。

    1. IPv4 Settings タブで、IPv4 設定を構成します。たとえば、静的な IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを設定します。 vlan IPv4 settings nm connection editor
    2. IPv6 設定 タブで、IPv6 設定を構成します。たとえば、静的な IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを設定します。 vlan IPv6 settings nm connection editor
  6. 保存 をクリックして VLAN 接続を保存します。
  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

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

本セクションでは、nmstatectl ユーティリティーを使用して、イーサネット接続を使用する ID 10 で VLAN を設定する方法について説明します。子デバイスの VLAN 接続には、IP、デフォルトゲートウェイ、および DNS の設定が含まれます。

環境に応じて、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
  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

関連情報

  • man ページの nmstatectl(8)
  • /usr/share/doc/nmstate/examples/

8.5. RHEL システムロールを使用した VLAN タギングの設定

Networking の RHEL システムロールを使用して、VLAN タグ付けを設定できます。この手順では、イーサネット接続と、このイーサネット接続の上に ID 10 の VLANを追加する方法について説明します。子デバイスの VLAN 接続には、IP、デフォルトゲートウェイ、および DNS の設定が含まれます。

環境に応じて、play を適宜調整します。以下に例を示します。

  • ボンディングなどの他の接続でポートとして VLAN を使用する場合は、ip 属性を省略し、子 設定で IP 設定を行います。
  • VLAN でチーム、ブリッジ、またはボンディングデバイスを使用するには、interface_name と VLAN で使用するポートの type 属性を調整します。

前提条件

  • ansible-core パッケージおよび rhel-system-roles パッケージが制御ノードにインストールされている。
  • Playbook の実行時に root 以外のリモートユーザーを使用する場合は、管理ノードで適切な sudo パーミッションが付与される。

手順

  1. Playbook の命令を実行するホストのインベントリーがまだ指定されていない場合は、そのホストの IP または名前を Ansible インベントリーファイル /etc/ansible/hosts に追加します。

    node.example.com
  2. ~/vlan-ethernet.yml Playbook を以下の内容で作成します。

    ---
    - name: Configure a VLAN that uses an Ethernet connection
      hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: rhel-system-roles.network
    
        vars:
          network_connections:
            # Add an Ethernet profile for the underlying device of the VLAN
            - name: enp1s0
              type: ethernet
              interface_name: enp1s0
              autoconnect: yes
              state: up
              ip:
                dhcp4: no
                auto6: no
    
            # Define the VLAN profile
            - name: enp1s0.10
              type: vlan
              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
              vlan_id: 10
              parent: enp1s0
              state: up

    VLAN プロファイルの parent 属性は、enp1s0 デバイス上で動作する VLAN を設定します。

  3. Playbook を実行します。

    • root ユーザーとして管理対象ホストに接続するには、次のコマンドを実行します。

      # ansible-playbook -u root ~/vlan-ethernet.yml
    • 管理ホストにユーザーとして接続するには、次のコマンドを実行します。

      # ansible-playbook -u user_name --ask-become-pass ~/vlan-ethernet.yml

      --ask-become-pass オプションは、ansible-playbook コマンドが -u user_name オプションで定義したユーザーの sudo パスワードを要求するようにします。

    -u user_name オプションを指定しないと、ansible-playbook は、コントロールノードに現在ログインしているユーザーとして管理ホストに接続します。

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイル
  • ansible-playbook(1) の man ページ

第9章 VXLAN を使用した仮想マシンの仮想レイヤー 2 ドメインの作成

仮想拡張可能な LAN (VXLAN) は、UDP プロトコルを使用して IP ネットワーク経由でレイヤー 2 トラフィックをトンネルするネットワークプロトコルです。たとえば、別のホストで実行している特定の仮想マシンは、VXLAN トンネルを介して通信できます。ホストは、世界中の異なるサブネットやデータセンターに存在できます。仮想マシンの視点からは、同じ VXLAN 内のその他の仮想マシンは、同じレイヤー 2 ドメイン内にあります。

本書は、仮想マシンには表示されない RHEL ホストに VXLAN を設定する方法を説明します。

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)

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 識別子を設定します。
    • 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)

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) man ページ
  • virt-xml(1) man ページ
  • virsh(1) man ページ
  • arping(8) man ページ

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

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

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

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

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

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

10.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. 既存の接続プロファイルをブリッジに割り当てるには、以下の接続の master パラメーターを bridge0 に設定します。

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

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

  4. ブリッジの IP 設定を構成します。このブリッジを他のデバイスのポートとして使用する場合は、この手順を省略します。

    1. IPv4 設定を構成します。たとえば、bridge0 接続の静的 IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および DNS 検索ドメインを設定するには、次のコマンドを実行します。

      # nmcli connection modify bridge0 ipv4.addresses '192.0.2.1/24'
      # nmcli connection modify bridge0 ipv4.gateway '192.0.2.254'
      # nmcli connection modify bridge0 ipv4.dns '192.0.2.253'
      # nmcli connection modify bridge0 ipv4.dns-search 'example.com'
      # nmcli connection modify bridge0 ipv4.method manual
    2. IPv6 設定を構成します。たとえば、bridge0 接続の静的 IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定するには、次のコマンドを実行します。

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

    # nmcli connection modify bridge0 bridge.priority '16384'

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

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

    # nmcli connection up bridge0
  7. ポートが接続されており、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 コマンドを使用します。

関連情報

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

本セクションでは、RHEL Web コンソールを使用してネットワークブリッジを設定する方法を説明します。

前提条件

手順

  1. 画面左側のナビゲーションで Networking タブを選択します。
  2. インターフェース セクションの ブリッジの追加 をクリックします。
  3. 作成するブリッジデバイスの名前を入力します。
  4. ブリッジのポートとなるインターフェースを選択します。
  5. オプション:ブリッジループおよびブロードキャストのルーティングを回避するために、STP(Spanning tree protocol) 機能を有効にします。

    ブリッジの設定
  6. 適用 をクリックします。
  7. デフォルトでは、ブリッジは動的 IP アドレスを使用します。静的 IP アドレスを設定する場合は、以下を実行します。

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

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

検証

  1. 画面左側のナビゲーションにある ネットワーク タブを選択し、インターフェースに送受信トラフィックがあるかどうかを確認します。

    bridge verify

10.3. nm-connection-editor によるネットワークブリッジの設定

本セクションでは、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. 保存 をクリックします。
    3. ブリッジに追加する各インターフェースに、直前の手順を繰り返します。

      add nic to bridge in nm connection editor

  5. オプション:スパニングツリープロトコル (STP) オプションなどの追加のブリッジ設定を行います。
  6. ブリッジの IP 設定を構成します。このブリッジを他のデバイスのポートとして使用する場合は、この手順を省略します。

    1. IPv4 Settings タブで、IPv4 設定を構成します。たとえば、静的な IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定します。

      bridge IPv4 settings nm connection editor

    2. IPv6 設定 タブで、IPv6 設定を構成します。たとえば、静的な IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定します。

      bridge IPv6 settings nm connection editor

  7. ブリッジ接続を保存します。
  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 コマンドを使用します。

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

本セクションでは、nmstatectl ユーティリティーを使用して、以下の設定で Linux ネットワークブリッジ bridge0 を設定する方法を説明します。

  • ブリッジのネットワークインターフェース: enp1s0 および enp7s0
  • Spanning Tree Protocol (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 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
  • 物理または仮想のイーサネットデバイスをサーバーにインストールし、ブリッジでイーサネットデバイスをポートとして使用する。
  • ポート 一覧でインターフェース名を設定し、対応するインターフェースを定義して、ブリッジのポートとしてチーム、ボンディング、または 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
  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

関連情報

第11章 ネットワークチーミングの設定

本セクションでは、ネットワークチーミングの基本、ボンディングとチーミングの相違点、Red Hat Enterprise Linux にネットワークチームを設定する方法を説明します。

重要

Red Hat Enterprise Linux 9 では、ネットワークチーミングが非推奨になりました。代わりに、ネットワークボンディングドライバーの使用を検討してください。詳細は、Configuring network bonding を参照してください。

ネットワークチームは、以下のような異なるタイプのデバイスに作成できます。

  • 物理および仮想イーサネットデバイス
  • ネットワークボンディング
  • ネットワークブリッジ
  • VLAN デバイス

11.1. ネットワークボンディングへのネットワークチーム設定の移行

Red Hat Enterprise Linux 9 では、ネットワークチーミングが非推奨になりました。以前のバージョンの RHEL からアップグレードした場合など、稼働中のネットワークチームを設定している場合は、設定を、NetworkManager が管理するネットワークボンディングに移行できます。

重要

team2bond ユーティリティは、ネットワークチーム設定のみをボンディングに変換します。その後、IP アドレスや DNS 設定など、ボンディングの詳細設定を手動で行う必要があります。

前提条件

  • team-team0 NetworkManager の接続プロファイルが設定され、team0 デバイスを管理している。
  • teamd パッケージがインストールされている。

手順

  1. オプション:team-team0 NetworkManager 接続の IP 設定を表示します。

    # nmcli connection show team-team0 | egrep "^ip"
    ...
    ipv4.method:                            manual
    ipv4.dns:                               192.0.2.253
    ipv4.dns-search:                        example.com
    ipv4.addresses:                         192.0.2.1/24
    ipv4.gateway:                           192.0.2.254
    ...
    ipv6.method:                            manual
    ipv6.dns:                               2001:db8:1::fffd
    ipv6.dns-search:                        example.com
    ipv6.addresses:                         2001:db8:1::1/64
    ipv6.gateway:                           2001:db8:1::fffe
    ...
  2. team0 デバイスの設定を JSON ファイルにエクスポートします。

    # teamdctl team0 config dump actual > /tmp/team0.json
  3. ネットワークチームを削除します。たとえば、NetworkManager でチームを設定した場合は、team-team0 接続プロファイルと、関連するポートのプロファイルを削除します。

    # nmcli connection delete team-team0
    # nmcli connection delete team-team0-port1
    # nmcli connection delete team-team0-port2
  4. team2bond ユーティリティーをドライランモードで実行して、チームデバイスと同様の設定でネットワークボンディングを設定するnmcli コマンドを表示します。

    # team2bond --config=/tmp/team0.json --rename=bond0
    nmcli con add type bond ifname bond0 bond.options "mode=active-backup,num_grat_arp=1,num_unsol_na=1,resend_igmp=1,miimon=100,miimon=100"
    nmcli con add type ethernet ifname enp7s0 master bond0
    nmcli con add type ethernet ifname enp8s0 master bond0

    最初のコマンドには 2 つのmiimon オプションが含まれます。これは、チーム設定ファイルに 2 つのlink_watch エントリーが含まれているためです。これはボンディングの作成には影響しないことに注意してください。

    サービスをチームのデバイス名にバインドし、これらのサービスの更新や破損を回避する場合は、--rename=bond0 を省略します。この場合、team2bond は、チームと同じインターフェース名をボンディングに使用します。

  5. team2bond ユーティリティーが推奨するボンディングのオプションが正しいことを確認します。
  6. ボンディングを作成します。推奨されるnmcli コマンドを実行するか、--exec-cmd オプションを指定して team2bond コマンドを再実行できます。

    # team2bond --config=/tmp/team0.json --rename=bond0 --exec-cmd
    Connection 'bond-bond0' (0241a531-0c72-4202-80df-73eadfc126b5) successfully added.
    Connection 'bond-slave-enp7s0' (38489729-b624-4606-a784-1ccf01e2f6d6) successfully added.
    Connection 'bond-slave-enp8s0' (de97ec06-7daa-4298-9a71-9d4c7909daa1) successfully added.

    次の手順では、ボンディング接続プロファイル (bond-bond0) の名前が必要です。

  7. team-team0 で以前設定した IPv4 設定を、bond-bond0 接続に設定します。

    # nmcli connection modify bond-bond0 ipv4.addresses '192.0.2.1/24'
    # nmcli connection modify bond-bond0 ipv4.gateway '192.0.2.254'
    # nmcli connection modify bond-bond0 ipv4.dns '192.0.2.253'
    # nmcli connection modify bond-bond0 ipv4.dns-search 'example.com'
    # nmcli connection modify bond-bond0 ipv4.method manual
  8. team-team0 で以前設定した IPv6 設定を、bond-bond0 接続に設定します。

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

    # nmcli connection up bond-bond0

検証

  1. bond-bond0 NetworkManager 接続の IP 設定を表示します。

    # nmcli connection show bond-bond0 | egrep "^ip"
    ...
    ipv4.method:                            manual
    ipv4.dns:                               192.0.2.253
    ipv4.dns-search:                        example.com
    ipv4.addresses:                         192.0.2.1/24
    ipv4.gateway:                           192.0.2.254
    ...
    ipv6.method:                            manual
    ipv6.dns:                               2001:db8:1::fffd
    ipv6.dns-search:                        example.com
    ipv6.addresses:                         2001:db8:1::1/64
    ipv6.gateway:                           2001:db8:1::fffe
    ...
  2. ボンドのステータスを表示します。

    # cat /proc/net/bonding/bond0
    Ethernet Channel Bonding Driver: v5.13.0-0.rc7.51.el9.x86_64
    
    Bonding Mode: fault-tolerance (active-backup)
    Primary Slave: None
    Currently Active Slave: enp7s0
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0
    Peer Notification Delay (ms): 0
    
    Slave Interface: enp7s0
    MII Status: up
    Speed: Unknown
    Duplex: Unknown
    Link Failure Count: 0
    Permanent HW addr: 52:54:00:bf:b1:a9
    Slave queue ID: 0
    
    Slave Interface: enp8s0
    MII Status: up
    Speed: Unknown
    Duplex: Unknown
    Link Failure Count: 0
    Permanent HW addr: 52:54:00:04:36:0f
    Slave queue ID: 0

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

  3. ボンディングフェイルオーバーが機能することを確認するには、以下を行います。

    1. ホストからネットワークケーブルを一時的に削除します。コマンドラインでリンク障害イベントを適切にテストする方法がないことに注意してください。
    2. ボンドのステータスを表示します。

      # cat /proc/net/bonding/bond0

11.2. ネットワークチーミングの理解

ネットワークチーミングとは、ネットワークインターフェースを統合または集約し、より高いスループットまたは冗長性のある論理インターフェースを提供する機能です。

ネットワークチーミングでは、カーネルドライバーを使用してパケットフローの高速処理や、他のタスク用のユーザー空間ライブラリーおよびサービスを実装します。これにより、ネットワークチーミングは、負荷分散および冗長性の要件に対して、簡単に拡張可能でスケーラブルなソリューションとなります。

重要

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

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

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

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

11.5. teamd サービスのインストール

NetworkManager にネットワークチームを設定するには、teamd サービスと、NetworkManager のチームプラグインが必要です。デフォルトでは、どちらも Red Hat Enterprise Linux にインストールされます。本セクションでは、削除する場合に必要なパッケージをインストールする方法を説明します。

前提条件

  • 有効な Red Hat サブスクリプションがホストに割り当てられている。

手順

  • teamd パッケージおよび NetworkManager-team パッケージをインストールします。

    # dnf install teamd NetworkManager-team

11.6. nmcli コマンドによるネットワークチームの設定

本セクションでは、nmcli ユーティリティーを使用してネットワークチームを設定する方法を説明します。

重要

Red Hat Enterprise Linux 9 では、ネットワークチーミングが非推奨になりました。代わりに、ネットワークボンディングドライバーの使用を検討してください。詳細は、Configuring network bonding を参照してください。

前提条件

手順

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

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

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

  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. 既存の接続プロファイルをチームに割り当てるには、以下の接続の master パラメーターを team0 に設定します。

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

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

  5. チームの IP 設定を構成します。このチームを他のデバイスのポートとして使用する場合は、この手順を省略します。

    1. IPv4 設定を構成します。たとえば、team0 接続の静的 IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および DNS 検索ドメインを設定するには、次のコマンドを実行します。

      # nmcli connection modify team0 ipv4.addresses '192.0.2.1/24'
      # nmcli connection modify team0 ipv4.gateway '192.0.2.254'
      # nmcli connection modify team0 ipv4.dns '192.0.2.253'
      # nmcli connection modify team0 ipv4.dns-search 'example.com'
      # nmcli connection modify team0 ipv4.method manual
    2. IPv6 設定を構成します。たとえば、team0 接続の静的 IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定するには、次のコマンドを実行します。

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

    # 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

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

11.7. RHEL Web コンソールを使用したネットワークチームの設定

本セクションでは、RHEL Web コンソールを使用してネットワークチームを設定する方法を説明します。

重要

Red Hat Enterprise Linux 9 では、ネットワークチーミングが非推奨になりました。代わりに、ネットワークボンディングドライバーの使用を検討してください。詳細は、Configuring network bonding を参照してください。

前提条件

手順

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

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

  6. リンク監視を設定します。

    • Ethtool を選択した場合は、リンクを設定してリンクダウン遅延を設定します。
    • ARP ping または NSNA ping を設定する場合は、ping の間隔と ping ターゲットを設定します。
    team settings
  7. 適用 をクリックします。
  8. デフォルトでは、チームは動的 IP アドレスを使用します。静的 IP アドレスを設定する場合は、以下を実行します。

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

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

検証

  1. 画面左側のナビゲーションにある ネットワーク タブを選択し、インターフェースに送受信トラフィックがあるかどうかを確認します。

    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

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

11.8. nm-connection-editor によるネットワークチームの設定

本セクションでは、nm-connection-editor アプリケーションを使用してネットワークチームを設定する方法を説明します。

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

重要

Red Hat Enterprise Linux 9 では、ネットワークチーミングが非推奨になりました。代わりに、ネットワークボンディングドライバーの使用を検討してください。詳細は、Configuring network bonding を参照してください。

前提条件

  • サーバーに、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. 保存 をクリックします。
    3. チームに追加する各インターフェースに直前の手順を繰り返します。

      add nic to team in nm connection editor

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

      1. Runner タブで、ランナーを選択します。
      2. Link Watcher タブで、リンク監視とそのオプションを設定します。
      3. OK をクリックします。
  5. チームの IP 設定を構成します。このチームを他のデバイスのポートとして使用する場合は、この手順を省略します。

    1. IPv4 Settings タブで、IPv4 設定を構成します。たとえば、静的な IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定します。 team IPv4 settings nm connection editor
    2. IPv6 設定 タブで、IPv6 設定を構成します。たとえば、静的な IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定します。 team IPv6 settings nm connection editor
  6. チーム接続を保存します。
  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

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

本セクションでは、ネットワークボンディングの基本、ボンディングとチーミングの相違点、Red Hat Enterprise Linux でネットワークボンディングを設定する方法を説明します。

以下のような異なるタイプのデバイスにボンディングを作成できます。

  • 物理および仮想イーサネットデバイス
  • ネットワークブリッジ
  • ネットワークチーム
  • VLAN デバイス

12.1. ネットワークボンディングについて

ネットワークボンディングは、スループットや冗長性が高い論理インターフェースを提供するために、ネットワークインターフェースを結合または集約する方法です。

active-backupbalance-tlb、および balance-alb の各モードは、ネットワークスイッチの特定の設定を必要としません。しかし、その他のボンディングモードでは、スイッチがリンクを集約するように設定する必要があります。たとえば、Cisco スイッチでは、モード 0、2、および 3 の EtherChannel が必要です。ただし、モード 4 の場合は、LACP (Link Aggregation Control Protocol) と EtherChannel が必要です。

詳細は、スイッチおよび Linux Ethernet Bonding Driver HOWTO のドキュメントを参照してください。

重要

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

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

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

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

12.3. ボンディングモードに依存するアップストリームのスイッチ設定

以下の表は、ボンディングモードに応じて、どの設定をアップストリームのスイッチに適用する必要があるかを示しています。

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

0 - balance-rr

(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

自動ポートが必要です。

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

12.4. 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 プロパティーに追加します。たとえば、同じコマンドで、さらに MII 監視間隔を 1000 ミリ秒 (1 秒) に設定するには、次のコマンドを入力します。

    # 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. 既存の接続プロファイルをボンディングに割り当てるには、以下の接続の master パラメーターを bond0 に設定します。

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

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

  4. ボンディングの IP 設定を構成します。このボンディングを他のデバイスのポートとして使用する場合は、この手順を省略します。

    1. IPv4 設定を構成します。たとえば、bond0 接続の静的 IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および DNS 検索ドメインを設定するには、次のコマンドを実行します。

      # 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
    2. IPv6 設定を構成します。たとえば、bond0 接続の静的 IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および DNS 検索ドメインを設定するには、次のコマンドを実行します。

      # 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
  5. 接続をアクティベートします。

    # nmcli connection up bond0
  6. ポートが接続されており、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. ホストからネットワークケーブルを一時的に削除します。

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

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

    # cat /proc/net/bonding/bond0

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

本セクションでは、RHEL Web コンソールを使用してネットワークボンディングを設定する方法を説明します。

前提条件

手順

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

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

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

    ボンディング設定
  8. 適用 をクリックします。
  9. デフォルトでは、ボンディングは動的 IP アドレスを使用します。静的 IP アドレスを設定する場合は、以下を実行します。

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

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

検証

  1. 画面左側のナビゲーションにある ネットワーク タブを選択し、インターフェースに送受信トラフィックがあるかどうかを確認します。

    ボンディングの検証
  2. ホストからネットワークケーブルを一時的に削除します。

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

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

    # cat /proc/net/bonding/bond0

12.6. nm-connection-editor によるネットワークボンディングの設定

本セクションでは、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. 保存 をクリックします。
    3. ボンディングに追加する各インターフェースで直前の手順を繰り返します。

      add nic to bond in nm connection editor

    4. オプション:Media Independent Interface (MII) の監視間隔などの他のオプションを設定します。
  5. ボンディングの IP 設定を構成します。このボンディングを他のデバイスのポートとして使用する場合は、この手順を省略します。

    1. IPv4 Settings タブで、IPv4 設定を構成します。たとえば、静的な IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定します。

      bond IPv4 settings nm connection editor

    2. IPv6 設定 タブで、IPv6 設定を構成します。たとえば、静的な IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定します。

      bond IPv6 settings nm connection editor

  6. 保存 をクリックして、ボンド接続を保存します。
  7. nm-connection-editor を閉じます。

検証手順

  1. ホストからネットワークケーブルを一時的に削除します。

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

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

    # cat /proc/net/bonding/bond0

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

本セクションでは、nmstatectl ユーティリティーを使用して、以下の設定でネットワークボンディング、bond0 を設定する方法を説明します。

  • ボンドのネットワークインターフェース: enp1s0 および enp7s0
  • モード: active-backup
  • 静的 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 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
  • 物理または仮想のイーサネットデバイスをサーバーにインストールしてボンディングでポートとしてイーサネットデバイスを使用する。
  • ポート 一覧でインターフェース名を設定し、対応するインターフェースを定義して、ボンディングのポートとしてチーム、ブリッジ、または 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
  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

関連情報

  • man ページの nmstatectl(8)
  • /usr/share/doc/nmstate/examples/

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

Networking の RHEL システムロールを使用して、ネットワークボンディングを設定できます。この手順では、2 つのイーサネットデバイスを使用するアクティブバックアップモードでボンディングを設定し、IPv4 アドレスおよび IPv6 アドレス、デフォルトゲートウェイ、および DNS 設定を設定する方法を説明します。

注記

Linux ボンディングのポートではなく、ボンディングに IP 設定を設定します。

前提条件

  • ansible-core パッケージおよび rhel-system-roles パッケージが制御ノードにインストールされている。
  • Playbook の実行時に root 以外のリモートユーザーを使用する場合は、管理ノードで適切な sudo パーミッションが付与される。
  • サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。

手順

  1. Playbook の命令を実行するホストのインベントリーがまだ指定されていない場合は、そのホストの IP または名前を Ansible インベントリーファイル /etc/ansible/hosts に追加します。

    node.example.com
  2. ~/bond-ethernet.yml Playbook を以下の内容で作成します。

    ---
    - name: Configure a network bond that uses two Ethernet ports
      hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: rhel-system-roles.network
    
        vars:
          network_connections:
            # Define the bond profile
            - name: bond0
              type: bond
              interface_name: bond0
              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
              bond:
                mode: active-backup
              state: up
    
            # Add an Ethernet profile to the bond
            - name: bond0-port1
              interface_name: enp7s0
              type: ethernet
              controller: bond0
              state: up
    
            # Add a second Ethernet profile to the bond
            - name: bond0-port2
              interface_name: enp8s0
              type: ethernet
              controller: bond0
              state: up
  3. Playbook を実行します。

    • root ユーザーとして管理対象ホストに接続するには、次のコマンドを実行します。

      # ansible-playbook -u root ~/bond-ethernet.yml
    • 管理ホストにユーザーとして接続するには、次のコマンドを実行します。

      # ansible-playbook -u user_name --ask-become-pass ~/bond-ethernet.yml

      --ask-become-pass オプションは、ansible-playbook コマンドが -u user_name オプションで定義したユーザーの sudo パスワードを要求するようにします。

    -u user_name オプションを指定しないと、ansible-playbook は、コントロールノードに現在ログインしているユーザーとして管理ホストに接続します。

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイル
  • ansible-playbook(1) の man ページ

12.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

第13章 WireGuard VPN の設定

WireGuard は、Linux カーネルで実行する高パフォーマンスの VPN ソリューションです。最新の暗号を使用し、他の多くの VPN ソリューションよりも簡単に設定できます。さらに、WireGuard のコードベースが小さくなり、攻撃の影響が減るため、セキュリティーが向上します。認証および暗号化には、WireGuard が SSH と同様の鍵を使用します。

重要

WireGuard はテクノロジープレビューとしてのみ提供されます。テクノロジープレビューの機能は、Red Hat の本番環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat では実稼働環境での使用を推奨していません。これらのプレビューは、近々発表予定の製品機能をリリースに先駆けてご提供します。これにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。

テクノロジープレビュー機能のサポート範囲については、Red Hat カスタマーポータルの「テクノロジープレビュー機能のサポート範囲」を参照してください。

WireGuard VPN を設定するには、次の手順を完了する必要があります。各オプションを使用すると、各ステップを実行できます。

  1. VPN 内のすべてのホストに公開鍵と秘密鍵を作成します
  2. nmclinmtuinm-connection-editor、または、wg-quick サービスを使用して、WireGuard サーバーを設定します。
  3. コマンドライン または グラフィカルインターフェース を使用して、WireGuard サーバーで firewalld を設定します。
  4. nmclinm-connection-editor、または wg-quick を使用して、WireGuard クライアントを設定します。

WireGuard はネットワーク層(レイヤー 3)上で動作します。そのため、DHCP を使用できず、静的 IP アドレスまたは IPv6 リンクローカルアドレスを、サーバーとクライアントの両方のトンネルデバイスに割り当てる必要があります。

重要

WireGuard は、RHEL の FIPS (Federal Information Processing Standard) モードが無効になっている場合にのみ使用できます。

WireGuard VPN に参加するすべてのホストがピアであることに注意してください。このドキュメントでは、接続を確立するホストを説明する client という用語と、クライアントが接続する固定ホスト名または IP アドレスを使用してホストを説明する server という用語を使用し、必要に応じてすべてのトラフィックをこのサーバーにルーティングします。

13.1. WireGuard が使用するプロトコルおよびプリミティブ

WireGuard は、次のプロトコルおよびプリミティブを使用します。

  • RFC7539 で説明されているようにAuthenticated Encryption with Associated Data (AEAD) 構造を使用して、Poly1305 で認証された対称暗号化用の ChaCha20
  • Elliptic-curve Diffie–Hellman (ECDH) 鍵交換用の Curve25519
  • RFC7693 で説明されているように、ハッシュ用および鍵付きのハッシュ用の BLAKE2
  • ハッシュテーブルキーの SipHash24
  • RFC5869 で説明されているように、鍵の派生に使用される HKDF

13.2. WireGuard がトンネル IP アドレス、公開鍵、およびリモートエンドポイントを使用する方法

WireGuard がピアにネットワークパケットを送信する場合は、次のコマンドを実行します。

  1. WireGuard は、パケットから宛先 IP を読み込み、ローカル設定で許可されている IP アドレスの一覧と比較します。ピアが見つからない場合、WireGuard はパケットを破棄します。
  2. ピアが有効な場合、WireGuard は、ピアの公開鍵を使用してパケットを暗号化します。
  3. 送信側ホストは、ホストの最新のインターネット IP アドレスを検索し、暗号化したパケットを送信します。

WireGuard がパケットを受信すると、以下が行われます。

  1. WireGuard は、リモートホストの秘密鍵を使用してパケットを復号します。
  2. WireGuard は、パケットから内部ソースアドレスを読み込み、ローカルホストのピア設定で許可されている IP アドレスの一覧に IP が設定されているかどうかを調べます。ソース IP が許可リストにある場合、WireGuard はパケットを受け入れます。IP アドレスが一覧にない場合は、WireGuard がパケットを破棄します。

公開鍵と許可された IP アドレスの関連付けは、Cryptokey Routing Table と呼ばれます。つまり、IP アドレスの一覧は、パケットの送信時にはルーティングテーブルと同様に動作し、パケットの受信時にはアクセス制御リストのように動作します。

13.3. NAT およびファイアウォールの背後で WireGuard クライアントを使用する

WireGuard は UDP プロトコルを使用し、ピアがパケットを送信する場合にのみデータを送信します。ルーターのステートフルファイアウォールとネットワークアドレス変換 (NAT) は、接続を追跡して、NAT の背後のピアまたはファイアウォールがパケットを受信できるようにします。

コネクションをアクティブな状態に保つために、WireGuard は persistent keepalives に対応しています。つまり、WireGuard がキープアライブパケットを送信する間隔を設定できます。デフォルトでは、ネットワークトラフィックを削減するために、永続的なキープアライブ機能は無効になっています。NAT を使用したネットワークでクライアントを使用する場合、またはしばらく非アクティブにした後にファイアウォールが接続を閉じる場合は、クライアントでこの機能を有効にします。

13.4. WireGuard 接続で使用される秘密鍵および公開鍵の作成

WireGuard は、base64 でエンコードされた秘密鍵と公開鍵を使用して、ホストを相互に認証します。そのため、WireGuard VPN に参加する各ホストで鍵を作成する必要があります。

重要

セキュアな接続には、ホストごとに異なる鍵を作成し、公開鍵のみをリモートの WireGuard ホストと共有するようにしてください。このドキュメントで使用しているサンプルキーは使用しないでください。

手順

  1. wireguard-tools パッケージをインストールします。

    # dnf install wireguard-tools
  2. ホストの秘密鍵と、対応する公開鍵を作成します。

    # wg genkey | tee /etc/wireguard/$HOSTNAME.private.key | wg pubkey > /etc/wireguard/$HOSTNAME.public.key

    鍵ファイルの内容は必要ですが、ファイル自体は必要ありません。ただし、Red Hat では、将来的に鍵を覚えておく必要がある場合に備え、ファイルを保持することを推奨しています。

  3. 鍵ファイルにセキュアなパーミッションを設定します。

    # chmod 600 /etc/wireguard/$HOSTNAME.private.key /etc/wireguard/$HOSTNAME.public.key
  4. 秘密鍵を表示します。

    # cat /etc/wireguard/$HOSTNAME.private.key
    YFAnE0psgIdiAF7XR4abxiwVRnlMfeltxu10s/c4JXg=

    ローカルホストで WireGuard 接続を設定するには、秘密鍵が必要です。秘密鍵を共有しないでください。

  5. 公開鍵を表示します。

    # cat /etc/wireguard/$HOSTNAME.public.key
    UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=

    リモートホストで WireGuard 接続を設定するには、公開鍵が必要です。

関連情報

  • man ページの wg(8)

13.5. nmcli を使用した WireGuard サーバーの設定

NetworkManager で接続プロファイルを作成することで、WireGuard サーバーを設定できます。この方法を使用して、NetworkManager に WireGuard 接続を管理させます。

この手順では、次の設定を前提としています。

  • サーバー

    • プライベートキー: YFAnE0psgIdiAF7XR4abxiwVRnlMfeltxu10s/c4JXg=
    • トンネル IPv4 アドレス: 192.0.2.1/24
    • トンネル IPv6 アドレス: 2001:db8:1::1/32
  • クライアント:

    • Public key: bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM=
    • トンネル IPv4 アドレス: 192.0.2.2/24
    • トンネル IPv6 アドレス: 2001:db8:1::2/32

前提条件

  • サーバーとクライアントの両方に公開鍵と秘密鍵を生成している。
  • 以下の情報を把握している。

    • サーバーの秘密鍵
    • クライアントの静的トンネルの IP アドレスとサブネットマスク
    • クライアントの公開鍵
    • サーバーの静的トンネル IP アドレスおよびサブネットマスク

手順

  1. NetworkManager WireGuard 接続プロファイルを追加します。

    # nmcli connection add type wireguard con-name server-wg0 ifname wg0 autoconnect no

    server-wg0 という名前のプロファイルを作成し、そのプロファイルに仮想インターフェースwg0 を割り当てます。設定を確定せずに接続を追加した後、接続が自動的に開始しないようにするには、autoconnect パラメータを無効にします。

  2. サーバーのトンネル IPv4 アドレスおよびサブネットマスクを設定します。

    # nmcli connection modify server-wg0 ipv4.method manual ipv4.addresses 192.0.2.1/24
  3. サーバーのトンネル IPv6 アドレスおよびサブネットマスクを設定します。

    # nmcli connection modify server-wg0 ipv6.method manual ipv6.addresses 2001:db8:1::1/32
  4. サーバーの秘密鍵を接続プロファイルに追加します。

    # nmcli connection modify server-wg0 wireguard.private-key "YFAnE0psgIdiAF7XR4abxiwVRnlMfeltxu10s/c4JXg="
  5. 着信 WireGuard 接続のポートを設定します。

    # nmcli connection modify server-wg0 wireguard.listen-port 51820

    着信 WireGuard 接続を受信するホストでは、常に固定ポート番号を設定してください。ポートを設定しないと、wg0 インターフェースをアクティブにするたびにランダムな空きポートが使用されます。

  6. このサーバーとの通信を許可する各クライアントに、ピア設定を追加します。この設定は手動で追加する必要があります。nmcli ユーティリティーでは、対応する接続プロパティーの設定に対応していないためです。

    1. /etc/NetworkManager/system-connections/server-wg0.nmconnection ファイルーを編集し、以下を追加します。

      [wireguard-peer.bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM=]
      allowed-ips=192.0.2.2;2001:db8:1::2;
      • [wireguard-peer.<public_key_of_the_client>] エントリーは、クライアントのピアセクションを定義し、セクション名にはクライアントの公開鍵が含まれます。
      • allowed-ips パラメーターは、このサーバーへのデータ送信を許可するクライアントのトンネル IP アドレスを設定します。

        各クライアントにセクションを追加します。

    2. server-wg0 接続プロファイルを再読み込みします。

      # nmcli connection load /etc/NetworkManager/system-connections/server-wg0.nmconnection
  7. オプション:自動的に起動するように接続を設定し、次のコマンドを実行します。

    # nmcli connection modify server-wg0 autoconnect yes
  8. server-wg0 接続を再アクティブ化します。

    # nmcli connection up server-wg0

検証

  1. wg0 デバイスのインターフェース設定を表示します。

    # wg show wg0
    interface: wg0
      public key: UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=
      private key: (hidden)
      listening port: 51820
    
    peer: bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM=
      allowed ips: 192.0.2.2/32, 2001:db8:1::2/128

    出力で秘密鍵を表示するには、WG_HIDE_KEYS=never wg show wg0 コマンドを使用します。

  2. wg0 デバイスの IP 設定を表示します。

    # ip address show wg0
    20: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
        link/none
        inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute wg0
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::1/32 scope global noprefixroute
           valid_lft forever preferred_lft forever
        inet6 fe80::3ef:8863:1ce2:844/64 scope link noprefixroute
           valid_lft forever preferred_lft forever

関連情報

  • man ページの wg(8)
  • nm-settings(5) の man ページの WireGuard setting セクション

13.6. nmtui を使用した WireGuard サーバーの設定

NetworkManager で接続プロファイルを作成することで、WireGuard サーバーを設定できます。この方法を使用して、NetworkManager に WireGuard 接続を管理させます。

この手順では、次の設定を前提としています。

  • サーバー

    • プライベートキー: YFAnE0psgIdiAF7XR4abxiwVRnlMfeltxu10s/c4JXg=
    • トンネル IPv4 アドレス: 192.0.2.1/24
    • トンネル IPv6 アドレス: 2001:db8:1::1/32
  • クライアント:

    • Public key: bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM=
    • トンネル IPv4 アドレス: 192.0.2.2/24
    • トンネル IPv6 アドレス: 2001:db8:1::2/32

前提条件

  • サーバーとクライアントの両方に公開鍵と秘密鍵を生成している。
  • 以下の情報を把握している。

    • サーバーの秘密鍵
    • クライアントの静的トンネルの IP アドレスとサブネットマスク
    • クライアントの公開鍵
    • サーバーの静的トンネル IP アドレスおよびサブネットマスク
  • NetworkManager-tui パッケージをインストールしました。

手順

  1. nmtui アプリケーションを開始します。

    # nmtui
  2. Edit a connection 選択し、Enter を押します。
  3. Add を選択し、Enter を押します。
  4. リストから WireGuard 接続タイプを選択し、Enter を押します。
  5. Edit connection ウィンドウで:

    1. NetworkManager が接続に割り当てる仮想インターフェース (wg0 など) の接続名を入力します。
    2. サーバーの秘密鍵を入力します。
    3. 着信 WireGuard 接続のリッスンポート番号 (51820 など) を設定します。

      着信 WireGuard 接続を受信するホストでは、常に固定ポート番号を設定してください。ポートを設定しないと、WireGuard はインターフェースをアクティブにするたびにランダムな空きポートを使用します。

      nmtui WireGuard サーバー全般
    4. Peers ペインの横にある Add をクリックします。

      1. クライアントの公開鍵を入力します。
      2. Allowed IPs フィールドには、このサーバーへのデータ送信を許可するクライアントのトンネル IP アドレスを設定します。
      3. OK を選択し、Enter を押します。

        nmtui WireGuard サーバーのピア設定
    5. IPv4 Configuration の横にある Show を選択し、Enter を押します。

      1. IPv4 設定方法 Manual を選択します。
      2. トンネルの IPv4 アドレスとサブネットマスクを入力します。Gateway フィールドは空のままにします。
    6. IPv6 Configuration の横にある Show を選択し、Enter を押します。

      1. IPv6 設定方法 Manual を選択します。
      2. トンネルの IPv6 アドレスとサブネットマスクを入力します。Gateway フィールドは空のままにします。
    7. OK を選択し、Enter を押します

      nmtui WireGuard サーバーの IP 設定
  6. 接続のリストが表示されたウィンドウで、Back を選択し、Enter を押します。
  7. NetworkManager TUI のメインウィンドウで、Quit を選択し、Enter を押します。

検証

  1. wg0 デバイスのインターフェース設定を表示します。

    # wg show wg0
    interface: wg0
      public key: UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=
      private key: (hidden)
      listening port: 51820
    
    peer: bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM=
      allowed ips: 192.0.2.2/32, 2001:db8:1::2/128

    出力で秘密鍵を表示するには、WG_HIDE_KEYS=never wg show wg0 コマンドを使用します。

  2. wg0 デバイスの IP 設定を表示します。

    # ip address show wg0
    20: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
        link/none
        inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute wg0
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::1/32 scope global noprefixroute
           valid_lft forever preferred_lft forever
        inet6 fe80::3ef:8863:1ce2:844/64 scope link noprefixroute
           valid_lft forever preferred_lft forever

関連情報

  • man ページの wg(8)

13.7. nm-connection-editor を使用した WireGuard サーバーの設定

NetworkManager で接続プロファイルを作成することで、WireGuard サーバーを設定できます。この方法を使用して、NetworkManager に WireGuard 接続を管理させます。

前提条件

  • サーバーとクライアントの両方に公開鍵と秘密鍵を生成している。
  • 以下の情報を把握している。

    • サーバーの秘密鍵
    • クライアントの静的トンネルの IP アドレスとサブネットマスク
    • クライアントの公開鍵
    • サーバーの静的トンネル IP アドレスおよびサブネットマスク

手順

  1. 端末を開き、次のコマンドを入力します。

    # nm-connection-editor
  2. + ボタンをクリックして、新しいコネクションを追加します。
  3. WireGuardの接続の種類を選択し、作成 をクリックします。
  4. オプション:接続名を更新します。
  5. General タブで、Connect automatically with priority を選択します。必要に応じて、優先度の値を設定します。
  6. WireGuard タブで、以下を行います。

    1. NetworkManager が接続に割り当てる仮想インターフェース (wg0 など) の名前を入力します。
    2. サーバーの秘密鍵を入力します。
    3. 着信 WireGuard 接続のリッスンポート番号 (51820 など) を設定します。

      着信 WireGuard 接続を受信するホストでは、常に固定ポート番号を設定してください。ポートを設定しないと、WireGuard はインターフェースをアクティブにするたびにランダムな空きポートを使用します。

    4. 追加 を選択して、ピアを追加します。

      1. クライアントの公開鍵を入力します。
      2. Allowed IPs フィールドには、このサーバーへのデータ送信を許可するクライアントのトンネル IP アドレスを設定します。
      3. 適用 をクリックします。
  7. IPv4 Settings タブで、以下を行います。

    1. Method 一覧で Manual を選択します。
    2. 追加 を選択して、トンネルの IPv4 アドレスとサブネットマスクを入力します。Gateway フィールドは空のままにします。
  8. IPv6 Settings タブで、以下を行います。

    1. Method 一覧で Manual を選択します。
    2. 追加 を選択して、トンネル IPv6 アドレスとサブネットマスクを入力します。Gateway フィールドは空のままにします。
  9. 保存 を選択して、接続プロファイルを保存します。

検証

  1. wg0 デバイスのインターフェース設定を表示します。

    # wg show wg0
    interface: wg0
      public key: UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=
      private key: (hidden)
      listening port: 51820
    
    peer: bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM=
      allowed ips: 192.0.2.2/32, 2001:db8:1::2/128

    出力で秘密鍵を表示するには、WG_HIDE_KEYS=never wg show wg0 コマンドを使用します。

  2. wg0 デバイスの IP 設定を表示します。

    # ip address show wg0
    20: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
        link/none
        inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute wg0
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::1/32 scope global noprefixroute
           valid_lft forever preferred_lft forever
        inet6 fe80::3ef:8863:1ce2:844/64 scope link noprefixroute
           valid_lft forever preferred_lft forever

関連情報

  • man ページの wg(8)

13.8. wg-quick サービスを使用した WireGuard サーバーの設定

/etc/wireguard/ ディレクトリーに設定ファイルを作成することで、WireGuard サーバーを設定できます。この方法を使用して、NetworkManager からサービスを独立して設定します。

この手順では、次の設定を前提としています。

  • サーバー

    • プライベートキー: YFAnE0psgIdiAF7XR4abxiwVRnlMfeltxu10s/c4JXg=
    • トンネル IPv4 アドレス: 192.0.2.1/24
    • トンネル IPv6 アドレス: 2001:db8:1::1/32
  • クライアント:

    • Public key: bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM=
    • トンネル IPv4 アドレス: 192.0.2.2/24
    • トンネル IPv6 アドレス: 2001:db8:1::2/32

前提条件

  • サーバーとクライアントの両方に公開鍵と秘密鍵を生成している。
  • 以下の情報を把握している。

    • サーバーの秘密鍵
    • クライアントの静的トンネルの IP アドレスとサブネットマスク
    • クライアントの公開鍵
    • サーバーの静的トンネル IP アドレスおよびサブネットマスク

手順

  1. wireguard-tools パッケージをインストールします。

    # dnf install wireguard-tools
  2. 以下の内容で /etc/wireguard/wg0.conf ファイルを作成します。

    [Interface]
    Address = 192.0.2.1/24, 2001:db8:1::1/32
    ListenPort = 51820
    PrivateKey = YFAnE0psgIdiAF7XR4abxiwVRnlMfeltxu10s/c4JXg=
    
    [Peer]
    PublicKey = bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM=
    AllowedIPs = 192.0.2.2, 2001:db8:1::2
    • [Interface] セクションでは、サーバー上のインターフェースの WireGuard 設定を説明します。

      • Address: サーバーのトンネル IP アドレスをコンマで区切った一覧です。
      • PrivateKey: サーバーの秘密鍵。
      • ListenPort: WireGuard が着信 UDP 接続をリッスンするポートです。

        着信 WireGuard 接続を受信するホストでは、常に固定ポート番号を設定してください。ポートを設定しないと、wg0 インターフェースをアクティブにするたびにランダムな空きポートが使用されます。

    • [Peer] セクションでは、1 台のクライアントの設定を説明します。

      • PublicKey: クライアントの公開鍵。
      • AllowedIPs: このサーバーにデータを送信できるクライアントのトンネル IP アドレスです。
  3. WireGuard 接続を有効にして起動します。

    # systemctl enable --now wg-quick@wg0

    systemd インスタンス名は、/etc/wireguard/ ディレクトリーの設定ファイル名に、.conf の接尾辞を付けずに、同じ名前にする必要があります。このサービスは、仮想ネットワークインターフェースにもこの名前を使用します。

検証

  1. wg0 デバイスのインターフェース設定を表示します。

    # wg show wg0
    interface: wg0
      public key: UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=
      private key: (hidden)
      listening port: 51820
    
    peer: bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM=
      allowed ips: 192.0.2.2/32, 2001:db8:1::2/128

    出力で秘密鍵を表示するには、WG_HIDE_KEYS=never wg show wg0 コマンドを使用します。

  2. wg0 デバイスの IP 設定を表示します。

    # ip address show wg0
    20: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
        link/none
        inet 192.0.2.1/24 scope global wg0
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::1/32 scope global
           valid_lft forever preferred_lft forever

関連情報

  • man ページの wg(8)
  • wg-quick(8) の man ページ

13.9. コマンドラインを使用した WireGuard サーバーでの firewalld の設定

クライアントからの着信接続を許可するには、WireGuard サーバーで firewalld サービスを設定する必要があります。また、クライアントが WireGuard サーバーをデフォルトゲートウェイとして使用し、すべてのトラフィックをトンネル経由でルーティングできるようにするには、マスカレードを有効にする必要があります。

手順

  1. firewalld サービスで着信接続用の WireGuard ポートを開きます。

    # firewall-cmd --permanent --add-port=51820/udp --zone=public
  2. クライアントがすべてのトラフィックをトンネル経由でルーティングし、WireGuard サーバーをデフォルトゲートウェイとして使用する場合は、public ゾーンのマスカレードを有効にします。

    # firewall-cmd --permanent --zone=public --add-masquerade
  3. firewalld ルールを再読み込みします。

    # firewall-cmd --reload

検証

  • public ゾーンの設定を表示します。

    # firewall-cmd --list-all
    public (active)
      ...
      ports: 51820/udp
      masquerade: yes
      ...

関連情報

  • firewall-cmd(1) の man ページ

13.10. グラフィカルインターフェースを使用した WireGuard サーバーでの firewalld の設定

クライアントからの着信接続を許可するには、WireGuard サーバーで firewalld サービスを設定する必要があります。また、クライアントが WireGuard サーバーをデフォルトゲートウェイとして使用し、すべてのトラフィックをトンネル経由でルーティングできるようにするには、マスカレードを有効にする必要があります。

手順

  1. Super キーを押して、firewall を入力し、結果から Firewall アプリケーションを選択します。
  2. Configuration 一覧で Permanent を選択します。
  3. public ゾーンを選択します。
  4. WireGuard ポートへの着信接続を許可します。

    1. Ports タブで、追加 をクリックします。
    2. 着信 WireGuard 接続に設定したポート番号を入力します。
    3. Protocol 一覧から udp を選択します。
    4. OK をクリックします。
  5. クライアントがすべてのトラフィックをトンネル経由でルーティングし、WireGuard サーバーをデフォルトゲートウェイとして使用する場合は、次のコマンドを実行します。

    1. public ゾーンの Masquerading タブに移動します。
    2. Masquerade zone を選択します。
  6. オプションFirewalld の再読み込み を選択します。

検証

  • public ゾーンの設定を表示します。

    # firewall-cmd --list-all
    public (active)
      ...
      ports: 51820/udp
      masquerade: yes
      ...

13.11. nmcli を使用した WireGuard クライアントの設定

NetworkManager で接続プロファイルを作成することで、WireGuard クライアントを設定できます。この方法を使用して、NetworkManager に WireGuard 接続を管理させます。

この手順では、次の設定を前提としています。

  • クライアント:

    • 秘密鍵: aPUcp5vHz8yMLrzk8SsDyYnV33IhE/k20e52iKJFV0A=
    • トンネル IPv4 アドレス: 192.0.2.2/24
    • トンネル IPv6 アドレス: 2001:db8:1::2/32
  • サーバー

    • 公開鍵: UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=
    • トンネル IPv4 アドレス: 192.0.2.1/24
    • トンネル IPv6 アドレス: 2001:db8:1::1/32

前提条件

  • サーバーとクライアントの両方に公開鍵と秘密鍵を生成している。
  • 以下の情報を把握している。

    • クライアントの秘密鍵
    • クライアントの静的トンネルの IP アドレスとサブネットマスク
    • サーバーの公開鍵
    • サーバーの静的トンネル IP アドレスおよびサブネットマスク

手順

  1. NetworkManager WireGuard 接続プロファイルを追加します。

    # nmcli connection add type wireguard con-name client-wg0 ifname wg0 autoconnect no

    client-wg0 という名前のプロファイルを作成し、そのプロファイルに仮想インターフェースwg0 を割り当てます。設定を確定せずに接続を追加した後、接続が自動的に開始しないようにするには、autoconnect パラメータを無効にします。

  2. オプション:NetworkManager が client-wg 接続を自動的に起動しないように設定します。

    # nmcli connection modify client-wg0 autoconnect no
  3. クライアントのトンネル IPv4 アドレスとサブネットマスクを設定します。

    # nmcli connection modify client-wg0 ipv4.method manual ipv4.addresses 192.0.2.2/24
  4. クライアントのトンネル IPv6 アドレスとサブネットマスクを設定します。

    # nmcli connection modify client-wg0 ipv6.method manual ipv6.addresses 2001:db8:1::2/32
  5. すべてのトラフィックをトンネル経由でルーティングする場合は、サーバーのトンネル IP アドレスをデフォルトゲートウェイとして設定します。

    # nmcli connection modify client-wg0 ipv4.gateway 192.0.2.1 ipv6.gateway 2001:db8:1::1
  6. サーバーの秘密鍵を接続プロファイルに追加します。

    # nmcli connection modify client-wg0 wireguard.private-key "aPUcp5vHz8yMLrzk8SsDyYnV33IhE/k20e52iKJFV0A="
    1. /etc/NetworkManager/system-connections/client-wg0.nmconnection ファイルーを編集し、以下を追加します。

      [wireguard-peer.UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=]
      endpoint=server.example.com:51820
      allowed-ips=192.0.2.1;2001:db8:1::1;
      persistent-keepalive=20
      • [wireguard-peer.<public_key_of_the_server>] エントリーは、サーバーのピアセクションを定義します。セクション名には、サーバーの公開鍵が含まれます。
      • endpoint パラメーターは、サーバーのホスト名または IP アドレスとポートを設定します。クライアントはこの情報を使用して接続を確立します。
      • allowed-ips パラメーターは、このクライアントへのデータ送信を許可する IP アドレスの一覧を設定します。たとえば、このパラメーターを次のように設定します。

        • サーバーのみがこのクライアントと通信できるようにするサーバーのトンネル IP アドレス。上記の例の値は、このシナリオを設定します。
        • リモートの IPv4 アドレスおよび IPv6 アドレスが、このクライアントと通信できるように許可する 0.0.0.0/0;::/0;この設定を使用して、すべてのトラフィックをトンネル経由でルーティングし、WireGuard サーバーをデフォルトゲートウェイとして使用します。
      • オプションの persistent-keepalive パラメーターは、WireGuard がサーバーにキープアライブパケットを送信する間隔を秒単位で定義します。ネットワークアドレス変換 (NAT) を使用するネットワークでクライアントを使用する場合、またはしばらく非アクティブにした後にファイアウォールが UDP 接続を閉じる場合は、このパラメーターを設定します。
    2. client-wg0 接続プロファイルを再読み込みします。

      # nmcli connection load /etc/NetworkManager/system-connections/client-wg0.nmconnection
  7. client-wg0 接続を再アクティブ化します。

    # nmcli connection up client-wg0

検証

  1. サーバーの IP アドレスの ping を実行します。

    # ping 192.0.2.1
    # ping6 2001:db8:1::1
  2. wg0 デバイスのインターフェース設定を表示します。

    # wg show wg0
    interface: wg0
      public key: bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM=
      private key: (hidden)
      listening port: 51820
    
    peer: UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=
      endpoint: server.example.com:51820
      allowed ips: 192.0.2.1/32, 2001:db8:1::1/128
      latest handshake: 1 minute, 41 seconds ago
      transfer: 824 B received, 1.01 KiB sent
      persistent keepalive: every 20 seconds

    出力で秘密鍵を表示するには、WG_HIDE_KEYS=never wg show wg0 コマンドを使用します。

    VPN トンネルを介してトラフィックを送信している場合は、latest handshake エントリーと transfer エントリーのみが含まれることに注意してください。

  3. wg0 デバイスの IP 設定を表示します。

    # ip address show wg0
    10: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
        link/none
        inet 192.0.2.2/24 brd 192.0.2.255 scope global noprefixroute wg0
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::2/32 scope global noprefixroute
           valid_lft forever preferred_lft forever
        inet6 fe80::73d9:6f51:ea6f:863e/64 scope link noprefixroute
           valid_lft forever preferred_lft forever

関連情報

  • man ページの wg(8)
  • nm-settings(5) の man ページの WireGuard setting セクション

13.12. nmtui を使用した WireGuard クライアントの設定

NetworkManager で接続プロファイルを作成することで、WireGuard クライアントを設定できます。この方法を使用して、NetworkManager に WireGuard 接続を管理させます。

この手順では、次の設定を前提としています。

  • クライアント:

    • 秘密鍵: aPUcp5vHz8yMLrzk8SsDyYnV33IhE/k20e52iKJFV0A=
    • トンネル IPv4 アドレス: 192.0.2.2/24
    • トンネル IPv6 アドレス: 2001:db8:1::2/32
  • サーバー

    • 公開鍵: UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=
    • トンネル IPv4 アドレス: 192.0.2.1/24
    • トンネル IPv6 アドレス: 2001:db8:1::1/32

前提条件

  • サーバーとクライアントの両方に公開鍵と秘密鍵を生成している。
  • 以下の情報を把握している。

    • クライアントの秘密鍵
    • クライアントの静的トンネルの IP アドレスとサブネットマスク
    • サーバーの公開鍵
    • サーバーの静的トンネル IP アドレスおよびサブネットマスク
  • NetworkManager-tui パッケージをインストールしました

手順

  1. nmtui アプリケーションを開始します。

    # nmtui
  2. Edit a connection 選択し、Enter を押します。
  3. Add を選択し、Enter を押します。
  4. リストから WireGuard 接続タイプを選択し、Enter を押します。
  5. Edit connection ウィンドウで:

    1. NetworkManager が接続に割り当てる仮想インターフェース (wg0 など) の接続名を入力します。
    2. クライアントの秘密鍵を入力します。

      nmtui WireGuard クライアント全般
    3. Peers ペインの横にある Add をクリックします。

      1. サーバーの公開鍵を入力します。
      2. Allowed IPs フィールドを設定します。たとえば、次のように設定します。

        • サーバーのみがこのクライアントと通信できるようにするサーバーのトンネル IP アドレス。
        • リモートの IPv4 アドレスおよび IPv6 アドレスが、このクライアントと通信できるように許可する 0.0.0.0/0,::/0この設定を使用して、すべてのトラフィックをトンネル経由でルーティングし、WireGuard サーバーをデフォルトゲートウェイとして使用します。
      3. Endpoint フィールドに、WireGuard サーバーのホスト名または IP アドレスとポートを入力します。hostname_or_IP:port_number の形式を使用します。
      4. オプション:ネットワークアドレス変換 (NAT) を使用するネットワークでクライアントを使用するか、またはしばらく非アクティブにした後にファイアウォールが UDP 接続を閉じる場合は、永続的なキープアライブの間隔を秒単位で設定します。この間隔で、クライアントは、キープアライブパケットをサーバーに送信します。
      5. OK を選択し、Enter を押します。

        nmtui WireGuard クライアントピア設定
    4. IPv4 Configuration の横にある Show を選択し、Enter を押します。

      1. IPv4 設定方法 Manual を選択します。
      2. トンネルの IPv4 アドレスとサブネットマスクを入力します。Gateway フィールドは空のままにします。
    5. IPv6 Configuration の横にある Show を選択し、Enter を押します。

      1. IPv6 設定方法 Manual を選択します。
      2. トンネルの IPv6 アドレスとサブネットマスクを入力します。Gateway フィールドは空のままにします。
    6. オプション:Automatically connect を選択します。
    7. OK を選択し、Enter を押します

      nmtui WireGuard クライアントの IP 設定
  6. 接続のリストが表示されたウィンドウで、Back を選択し、Enter を押します。
  7. NetworkManager TUI のメインウィンドウで、Quit を選択し、Enter を押します。

検証

  1. サーバーの IP アドレスの ping を実行します。

    # ping 192.0.2.1
    # ping6 2001:db8:1::1
  2. wg0 デバイスのインターフェース設定を表示します。

    # wg show wg0
    interface: wg0
      public key: bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM=
      private key: (hidden)
      listening port: 51820
    
    peer: UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=
      endpoint: server.example.com:51820
      allowed ips: 192.0.2.1/32, 2001:db8:1::1/128
      latest handshake: 1 minute, 41 seconds ago
      transfer: 824 B received, 1.01 KiB sent
      persistent keepalive: every 20 seconds

    出力で秘密鍵を表示するには、WG_HIDE_KEYS=never wg show wg0 コマンドを使用します。

    VPN トンネルを介してトラフィックを送信している場合は、latest handshake エントリーと transfer エントリーのみが含まれることに注意してください。

  3. wg0 デバイスの IP 設定を表示します。

    # ip address show wg0
    10: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
        link/none
        inet 192.0.2.2/24 brd 192.0.2.255 scope global noprefixroute wg0
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::2/32 scope global noprefixroute
           valid_lft forever preferred_lft forever
        inet6 fe80::73d9:6f51:ea6f:863e/64 scope link noprefixroute
           valid_lft forever preferred_lft forever

関連情報

  • man ページの wg(8)

13.13. nm-connection-editor を使用した WireGuard クライアントの設定

NetworkManager で接続プロファイルを作成することで、WireGuard クライアントを設定できます。この方法を使用して、NetworkManager に WireGuard 接続を管理させます。

前提条件

  • サーバーとクライアントの両方に公開鍵と秘密鍵を生成している。
  • 以下の情報を把握している。

    • クライアントの秘密鍵
    • クライアントの静的トンネルの IP アドレスとサブネットマスク
    • サーバーの公開鍵
    • サーバーの静的トンネル IP アドレスおよびサブネットマスク

手順

  1. 端末を開き、次のコマンドを入力します。

    # nm-connection-editor
  2. + ボタンをクリックして、新しいコネクションを追加します。
  3. WireGuardの接続の種類を選択し、作成 をクリックします。
  4. オプション:接続名を更新します。
  5. オプション:General タブで、Connect automatically with priority を選択します。
  6. WireGuard タブで、以下を行います。

    1. NetworkManager が接続に割り当てる仮想インターフェース (wg0 など) の名前を入力します。
    2. クライアントの秘密鍵を入力します。
    3. 追加 を選択して、ピアを追加します。

      1. サーバーの公開鍵を入力します。
      2. Allowed IPs フィールドを設定します。たとえば、次のように設定します。

        • サーバーのみがこのクライアントと通信できるようにするサーバーのトンネル IP アドレス。
        • リモートの IPv4 アドレスおよび IPv6 アドレスが、このクライアントと通信できるように許可する 0.0.0.0/0;::/0;この設定を使用して、すべてのトラフィックをトンネル経由でルーティングし、WireGuard サーバーをデフォルトゲートウェイとして使用します。
      3. Endpoint フィールドに、WireGuard サーバーのホスト名または IP アドレスとポートを入力します。hostname_or_IP:port_number の形式を使用します。
      4. オプション:ネットワークアドレス変換 (NAT) を使用するネットワークでクライアントを使用するか、またはしばらく非アクティブにした後にファイアウォールが UDP 接続を閉じる場合は、永続的なキープアライブの間隔を秒単位で設定します。この間隔で、クライアントは、キープアライブパケットをサーバーに送信します。
      5. 適用 をクリックします。
  7. IPv4 Settings タブで、以下を行います。

    1. Method 一覧で Manual を選択します。
    2. 追加 を選択して、トンネルの IPv4 アドレスとサブネットマスクを入力します。
    3. すべてのトラフィックをトンネル経由でルーティングする場合は、サーバーのトンネル IPv4 アドレスを Gateway フィールドに設定します。それ以外の場合は、フィールドを空のままにします。
  8. IPv6 Settings タブで、以下を行います。

    1. Method 一覧で Manual を選択します。
    2. 追加 を選択して、トンネル IPv6 アドレスとサブネットマスクを入力します。
    3. すべてのトラフィックをトンネル経由でルーティングする場合は、Gateway フィールドに、サーバーのトンネル IPv6 アドレスを設定します。それ以外の場合は、フィールドを空のままにします。
  9. 保存 を選択して、接続プロファイルを保存します。

検証

  1. サーバーの IP アドレスの ping を実行します。

    # ping 192.0.2.1
    # ping6 2001:db8:1::1
  2. wg0 デバイスのインターフェース設定を表示します。

    # wg show wg0
    interface: wg0
      public key: bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM=
      private key: (hidden)
      listening port: 51820
    
    peer: UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=
      endpoint: server.example.com:51820
      allowed ips: 192.0.2.1/32, 2001:db8:1::1/128
      latest handshake: 1 minute, 41 seconds ago
      transfer: 824 B received, 1.01 KiB sent
      persistent keepalive: every 20 seconds

    出力で秘密鍵を表示するには、WG_HIDE_KEYS=never wg show wg0 コマンドを使用します。

    VPN トンネルを介してトラフィックを送信している場合は、latest handshake エントリーと transfer エントリーのみが含まれることに注意してください。

  3. wg0 デバイスの IP 設定を表示します。

    # ip address show wg0
    10: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
        link/none
        inet 192.0.2.2/24 brd 192.0.2.255 scope global noprefixroute wg0
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::2/32 scope global noprefixroute
           valid_lft forever preferred_lft forever
        inet6 fe80::73d9:6f51:ea6f:863e/64 scope link noprefixroute
           valid_lft forever preferred_lft forever

関連情報

  • man ページの wg(8)

13.14. wg-quick サービスを使用した WireGuard クライアントの設定

/etc/wireguard/ ディレクトリーに設定ファイルを作成することで、WireGuard クライアントを設定できます。この方法を使用して、NetworkManager からサービスを独立して設定します。

この手順では、次の設定を前提としています。

  • クライアント:

    • 秘密鍵: aPUcp5vHz8yMLrzk8SsDyYnV33IhE/k20e52iKJFV0A=
    • トンネル IPv4 アドレス: 192.0.2.2/24
    • トンネル IPv6 アドレス: 2001:db8:1::2/32
  • サーバー

    • 公開鍵: UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=
    • トンネル IPv4 アドレス: 192.0.2.1/24
    • トンネル IPv6 アドレス: 2001:db8:1::1/32

前提条件

  • サーバーとクライアントの両方に公開鍵と秘密鍵を生成している。
  • 以下の情報を把握している。

    • クライアントの秘密鍵
    • クライアントの静的トンネルの IP アドレスとサブネットマスク
    • サーバーの公開鍵
    • サーバーの静的トンネル IP アドレスおよびサブネットマスク

手順

  1. wireguard-tools パッケージをインストールします。

    # dnf install wireguard-tools
  2. 以下の内容で /etc/wireguard/wg0.conf ファイルを作成します。

    [Interface]
    Address = 192.0.2.2/24, 2001:db8:1::2/32
    PrivateKey = aPUcp5vHz8yMLrzk8SsDyYnV33IhE/k20e52iKJFV0A=
    
    [Peer]
    PublicKey = UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=
    AllowedIPs = 192.0.2.1, 2001:db8:1::1
    Endpoint = server.example.com:51820
    PersistentKeepalive = 20
    • [Interface] セクションでは、クライアントのインターフェースの WireGuard 設定を説明します。

      • Address: クライアントのトンネル IP アドレスをコンマで区切った一覧です。
      • PrivateKey: クライアントの秘密鍵。
    • [Peer] セクションでは、サーバーの設定を説明します。

      • PublicKey: サーバーの公開鍵。
      • AllowedIPs: このクライアントにデータを送信できる IP アドレス。たとえば、このパラメーターを次のように設定します。

        • サーバーのみがこのクライアントと通信できるようにするサーバーのトンネル IP アドレス。上記の例の値は、このシナリオを設定します。
        • リモートの IPv4 アドレスおよび IPv6 アドレスが、このクライアントと通信できるように許可する 0.0.0.0/0, ::/0この設定を使用して、すべてのトラフィックをトンネル経由でルーティングし、WireGuard サーバーをデフォルトゲートウェイとして使用します。
      • Endpoint: サーバーのホスト名または IP アドレスとポートを設定します。クライアントはこの情報を使用して接続を確立します。
      • オプションの persistent-keepalive パラメーターは、WireGuard がサーバーにキープアライブパケットを送信する間隔を秒単位で定義します。ネットワークアドレス変換 (NAT) を使用するネットワークでクライアントを使用する場合、またはしばらく非アクティブにした後にファイアウォールが UDP 接続を閉じる場合は、このパラメーターを設定します。
  3. WireGuard 接続を有効にして起動します。

    # systemctl enable --now wg-quick@wg0

    systemd インスタンス名は、/etc/wireguard/ ディレクトリーの設定ファイル名に、.conf の接尾辞を付けずに、同じ名前にする必要があります。このサービスは、仮想ネットワークインターフェースにもこの名前を使用します。

検証

  1. サーバーの IP アドレスの ping を実行します。

    # ping 192.0.2.1
    # ping6 2001:db8:1::1
  2. wg0 デバイスのインターフェース設定を表示します。

    # wg show wg0
    interface: wg0
      public key: bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM=
      private key: (hidden)
      listening port: 51820
    
    peer: UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=
      endpoint: server.example.com:51820
      allowed ips: 192.0.2.1/32, 2001:db8:1::1/128
      latest handshake: 1 minute, 41 seconds ago
      transfer: 824 B received, 1.01 KiB sent
      persistent keepalive: every 20 seconds

    出力で秘密鍵を表示するには、WG_HIDE_KEYS=never wg show wg0 コマンドを使用します。

    VPN トンネルを介してトラフィックを送信している場合は、latest handshake エントリーと transfer エントリーのみが含まれることに注意してください。

  3. wg0 デバイスの IP 設定を表示します。

    # ip address show wg0
    10: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
        link/none
        inet 192.0.2.2/24 scope global wg0
           valid_lft forever preferred_lft forever
        inet6 2001:db8:1::2/32__ scope global
           valid_lft forever preferred_lft forever

関連情報

  • man ページの wg(8)
  • wg-quick(8) の man ページ

第14章 VPN 接続の設定

本セクションでは、仮想プライベートネットワーク (VPN) 接続を設定する方法を説明します。

VPN は、インターネットを介してローカルネットワークに接続する方法です。Libreswan が提供する IPsec は、VPN を作成するのに推奨される方法です。Libreswan は、VPN 用のユーザー空間の IPsec 実装です。VPN は、インターネットなどの中間ネットワークにトンネルを設定して、LAN と別のリモート LAN との間の通信を可能にします。セキュリティー上の理由から、VPN トンネルは常に認証と暗号化を使用します。暗号化操作では、LibreswanNSS ライブラリーを使用します。

14.1. control-center による VPN 接続の確立

この手順では、control-center を使用して VPN 接続を設定する方法を説明します。

前提条件

  • 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 セクションでは、以下の設定が可能です。

      図14.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)

14.2. nm-connection-editor による VPN 接続の設定

この手順では、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 ページ

14.3. 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

検証

ネットワークカードが ESP ハードウェアオフロードサポートに対応している場合は、以下の手順に従って結果を検証します。

  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 ハードウェアオフロードが動作します。

14.4. 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 ハードウェアオフロードが動作します。

関連情報

第15章 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 で動作します。

15.1. nmcli を使用して IPIP トンネルを設定して、IPv4 パケットの IPv4 トラフィックをカプセル化します。

IPIP (IP over IP) トンネルは OSI レイヤー 3 で動作し、RFC 2003 で説明されているように IPv4 パケットの IPv4 トラフィックをカプセル化します。

重要

IPIP トンネルを介して送信されるデータは暗号化されません。セキュリティー上の理由から、すでに暗号化されたデータにはトンネルを使用してください (HTTPS などの他のプロトコル)。

IPIP トンネルはユニキャストパケットのみをサポートすることに注意してください。マルチキャストをサポートする IPv4 トンネルが必要な場合は、「nmcli を使用した GRE トンネルを設定して IPv4 パケット内のレイヤー 3 トラフィックをカプセル化」を参照します。

この手順では、以下の図に示すように、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

関連情報

  • nmcli の man ページ
  • nm-settings(5) の man ページの ip-tunnel settings セクション

15.2. nmcli を使用して GRE トンネルを設定して、IPv4 パケット内のレイヤー 3 トラフィックをカプセル化

Generic Routing Encapsulation (GRE) トンネルは、RFC 2784 で説明されているように、IPv4 パケットでレイヤー 3 トラフィックをカプセル化します。GRE トンネルは、有効なイーサネットタイプで任意のレイヤー 3 プロトコルをカプセル化できます。

重要

GRE トンネルを介して送信されるデータは暗号化されません。セキュリティー上の理由から、すでに暗号化されたデータにはトンネルを使用してください (HTTPS などの他のプロトコル)。

この手順では、以下の図に示すように、2 つの RHEL ルーター間で GRE トンネルを作成し、インターネット経由で 2 つの内部サブネットに接続する方法を説明します。

GRE トンネル
注記

gre0 デバイス名は予約されています。デバイスに gre1 または別の名前を使用します。

前提条件

  • 各 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 アドレスを設定します。

    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

関連情報

  • nmcli の man ページ
  • nm-settings(5) の man ページの ip-tunnel settings セクション

15.3. IPv4 でイーサネットフレームを転送するための GRETAP トンネルの設定

GRETAP (Generic Routing Encapsulation Terminal Access Point) トンネルは OSI レベル 2 で動作し、RFC 2784 で説明されているように IPv4 パケットのイーサネットトラフィックをカプセル化します。

重要

GRETAP トンネルを介して送信されるデータは暗号化されません。セキュリティー上の理由から、VPN または別の暗号化された接続にトンネルを確立します。

この手順では、以下の図に示すように、2 つの RHEL ルーター間で GRETAP トンネルを作成し、ブリッジを使用して 2 つのネットワークに接続する方法を説明します。

GRETAP トンネル
注記

gretap0 デバイス名が予約されています。デバイスに gretap1 または別の名前を使用します。

前提条件

  • 各 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 アドレスを設定します。

    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

関連情報

  • nmcli の man ページ
  • nm-settings(5) の man ページの ip-tunnel settings セクション

15.4. 関連情報

  • man ページの ip-link(8)

第16章 ポートミラーリング

ネットワーク管理者は、ポートミラーリングを使用して、あるネットワークデバイスから別のネットワークデバイスに通信中の受信および送信トラフィックを複製できます。管理者は、ポートミラーリングを使用してネットワークトラフィックを監視し、ネットワークデータを収集します。

  • ネットワークの問題のデバッグしてネットワークフローを調整する
  • ネットワークトラフィックを調べて分析し、ネットワークの問題をトラブルシュートする
  • 侵入を検出する

16.1. nmcli を使用したネットワークインターフェースのミラーリング

NetworkManager を使用してポートのミラーリングを設定できます。以下の手順では、トラフィック制御 (tc) ルールおよびフィルターを enp1s0 ネットワークインターフェースに追加することで、enp1s0 から enp7s0 にネットワークトラフィックをミラーリングします。

前提条件

  • ネットワークトラフィックをミラーリングするネットワークインターフェース。

手順

  1. ネットワークトラフィックをミラーリングするネットワーク接続プロファイルを追加します。

    # nmcli connection add type ethernet ifname enp1s0 con-name enp1s0 autoconnect no
  2. 10: handle で送信(送信)トラフィックについて、prio qdiscenp1s0 に割り当てます。

    # nmcli connection modify enp1s0 +tc.qdisc "root prio handle 10:"

    子なしで割り当てられた prio qdisc では、フィルターを割り当てることができます。

  3. ffff: handle を使用して、受信トラフィックの qdisc を追加します。

    # nmcli connection modify enp1s0 +tc.qdisc "ingress handle ffff:"
  4. 以下のフィルターを追加して、ingress および egress qdiscs のパケットを一致させ、enp7s0 にミラーリングします。

    # nmcli connection modify enp1s0 +tc.tfilter "parent ffff: matchall action mirred egress mirror dev enp7s0"
    
    # nmcli connection modify enp1s0 +tc.tfilter "parent 10: matchall action mirred egress mirror dev enp7s0"

    matchall フィルターはすべてのパケットに一致し、mirred アクションではパケットを宛先にリダイレクトします。

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

    # nmcli connection up enp1s0

検証手順

  1. tcpdump ユーティリティーをインストールします。

    # dnf install tcpdump
  2. ターゲットデバイスでミラーリングされたトラフィック(enp7s0)を表示します。

    # tcpdump -i enp7s0

第17章 すべての MAC アドレスからのトラフィックを受け入れるようにネットワークデバイスを設定

ネットワークデバイスは通常、コントローラーが受信するようにプログラムされているパケットを傍受して読み取ります。ネットワークデバイスを設定して、仮想スイッチまたはポートグループレベルのすべての MAC アドレスからのトラフィックを受け入れることができます。

このネットワークモードを使用すると、以下を行うことができます。

  • ネットワーク接続問題を診断する
  • セキュリティー上の理由から、ネットワークアクティビティーを監視する
  • 転送中のプライベートデータまたはネットワークへの侵入を傍受する

本セクションでは、iproute2 ユーティリティー、nmcli ユーティリティー、または nmstatectl ユーティリティーを使用して、すべての MAC アドレスからのトラフィックを受け入れるようにネットワークデバイスを設定する方法を説明します。InfiniBand を除くあらゆる種類のネットワークデバイスに対してこのモードを有効にできます。

17.1. iproute2 を使用して、すべてのトラフィックを受け入れるようにネットワークデバイスを一時的に設定する

この手順では、MAC アドレスに関係なくすべてのトラフィックを受け入れるようにネットワークデバイスを設定する方法を説明します。iproute2 ユーティリティーを使用して行った変更は一時的なもので、マシンの再起動後に失われます。

手順

  1. オプション:ネットワークインターフェースを表示して、すべてのトラフィックを受信するインターフェースを識別します。

    # ip a
    1: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
        link/ether 98:fa:9b:a4:34:09 brd ff:ff:ff:ff:ff:ff
    2: bond0: <NO-CARRIER,BROADCAST,MULTICAST,MASTER,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
        link/ether 6a:fd:16:b0:83:5c brd ff:ff:ff:ff:ff:ff
    3: wlp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    ...
  2. このプロパティーを有効または無効にするには、デバイスを変更します。

    • enp1s0accept-all-mac-addresses モードを有効にするには、次のコマンドを実行します。

      # ip link set enp1s0 promisc on
    • enp1s0accept-all-mac-addresses モードを無効にするには、次のコマンドを実行します。

      # ip link set enp1s0 promisc off

検証手順

  • accept-all-mac-addresses モードが有効になっていることを確認するには、次のコマンドを実行します。

    # ip link show enp1s0
    1: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
        link/ether 98:fa:9b:a4:34:09 brd ff:ff:ff:ff:ff:ff

機器の説明の PROMISC フラグは、モードが有効であることを示しています。

17.2. nmcli を使用して、すべてのトラフィックを受け入れるようにネットワークデバイスを永続的に設定

この手順では、nmcli コマンドを使用して、MAC アドレスに関係なくトラフィックを受け入れるようにネットワークデバイスを設定する方法を説明します。

手順

  1. オプション:ネットワークインターフェースを表示して、すべてのトラフィックを受信するインターフェースを識別します。

    # ip a
    1: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
        link/ether 98:fa:9b:a4:34:09 brd ff:ff:ff:ff:ff:ff
    2: bond0: <NO-CARRIER,BROADCAST,MULTICAST,MASTER,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
        link/ether 6a:fd:16:b0:83:5c brd ff:ff:ff:ff:ff:ff
    3: wlp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    ...

    接続がない場合は、新しい接続を作成できます。

  2. ネットワークデバイスを変更して、このプロパティーを有効または無効にします。

    • enp1s0ethernet.accept-all-mac-addresses モードを有効にするには、以下を実行します。

      # nmcli connection modify enp1s0 ethernet.accept-all-mac-addresses yes
    • enp1s0accept-all-mac-addresses モードを無効にするには、次のコマンドを実行します。

      # nmcli connection modify enp1s0 ethernet.accept-all-mac-addresses no
  3. 接続を再度アクティブにして、変更を適用するには、以下のコマンドを実行します。

    # nmcli connection up enp1s0

検証手順

  • ethernet.accept-all-mac-addresses モードが有効になっていることを確認するには、次のコマンドを実行します。

    # nmcli connection show enp1s0
    ...
    802-3-ethernet.accept-all-mac-addresses:1     (true)

この802-3-ethernet.accept-all-mac-addresses: trueは、モードが有効であることを示しています。

17.3. nmstatectl を使用してすべてのトラフィックを受け入れるようにネットワークデバイスを永続的に設定

この手順では、nmstatectl ユーティリティを使用して、MAC アドレスに関係なくすべてのトラフィックを受け入れるようにネットワークデバイスを設定する方法を説明します。

前提条件

  • nmstate パッケージがインストールされている。
  • デバイスの設定に使用した .yml ファイルが利用できます。

手順

  1. enp1s0 コネクションに存在するenp1s0.yml を修正し、以下の内容を追加します。

    ---
    interfaces:
      - name: enp1s0
        type: ethernet
        state: up
        accept -all-mac-address: true
  2. ネットワーク設定を適用します。

    # nmstatectl apply ~/enp1s0.yml

検証手順

  • 802-3-ethernet.accept-all-mac-addresses モードが有効になっていることを確認するには、次のコマンドを実行します。

    # nmstatectl show enp1s0
    interfaces:
      - name: enp1s0
        type: ethernet
        state: up
        accept-all-mac-addresses:     true
    ...

この802-3-ethernet.accept-all-mac-addresses: trueは、モードが有効であることを示しています。

関連情報

  • nmstatectl の詳細は、nmstatectl(8) man ページを参照してください。
  • 設定例は、/usr/share/doc/nmstate/examples/ ディレクトリーを参照してください。

第18章 FreeRADIUS バックエンドで hostapd を使用する LAN クライアント用の 802.1x ネットワーク認証サービスの設定

IEEE 802.1X 標準は、許可されていないクライアントからネットワークを保護するためのセキュアな認証および承認方法を定義しています。hostapd サービスと FreeRADIUS を使用すると、ネットワークにネットワークアクセス制御 (NAC) を提供できます。

本書では、RHEL ホストは、さまざまなクライアントを既存のネットワークに接続するためのブリッジとして機能します。ただし、RHEL ホストは、認証されたクライアントのみにネットワークへのアクセスを許可します。

rhel オーセンティケーター 8021x

18.1. 前提条件

  • FreeRADIUS のクリーンインストール。

    freeradius パッケージがすでにインストールされている場合は、/etc/raddb/ ディレクトリーを削除し、アンインストールしてから、パッケージを再度インストールします。/etc/raddb/ ディレクトリー内の権限とシンボリックリンクが異なるため、dnf reinstall コマンドを使用してパッケージを再インストールしないでください。

18.2. オーセンティケーターにブリッジを設定する

ネットワークブリッジは、MAC アドレスのテーブルに基づいてホストとネットワーク間のトラフィックを転送するリンク層デバイスです。RHEL を 802.1X オーセンティケーターとして設定する場合は、認証を実行するインターフェイスと LAN インターフェイスの両方をブリッジに追加します。

前提条件

  • サーバーには複数のイーサネットインターフェイスがあります。

手順

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

    # nmcli connection add type bridge con-name br0 ifname br0
  2. イーサネットインターフェイスをブリッジに割り当てます。

    # nmcli connection add type ethernet slave-type bridge con-name br0-port1 ifname enp1s0 master br0
    # nmcli connection add type ethernet slave-type bridge con-name br0-port2 ifname enp7s0 master br0
    # nmcli connection add type ethernet slave-type bridge con-name br0-port3 ifname enp8s0 master br0
    # nmcli connection add type ethernet slave-type bridge con-name br0-port4 ifname enp9s0 master br0
  3. ブリッジが拡張認証プロトコル over LAN (EAPOL) パケットを転送できるようにします。

    # nmcli connection modify br0 group-forward-mask 8
  4. ポートを自動的にアクティブ化するように接続を設定します。

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

    # nmcli connection up br0

検証

  1. 特定のブリッジのポートであるイーサネットデバイスのリンクステータスを表示します。

    # ip link show master br0
    3: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP mode DEFAULT group default qlen 1000
        link/ether 52:54:00:62:61:0e brd ff:ff:ff:ff:ff:ff
    ...
  2. EAPOL パケットの転送が br0 デバイスで有効になっているかどうかを確認します。

    # cat /sys/class/net/br0/bridge/group_fwd_mask
    0x8

    コマンドが 0x8 を返す場合、転送が有効になります。

関連情報

  • man ページの nm-settings(5)

18.3. FreeRADIUS による証明書の要件

セキュアな FreeRADIUS サービスを利用するには、さまざまな目的で TLS 証明書が必要です。

  • サーバーへの暗号化された接続用の TLS サーバー証明書。信頼済み認証局 (CA) を使用して証明書を発行します。

    サーバー証明書には、TLS Web Server Authentication に設定された拡張鍵用途 (EKU) フィールドが必要です。

  • 拡張認証プロトコルトランスポート層セキュリティー (EAP-TLS) のために同じ CA によって発行されたクライアント証明書。EAP-TLS は証明書ベースの認証を提供し、デフォルトで有効になっています。

    クライアント証明書では、EKU フィールドを TLS Web Client Authentication に設定する必要があります。

警告

接続をセキュリティー保護するには、会社の CA を使用するか、独自の CA を作成して FreeRADIUS の証明書を発行します。パブリック CA を使用する場合は、パブリック CA がユーザーを認証し、EAP-TLS のクライアント証明書を発行できるようにします。

18.4. テスト目的で FreeRADIUS サーバーに一連の証明書を作成する

テストの目的で、freeradius パッケージはスクリプトと設定ファイルを /etc/raddb/certs/ ディレクトリーにインストールして、独自の認証局 (CA) を作成し、証明書を発行します。

重要

デフォルト設定を使用する場合、これらのスクリプトによって生成された証明書は 60 日後に期限切れになり、キーは安全でないパスワード (何でも) を使用します。ただし、CA、サーバー、およびクライアントの設定をカスタマイズできます。

手順を実行すると、本書の後半で必要となる次のファイルが作成されます。

  • /etc/raddb/certs/ca.pem:CA 証明書
  • /etc/raddb/certs/server.key:サーバー証明書の秘密鍵
  • /etc/raddb/certs/server.pem:サーバー証明書
  • /etc/raddb/certs/client.key:クライアント証明書の秘密鍵
  • /etc/raddb/certs/client.pem:クライアント証明書

前提条件

  • freeradius パッケージをインストールしました。

手順

  1. /etc/raddb/certs/ ディレクトリーに移動します。

    # cd /etc/raddb/certs/
  2. オプション:CA 設定をカスタマイズします。

    ...
    [ req ]
    default_bits            = 2048
    input_password          = ca_password
    output_password         = ca_password
    ...
    [certificate_authority]
    countryName             = US
    stateOrProvinceName     = North Carolina
    localityName            = Raleigh
    organizationName        = Example Inc.
    emailAddress            = admin@example.org
    commonName              = "Example Certificate Authority"
    ...
  3. オプション:サーバー設定をカスタマイズします。

    ...
    [ CA_default ]
    default_days            = 730
    ...
    [ req ]
    distinguished_name      = server
    default_bits            = 2048
    input_password          = key_password
    output_password         = key_password
    ...
    [server]
    countryName             = US
    stateOrProvinceName     = North Carolina
    localityName            = Raleigh
    organizationName        = Example Inc.
    emailAddress            = admin@example.org
    commonName              = "Example Server Certificate"
    ...
  4. オプション:クライアント設定をカスタマイズします。

    ...
    [ CA_default ]
    default_days            = 365
    ...
    [ req ]
    distinguished_name      = client
    default_bits            = 2048
    input_password          = password_on_private_key
    output_password         = password_on_private_key
    ...
    [client]
    countryName             = US
    stateOrProvinceName     = North Carolina
    localityName            = Raleigh
    organizationName        = Example Inc.
    emailAddress            = user@example.org
    commonName              = user@example.org
    ...
  5. 証明書を作成します。

    # make all
  6. /etc/raddb/certs/server.pem ファイルのグループを radiusd に変更します。

    # chgrp radiusd /etc/raddb/certs/server.pem*

関連情報

  • /etc/raddb/certs/README.md

18.5. EAP を使用してネットワーククライアントを安全に認証するための FreeRADIUS の設定

FreeRADIUS は、拡張認証プロトコル (EAP) のさまざまな方法をサポートしています。ただし、セキュアなネットワークの場合、本書では、次のセキュアな EAP 認証方法のみをサポートするように FreeRADIUS を設定する方法について説明します。

  • EAP-TLS(Transport Layer Security) は、セキュアな TLS 接続を使用して、証明書を使用してクライアントを認証します。EAP-TLS を使用するには、各ネットワーククライアントの TLS クライアント証明書とサーバーのサーバー証明書が必要です。同じ認証局 (CA) が証明書を発行している必要があることに注意してください。使用する CA によって発行されたすべてのクライアント証明書は FreeRADIUS サーバーに対して認証できるため、常に独自の CA を使用して証明書を作成してください。
  • EAP-TTLS(Tunneled Transport Layer Security) は、セキュアな TLS 接続を使用し、パスワード認証プロトコル (PAP) やチャレンジハンドシェイク認証プロトコル (CHAP) などのメカニズムを使用してクライアントを認証します。EAP-TTLS を使用するには、TLS サーバー証明書が必要です。
  • EAP-PEAP (保護された拡張認証プロトコル) は、トンネルを設定するための外部認証プロトコルとしてセキュアな TLS 接続を使用します。オーセンティケーターは、RADIUS サーバーの証明書を認証します。その後、サプリカントは、Microsoft チャレンジハンドシェイク認証プロトコルバージョン 2 (MS-CHAPv2) またはその他の方法を使用して、暗号化されたトンネルを介して認証します。
注記

デフォルトの FreeRADIUS 設定ファイルはドキュメントとして機能し、すべてのパラメーターとディレクティブを記述します。特定の機能を無効にする場合は、設定ファイルの対応する部分を削除するのではなく、コメントアウトしてください。これにより、設定ファイルと含まれているドキュメントの構造を保持できます。

前提条件

  • freeradius パッケージをインストールしました。
  • /etc/raddb/ ディレクトリー内の設定ファイルは変更されておらず、freeradius パッケージによって提供されています。
  • サーバーには次のファイルがあります。

    • FreeRADIUS ホストの TLS 秘密鍵: /etc/raddb/certs/server.key
    • FreeRADIUS ホストの TLS サーバー証明書: /etc/raddb/certs/server.pem
    • TLS CA 証明書: /etc/raddb/certs/ca.pem

    ファイルを別の場所に保存する場合、またはファイルの名前が異なる場合は、それに応じて /etc/raddb/mods-available/eap ファイルの private_key_filecertificate_file、および ca_file パラメーターを設定します。

手順

  1. Diffie-Hellman (DH) パラメーターを持つ /etc/raddb/certs/dh が存在しない場合は、作成します。たとえば、2048 ビットの素数を持つ DH ファイルを作成するには、次のように入力します。

    # openssl dhparam -out /etc/raddb/certs/dh 2048

    セキュリティー上の理由から、素数が 2048 ビット未満の DH ファイルは使用しないでください。ビット数によっては、ファイルの作成に数分かかる場合があります。

  2. TLS 秘密鍵、サーバー証明書、CA 証明書、および DH パラメーターを使用したファイルにセキュアな権限を設定します。

    # chmod 640 /etc/raddb/certs/server.key /etc/raddb/certs/server.pem /etc/raddb/certs/ca.pem /etc/raddb/certs/dh
    # chown root:radiusd /etc/raddb/certs/server.key /etc/raddb/certs/server.pem /etc/raddb/certs/ca.pem /etc/raddb/certs/dh
  3. /etc/raddb/mods-available/eap ファイルを編集します。

    1. private_key_password パラメーターで秘密鍵のパスワードを設定します。

      eap {
          ...
          tls-config tls-common {
              ...
              private_key_password = key_password
              ...
          }
      }
    2. 環境に応じて、eap ディレクティブの default_eap_type パラメーターを、使用するプライマリー EAP タイプに設定します。

      eap {
          ...
          default_eap_type = ttls
          ...
      }

      安全な環境では、ttlstls、または peap のみを使用してください。

    3. 安全でない EAP-MD5 認証方式を無効にするには、md5 ディレクティブをコメントアウトします。

      eap {
          ...
          # md5 {
          # }
          ...
      }

      デフォルトの設定ファイルでは、他の安全でない EAP 認証方法がデフォルトでコメントアウトされていることに注意してください。

  4. /etc/raddb/sites-available/default ファイルを編集し、eap 以外のすべての認証方法をコメントアウトします。

    authenticate {
        ...
        # Auth-Type PAP {
        #     pap
        # }
    
        # Auth-Type CHAP {
        #     chap
        # }
    
        # Auth-Type MS-CHAP {
        #     mschap
        # }
    
        # mschap
    
        # digest
        ...
    }

    これにより、EAP のみが有効になり、プレーンテキスト認証方式が無効になります。

  5. /etc/raddb/clients.conf ファイルを編集します。

    1. localhost および localhost_ipv6 クライアントディレクティブでセキュアなパスワードを設定します。

      client localhost {
          ipaddr = 127.0.0.1
          ...
          secret = client_password
          ...
      }
      
      client localhost_ipv6 {
          ipv6addr = ::1
          secret = client_password
      }
    2. リモートホスト上のネットワークオーセンティケーターなどの RADIUS クライアントが FreeRADIUS サービスにアクセスできる必要がある場合は、それらに対応するクライアントディレクティブを追加します。

      client hostapd.example.org {
          ipaddr = 192.0.2.2/32
          secret = client_password
      }

      ipaddr パラメーターは IPv4 および IPv6 アドレスを受け入れ、オプションのクラスレスドメイン間ルーティング (CIDR) 表記を使用して範囲を指定できます。ただし、このパラメーターに設定できる値は 1 つだけです。たとえば、IPv4 および IPv6 アドレスへのアクセスを許可するには、2 つのクライアントディレクティブを追加します。

      ホスト名や IP 範囲が使用される場所を説明する単語など、クライアントディレクティブのわかりやすい名前を使用します。

  6. EAP-TTLS または EAP-PEAP を使用する場合は、ユーザーを /etc/raddb/users ファイルに追加します。

    example_user        Cleartext-Password := "user_password"

    証明書ベースの認証 (EAP-TLS) を使用する必要があるユーザーの場合、エントリーを追加しないでください。

  7. 設定ファイルを確認します。

    # radiusd -XC
    ...
    Configuration appears to be OK
  8. radiusd サービスを有効にして開始します。

    # systemctl enable --now radiusd

トラブルシューティング

  1. radiusd サービスを停止します。

    # systemctl stop radiusd
  2. デバッグモードでサービスを開始します。

    # radiusd -X
    ...
    Ready to process requests
  3. Verification セクションで参照されているように、FreeRADIUS ホストで認証テストを実行します。

次のステップ

  • 不要な認証方法や使用しないその他の機能を無効にします。

18.6. 有線ネットワークでのオーセンティケーターとしての hostapd の設定

ホストアクセスポイントデーモン (hostapd) サービスは、有線ネットワークでオーセンティケーターとして機能し、802.1X 認証を提供できます。このため、hostapd サービスには、クライアントを認証する RADIUS サーバーが必要です。

hostapd サービスは、統合された RADIUS サーバーを提供します。ただし、統合 RADIUS サーバーはテスト目的でのみ使用してください。実稼働環境では、さまざまな認証方法やアクセス制御などの追加機能をサポートする FreeRADIUS サーバーを使用します。

重要

hostapd サービスはトラフィックプレーンと相互作用しません。このサービスは、オーセンティケーターとしてのみ機能します。たとえば、hostapd 制御インターフェイスを使用するスクリプトまたはサービスを使用して、認証イベントの結果に基づいてトラフィックを許可または拒否します。

前提条件

  • hostapd パッケージをインストールしました。
  • FreeRADIUS サーバーが設定され、クライアントを認証する準備が整いました。

手順

  1. 次のコンテンツで /etc/hostapd/hostapd.conf ファイルを作成します。

    # General settings of hostapd
    # ===========================
    
    # Control interface settings
    ctrl_interface=/var/run/hostapd
    ctrl_interface_group=wheel
    
    # Enable logging for all modules
    logger_syslog=-1
    logger_stdout=-1
    
    # Log level
    logger_syslog_level=2
    logger_stdout_level=2
    
    
    # Wired 802.1X authentication
    # ===========================
    
    # Driver interface type
    driver=wired
    
    # Enable IEEE 802.1X authorization
    ieee8021x=1
    
    # Use port access entry (PAE) group address
    # (01:80:c2:00:00:03) when sending EAPOL frames
    use_pae_group_addr=1
    
    
    # Network interface for authentication requests
    interface=br0
    
    
    # RADIUS client configuration
    # ===========================
    
    # Local IP address used as NAS-IP-Address
    own_ip_addr=192.0.2.2
    
    # Unique NAS-Identifier within scope of RADIUS server
    nas_identifier=hostapd.example.org
    
    # RADIUS authentication server
    auth_server_addr=192.0.2.1
    auth_server_port=1812
    auth_server_shared_secret=client_password
    
    # RADIUS accounting server
    acct_server_addr=192.0.2.1
    acct_server_port=1813
    acct_server_shared_secret=client_password

    この設定で使用されるパラメーターの詳細は、/usr/share/doc/hostapd/hostapd.conf サンプル設定ファイルの説明を参照してください。

  2. hostapd サービスを有効にして開始します。

    # systemctl enable --now hostapd

トラブルシューティング

  1. hostapd サービスを停止します。

    # systemctl stop hostapd
  2. デバッグモードでサービスを開始します。

    # hostapd -d /etc/hostapd/hostapd.conf
  3. Verification セクションで参照されているように、FreeRADIUS ホストで認証テストを実行します。

関連情報

  • hostapd.conf(5) man page
  • /usr/share/doc/hostapd/hostapd.conf

18.7. FreeRADIUS サーバーまたはオーセンティケーターに対する EAP-TTLS 認証のテスト

Tunneled Transport Layer Security (EAP-TTLS) を介した拡張認証プロトコル (EAP) を使用した認証が期待どおりに機能するかどうかをテストするには、次の手順を実行します。

  • FreeRADIUS サーバーをセットアップした後
  • hostapd サービスを 802.1X ネットワーク認証のオーセンティケーターとして設定した後。

この手順で使用されるテストユーティリティーの出力は、EAP 通信に関する追加情報を提供し、問題のデバッグに役立ちます。

前提条件

  • 認証する場合:

    • FreeRADIUS サーバー:

      • hostapd パッケージによって提供される eapol_test ユーティリティーがインストールされます。
      • この手順を実行するクライアントは、FreeRADIUS サーバーのクライアントデータベースで承認されています。
    • 同じ名前のパッケージによって提供されるオーセンティケーター、wpa_supplicant ユーティリティーがインストールされます。
  • 認証局 (CA) 証明書を /etc/pki/tls/certs/ca.pem ファイルに保存しました。

手順

  1. 次のコンテンツで /etc/wpa_supplicant/wpa_supplicant-TTLS.conf ファイルを作成します。

    ap_scan=0
    
    network={
        eap=TTLS
        eapol_flags=0
        key_mgmt=IEEE8021X
    
        # Anonymous identity (sent in unencrypted phase 1)
        # Can be any string
        anonymous_identity="anonymous"
    
        # Inner authentication (sent in TLS-encrypted phase 2)
        phase2="auth=PAP"
        identity="example_user"
        password="user_password"
    
        # CA certificate to validate the RADIUS server's identity
        ca_cert="/etc/pki/tls/certs/ca.pem"
    }
  2. 認証するには:

    • FreeRADIUS サーバーには、次のように入力します。

      # eapol_test -c /etc/wpa_supplicant/wpa_supplicant-TTLS.conf -a 192.0.2.1 -s client_password
      ...
      EAP: Status notification: remote certificate verification (param=success)
      ...
      CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
      ...
      SUCCESS

      -a オプションは FreeRADIUS サーバーの IP アドレスを定義し、-s オプションは FreeRADIUS サーバーのクライアント設定でコマンドを実行するホストのパスワードを指定します。

    • オーセンティケーター。次のように入力します。

      # wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant-TTLS.conf -D wired -i enp0s31f6
      ...
      enp0s31f6: CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
      ...

      -i オプションは、wpa_supplicant が LAN(EAPOL) パケットを介して拡張認証プロトコルを送信するネットワークインターフェイス名を指定します。

      デバッグ情報の詳細は、コマンドに -d オプションを渡してください。

関連情報

  • /usr/share/doc/wpa_supplicant/wpa_supplicant.conf

18.8. FreeRADIUS サーバーまたはオーセンティケーターに対する EAP-TLS 認証のテスト

拡張認証プロトコル (EAP) Transport Layer Security (EAP-TLS) を使用した認証が期待どおりに機能するかどうかをテストするには、次の手順を実行します。

  • FreeRADIUS サーバーをセットアップした後
  • hostapd サービスを 802.1X ネットワーク認証のオーセンティケーターとして設定した後。

この手順で使用されるテストユーティリティーの出力は、EAP 通信に関する追加情報を提供し、問題のデバッグに役立ちます。

前提条件

  • 認証する場合:

    • FreeRADIUS サーバー:

      • hostapd パッケージによって提供される eapol_test ユーティリティーがインストールされます。
      • この手順を実行するクライアントは、FreeRADIUS サーバーのクライアントデータベースで承認されています。
    • 同じ名前のパッケージによって提供されるオーセンティケーター、wpa_supplicant ユーティリティーがインストールされます。
  • 認証局 (CA) 証明書を /etc/pki/tls/certs/ca.pem ファイルに保存しました。
  • クライアント証明書を発行した CA は、FreeRADIUS サーバーのサーバー証明書を発行した CA と同じです。
  • クライアント証明書を /etc/pki/tls/certs/client.pem ファイルに保存しました。
  • クライアントの秘密鍵を /etc/pki/tls/private/client.key に保存しました

手順

  1. 次のコンテンツで /etc/wpa_supplicant/wpa_supplicant-TLS.conf ファイルを作成します。

    ap_scan=0
    
    network={
        eap=TLS
        eapol_flags=0
        key_mgmt=IEEE8021X
    
        identity="user@example.org"
        client_cert="/etc/pki/tls/certs/client.pem"
        private_key="/etc/pki/tls/private/client.key"
        private_key_passwd="password_on_private_key"
    
        # CA certificate to validate the RADIUS server's identity
        ca_cert="/etc/pki/tls/certs/ca.pem"
    }
  2. 認証するには:

    • FreeRADIUS サーバーには、次のように入力します。

      # eapol_test -c /etc/wpa_supplicant/wpa_supplicant-TLS.conf -a 192.0.2.1 -s client_password
      ...
      EAP: Status notification: remote certificate verification (param=success)
      ...
      CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
      ...
      SUCCESS

      -a オプションは FreeRADIUS サーバーの IP アドレスを定義し、-s オプションは FreeRADIUS サーバーのクライアント設定でコマンドを実行するホストのパスワードを指定します。

    • オーセンティケーター。次のように入力します。

      # wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant-TLS.conf -D wired -i enp0s31f6
      ...
      enp0s31f6: CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
      ...

      -i オプションは、wpa_supplicant が LAN(EAPOL) パケットを介して拡張認証プロトコルを送信するネットワークインターフェイス名を指定します。

      デバッグ情報の詳細は、コマンドに -d オプションを渡してください。

関連情報

  • /usr/share/doc/wpa_supplicant/wpa_supplicant.conf

18.9. hostapd 認証イベントに基づくトラフィックのブロックと許可

hostapd サービスはトラフィックプレーンと相互作用しません。このサービスは、オーセンティケーターとしてのみ機能します。ただし、認証イベントの結果に基づいてトラフィックを許可および拒否するスクリプトを作成できます。

重要

この手順はサポートされておらず、エンタープライズ対応のソリューションではありません。hostapd_cli によって取得されたイベントを評価することにより、トラフィックをブロックまたは許可する方法のみを示しています。

802-1x-tr-mgmt systemd サービスが開始すると、RHEL は LAN(EAPOL) パケットを介した拡張認証プロトコルを除く hostapd のリッスンポート上のすべてのトラフィックをブロックし、hostapd_cli ユーティリティーを使用して hostapd 制御インターフェイスに接続します。次に、/usr/local/bin/802-1x-tr-mgmt スクリプトがイベントを評価します。hostapd_cli が受信するさまざまなイベントに応じて、スクリプトは MAC アドレスのトラフィックを許可またはブロックします。802-1x-tr-mgmt サービスが停止すると、すべてのトラフィックが自動的に再度許可されることに注意してください。

hostapd サーバーでこの手順を実行します。

前提条件

  • hostapd サービスが設定され、サービスはクライアントを認証する準備ができています。

手順

  1. 次のコンテンツで /usr/local/bin/802-1x-tr-mgmt ファイルを作成します。

    #!/bin/sh
    
    if [ "x$1" == "xblock_all" ]
    then
    
        nft delete table bridge tr-mgmt-br0 2>/dev/null || true
        nft -f - << EOF
    table bridge tr-mgmt-br0 {
            set allowed_macs {
                    type ether_addr
            }
    
            chain accesscontrol {
                    ether saddr @allowed_macs accept
                    ether daddr @allowed_macs accept
                    drop
            }
    
            chain forward {
                    type filter hook forward priority 0; policy accept;
                    meta ibrname "br0" jump accesscontrol
            }
    }
    EOF
        echo "802-1x-tr-mgmt Blocking all traffic through br0. Traffic for given host will be allowed after 802.1x authentication"
    
    elif [ "x$1" == "xallow_all" ]
    then
    
        nft delete table bridge tr-mgmt-br0
        echo "802-1x-tr-mgmt Allowed all forwarding again"
    
    fi
    
    case ${2:-NOTANEVENT} in
    
        AP-STA-CONNECTED | CTRL-EVENT-EAP-SUCCESS | CTRL-EVENT-EAP-SUCCESS2)
            nft add element bridge tr-mgmt-br0 allowed_macs { $3 }
            echo "$1: Allowed traffic from $3"
            ;;
    
        AP-STA-DISCONNECTED | CTRL-EVENT-EAP-FAILURE)
            nft delete element bridge tr-mgmt-br0 allowed_macs { $3 }
            echo "802-1x-tr-mgmt $1: Denied traffic from $3"
            ;;
    
    esac
  2. 次のコンテンツで /etc/systemd/system/802-1x-tr-mgmt@.service サービスファイルを作成します。

    [Unit]
    Description=Example 802.1x traffic management for hostapd
    After=hostapd.service
    After=sys-devices-virtual-net-%i.device
    
    [Service]
    Type=simple
    ExecStartPre=-/bin/sh -c '/usr/sbin/tc qdisc del dev %i ingress > /dev/null 2>&1'
    ExecStartPre=-/bin/sh -c '/usr/sbin/tc qdisc del dev %i clsact > /dev/null 2>&1'
    ExecStartPre=/usr/sbin/tc qdisc add dev %i clsact
    ExecStartPre=/usr/sbin/tc filter add dev %i ingress pref 10000 protocol 0x888e matchall action ok index 100
    ExecStartPre=/usr/sbin/tc filter add dev %i ingress pref 10001 protocol all matchall action drop index 101
    ExecStart=/usr/sbin/hostapd_cli -i %i -a /usr/local/bin/802-1x-tr-mgmt
    ExecStopPost=-/usr/sbin/tc qdisc del dev %i clsact
    
    [Install]
    WantedBy=multi-user.target
  3. systemd を再ロードします。

    # systemctl daemon-reload
  4. hostapd がリッスンしているインターフェイス名で 802-1x-tr-mgmt サービスを有効にして開始します。

    # systemctl enable --now 802-1x-tr-mgmt@br0.service

関連情報

  • systemd.service(5) man ページ

第19章 ファイルシステムに保存されている証明書で 802.1X 標準を使用した、ネットワークへの RHEL クライアントの認証

管理者は、IEEE 802.1X 標準に基づいてポートベースのネットワークアクセス制御 (NAC) を使用して、承認されていない LAN および Wi-Fi クライアントからネットワークを保護します。本セクションの手順では、ネットワーク認証を設定するさまざまなオプションを説明します。

19.1. nmcli を使用して、既存のイーサネット接続での 802.1X ネットワーク認証の設定

nmcli ユーティリティーを使用して、クライアントがネットワークに対して自己認証するように設定できます。この手順では、p1s0 という名前の既存の NetworkManager イーサネット接続プロファイルで、ネットワークに認証を行うように TLS 認証を設定する方法を説明します。

前提条件

  • ネットワークは 802.1X ネットワーク認証をサポートしている。
  • イーサネット接続プロファイルが NetworkManager に存在し、有効な IP 設定があります。
  • TLS 認証に必要な以下のファイルがクライアントにある。

    • クライアント鍵が保存されているのは /etc/pki/tls/private/client.key ファイルで、そのファイルは所有されており、root ユーザーのみが読み取り可能です。
    • クライアント証明書は /etc/pki/tls/certs/client.crt に保存されます。
    • 認証局 (CA) 証明書は、/etc/pki/tls/certs/ca.crt ファイルに保存されています。
  • wpa_supplicant パッケージがインストールされている。

手順

  1. EAP (Extensible Authentication Protocol) を tls に設定し、クライアント証明書および鍵ファイルへのパスを設定します。

    # nmcli connection modify enp1s0 802-1x.eap tls 802-1x.client-cert /etc/pki/tls/certs/client.crt 802-1x.private-key /etc/pki/tls/certs/certs/client.key

    1 つのコマンドで、802-1x.eap パラメーター、802-1x.client-cert パラメーター、および 802-1x.private-key パラメーターを設定する必要があります。

  2. CA 証明書のパスを設定します。

    # nmcli connection modify enp1s0 802-1x.ca-cert /etc/pki/tls/certs/ca.crt
  3. 証明書で使用するユーザーの ID を設定します。

    # nmcli connection modify enp1s0 802-1x.identity user@example.com
  4. 必要に応じて、パスワードを設定に保存します。

    # nmcli connection modify enp1s0 802-1x.private-key-password password
    重要

    デフォルトでは、NetworkManager は、パスワードを、/etc/sysconfig/network-scripts/keys-connection_name ファイルにクリアテキストで保存します。これは、root ユーザーのみが読み取れるようにします。ただし、設定ファイルのクリアテキストパスワードはセキュリティーリスクとなる可能性があります。

    セキュリティーを強化するには、802-1x.password-flags パラメーターを 0x1 に設定します。この設定では、GNOME デスクトップ環境または nm-applet が実行中のサーバーで、NetworkManager がこれらのサービスからパスワードを取得します。その他の場合は、NetworkManager によりパスワードの入力が求められます。

  5. 接続プロファイルをアクティベートします。

    # nmcli connection up enp1s0

検証手順

  • ネットワーク認証が必要なネットワーク上のリソースにアクセスします。

関連情報

19.2. nmstatectl を使用した 802.1X ネットワーク認証による静的イーサネット接続の設定

nmstate ユーティリティを使用して、802.1X 規格を使用してクライアントを認証するイーサネット接続を作成できます。この手順では、以下の設定を使用して、enp1s0 インターフェースにイーサネット接続を追加する方法を説明します。

  • 静的 IPv4 アドレス: /24 サブネットマスクを持つ 192.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
  • TLS Extensible Authentication Protocol (EAP) を使用した 802.1X ネットワーク認証
注記

nmstate ライブラリーは、TLS EAP メソッドのみに対応します。

前提条件

  • ネットワークは 802.1X ネットワーク認証をサポートしている。
  • 管理ノードは NetworkManager を使用している。
  • TLS 認証に必要な以下のファイルがクライアントにある。

    • クライアント鍵が保存されているのは/etc/pki/tls/private/client.key ファイルで、そのファイルは所有されており、root ユーザーのみが読み取り可能です。
    • クライアント証明書は /etc/pki/tls/certs/client.crt に保存されます。
    • 認証局 (CA) 証明書は、/etc/pki/tls/certs/ca.crt ファイルに保存されています。

手順

  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
      802.1x:
        ca-cert: /etc/pki/tls/certs/ca.crt
        client-cert: /etc/pki/tls/certs/client.crt
        eap-methods:
          - tls
        identity: client.example.org
        private-key: /etc/pki/tls/private/client.key
        private-key-password: password
    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
  2. 設定をシステムに適用します。

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

検証

  • ネットワーク認証が必要なネットワーク上のリソースにアクセスします。

19.3. RHEL システムロールを使用した 802.1X ネットワーク認証による静的イーサネット接続の設定

Networking の RHEL システムロールを使用して、802.1X 規格を使用してクライアントを認証するイーサネット接続の作成を自動化できます。この手順では、以下の設定で enp1s0 インターフェースのイーサネット接続をリモートに追加する方法を説明します。これには、Ansible Playbook を実行します。

  • 静的 IPv4 アドレス: /24 サブネットマスクを持つ 192.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
  • TLS Extensible Authentication Protocol (EAP) を使用した 802.1X ネットワーク認証

Ansible コントロールノードで以下の手順を実行します。

前提条件

  • ansible-core パッケージおよび rhel-system-roles パッケージが制御ノードにインストールされている。
  • Playbook の実行時に root 以外のリモートユーザーを使用する場合は、管理ノードで適切な sudo パーミッションが必要。
  • ネットワークは 802.1X ネットワーク認証をサポートしている。
  • 管理ノードは NetworkManager を使用している。
  • TLS 認証に必要な以下のファイルがコントロールノードにある。

    • クライアントキーは、/srv/data/client.key ファイルに保存されます。
    • クライアント証明書は /srv/data/client.crt ファイルに保存されます。
    • 認証局 (CA) 証明書は、/srv/data/ca.crt ファイルに保存されます。

手順

  1. Playbook の命令を実行するホストのインベントリーがまだ指定されていない場合は、そのホストの IP または名前を Ansible インベントリーファイル /etc/ansible/hosts に追加します。

    node.example.com
  2. ~/enable-802.1x.yml Playbook を以下の内容で作成します。

    ---
    - name: Configure an Ethernet connection with 802.1X authentication
      hosts: node.example.com
      become: true
      tasks:
        - name: Copy client key for 802.1X authentication
          copy:
            src: "/srv/data/client.key"
            dest: "/etc/pki/tls/private/client.key"
            mode: 0600
    
        - name: Copy client certificate for 802.1X authentication
          copy:
            src: "/srv/data/client.crt"
            dest: "/etc/pki/tls/certs/client.crt"
    
        - name: Copy CA certificate for 802.1X authentication
          copy:
            src: "/srv/data/ca.crt"
            dest: "/etc/pki/ca-trust/source/anchors/ca.crt"
    
        - include_role:
            name: rhel-system-roles.network
          vars:
            network_connections:
              - 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
                ieee802_1x:
                  identity: user_name
                  eap: tls
                  private_key: "/etc/pki/tls/private/client.key"
                  private_key_password: "password"
                  client_cert: "/etc/pki/tls/certs/client.crt"
                  ca_cert: "/etc/pki/ca-trust/source/anchors/ca.crt"
                  domain_suffix_match: example.com
                state: up
  3. Playbook を実行します。

    • root ユーザーとして管理対象ホストに接続するには、次のコマンドを実行します。

      # ansible-playbook -u root ~/enable-802.1x.yml
    • 管理ホストにユーザーとして接続するには、次のコマンドを実行します。

      # ansible-playbook -u user_name --ask-become-pass ~/ethernet-static-IP.yml

      --ask-become-pass オプションは、ansible-playbook コマンドが -u user_name オプションで定義したユーザーの sudo パスワードを要求するようにします。

    -u user_name オプションを指定しないと、ansible-playbook は、コントロールノードに現在ログインしているユーザーとして管理ホストに接続します。

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイル
  • /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイル
  • ansible-playbook(1) の man ページ

19.4. RHEL System Roles を使用した 802.1X ネットワーク認証による Wi-Fi 接続の設定

RHEL System Roles を使用すると、Wi-Fi 接続の作成を自動化できます。この手順では、Ansible Playbook を使用して wlp1s0 インターフェースのワイヤレス接続プロファイルをリモートで追加する方法を説明します。作成されたプロファイルは、802.1X 標準を使用して、Wi-Fi ネットワークに対してクライアントを認証します。Playbook は、DHCP を使用するように接続プロファイルを設定します。静的 IP 設定を設定するには、それに応じて IP ディクショナリーのパラメーターを調整します。

前提条件

  • ansible パッケージと rhel-system-roles パッケージをコントロールノードにインストールしました。
  • ネットワークは 802.1X ネットワーク認証をサポートしている。
  • Playbook の実行時に root 以外のリモートユーザーを使用する場合は、管理ノードで適切な sudo パーミッションが必要。
  • マネージドノードに wpa_supplicant パッケージをインストールしました。
  • DHCP は、マネージドノードのネットワークで使用できます。
  • TLS 認証に必要な以下のファイルがコントロールノードにある。

    • クライアントキーは、/srv/data/client.key ファイルに保存されます。
    • クライアント証明書は /srv/data/client.crt ファイルに保存されます。
    • CA 証明書は /srv/data/ca.crt ファイルに保存されます。

Ansible control node で次の手順を実行します。

手順

  1. Playbook の命令を実行するホストのインベントリーがまだ指定されていない場合は、そのホストの IP または名前を Ansible インベントリーファイル /etc/ansible/hosts に追加します。

    node.example.com
  2. ~/enable-802.1x.yml Playbook を以下の内容で作成します。

    ---
    - name: Configure a Wi-Fi connection with 802.1X authentication
      hosts: "node.example.com"
      become: true
      tasks:
        - name: Copy client key for 802.1X authentication
          copy:
            src: "/srv/data/client.key"
            dest: "/etc/pki/tls/private/client.key"
            mode: 0400
    
        - name: Copy client certificate for 802.1X authentication
          copy:
            src: "/srv/data/client.crt"
            dest: "/etc/pki/tls/certs/client.crt"
    
        - name: Copy CA certificate for 802.1X authentication
          copy:
            src: "/srv/data/ca.crt"
            dest: "/etc/pki/ca-trust/source/anchors/ca.crt"
    
        - block:
            - import_role:
                name: linux-system-roles.network
              vars:
                network_connections:
                  - name: Configure the Example-Wi-Fi profile
                    interface_name: wlp1s0
                    state: up
                    type: wireless
                    autoconnect: yes
                    ip:
                      dhcp4: true
                      auto6: true
                    wireless:
                      ssid: "Example-Wi-Fi"
                      key_mgmt: "wpa-eap"
                    ieee802_1x:
                      identity: "user_name"
                      eap: tls
                      private_key: "/etc/pki/tls/client.key"
                      private_key_password: "password"
                      private_key_password_flags: none
                      client_cert: "/etc/pki/tls/client.pem"
                      ca_cert: "/etc/pki/tls/cacert.pem"
                      domain_suffix_match: "example.com"
  3. Playbook を実行します。

    • root ユーザーとして管理対象ホストに接続するには、次のコマンドを実行します。

      # ansible-playbook -u root ~/enable-802.1x.yml
    • 管理ホストにユーザーとして接続するには、次のコマンドを実行します。

      # ansible-playbook -u user_name --ask-become-pass ~/ethernet-static-IP.yml

      --ask-become-pass オプションは、ansible-playbook コマンドが -u user_name オプションで定義したユーザーの sudo パスワードを要求するようにします。

    -u user_name オプションを指定しないと、ansible-playbook は、コントロールノードに現在ログインしているユーザーとして管理ホストに接続します。

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイル
  • ansible-playbook(1) の man ページ

第20章 デフォルトのゲートウェイ設定の管理

デフォルトゲートウェイは、他のルートがパケットの宛先と一致する場合にネットワークパケットを転送するルーターです。ローカルネットワークでは、通常、デフォルトゲートウェイは、インターネットの近くの 1 ホップのホストです。

20.1. nmcli を使用して、既存の接続でデフォルトのゲートウェイを設定

ほとんどの場合、管理者は、「nmcli を使用した静的イーサネット接続の設定」などの説明に従って接続を作成する場合のデフォルトのゲートウェイを設定します。

本セクションでは、nmcli ユーティリティーを使用して作成した接続で、デフォルトのゲートウェイを設定または更新する方法を説明します。

前提条件

  • デフォルトゲートウェイが設定されている接続で、静的 IP アドレスを少なくとも 1 つ設定している。
  • 物理コンソールにログインしている場合は、十分な権限を有している。それ以外の場合は、root 権限が必要になります。

手順

  1. デフォルトゲートウェイの IP アドレスを設定します。

    たとえば、example 接続のデフォルトゲートウェイの IPv4 アドレスを 192.0.2.1 に設定するには、次のコマンドを実行します。

    $ sudo nmcli connection modify example ipv4.gateway "192.0.2.1"

    たとえば、example 接続のデフォルトゲートウェイの IPv6 アドレスを 2001:db8:1::1 に設定するには、次のコマンドを実行します。

    $ sudo nmcli connection modify example ipv6.gateway "2001:db8:1::1"
  2. ネットワーク接続を再起動して、変更を有効にします。たとえば、コマンドラインで example 接続を再起動するには、次のコマンドを実行します。

    $ sudo nmcli connection up example
    警告

    このネットワーク接続を現在使用しているすべての接続が、再起動時に一時的に中断されます。

  3. 必要に応じて、ルートがアクティブであることを確認します。

    IPv4 デフォルトゲートウェイを表示するには、次のコマンドを実行します。

    $ ip -4 route
    default via 192.0.2.1 dev example proto static metric 100

    IPv6 デフォルトゲートウェイを表示するには、次のコマンドを実行します。

    $ ip -6 route
    default via 2001:db8:1::1 dev example proto static metric 100 pref medium

20.2. nmcli インタラクティブモードを使用して、既存の接続でデフォルトゲートウェイを設定

ほとんどの場合、管理者は、「nmcli インタラクティブエディターを使用した動的イーサネット接続の設定」などの説明に従って、接続を作成する場合のデフォルトのゲートウェイを設定します。

本セクションでは、nmcli ユーティリティーのインタラクティブモードを使用して作成した接続で、デフォルトのゲートウェイを設定または更新する方法を説明します。

前提条件

  • デフォルトゲートウェイが設定されている接続で、静的 IP アドレスを少なくとも 1 つ設定している。
  • 物理コンソールにログインしている場合は、十分な権限を有している。それ以外の場合は、root 権限が必要になります。

手順

  1. 必要な接続に対して nmcli インタラクティブモードを開きます。たとえば、example 接続の nmcli インタラクティブモードを開くには、次のコマンドを実行します。

    $ sudo nmcli connection edit example
  2. デフォルトのゲートウェイを設定します。

    たとえば、example 接続のデフォルトゲートウェイの IPv4 アドレスを 192.0.2.1 に設定するには、次のコマンドを実行します。

    nmcli> set ipv4.gateway 192.0.2.1

    たとえば、example 接続のデフォルトゲートウェイの IPv6 アドレスを 2001:db8:1::1 に設定するには、次のコマンドを実行します。

    nmcli> set ipv6.gateway 2001:db8:1::1
  3. 必要に応じて、デフォルトゲートウェイが正しく設定されていることを確認します。

    nmcli> print
    ...
    ipv4.gateway:                           192.0.2.1
    ...
    ipv6.gateway:                           2001:db8:1::1
    ...
  4. 設定を保存します。

    nmcli> save persistent
  5. ネットワーク接続を再起動して、変更を有効にします。

    nmcli> activate example
    警告

    このネットワーク接続を現在使用しているすべての接続が、再起動時に一時的に中断されます。

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

    nmcli> quit
  7. 必要に応じて、ルートがアクティブであることを確認します。

    IPv4 デフォルトゲートウェイを表示するには、次のコマンドを実行します。

    $ ip -4 route
    default via 192.0.2.1 dev example proto static metric 100

    IPv6 デフォルトゲートウェイを表示するには、次のコマンドを実行します。

    $ ip -6 route
    default via 2001:db8:1::1 dev example proto static metric 100 pref medium

20.3. using nm-connection-editor で、既存の接続にデフォルトのゲートウェイを設定

ほとんどの場合、管理者は、接続を作成する場合のデフォルトのゲートウェイを設定します。本セクションでは、nm-connection-editor アプリケーションを使用して作成しておいた接続で、デフォルトのゲートウェイを設定または更新する方法を説明します。

前提条件

  • デフォルトゲートウェイが設定されている接続で、静的 IP アドレスを少なくとも 1 つ設定している。

手順

  1. 端末を開き、nm-connection-editor と入力します。

    $ nm-connection-editor
  2. 変更する接続を選択し、歯車のアイコンをクリックして、既存の接続を編集します。
  3. IPv4 デフォルトゲートウェイを設定します。たとえば、その接続のデフォルトゲートウェイの IPv4 アドレスを 192.0.2.1 に設定します。

    1. IPv4 Settings タブを開きます。
    2. そのゲートウェイのアドレスが含まれる IP アドレスの範囲の隣の gateway フィールドにアドレスを入力します。

      set default gw in nm connection editor ipv4

  4. IPv6 デフォルトゲートウェイを設定します。たとえば、接続のデフォルトゲートウェイの IPv6 アドレスを 2001:db8:1::1 に設定するには、以下を行います。

    1. IPv6 タブを開きます。
    2. そのゲートウェイのアドレスが含まれる IP アドレスの範囲の隣の gateway フィールドにアドレスを入力します。

      set default gw in nm connection editor ipv6

  5. OK をクリックします。
  6. 保存 をクリックします。
  7. ネットワーク接続を再起動して、変更を有効にします。たとえば、コマンドラインで example 接続を再起動するには、次のコマンドを実行します。

    $ sudo nmcli connection up example
    警告

    このネットワーク接続を現在使用しているすべての接続が、再起動時に一時的に中断されます。

  8. 必要に応じて、ルートがアクティブであることを確認します。

    IPv4 デフォルトゲートウェイを表示するには、次のコマンドを実行します。

    $ ip -4 route
    default via 192.0.2.1 dev example proto static metric 100

    IPv6 デフォルトゲートウェイを表示するには、次のコマンドを実行します。

    $ ip -6 route
    default via 2001:db8:1::1 dev example proto static metric 100 pref medium

20.4. control-center を使用して、既存の接続でフォルトのゲートウェイを設定

ほとんどの場合、管理者は、接続を作成する場合のデフォルトのゲートウェイを設定します。本セクションでは、control-center アプリケーションを使用して作成した接続で、デフォルトのゲートウェイを設定または更新する方法を説明します。

前提条件

  • デフォルトゲートウェイが設定されている接続で、静的 IP アドレスを少なくとも 1 つ設定している。
  • control-center アプリケーションで、接続のネットワーク設定を開いている。

手順

  1. IPv4 デフォルトゲートウェイを設定します。たとえば、その接続のデフォルトゲートウェイの IPv4 アドレスを 192.0.2.1 に設定します。

    1. IPv4 タブを開きます。
    2. そのゲートウェイのアドレスが含まれる IP アドレスの範囲の隣の gateway フィールドにアドレスを入力します。

      set default gw in control center ipv4

  2. IPv6 デフォルトゲートウェイを設定します。たとえば、接続のデフォルトゲートウェイの IPv6 アドレスを 2001:db8:1::1 に設定するには、以下を行います。

    1. IPv6 タブを開きます。
    2. そのゲートウェイのアドレスが含まれる IP アドレスの範囲の隣の gateway フィールドにアドレスを入力します。

      set default gw in control center ipv6

  3. 適用 をクリックします。
  4. Network ウィンドウに戻り、接続のボタンを Off に切り替えてから On に戻して、接続を無効にして再度有効にし、変更を適用します。

    警告

    このネットワーク接続を現在使用しているすべての接続が、再起動時に一時的に中断されます。

  5. 必要に応じて、ルートがアクティブであることを確認します。

    IPv4 デフォルトゲートウェイを表示するには、次のコマンドを実行します。

    $ ip -4 route
    default via 192.0.2.1 dev example proto static metric 100

    IPv6 デフォルトゲートウェイを表示するには、次のコマンドを実行します。

    $ ip -6 route
    default via 2001:db8:1::1 dev example proto static metric 100 pref medium

20.5. nmstatectl を使用して既存の接続でデフォルトのゲートウェイを設定

nmstatectl ユーティリティーを使用してネットワーク接続のデフォルトゲートウェイを設定できます。この手順では、既存の enp1s0 接続のデフォルトゲートウェイを 192.0.2.1 に設定する方法を説明します。

前提条件

  • デフォルトゲートウェイが設定されている接続で、静的 IP アドレスを少なくとも 1 つ設定している。
  • enp1s0 インターフェースが設定され、デフォルトゲートウェイの IP アドレスがこのインターフェースの IP 設定のサブネット内にある。
  • nmstate パッケージがインストールされている。

手順

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

    ---
    routes:
      config:
      - destination: 0.0.0.0/0
        next-hop-address: 192.0.2.1
        next-hop-interface: enp1s0
  2. 設定をシステムに適用します。

    # nmstatectl apply ~/set-default-gateway.yml

関連情報

  • nmstatectl の詳細は、nmstatectl(8) man ページを参照してください。
  • 設定例は、/usr/share/doc/nmstate/examples/ ディレクトリーを参照してください。

20.6. システムロールを使用して、既存の接続でデフォルトのゲートウェイを設定

Networking の RHEL システムロールを使用して、デフォルトゲートウェイを設定できます。

重要

Networking の RHEL システムロールを使用する再生を実行すると、設定値が再生で指定されたものと一致しない場合に、システムロールが同じ名前の既存の接続プロファイルを上書きします。したがって、IP 設定がすでに存在している場合でも、再生でネットワーク接続プロファイルの設定全体を指定する必要があります。それ以外の場合は、ロールはこれらの値をデフォルト値にリセットします。

この手順では、すでに存在するかどうかに応じて、以下の設定で enp1s0 接続プロファイルを作成または更新します。

  • 静的 IPv4 アドレス: /24 サブネットマスクを持つ 198.51.100.20
  • 静的 IPv6 アドレス: 2001:db8:1::1/64 サブネットマスクあり)
  • IPv4 デフォルトゲートウェイ: 198.51.100.254
  • IPv6 デフォルトゲートウェイ: 2001:db8:1::fffe
  • IPv4 DNS サーバー: 198.51.100.200
  • IPv6 DNS サーバー: 2001:db8:1::ffbb
  • DNS 検索ドメイン: example.com

前提条件

  • ansible-core パッケージおよび rhel-system-roles パッケージが制御ノードにインストールされている。
  • Playbook の実行時に root 以外のリモートユーザーを使用する場合は、管理ノードで適切な sudo パーミッションが付与される。

手順

  1. Playbook の命令を実行するホストのインベントリーがまだ指定されていない場合は、そのホストの IP または名前を Ansible インベントリーファイル /etc/ansible/hosts に追加します。

    node.example.com
  2. ~/ethernet-connection.yml Playbook を以下の内容で作成します。

    ---
    - name: Configure an Ethernet connection with static IP and default gateway
      hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: rhel-system-roles.network
    
        vars:
          network_connections:
            - name: enp1s0
              type: ethernet
              autoconnect: yes
              ip:
                address:
                  - 198.51.100.20/24
                  - 2001:db8:1::1/64
                gateway4: 198.51.100.254
                gateway6: 2001:db8:1::fffe
                dns:
                  - 198.51.100.200
                  - 2001:db8:1::ffbb
                dns_search:
                  - example.com
              state: up
  3. Playbook を実行します。

    • root ユーザーとして管理対象ホストに接続するには、次のコマンドを実行します。

      # ansible-playbook -u root ~/ethernet-connection.yml
    • 管理ホストにユーザーとして接続するには、次のコマンドを実行します。

      # ansible-playbook -u user_name --ask-become-pass ~/ethernet-connection.yml

      --ask-become-pass オプションは、ansible-playbook コマンドが -u user_name オプションで定義したユーザーの sudo パスワードを要求するようにします。

    -u user_name オプションを指定しないと、ansible-playbook は、コントロールノードに現在ログインしているユーザーとして管理ホストに接続します。

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md
  • ansible-playbook(1) の man ページ

20.7. NetworkManager が複数のデフォルトゲートウェイを管理する方法

フォールバック上の理由で特定の状況では、ホストに複数のデフォルトゲートウェイを設定します。ただし、非同期ルーティングの問題を回避するために、同じプロトコルの各デフォルトゲートウェイには別のメトリクス値が必要です。RHEL は、最も低いメトリックセットを持つデフォルトゲートウェイへの接続のみを使用することに注意してください。

以下のコマンドを使用して、接続の IPv4 ゲートウェイと IPv6 ゲートウェイの両方にメトリクスを設定できます。

# nmcli connection modify connection-name ipv4.route-metric value ipv6.route-metric value
重要

ルーティングの問題を回避するために、複数の接続プロファイルで同じプロトコルに同じメトリック値を設定しないでください。

メトリック値なしでデフォルトのゲートウェイを設定すると、NetworkManager は、インターフェースタイプに基づいてメトリック値を自動的に設定します。このため、NetworkManager は、アクティブな最初の接続に、このネットワークタイプのデフォルト値を割り当て、そのネットワークタイプがアクティベートされる順序で、同じタイプの他の接続にインクリメントした値を設定します。たとえば、デフォルトゲートウェイを持つ 2 つのイーサネット接続が存在する場合、NetworkManager は、ルートに 100 のメトリックを、最初にアクティブにしている接続のデフォルトゲートウェイに設定します。2 つ目の接続では、NetworkManager は 101 を設定します。

以下は、よく使用されるネットワークタイプと、そのデフォルトのメトリックの概要です。

connection.typeデフォルトのメトリクス値

VPN

50

イーサネット

100

MACsec

125

Infiniband

150

bond=

300

team=

350

VLAN

400

ブリッジ

425

TUN

450

Wi-Fi

600

IP トンネル

675

20.8. 特定のプロファイルでのデフォルトゲートウェイの指定を防ぐための NetworkManager の設定

NetworkManager が特定のプロファイルを使用してデフォルトゲートウェイを指定しないようにすることができます。デフォルトゲートウェイに接続されていない接続プロファイルには、以下の手順に従います。

前提条件

  • デフォルトゲートウェイに接続されていない接続の NetworkManager 接続プロファイルが存在する。

手順

  1. 接続で動的 IP 設定を使用する場合は、NetworkManager が、IPv4 および IPv6 接続のデフォルトルートとして接続を使用しないように設定します。

    # nmcli connection modify connection_name ipv4.never-default yes ipv6.never-default yes

    ipv4.never-default および ipv6.never-defaultyes に設定すると、対応するプロトコルのデフォルトのゲートウェイ IP アドレスが、接続プロファイルから削除されることに注意してください。

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

    # nmcli connection up connection_name

検証手順

  • ip -4 route コマンドおよび ip -6 route コマンドを使用して、RHEL が、IPv4 プロトコルおよび IPv6 プロトコルのデフォルトルートにネットワークインターフェースを使用しないことを確認します。

20.9. 複数のデフォルトゲートウェイによる予期しないルーティング動作の修正

マルチパス TCP を使用する場合など、ホストで複数のデフォルトゲートウェイが必要なシナリオはそれほどありません。多くの場合、ルーティングの動作や非同期ルーティングの問題を回避するために、1 つのデフォルトゲートウェイのみを設定します。

注記

異なるインターネットプロバイダーにトラフィックをルーティングするには、複数のデフォルトゲートウェイの代わりにポリシーベースのルーティングを使用します。

前提条件

  • ホストは NetworkManager を使用してネットワーク接続を管理します。これはデフォルトです。
  • ホストには複数のネットワークインターフェースがある。
  • ホストには複数のデフォルトゲートウェイが設定されている。

手順

  1. ルーティングテーブルを表示します。

    • IPv4 の場合は、次のコマンドを実行します。

      # ip -4 route
      default via 192.0.2.1 dev enp1s0 proto static metric 101
      default via 198.51.100.1 dev enp7s0 proto static metric 102
      ...
    • IPv6 の場合は、次のコマンドを実行します。

      # ip -6 route
      default via 2001:db8:1::1 dev enp1s0 proto static metric 101 pref medium
      default via 2001:db8:2::1 dev enp7s0 proto static metric 102 pref medium
      ...

    default で開始するエントリーはデフォルトのルートを示します。dev の横に表示されるこれらのエントリーのインターフェース名を書き留めます。

  2. 以下のコマンドを使用して、前の手順で特定したインターフェースを使用する NetworkManager 接続を表示します。

    # nmcli -f GENERAL.CONNECTION,IP4.GATEWAY,IP6.GATEWAY device show enp1s0
    GENERAL.CONNECTION:      Corporate-LAN
    IP4.GATEWAY:             192.168.122.1
    IP6.GATEWAY:             2001:db8:1::1
    
    # nmcli -f GENERAL.CONNECTION,IP4.GATEWAY,IP6.GATEWAY device show enp7s0
    GENERAL.CONNECTION:      Internet-Provider
    IP4.GATEWAY:             198.51.100.1
    IP6.GATEWAY:             2001:db8:2::1

    この例では、Corporate-LANInternet-Provider という名前のプロファイルにはデフォルトのゲートウェイが設定されています。これは、ローカルネットワークでは、通常、インターネット 1 ホップ近いホストがデフォルトゲートウェイであるため、この手順の残りの部分では、Corporate-LAN のデフォルトゲートウェイが正しくないことを想定するためです。

  3. NetworkManager が、IPv4 および IPv6 接続のデフォルトルートとして Corporate-LAN 接続を使用しないように設定します。

    # nmcli connection modify Corporate-LAN ipv4.never-default yes ipv6.never-default yes

    ipv4.never-default および ipv6.never-defaultyes に設定すると、対応するプロトコルのデフォルトのゲートウェイ IP アドレスが、接続プロファイルから削除されることに注意してください。

  4. Corporate-LAN 接続をアクティブにします。

    # nmcli connection up Corporate-LAN

検証手順

  • IPv4 および IPv6 ルーティングテーブルを表示し、プロトコルごとに 1 つのデフォルトゲートウェイのみが利用可能であることを確認します。

    • IPv4 の場合は、次のコマンドを実行します。

      # ip -4 route
      default via 192.0.2.1 dev enp1s0 proto static metric 101
      ...
    • IPv6 の場合は、次のコマンドを実行します。

      # ip -6 route
      default via 2001:db8:1::1 dev enp1s0 proto static metric 101 pref medium
      ...

第21章 静的ルートの設定

ルーティングにより、相互接続されたネットワーク間でトラフィックを送受信することができます。大規模な環境では、管理者は、ルーターが他のルーターについて動的に確認できるようにサービスを設定します。小規模な環境では、管理者は多くの場合、静的ルートを設定して、トラフィックがあるネットワークから次のネットワークに到達できるようにします。

これらの条件がすべて適用される場合は、複数のネットワーク間で機能通信を実現するには、静的ルートが必要です。

  • トラフィックは複数のネットワークを渡す必要があります。
  • デフォルトゲートウェイ経由の排他トラフィックフローでは不十分です。

「静的ルートを必要とするネットワークの例」 静的ルートを設定しない場合のシナリオおよび異なるネットワーク間のトラフィックフローについて説明します。

21.1. 静的ルートを必要とするネットワークの例

すべての IP ネットワークが 1 つのルーター経由で直接接続されるわけではないので、この例では静的ルートが必要です。静的ルートがないと、一部のネットワークは相互に通信できません。また、一部のネットワークからのトラフィックは 1 方向にのみ流れます。

注記

この例のネットワークトポロジーは人工的であり、静的ルーティングの概念を説明するためにのみ使用されます。実稼働環境では、推奨トポロジーではありません。

この例のすべてのネットワーク間での機能的な通信では、次にホップルーター 2(203.0.113.10)で Raleigh(198.51.100.0/24)への静的ルートを設定します。次のホップの IP アドレスは、データセンターネットワーク(203.0.113.0/24)のルーター 2 のいずれかになります。

以下のように静的ルートを設定できます。

  • 簡素化された設定の場合は、この静的ルートをルーター 1 にのみ設定します。ただし、これにより、データセンター(203.0.113.0/24)からのホストは常に Router 1 から Router 2 を通じてトラフィックを Raleigh(198.51.100.0/24)に送信するため、ルーター 1 のトラフィックが増加します。
  • より詳細な設定の場合は、データセンターのすべてのホスト(203.0.113.0/24)にこの静的ルートを設定します。次に、このサブネットのすべてのホストは、Razleigh(198.51.100.0/24)に近くのルーター 2(203.0.113.10)にトラフィックを直接送信ます。

ネットワークトラフィックフローに関する詳細情報は、ダイアグラムの説明を参照してください。

ルーティングの例

必要な静的ルートが設定されていない場合、以下で は通信が機能し、機能しない状況を説明します。

  • Berlin ネットワークのホスト(192.0.2.0/24):

    • 同じサブネットの他のホストと直接接続されているため、通信することができます。
    • ルーター 1 は Berlin ネットワーク(192.0.2.0/24)にあり、デフォルトゲートウェイがあるため、インターネットと通信できます。
    • Router 1 には Berlin(192.0.2.0/24)とデータセンター(203.0.113.0/24)の両方のネットワークにインターフェースがあるため、データセンターネットワーク(203.0.113.0/24)と通信できます。
    • ルーター 1 にはこのネットワークにインターフェースがないため、Radigh ネットワーク(198.51.100.0/24)と通信できません。そのため、ルーター 1 はトラフィックを独自のデフォルトゲートウェイ(Internet)に送信します。
  • データセンターネットワークのホスト(203.0.113.0/24):

    • 同じサブネットの他のホストと直接接続されているため、通信することができます。
    • デフォルトゲートウェイが Router 1 に設定され、ルーター 1 にはネットワーク、データセンター(203.0.113.0/24)、インターネットへのインターフェースがあるため、インターネットとの通信ができます。
    • デフォルトのゲートウェイが Router 1 に設定され、ルーター 1 にはデータセンター(203.0.113.0/24)と Berlin(192.0.2.0/24)の両方のネットワークにインターフェースがあるため、Berlin ネットワーク(192.0.2.0/24)と通信できます。
    • データセンターネットワークにはこのネットワークにインターフェースがないため、R Raleigh ネットワーク(198.51.100.0/24)と通信できません。したがって、データセンター内のホスト(203.0.113.0/24)はトラフィックをデフォルトゲートウェイ(ルーター 1)に送信します。また、ルーター 1 には Raleigh ネットワーク(198.51.100.0/24)にはインターフェースがないため、ルーター 1 はこのトラフィックを独自のデフォルトゲートウェイ(Internet)に送信します。
  • Raleigh ネットワークのホスト(198.51.100.0/24):

    • 同じサブネットの他のホストと直接接続されているため、通信することができます。
    • インターネット上のホストと通信できません。Router 2 はデフォルトゲートウェイ設定が原因でルーター 1 にトラフィックを送信します。ルーター 1 の実際の動作は、リバースパスフィルター(rp_filter)システム制御(sysctl)設定によって異なります。RHEL では、デフォルトでは、ルーター 1 はインターネットにルーティングする代わりに送信トラフィックをドロップします。ただし、設定された動作に関係なく、静的ルートなしで通信を行うことができません。
    • データセンターネットワーク(203.0.113.0/24)と通信できません。デフォルトゲートウェイ設定は、ルーター 2 経由の宛先に到達します。ただし、データセンターネットワーク(203.0.113.0/24)のホストがデフォルトゲートウェイ(Router 1)に送信されるため、パケットに応答は送信者に到達しません。次に、ルーター 1 はトラフィックをインターネットに送信します。
    • Berlin ネットワーク(192.0.2.0/24)と通信できません。Router 2 はデフォルトゲートウェイ設定が原因でルーター 1 にトラフィックを送信します。ルーター 1 の実際の動作は、rp_filter sysctl 設定によって異なります。RHEL では、デフォルトでルーター 1 は、Berlin ネットワーク(192.0.2.0/24)に送信する代わりに送信トラフィックをドロップします。ただし、設定された動作に関係なく、静的ルートなしで通信を行うことができません。
注記

静的ルートの設定に加え、両方のルーターで IP 転送を有効にする必要があります。

21.2. nmcli コマンドを使用して、静的ルートを設定する方法

静的ルートを設定するには、次の構文で nmcli ユーティリティーを使用します。

$ nmcli connection modify connection_name ipv4.routes "ip[/prefix] [next_hop] [metric] [attribute=value] [attribute=value] ..."

このコマンドは、次のルート属性に対応します。

  • cwnd=n: パケット数で定義された輻輳ウィンドウ (CWND) サイズを設定します。
  • lock-cwnd=true|false: カーネルが CWND 値を更新できるかどうかを定義します。
  • lock-mtu=true|false: カーネルが MTU をパス MTU ディスカバリーに更新できるかどうかを定義します。
  • lock-window=true|false: カーネルが TCP パケットの最大ウィンドウサイズを更新できるかどうかを定義します。
  • mtu=n: 宛先へのパスに沿って使用する最大転送単位 (MTU) を設定します。
  • onlink=true|false: ネクストホップがどのインターフェイス接頭辞とも一致しない場合でも、このリンクに直接接続されるかどうかを定義します。
  • scope=n: IPv4 ルートの場合、この属性はルートプレフィックスがカバーする宛先のスコープを設定します。値を整数 (0〜255) として設定します。
  • src=address: ルート接頭辞の対象となる宛先にトラフィックを送信するときに優先する送信元アドレスを設定します。
  • table=table_id: ルートを追加するテーブルの ID を設定します。このパラメーターを省略すると、NetworkManager は main テーブルを使用します。
  • tos=n: サービスのタイプ (TOS) キーを設定します。値を整数 (0〜255) として設定します。
  • type=value: ルートタイプを設定します。NetworkManager は ユニキャストlocalblackhole到達不能禁止、および スロー ルートタイプに対応します。デフォルトは unicast です。
  • window=n: これらの宛先にアドバタイズする TCP の最大ウィンドウサイズをバイト単位で設定します。

ipv4.routes サブコマンドを使用する場合は、nmcli が、このパラメーターの現在の設定をすべて上書きします。

ルートを追加するには、以下を実行します。

$ nmcli connection modify connection_name +ipv4.routes "..."

同様に、特定のルートを削除するには、以下を実行します。

$ nmcli connection modify connection_name -ipv4.routes "..."

21.3. nmcli コマンドを使用した静的ルートの設定

nmcli connection modify コマンドを使用して、ネットワーク接続の設定に静的ルートを追加できます。

本セクションの手順では、198.51.100.1 で実行しているゲートウェイを使用する 192.0.2.0/24 ネットワークにルートを追加する方法を説明します。これは、example 接続から到達可能です。

前提条件

  • ネットワークが設定されている。
  • 静的ルートのゲートウェイが、インターフェースで直接到達できる。
  • 物理コンソールにログインしている場合は、十分な権限を有している。それ以外の場合は、コマンドに root 権限が必要になります。

手順

  1. 静的ルートを example 接続に追加します。

    $ sudo nmcli connection modify example +ipv4.routes "192.0.2.0/24 198.51.100.1"

    1 回で複数のルートを設定するには、個々のルートをコンマで区切ってコマンドに渡す必要があります。たとえば、ルートを 192.0.2.0/24 および 203.0.113.0/24 のネットワークに追加して、両方のルートが 198.51.100.1 ゲートウェイを通るには、以下のコマンドを実行します。

    $ sudo nmcli connection modify example +ipv4.routes "192.0.2.0/24 198.51.100.1, 203.0.113.0/24 198.51.100.1"
  2. 必要に応じて、ルートが設定に正しく追加されたことを確認します。

    $ nmcli connection show example
    ...
    ipv4.routes:        { ip = 192.0.2.1/24, nh = 198.51.100.1 }
    ...
  3. ネットワーク接続が再起動します。

    $ sudo nmcli connection up example
    警告

    接続を再起動すると、そのインターフェースの接続が一時的に中断します。

  4. 必要に応じて、ルートがアクティブであることを確認します。

    $ ip route
    ...
    192.0.2.0/24 via 198.51.100.1 dev example proto static metric 100

関連情報

  • man ページの nmcli(1)

21.4. control-center による静的ルートの設定

GNOME で control-center を使用して、ネットワーク接続の設定に静的ルートを追加します。

本セクションの手順では、198.51.100.1 で実行しているゲートウェイを使用する 192.0.2.0/24 ネットワークにルートを追加する方法を説明します。

前提条件

手順

  1. IPv4 タブを開きます。
  2. 必要に応じて、IPv4 タブの Routes セクションの On ボタンをクリックして自動ルートを無効にし、静的ルートのみを使用します。自動ルートが有効になっている場合は、Red Hat Enterprise Linux が静的ルートと、DHCP サーバーから受け取ったルートを使用します。
  3. アドレス、ネットマスク、ゲートウェイを入力します。必要に応じて、メトリック値を入力します。

    IPv4 static route in control center

  4. 適用 をクリックします。
  5. Network ウィンドウに戻り、接続のボタンを Off に切り替えてから On に戻して、接続を無効にして再度有効にし、変更を適用します。

    警告

    接続を再起動すると、そのインターフェースの接続が一時的に中断します。

  6. 必要に応じて、ルートがアクティブであることを確認します。

    $ ip route
    ...
    192.0.2.0/24 via 198.51.100.1 dev example proto static metric 100

21.5. nm-connection-editor による静的ルートの設定

nm-connection-editor アプリケーションを使用して、ネットワーク接続の設定に静的ルートを追加できます。

本セクションの手順では、198.51.100.1 で実行しているゲートウェイを使用する 192.0.2.0/24 ネットワークにルートを追加する方法を説明します。これは、example 接続から到達可能です。

前提条件

  • ネットワークが設定されている。
  • 静的ルートのゲートウェイが、インターフェースで直接到達できる。

手順

  1. 端末を開き、nm-connection-editor と入力します。

    $ nm-connection-editor
  2. example 接続を選択し、歯車アイコンをクリックして、既存の接続を変更します。
  3. IPv4 タブを開きます。
  4. Routes ボタンをクリックします。
  5. Add ボタンをクリックして、アドレス、ネットマスク、ゲートウェイを入力します。必要に応じてメトリック値を入力します。

    IPv4 static route in nm connection editor

  6. OK をクリックします。
  7. 保存 をクリックします。
  8. ネットワーク接続を再起動して、変更を有効にします。たとえば、コマンドラインで example 接続を再起動するには、次のコマンドを実行します。

    $ sudo nmcli connection up example
  9. 必要に応じて、ルートがアクティブであることを確認します。

    $ ip route
    ...
    192.0.2.0/24 via 198.51.100.1 dev example proto static metric 100

21.6. nmcli インタラクティブモードで静的ルートの設定

nmcli ユーティリティーのインタラクティブモードを使用して、ネットワーク接続の設定に静的ルートを追加できます。

本セクションの手順では、198.51.100.1 で実行しているゲートウェイを使用する 192.0.2.0/24 ネットワークにルートを追加する方法を説明します。これは、example 接続から到達可能です。

前提条件

  • ネットワークが設定されている。
  • 静的ルートのゲートウェイが、インターフェースで直接到達できる。
  • 物理コンソールにログインしている場合は、十分な権限を有している。それ以外の場合は、コマンドに root 権限が必要になります。

手順

  1. example 接続の nmcli インタラクティブモードを開きます。

    $ sudo nmcli connection edit example
  2. 静的ルートを追加します。

    nmcli> set ipv4.routes 192.0.2.0/24 198.51.100.1
  3. 必要に応じて、ルートが設定に正しく追加されたことを確認します。

    nmcli> print
    ...
    ipv4.routes:        { ip = 192.0.2.1/24, nh = 198.51.100.1 }
    ...

    ip 属性には、転送するネットワークと、ゲートウェイの nh 属性 (次のホップ) が表示されます。

  4. 設定を保存します。

    nmcli> save persistent
  5. ネットワーク接続が再起動します。

    nmcli> activate example
    警告

    接続を再起動すると、この接続を現在使用している接続がすべて一時的に中断されます。

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

    nmcli> quit
  7. 必要に応じて、ルートがアクティブであることを確認します。

    $ ip route
    ...
    192.0.2.0/24 via 198.51.100.1 dev example proto static metric 100

21.7. nmstatectl を使用した静的ルートの設定

nmstatectl ユーティリティーを使用してネットワーク接続の設定に静的ルートを追加できます。

本セクションの手順では、198.51.100.1 で実行しているゲートウェイを使用する 192.0.2.0/24 ネットワークにルートを追加し、enp1s0 インターフェースから到達できるようにする方法を説明します。

前提条件

  • enp1s0 ネットワークインターフェースが設定されている。
  • 静的ルートのゲートウェイが、インターフェースで直接到達できる。
  • nmstate パッケージがインストールされている。

手順

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

    ---
    routes:
      config:
      - destination: 192.0.2.0/24
        next-hop-address: 198.51.100.1
        next-hop-interface: enp1s0
  2. 設定をシステムに適用します。

    # nmstatectl apply ~/add-static-route-to-enp1s0.yml

関連情報

  • man ページの nmstatectl(8)
  • /usr/share/doc/nmstate/examples/

21.8. RHEL システムロールを使用した静的ルートの設定

Networking の RHEL システムロールを使用して、静的ルートを設定できます。

重要

Networking の RHEL システムロールを使用する再生を実行すると、設定値が再生で指定されたものと一致しない場合に、システムロールが同じ名前の既存の接続プロファイルを上書きします。したがって、IP 設定がすでに存在している場合でも、再生でネットワーク接続プロファイルの設定全体を指定する必要があります。それ以外の場合は、ロールはこれらの値をデフォルト値にリセットします。

この手順では、すでに存在するかどうかに応じて、以下の設定で enp7s0 接続プロファイルを作成または更新します。

  • 静的 IPv4 アドレス: /24 サブネットマスクを持つ 198.51.100.20
  • 静的 IPv6 アドレス: 2001:db8:1::1/64 サブネットマスクあり)
  • IPv4 デフォルトゲートウェイ: 198.51.100.254
  • IPv6 デフォルトゲートウェイ: 2001:db8:1::fffe
  • IPv4 DNS サーバー: 198.51.100.200
  • IPv6 DNS サーバー: 2001:db8:1::ffbb
  • DNS 検索ドメイン: example.com
  • 静的ルート:

    • ゲートウェイ 198.51.100.1192.0.2.0/24
    • 203.0.113.0/24 のゲートウェイ 198.51.100.2

前提条件

  • ansible-core パッケージおよび rhel-system-roles パッケージが制御ノードにインストールされている。
  • Playbook の実行時に root 以外のリモートユーザーを使用する場合は、管理ノードで適切な sudo パーミッションが付与される。

手順

  1. Playbook の命令を実行するホストのインベントリーがまだ指定されていない場合は、そのホストの IP または名前を Ansible インベントリーファイル /etc/ansible/hosts に追加します。

    node.example.com
  2. ~/add-static-routes.yml Playbook を以下の内容で作成します。

    ---
    - name: Configure an Ethernet connection with static IP and additional routes
      hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: rhel-system-roles.network
    
        vars:
          network_connections:
            - name: enp7s0
              type: ethernet
              autoconnect: yes
              ip:
                address:
                  - 198.51.100.20/24
                  - 2001:db8:1::1/64
                gateway4: 198.51.100.254
                gateway6: 2001:db8:1::fffe
                dns:
                  - 198.51.100.200
                  - 2001:db8:1::ffbb
                dns_search:
                  - example.com
                route:
                  - network: 192.0.2.0
                    prefix: 24
                    gateway: 198.51.100.1
                  - network: 203.0.113.0
                    prefix: 24
                    gateway: 198.51.100.2
              state: up
  3. Playbook を実行します。

    • root ユーザーとして管理対象ホストに接続するには、次のコマンドを実行します。

      # ansible-playbook -u root ~/add-static-routes.yml
    • 管理ホストにユーザーとして接続するには、次のコマンドを実行します。

      # ansible-playbook -u user_name --ask-become-pass ~/add-static-routes.yml

      --ask-become-pass オプションは、ansible-playbook コマンドが -u user_name オプションで定義したユーザーの sudo パスワードを要求するようにします。

    -u user_name オプションを指定しないと、ansible-playbook は、コントロールノードに現在ログインしているユーザーとして管理ホストに接続します。

検証手順

  • ルーティングテーブルを表示します。

    # ip -4 route
    default via 198.51.100.254 dev enp7s0 proto static metric 100
    192.0.2.0/24 via 198.51.100.1 dev enp7s0 proto static metric 100
    203.0.113.0/24 via 198.51.100.2 dev enp7s0 proto static metric 100
    ...

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイル
  • ansible-playbook(1) の man ページ

第22章 代替ルートを定義するポリシーベースのルーティングの構成

デフォルトでは、RHEL のカーネルは、ルーティングテーブルを使用して宛先アドレスに基づいてネットワークパケットを転送する場所を決定します。ポリシーベースのルーティングにより、複雑なルーティングシナリオを構成できます。たとえば、送信元アドレス、パケットメタデータ、プロトコルなどのさまざまな基準に基づいてパケットをルーティングできます。

本セクションでは、NetworkManager を使用してポリシーベースのルーティングを設定する方法を説明します。

注記

NetworkManager を使用するシステムでは、nmcli ユーティリティーのみがルーティングルールの設定と、特定のテーブルへのルートの割り当てをサポートします。

22.1. NetworkManager を使用して、特定のサブネットから別のデフォルトゲートウェイへのトラフィックのルーティング

本セクションでは、デフォルトで、デフォルトルートを使用して、すべてのトラフィックをインターネットプロバイダー A にルーティングするルーターとして RHEL を構成する方法を説明します。RHEL は、ポリシーベースのルーティングを使用して、内部ワークステーションのサブネットから受信したトラフィックをプロバイダー B にルーティングします。

この手順では、次のネットワークトポロジを想定しています。

policy based routing

前提条件

  • システムは、NetworkManager を使用して、ネットワークを設定します (これがデフォルトです)。
  • この手順で設定する RHEL ルーターには、4 つのネットワークインターフェイスがあります。

    • enp7s0 インターフェースはプロバイダー A のネットワークに接続されます。プロバイダーのネットワークのゲートウェイ IP は 198.51.100.2 で、ネットワークは /30 ネットワークマスクを使用します。
    • enp1s0 インターフェースはプロバイダー B のネットワークに接続されます。プロバイダーのネットワークのゲートウェイ IP は 192.0.2.2 で、ネットワークは /30 ネットワークマスクを使用します。
    • enp8s0 インターフェースは、内部ワークステーションで 10.0.0.0/24 サブネットに接続されています。
    • enp9s0 インターフェースは、会社のサーバーを使用して 203.0.113.0/24 サブネットに接続されています。
  • 内部ワークステーションのサブネット内のホストは、デフォルトゲートウェイとして 10.0.0.1 を使用します。この手順では、この IP アドレスをルーターの enp8s0 ネットワークインターフェースに割り当てます。
  • サーバーサブネット内のホストは、デフォルトゲートウェイとして 203.0.113.1 を使用します。この手順では、この IP アドレスを、ルーターの enp9s0 ネットワークインターフェースに割り当てます。
  • デフォルトでは、firewalld サービスは有効でアクティブになっています。

手順

  1. プロバイダー A へのネットワークインターフェースを構成します。

    # nmcli connection add type ethernet con-name Provider-A ifname enp7s0 ipv4.method manual ipv4.addresses 198.51.100.1/30 ipv4.gateway 198.51.100.2 ipv4.dns 198.51.100.200 connection.zone external

    nmcli connection add コマンドでは、NetworkManager 接続プロファイルが作成されます。次の一覧では、コマンドのオプションを説明します。

    • type ethernet:接続タイプがイーサネットであることを定義します。
    • con-name connection_name:プロファイルの名前を設定します。混乱を避けるために、わかりやすい名前を使用してください。
    • ifname network_device:ネットワークインターフェースを設定します。
    • ipv4.method manual:静的 IP アドレスを設定できるようにします。
    • ipv4.addresses IP_address/subnet_mask:IPv4 アドレスおよびサブネットマスクを設定します。
    • ipv4.gateway IP_address:デフォルトのゲートウェイアドレスを設定します。
    • ipv4.dns IP_of_DNS_server:DNS サーバーの IPv4 アドレスを設定します。
    • connection.zone firewalld_zone:定義した firewalld ゾーンにネットワークインターフェースを割り当てます。firewalld は、外部 ゾーンに割り当てられたマスカレードインターフェースを自動的に有効にすることに注意してください。
  2. プロバイダー B へのネットワークインターフェースを設定します。

    # nmcli connection add type ethernet con-name Provider-B ifname enp1s0 ipv4.method manual ipv4.addresses 192.0.2.1/30 ipv4.routes "0.0.0.0/0 192.0.2.2 table=5000" connection.zone external

    このコマンドは、デフォルトゲートウェイを設定する ipv4.gateway の代わりに、ipv4.routes パラメーターを使用します。これは、この接続用のデフォルトゲートウェイを、デフォルトとは異なるルーティングテーブル (5000) に割り当てるために必要です。NetworkManager は、接続がアクティブになると、この新しいルーティングテーブルを自動的に作成します。

  3. 内部ワークステーションサブネットへのネットワークインターフェースを設定します。