Red Hat Training

A Red Hat training course is available for RHEL 8

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

Red Hat Enterprise Linux 8

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

Red Hat Customer Content Services

概要

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

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章 RHEL ネットワークに関する一般的なトピック

本セクションでは、一般的なネットワークトピックについて詳しく説明します。

1.1. IP ネットワークと非 IP ネットワークの違い

ネットワークとは、ファイル、プリンタ、アプリケーション、インターネット接続など、情報とリソースを共有して通信できる、相互接続されたデバイスのシステムです。これらの各デバイスには、プロトコルと呼ばれる一連の規則を使用して 2 つ以上のデバイス間でメッセージを送受信する固有の IP アドレスがあります。

ネットワーク通信のカテゴリー

IP ネットワーク
IP アドレスを介して通信するネットワーク。IP ネットワークは、インターネットおよびほとんどの内部ネットワークに実装されています。イーサネット、無線ネットワーク、VPN 接続などが一般的な例です。
非 IP ネットワーク
トランスポート層ではなく下位層を介して通信するのに使用されるネットワーク。このネットワークはほとんど使用されないことに注意してください。たとえば、InfiniBand は非 IP ネットワークです。

1.2. 静的 IP アドレスと動的 IP アドレス設定の違い

静的な IP アドレス指定

静的 IP アドレスをデバイスに割り当てると、そのアドレスは手動で変更しない限り、時間が経過しても変わることはありません。必要に応じて静的 IP アドレスを使用します。

  • DNS などのサーバーや認証サーバーのネットワークアドレスの整合性を確保する。
  • 他のネットワークインフラストラクチャーから独立して動作する、帯域外管理デバイスを使用する。
動的な IP アドレス指定

動的 IP アドレスを使用するようにデバイスを設定すると、アドレスは時間の経過とともに変わる可能性があります。このため、ホストの再起動後に IP アドレスが異なる可能性があるため、通常は動的アドレスがネットワークに接続されるデバイスに使用されます。

動的 IP アドレスは、より柔軟で、設定と管理が簡単です。Dynamic Host Control Protocol (DHCP) は、ネットワーク設定をホストに動的に割り当てる従来の方法です。

注記

静的 IP アドレスまたは動的 IP アドレスをどのような場合に使用するかを定義する厳密な規則はありません。ユーザーのニーズ、設定、およびネットワーク環境によって異なります。

関連情報

DHCP サーバーの設定方法は、38章DHCP サービスの提供を参照してください。

1.3. DHCP トランザクションフェーズ

DHCP は、Discovery、Offer、Request、Acknowledgement の 4 つのフェーズで機能します。DHCP はこのプロセスを使用してクライアントに IP アドレスを提供します。

Discovery

DHCP クライアントがメッセージを送信して、ネットワーク上にある DHCP サーバーを検出します。このメッセージは、ネットワークおよびデータリンク層でブロードキャストされます。

Offer

DHCP サーバーはクライアントからメッセージを受け取り、DHCP クライアントに IP アドレスを提供します。このメッセージはデータリンク層でのユニキャストですが、ネットワーク層でブロードキャストします。

Request

DHCP クライアントは、提供される IP アドレスを DHCP サーバーに要求します。このメッセージはデータリンク層でのユニキャストですが、ネットワーク層でブロードキャストします。

Acknowledgment

DHCP サーバーは、DHCP クライアントに確認応答を送信します。このメッセージはデータリンク層でのユニキャストですが、ネットワーク層でブロードキャストします。これは、DHCP DORA プロセスの最後のメッセージです。

1.4. InfiniBand ネットワークおよび RDMA ネットワーク

InfiniBand ネットワークおよび Remote Direct Memory Access (RDMA) ネットワークの詳細は、『InfiniBand および RDMA ネットワークの設定』を参照してください。

1.5. RHEL における従来のネットワークスクリプトのサポート

デフォルトでは、RHEL は NetworkManager を使用してネットワーク接続を設定および管理し、/usr/sbin/ifup スクリプトおよび /usr/sbin/ifdown スクリプトは NetworkManager を使用して /etc/sysconfig/network-scripts/ ディレクトリー内の ifcfg ファイルを処理します。

ただし、NetworkManager を使用せずにネットワーク設定を処理する非推奨のネットワークスクリプトが必要な場合は、それをインストールできます。

# yum install network-scripts

従来のネットワークスクリプトをインストールしたら、/usr/sbin/ifup スクリプトおよび /usr/sbin/ifdown スクリプトを、ネットワーク設定を管理する非推奨のシェルスクリプトにリンクします。

重要

レガシースクリプトは RHEL 8 で非推奨となり、RHEL の今後のメジャーバージョンで削除されます。以前のバージョンから RHEL 8 にアップグレードしたため、レガシーネットワークスクリプトを使用する場合は、設定を NetworkManager に移行することが推奨されます。

1.6. ネットワーク設定方法の選択

  • NetworkManager を使用してネットワークインターフェースを設定するには、次のいずかのツールを使用します。

    • テキストユーザーインターフェース nmtui が表示されます。
    • コマンドラインユーティリティーの nmcli
    • グラフィカルユーザーインターフェースツールの GNOME GUI
  • NetworkManager のツールおよびアプリケーションを使用せずにネットワークインターフェースを設定するには、以下を行います。

    • ifcfg ファイルを手動で編集する。ファイルを直接編集しても、NetworkManager は RHEL のデフォルトで、そのファイルを処理することに注意してください。非推奨の従来のネットワークスクリプトをインストールして有効にした場合にのみ、これらのスクリプトは ifcfg ファイルを処理します。
  • root ファイルシステムがローカルにない場合にネットワーク設定を行う方法は、次のとおりです。

    • カーネルのコマンドラインを使用する。

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

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

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

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

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

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

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

スキーム説明

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 ルールを手動で設定し、カーネルデバイス名を変更すると、このルールが優先されます。

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

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

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

関連情報

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

一貫性のあるネットワークデバイス名機能が有効になると、udev デバイスマネージャーは異なる基準に基づいてデバイスの名前を作成します。本セクションでは、Red Hat Enterprise Linux 8 が 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) のデフォルト値を表示しません。

2.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 を表示します。

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

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

警告

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

手順

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

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

2.6. インストール済みのシステムでのインターフェースデバイスへの一貫性のある命名の無効化

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

警告

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. 設定ファイルまたはスクリプトでインターフェース名を使用する場合は、手動で更新する必要があります。
  4. ホストを再起動します。

    # reboot

2.7. イーサネットネットワークインターフェースの命名に prefixdevname を使用

本ドキュメントは、このようなインターフェースのデフォルト命名スキームを使用しない場合は、イーサーネットネットワークインターフェースに、一貫性のある命名規則の接頭辞を設定する方法を説明します。ただし、Red Hat は、デフォルトの命名スキームを使用することを推奨します。このスキームの詳細は、2章一貫性のあるネットワークインターフェースデバイスの命名を参照してください。

2.7.1. prefixdevname の概要

prefixdevname ツールは、イーサーネットネットワークインターフェースの命名に使用した接頭辞を定義する udev ヘルパーユーティリティーです。

2.7.2. prefixdevname の制限事項

イーサネットネットワークインターフェースの接頭辞には一定の制限があります。

選択する接頭辞は、次の要件を満たす必要があります。

  • ASCII 文字列である
  • 英数字文字列である
  • 16 文字より短くする
警告

この接頭辞は、Linux のネットワークインターフェースの命名に使用される周知の接頭辞と競合させることができません。具体的には、ethenoensem などの接頭辞は使用できません。

2.7.3. prefixdevname の設定

prefixdevname を使用した接頭辞の設定は、システムのインストール時に行われます。

イーサネットネットワークインターフェースに必要な接頭辞を設定して有効にするには、以下の手順に従います。

手順

  • カーネルコマンドラインに次の文字列を追加します。

    net.ifnames.prefix=<required prefix>
警告

Red Hat は、デプロイ済みのシステムで prefixdevname を使用することはサポートしていません。

接頭辞を一度設定し、オペレーティングシステムを再起動すると、接頭辞は、ネットワークインターフェースが表示されるたびに有効になります。新しいデバイスは、<PREFIX><INDEX> の形式で名前に割り当てられます。たとえば、選択した接頭辞が net で、net0 接頭辞および net1 接頭辞がシステムにすでに存在している場合、新しいインターフェースの名前は net2 となります。次に、prefixdevname ユーティリティーは、新しい .link ファイルを /etc/systemd/network ディレクトリーに生成し、表示されたばかりの MAC アドレスを持つインターフェースにその名前を適用します。この設定は、システムを再起動しても持続します。

第3章 ネットワーク経由でカーネルメッセージをログに記録する netconsole の使用

netconsole カーネルモジュールと同じ名前のサービスを使用すると、ネットワーク経由でカーネルメッセージをログに記録して、ディスクへのログインに失敗したり、シリアルコンソールを使用しない場合にカーネルをデバッグできます。

3.1. カーネルメッセージをリモートホストに記録するように netconsole サービスを設定

netconsole カーネルモジュールを使用すると、リモートシステムログサービスにカーネルメッセージを記録できます。

前提条件

  • rsyslog などのシステムログサービスがリモートホストにインストールされている。
  • リモートシステムログサービスは、このホストから受信ログエントリーを受け取るように設定されています。

手順

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

    # yum install netconsole-service
  2. /etc/sysconfig/netconsole ファイルを編集し、SYSLOGADDR パラメーターをリモートホストの IP アドレスに設定します。

    # SYSLOGADDR=192.0.2.1
  3. netconsole サービスを有効にして起動します。

    # systemctl enable --now netconsole

検証手順

  • リモートシステムログサーバーの /var/log/messages ファイルを表示します。

関連情報

第4章 systemd ネットワークターゲットおよびサービス

NetworkManager は、システムの起動時にネットワークを設定します。ただし、root ディレクトリーが iSCSI デバイスに保存されている場合など、リモートルート (/) で起動すると、RHEL が起動する前に、ネットワーク設定が初期 RAM ディスク (initrd) に適用されます。たとえば、rd.neednet=1 を使用してカーネルコマンドラインでネットワーク設定を指定すると、リモートファイルシステムのマウントに設定を指定すると、ネットワーク設定が initrd に適用されます。

本セクションでは、ネットワーク設定の適用時に使用される networknetwork-onlineNetworkManager-wait-online サービスなどの異なるターゲットと、network-online サービスの開始後に systemd サービスが開始するように設定する方法を説明します。

4.1. systemd ターゲット network と network-online の違い

Systemd は、ターゲットユニット network および network-online を維持します。NetworkManager-wait-online.service などの特殊ユニットは、WantedBy=network-online.target パラメーターおよび Before=network-online.target パラメーターを持ちます。有効にすると、このようなユニットは network-online.target で開始し、一部の形式のネットワーク接続が確立されるまでターゲットに到達させるよう遅延します。ネットワークが接続されるまで、network-online ターゲットが遅延します。

network-online ターゲットはサービスを開始します。これにより、実行の遅延が大幅に増加します。Systemd は、このターゲットユニットの Wants パラメーターおよび After パラメーターの依存関係を、$network ファシリティーを参照する Linux Standard Base (LSB) ヘッダーを持つすべての System V(SysV) init スクリプトサービスユニットに自動的に追加します。LSB ヘッダーは、init スクリプトのメタデータです。これを使用して依存関係を指定できます。これは systemd ターゲットに似ています。

network ターゲットは、起動プロセスの実行を大幅に遅らせません。network ターゲットに到達すると、ネットワークの設定を行うサービスが開始していることになります。ただし、ネットワークデバイスが設定されているわけではありません。このターゲットは、システムのシャットダウン時に重要です。たとえば、起動中に network ターゲットの後に順序付けされたサービスがあると、この依存関係はシャットダウン中に元に戻されます。サービスが停止するまで、ネットワークは切断されません。リモートネットワークファイルシステムのすべてのマウントユニットは、network-online ターゲットユニットを自動的に起動し、その後に自身を置きます。

注記

network-online ターゲットユニットは、システムの起動時にのみ役に立ちます。システムの起動が完了すると、このターゲットがネットワークのオンライン状態を追跡しなくなります。したがって、network-online を使用してネットワーク接続を監視することはできません。このターゲットは、1 回限りのシステム起動の概念を提供します。

4.2. NetworkManager-wait-online の概要

同期されたレガシーネットワークスクリプトは、すべての設定ファイルを繰り返してデバイスを設定します。ネットワーク関連の設定をすべて適用し、ネットワークがオンラインであることを確認します。

NetworkManager-wait-online サービスは、ネットワークを設定するタイムアウトで待機します。このネットワーク設定には、イーサネットデバイスへのプラグイン、Wi-Fi デバイスのスキャンなどが含まれます。NetworkManager は、自動的に起動するように設定された適切なプロファイルを自動的にアクティブにします。DHCP のタイムアウトや同様のイベントによる自動アクティベーションプロセスが失敗しても、NetworkManager が長時間ビジー状態を維持される可能性があります。設定によっては、NetworkManager は同じプロファイルまたは別のプロファイルのアクティブ化を再試行します。

起動が完了すると、すべてのプロファイルが非接続状態であるか、正常にアクティベートされます。プロファイルを自動接続するように設定できます。以下は、タイムアウトを設定したり、接続がアクティブとみなされるタイミングを定義するいくつかのパラメーター例です。

  • connection.wait-device-timeout - ドライバーがデバイスを検出するためのタイムアウトを設定します。
  • ipv4.may-fail および ipv6.may-fail - 1 つの IP アドレスファミリーの準備ができている状態でアクティベーションを設定します。または、特定のアドレスファミリーが設定を完了しているかどうかを設定します。
  • ipv4.gateway-ping-timeout - アクティベーションを遅延します。

関連情報

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

4.3. ネットワークの開始後に systemd サービスが起動する設定

Red Hat Enterprise Linux は、systemd サービスファイルを /usr/lib/systemd/system/ ディレクトリーにインストールします。以下の手順では、/etc/systemd/system/service_name.service.d/ にあるサービスファイル用のドロップインスニペットを作成し、/usr/lib/systemd/system/ にあるサービスファイルとともに、ネットワークがオンラインになった後に特定の サービス を開始するために使用します。ドロップインスニペットの設定が、/usr/lib/systemd/system/ 内のサービスファイルにある値と重複する場合は、優先度が高くなります。

手順

  1. エディターでサービスファイルを開くには、次のコマンドを実行します。

    # systemctl edit service_name

  2. 以下を入力し、変更を保存します。

    [Unit]
    After=network-online.target
  3. systemd サービスを再読み込みします。

    # systemctl daemon-reload

第5章 NetworkManager の使用

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

5.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 接続のほかに、接続固有のパラメーターを多数設定できます。設定オプションは、必要に応じて修正できます。
  • 再起動プロセス後もデバイスの状態を維持し、再起動中に管理モードに設定されているインターフェースを引き継ぎます。
  • 明示的に管理対象外として設定されていませんが、ユーザーまたは他のネットワークサービスによって手動で制御されているデバイスを処理します。

関連情報

5.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 Shell の network connection icon - このアイコンは、ネットワーク接続の状態を表し、使用している接続の種類を視覚的に表示します。

5.3. NetworkManager の dispatcher スクリプトの使用

デフォルトで /etc/NetworkManager/dispatcher.d/ ディレクトリーが存在し、NetworkManager はそこでアルファベット順にスクリプトを実行します。各スクリプトは、root所有する 実行ファイルであることと、書き込み権限 がファイル所有者にのみ付与されているようにする必要があります。

注記

NetworkManager は、/etc/NetworkManager/dispatcher.d/ にある dispatcher スクリプトをアルファベット順に実行します。

関連情報

5.4. 手動で作成した ifcfg ファイルを NetworkManager に読み込む

Red Hat Enterprise Linux 8 では、ifcfg ファイルを編集しても、NetworkManager が自動的に変更を認識しないため、変更を通知する必要があります。NetworkManager のプロファイル設定を更新するツールを使用していると、NetworkManager は、そのプロファイルを使用して再接続するまで変更を実装しません。たとえば、エディターを使用して設定ファイルを変更すると、NetworkManager がその設定ファイルを再度読み込む必要があります。

/etc/sysconfig/ ディレクトリーは、設定ファイルとスクリプト用の場所です。ほとんどのネットワーク設定情報がここに保存されます。例外は VPN、モバイルブロードバンド、および PPPoE の設定で、これは /etc/NetworkManager/ サブディレクトリーに保存されます。たとえば、インターフェース固有の情報は、/etc/sysconfig/network-scripts/ ディレクトリーの ifcfg ファイルに保存されます。

VPN、モバイルブロードバンド、および PPPoE 接続の情報は、/etc/NetworkManager/system-connections/ に保存されます。

注記

デフォルトでは、RHEL は NetworkManager を使用してネットワーク接続を設定および管理し、/usr/sbin/ifup スクリプトおよび /usr/sbin/ifdown スクリプトは NetworkManager を使用して /etc/sysconfig/network-scripts/ ディレクトリー内の ifcfg ファイルを処理します。

ネットワーク設定を管理するためにレガシーネットワークスクリプトが必要な場合は、手動でインストールできます。詳細は「RHEL における従来のネットワークスクリプトのサポート」を参照してください。ただし、従来のネットワークスクリプトは非推奨となり、RHEL の今後のバージョンで削除されます。

手順

  1. 新しい設定ファイルを読み込むには、次のコマンドを実行します。

    # nmcli connection load /etc/sysconfig/network-scripts/ifcfg-connection_name
  2. NetworkManager にすでに読み込まれている接続ファイルを更新した場合は、次のコマンドを実行します。

    # nmcli connection up connection_name

関連情報

  • man ページの NetworkManager(8) - ネットワーク管理デーモンが説明されています。
  • man ページの NetworkManager.conf(5) - NetworkManager 設定ファイルが説明されています。
  • /usr/share/doc/initscripts/sysconfig.txt - 従来のネットワークサービスで使用される ifcfg 設定ファイルとそのディレクティブが説明されています。
  • man ページの ifcfg(8) - ifcfg コマンドについて簡単に説明しています。

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

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

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

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

一時的にネットワークデバイスを 管理外 として設定する場合は、「NetworkManager でデバイスを管理対象外として一時的に設定」を参照してください。

手順

  1. 必要に応じて、デバイスの一覧を表示して、管理対象外 に設定するデバイスを特定します。

    # 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 がこのデバイスを管理していないことを示しています。

関連情報

  • デバイスを非管理対象と、対応する構文に設定するのに使用できる基準の一覧は、man ページの NetworkManager.conf(5)Device List Format セクションを参照してください。

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

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

この方法は、たとえば、テスト目的で使用します。ネットワークデバイスを 管理対象外 として永続的に設定する場合は、「NetworkManager でデバイスを管理対象外として永続的に設定」を参照してください。

この方法は、たとえば、テスト目的で使用します。unmanaged としてネットワークデバイスを永続的に設定するには、Configuring and managing networking「NetworkManager でデバイスを管理対象外として永続的に設定」を参照してください。

手順

  1. 必要に応じて、デバイスの一覧を表示して、管理対象外 に設定するデバイスを特定します。

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

    # nmcli device set enp1s0 managed no

検証手順

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

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

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

関連情報

  • デバイスを非管理対象と、対応する構文に設定するのに使用できる基準の一覧は、man ページの NetworkManager.conf(5)Device List Format セクションを参照してください。

第7章 nmtui の使用

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

注記

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

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

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

前提条件

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

手順

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

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

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

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

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

前提条件

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

手順

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

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

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

検証手順

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

関連情報

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

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

手順

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

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

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

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

第8章 nmcli の使用

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

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

8.2. nmcli でタブ補完の使用

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

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

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

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

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

第9章 GNOME GUI を使用したネットワークの設定

GNOME で以下の方法でネットワーク接続を管理および設定することができます。

  • デスクトップ右上の GNOME Shell のネットワーク接続アイコン
  • GNOME control-center アプリケーション
  • GNOME nm-connection-editor アプリケーション

9.1. GNOME Shell ネットワーク接続アイコンによるネットワーク接続

GNOME GUI を使用する場合は、GNOME Shell のネットワーク接続アイコンを使用して、ネットワークに接続できます。

前提条件

  • GNOME パッケージグループがインストールされている。
  • GNOME にログインしている。
  • ネットワークに静的 IP アドレスや 802.1x 設定などの特定の設定が必要な場合には、接続プロファイルがすでに作成されています。

手順

  1. デスクトップ右上隅のネットワーク接続アイコンをクリックします。

    ネットワーク接続アイコン
  2. 接続タイプに応じて、Wired エントリーまたは Wi-Fi エントリーを選択します。

    拡張されたネットワーク接続アイコン
    • 有線接続の場合は、Connect を選択してネットワークに接続します。
    • Wi-Fi 接続の場合は、Select network をクリックして、接続するネットワークを選択し、パスワードを入力します。

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

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

10.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. イーサネット接続に新しい 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:2::1

      コマンドが失敗した場合は、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 の状態の間で切り替わる場合は、以下を行います。

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

関連情報

  • 接続プロファイルのプロパティーとその設定の詳細は、man ページの nm-settings(5) を参照してください。
  • nmcli ユーティリティーの詳細は、man ページの nmcli(1) を参照してください。
  • ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager の起動または再起動により、デバイスの設定を反映するインメモリー接続が作成されます。詳細と、この問題を回避する方法は、「NetworkManager duplicates a connection after restart of NetworkManager service」を参照してください。

10.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:2::1

      コマンドが失敗した場合は、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 の状態の間で切り替わる場合は、以下を行います。

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

関連情報

  • 接続プロファイルのプロパティーとその設定の詳細は、man ページの nm-settings(5) を参照してください。
  • nmcli ユーティリティーの詳細は、man ページの nmcli(1) を参照してください。
  • ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager の起動または再起動により、デバイスの設定を反映するインメモリー接続が作成されます。詳細と、この問題を回避する方法は、「NetworkManager duplicates a connection after restart of NetworkManager service」を参照してください。

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

この手順では、RHEL システムロールを使用して、以下の設定で enp7s0 インターフェースのイーサネット接続をリモートに追加する方法を説明します。これには、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

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

前提条件

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

手順

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

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

    ---
    - hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: linux-system-roles.network
    
        vars:
          network_connections:
            - name: enp7s0
              type: ethernet
              autoconnect: yes
              ip:
                address:
                  - 192.0.2.1/24
                  - 2001:db8:1::1/64
                gateway4: 192.0.2.1
                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 -v ~/ethernet-static-IP.yml
    • 管理ホストにユーザーとして接続するには、次のコマンドを実行します。

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

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

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

関連情報

  • network_connections で使用されるパラメーターの詳細と、システムロール network に関する追加情報は、/usr/share/ansible/roles/rhel-system-roles.network/README.md ファイルを参照してください。
  • ansible-playbook コマンドの詳細は、man ページの ansible-playbook(1) を参照してください。

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

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

前提条件

  • DHCP サーバーはネットワークで使用できます。

手順

  1. イーサネット接続に新しい 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:2::1

      コマンドが失敗した場合は、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 設定を確認してください。

関連情報

  • IPv6 のクライアント識別子の設定の詳細は、man ページ dhclient(8) を参照してください。
  • 接続プロファイルのプロパティーとその設定の詳細は、man ページの nm-settings(5) を参照してください。
  • nmcli ユーティリティーの詳細は、man ページの nmcli(1) を参照してください。
  • ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager の起動または再起動により、デバイスの設定を反映するインメモリー接続が作成されます。詳細と、この問題を回避する方法は、「NetworkManager duplicates a connection after restart of NetworkManager service」を参照してください。

10.5. 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:2::1

      コマンドが失敗した場合は、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 設定を確認してください。

関連情報

  • IPv6 のクライアント識別子の設定の詳細は、man ページ dhclient(8) を参照してください。
  • 接続プロファイルのプロパティーとその設定の詳細は、man ページの nm-settings(5) を参照してください。
  • nmcli ユーティリティーの詳細は、man ページの nmcli(1) を参照してください。
  • ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager の起動または再起動により、デバイスの設定を反映するインメモリー接続が作成されます。詳細と、この問題を回避する方法は、「NetworkManager duplicates a connection after restart of NetworkManager service」を参照してください。

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

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

前提条件

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

手順

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

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

    ---
    - hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: linux-system-roles.network
    
        vars:
          network_connections:
            - name: enp7s0
              type: ethernet
              autoconnect: yes
              ip:
                dhcp4: yes
                auto6: yes
              state: up
  3. Playbook を実行します。

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

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

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

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

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

関連情報

  • network_connections で使用されるパラメーターの詳細と、システムロール network に関する追加情報は、/usr/share/ansible/roles/rhel-system-roles.network/README.md ファイルを参照してください。
  • ansible-playbook コマンドの詳細は、man ページの ansible-playbook(1) を参照してください。

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

    IPv6 設定コントロールセンター
  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:2::1

      コマンドが失敗した場合は、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 の状態の間で切り替わる場合は、以下を行います。

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

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

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

前提条件

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

手順

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

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

    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 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:2::1

      コマンドが失敗した場合は、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 設定を確認してください。

10.9. 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) を参照してください。

第11章 Wi-Fi 接続の管理

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

11.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 ページを参照してください。

  • man ページの setregdomain(1) - 国コードに基づき規制ドメインを設定します。
  • man ページの crda(8) - 特定 ISO または IEC 3166 alpha2 のワイヤレス規制ドメインをカーネルに送信します。
  • man ページの regulatory.bin(5) - Linux ワイヤレス規制データベースを表示します。
  • man ページの iw(8) ページ - ワイヤレスデバイスおよびその設定を表示または操作します。

11.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.168.100.101/24 gw4 192.168.100.1
  2. DNS サーバーを設定します。たとえば、192.160.100.1 を DNS サーバーとして設定するには、次のコマンドを実行します。

    ~]$ nmcli con modify con-name MyCafe ipv4.dns "192.160.100.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 802-11-wireless.mtu 1350
  6. 変更を確認するには、次のコマンドを実行します。

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

検証手順

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

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

      # ping 192.168.100.103

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

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

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

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

    # host client.example.com

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

関連情報

  • プロパティーとその設定の詳細は、man ページの nm-settings(5) を参照してください。
  • ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager の起動または再起動により、デバイスの設定を反映するインメモリー接続が作成されます。詳細と、この問題を回避する方法は、「NetworkManager duplicates a connection after restart of NetworkManager service」を参照してください。

11.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. 他のユーザーも接続を利用できるようにするには、Make available to other users チェックボックスを選択します。
    3. バックグラウンドデータの使用を制御することもできます。Restrict background data usage を選択しない (デフォルト) ままにしておくと、NetworkManager は、活発に使用しているデータをダウンロードしようとします。そうしない場合は、チェックボックスを選択し、NetworkManager が接続をメーター制に設定し、バックグラウンドデータ使用に制限を適用します。

      注記

      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 メニューエントリーを選択します。以下の設定オプションが利用できます。

    • Security

      • None - Wi-Fi 接続は暗号化しません。
      • WEP 40/128-bit Key - IEEE 802.11 規格の Wired Equivalent Privacy (WEP)共有キー (PSK) を 1 つ使用します。
      • WEP 128-bit Passphrase - パスフレーズの MD5 ハッシュで WEP キーを引き出します。

        警告

        Wi-Fi が暗号化、WEP、または WPA を使用しない場合は、ネットワークが安全ではなく、そのネットワーク上で送信するデータをすべて読み取ることができるため、そのネットワークは使用しないでください。

      • LEAP - Cisco Systems の Lightweight Extensible Authentication Protocol。
      • Dynamic WEP (802.1X) - WEP キーは動的に変更します。
      • WPA & WPA2 Personal - IEEE 802.11i 規格の WPA (Wi-Fi Protected Access) です。WEP の代替。802.11i-2004 規格の Wi-Fi Protected Access II (WPA2)。個人モードは、事前共有キー (WPA-PSK) を使用します。
      • WPA & WPA2 Enterprise - IEEE 802.1X ネットワークアクセス制御を提供するために、RADIUS 認証サーバーと併用する WPA。
    • Password - 認証プロセスで使用するパスワードを入力します。
  6. 設定が完了したら、適用 ボタンをクリックして保存します。
注記

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

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

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

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

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

手順

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

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

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

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

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

第12章 802.1X 標準を使用したネットワークへの RHEL クライアントの認証

管理者は、IEEE 802.1X 標準に基づいてポートベースのネットワークアクセス制御 (NAC) を使用して、承認されていない LAN および Wi-Fi クライアントからネットワークを保護します。本セクションの手順では、ネットワーク認証を設定するさまざまなオプションを説明します。

12.1. nmcli を使用して、既存のイーサネット接続での 802.1X ネットワーク認証の設定

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

前提条件

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

手順

  1. Extensible Authentication Protocol (EAP) を peap に設定し、内部認証プロトコルを mschapv2 に設定し、ユーザー名を設定します。

    # nmcli connection modify enp1s0 802-1x.eap peap 802-1x.phase2-auth mschapv2 802-1x.identity user_name

    1 つのコマンドで 802-1x.eap パラメーター、802-1x.phase2-auth パラメーター、および 802-1x.identity パラメーターを設定する必要があります。

  2. 必要に応じて、パスワードを設定に保存します。

    # nmcli connection modify enp1s0 802-1x.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 enp1s0 802-1x.ca-cert /etc/pki/ca-trust/source/anchors/ca.crt
    注記

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

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

    # nmcli connection up enp1s0

検証手順

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

関連情報

  • NetworkManager イーサネット接続プロファイルを追加する方法は、10章イーサネット接続の設定を参照してください。
  • これ以降の 802.1X 関連のパラメーターと説明は、man ページの nm-settings(5)802-1x settings セクションを参照してください。
  • nmcli ユーティリティーの詳細は、man ページの nmcli(1) を参照してください。

12.2. 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 wpl1s0 802-11-wireless-security.key-mgmt wpa-eap 802-1x.eap peap 802-1x.phase2-auth mschapv2 802-1x.identity user_name

    1 つのコマンドで 802-11-wireless-security.key-mgmt パラメーター、802-1x.eap パラメーター、802-1x.phase2-auth パラメーター、および 802-1x.identity パラメーターを設定する必要があります。

  2. 必要に応じて、パスワードを設定に保存します。

    # nmcli connection modify wpl1s0 802-1x.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 wpl1s0 802-1x.ca-cert /etc/pki/ca-trust/source/anchors/ca.crt
    注記

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

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

    # nmcli connection up wpl1s0

検証手順

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

関連情報

  • NetworkManager イーサネット接続プロファイルを追加する方法は、11章Wi-Fi 接続の管理を参照してください。
  • これ以降の 802.1X 関連のパラメーターと説明は、man ページの nm-settings(5)802-1x settings セクションを参照してください。
  • nmcli ユーティリティーの詳細は、man ページの nmcli(1) を参照してください。

第13章 既存の接続のデフォルトゲートウェイの設定

ほとんどの場合、管理者は、接続を作成する場合のデフォルトのゲートウェイを設定します。ただし、接続の作成後にデフォルトのゲートウェイを設定することもできます。

本セクションでは、既存のネットワーク接続でデフォルトのゲートウェイを設定する方法を説明します。

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

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

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

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

13.5. レガシーネットワークスクリプトの使用時に、既存の接続でデフォルトゲートウェイの設定

この手順では、従来のネットワークスクリプトを使用する際にデフォルトのゲートウェイを設定する方法を説明します。この例では、デフォルトのゲートウェイを、enp1s0 インターフェースから到達可能な 192.0.2.1 に設定します。

前提条件

  • NetworkManager パッケージがインストールされていないか、NetworkManager サービスが無効になります。
  • network-scripts パッケージがインストールされている。

手順

  1. /etc/sysconfig/network-scripts/ifcfg-enp1s0 ファイルの GATEWAY パラメーターを 192.0.2.1 に設定します。

    GATEWAY=192.0.2.1
  2. /etc/sysconfig/network-scripts/route-enp0s1 ファイルに デフォルト エントリーを追加します。

    default via 192.0.2.1
  3. ネットワークを再起動します。

    # systemctl restart network

第14章 静的ルートの設定

デフォルトでは、デフォルトゲートウェイが設定されていると、Red Hat Enterprise Linux は、ホストに直接接続されていないネットワークのトラフィックをデフォルトゲートウェイに転送します。静的ルートを使用して、Red Hat Enterprise Linux が特定のホストまたはネットワークのトラフィックをデフォルトゲートウェイとは別のルーターに転送するように設定できます。本セクションでは、静的ルートを設定する方法を説明します。

14.1. nmcli コマンドを使用して、静的ルートを設定する方法

静的ルートを設定するには、次の構文で nmcli ユーティリティーを使用します。

$ nmcli connection modify connection_name ipv4.routes "ip[/prefix] [next_hop] [metric] [attribute=value] [attribute=value] ..."

このコマンドは、次のルート属性に対応します。

  • table=n
  • src=address
  • tos=n
  • onlink=true|false
  • window=n
  • cwnd=n
  • mtu=n
  • lock-window=true|false
  • lock-cwdn=true|false
  • lock-mtu=true|false

サブコマンド ipv4.routes を使用する場合は、nmcli が、このパラメーターの現在の設定をすべて上書きします。ルートを追加するには、nmcli connection modify connection_name +ipv4.routes "…" コマンドを実行します。​同様に、nmcli connection modify connection_name -ipv4.routes "…​" を使用して、特定ルートを削除します。

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

関連情報

  • nmcli の詳細は、man ページの nmcli(1) を参照してください。

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

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

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

関連情報

  • インタラクティブモードで使用できるコマンドの一覧は、インタラクティブシェルに help と入力します。

14.6. レガシーネットワークスクリプトの使用時に key-value-format に静的ルート設定ファイルを作成

この手順では、NetworkManager の代わりに従来のネットワークスクリプトを使用する場合に、IPv4 ルートのルーティング設定ファイルを 192.0.2.0/24 ネットワークに手動で作成する方法を説明します。この例では、IP アドレス 198.51.100.1 の対応するゲートウェイは、enp1s0 インターフェースを介して到達できます。

この手順の例では、key-value-format の設定エントリーを使用します。

注記

従来のネットワークスクリプトは、静的 IPv4 ルートでのみ key-value-format に対応します。IPv6 ルートの場合は、ip-command-format を使用します。「従来のネットワークスクリプトの使用時に、ip-command-format で静的ルート設定ファイルを作成」を参照してください。

前提条件

  • 静的ルートのゲートウェイが、インターフェースで直接到達できる。
  • NetworkManager パッケージがインストールされていないか、NetworkManager サービスが無効になります。
  • network-scripts パッケージがインストールされている。

手順

  1. 静的 IPv4 ルートを /etc/sysconfig/network-scripts/route-enp0s1 ファイルに追加します。

    ADDRESS0=192.0.2.0
    NETMASK0=255.255.255.0
    GATEWAY0=198.51.100.1
    • ADDRESS0 変数は、最初のルーティングエントリーのネットワークを定義します。
    • NETMASK0 変数は、最初のルーティングエントリーのネットマスクを定義します。
    • GATEWAY0 変数は、最初のルーティングエントリーのリモートネットワークまたはホストへのゲートウェイの IP アドレスを定義します。

      複数の静的ルートを追加する場合は、変数名の数を増やします。各ルートの変数は順番に番号付けされる必要があることに注意してください。たとえば、ADDRESS0ADDRESS1ADDRESS3 などです。

  2. ネットワークを再起動します。

    # systemctl restart network

関連情報

  • 従来のネットワークスクリプトの設定の詳細は、/usr/share/doc/network-scripts/sysconfig.txt ファイルを参照してください。

14.7. 従来のネットワークスクリプトの使用時に、ip-command-format で静的ルート設定ファイルを作成

この手順では、従来のネットワークスクリプトを使用する場合に、以下の静的ルートのルーティング設定ファイルを手動で作成する方法を説明します。

  • 192.0.2.0/24 ネットワークへの IPv4 ルート。IP アドレス 198.51.100.1 の対応するゲートウェイは、enp1s0 インターフェースを介して到達できます。
  • 2001:db8:1::/64 ネットワークへの IPv6 ルート。IP アドレス 2001:db8:2::1 の対応するゲートウェイは、enp1s0 インターフェースを介して到達できます。

この手順の例では、ip-command-format の設定エントリーを使用します。

前提条件

  • 静的ルートのゲートウェイが、インターフェースで直接到達できる。
  • NetworkManager パッケージがインストールされていないか、NetworkManager サービスが無効になります。
  • network-scripts パッケージがインストールされている。

手順

  1. 静的 IPv4 ルートを /etc/sysconfig/network-scripts/route-enp0s1 ファイルに追加します。

    192.0.2.0/24 via 198.51.100.1 dev enp0s1
  2. 静的 IPv6 ルートを /etc/sysconfig/network-scripts/route6-enp0s1 ファイルに追加します。

    2001:db8:1::/64 via 2001:db8:2::1 dev enp0s1
  3. ネットワークを再起動します。

    # systemctl restart network

関連情報

  • 従来のネットワークスクリプトの設定の詳細は、/usr/share/doc/network-scripts/sysconfig.txt ファイルを参照してください。

第15章 代替ルートを定義するポリシーベースのルーティングの構成

デフォルトでは、RHEL のカーネルは、ルーティングテーブルを使用して宛先アドレスに基づいてネットワークパケットを転送する場所を決定します。ポリシーベースのルーティングにより、複雑なルーティングシナリオを構成できます。たとえば、送信元アドレス、パケットメタデータ、プロトコルなどのさまざまな基準に基づいてパケットをルーティングできます。

本セクションでは、NetworkManager を使用してポリシーベースのルーティングを設定する方法を説明します。

注記

NetworkManager を使用するシステムでは、nmcli ユーティリティーのみがルーティングルールの設定と、特定のテーブルへのルートの割り当てをサポートします。

15.1. NetworkManager を使用した特定のサブネットから別のデフォルトゲートウェイへのトラフィックのルーティング

本セクションでは、デフォルトで、デフォルトルートを使用して、すべてのトラフィックをインターネットプロバイダー A にルーティングするルーターとして RHEL を構成する方法を説明します。RHEL は、ポリシーベースのルーティングを使用して、内部ワークステーションのサブネットから受信したトラフィックをプロバイダー B にルーティングします。

この手順では、次のネットワークトポロジを想定しています。

policy based routing

前提条件

  • システムは NetworkManager を使用してネットワークを構成します。これはRHEL 8のデフォルトです。
  • この手順で設定する 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/1 192.0.2.2 table=5000, 128.0.0.0/1 192.0.2.2 table=5000" connection.zone external

    このコマンドは、デフォルトゲートウェイを設定する ipv4.gateway の代わりに、ipv4.routes パラメーターを使用します。これは、この接続用のデフォルトゲートウェイを、デフォルトとは異なるルーティングテーブル (5000) に割り当てるために必要です。NetworkManager は、接続がアクティブになると、この新しいルーティングテーブルを自動的に作成します。

    注記

    nmcli ユーティリティーは、ipv4.gateway のデフォルトゲートウェイに 0.0.0.0/0 を使用することには対応していません。この問題を回避するには、0.0.0.0/1128.0.0.0/1 の両方のサブネットに異なるルートを作成します。これは、IPv4 のアドレス領域にすべて対応します。

  3. 内部ワークステーションサブネットへのネットワークインターフェースを設定します。

    # nmcli connection add type ethernet con-name Internal-Workstations ifname enp8s0 ipv4.method manual ipv4.addresses 10.0.0.1/24 ipv4.routes "10.0.0.0/24 src=192.0.2.1 table=5000" ipv4.routing-rules "priority 5 from 10.0.0.0/24 table 5000" connection.zone internal

    このコマンドは、ipv4.routes パラメーターを使用して、ID が 5000 のルーティングテーブルに静的ルートを追加します。10.0.0.0/24 サブネットのこの静的ルートは、プロバイダー B (192.0.2.1) へのローカルネットワークインターフェースの IP を次のホップとして使用します。

    また、このコマンドでは ipv4.routing-rules パラメーターを使用して、優先度 5 のルーティングルールを追加します。このルーティングルールは、トラフィックを 10.0.0.0/24 サブネットからテーブル 5000 へルーティングします。値が小さいほど優先度が高くなります。

    ipv4.routing-rules パラメーターの構文は ip route add コマンドと同じですが、ipv4.routing-rules は常に優先度を指定する必要があります。

  4. サーバーサブネットへのネットワークインターフェースを設定します。

    # nmcli connection add type ethernet con-name Servers ifname enp9s0 ipv4.method manual ipv4.addresses 203.0.113.1/24 connection.zone internal

検証手順

  1. 内部ワークステーションサブネットの RHEL ホストで、以下を行います。

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

      # yum install traceroute
    2. traceroute ユーティリティーを使用して、インターネットのホストへのルートを表示します。

      # traceroute redhat.com
      traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets
       1  10.0.0.1 (10.0.0.1)     0.337 ms  0.260 ms  0.223 ms
       2  192.0.2.1 (192.0.2.1)   0.884 ms  1.066 ms  1.248 ms
       ...

      コマンドの出力には、プロバイダー B のネットワークである 192.0.2.1 経由でルーターがパケットを送信することが表示されます。

  2. サーバーのサブネットの RHEL ホストで、以下を行います。

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

      # yum install traceroute
    2. traceroute ユーティリティーを使用して、インターネットのホストへのルートを表示します。

      # traceroute redhat.com
      traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets
       1  203.0.113.1 (203.0.113.1)    2.179 ms  2.073 ms  1.944 ms
       2  198.51.100.2 (198.51.100.2)  1.868 ms  1.798 ms  1.549 ms
       ...

      コマンドの出力には、ルーターがプロバイダー A のネットワークである 198.51.100.2 経由でパケットを送信することが表示されます。

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

RHEL ルーターで以下を行います。

  1. ルールの一覧を表示します。

    # ip rule list
    0:	from all lookup local
    5:	from 10.0.0.0/24 lookup 5000
    32766:	from all lookup main
    32767:	from all lookup default

    デフォルトでは、RHEL には、local テーブル、main テーブル、および default テーブルのルールが含まれます。

  2. テーブル 5000 のルートを表示します。

    # ip route list table 5000
    0.0.0.0/1 via 192.0.2.2 dev enp1s0 proto static metric 100
    10.0.0.0/24 dev enp8s0 proto static scope link src 192.0.2.1 metric 102
    128.0.0.0/1 via 192.0.2.2 dev enp1s0 proto static metric 100
  3. インターフェースとファイアウォールゾーンを表示します。

    # firewall-cmd --get-active-zones
    external
      interfaces: enp1s0 enp7s0
    internal
      interfaces: enp8s0 enp9s0
  4. 外部 ゾーンでマスカレードが有効になっていることを確認します。

    # firewall-cmd --info-zone=external
    external (active)
      target: default
      icmp-block-inversion: no
      interfaces: enp1s0 enp7s0
      sources:
      services: ssh
      ports:
      protocols:
      masquerade: yes
      ...

関連情報

  • nmcli connection add コマンドに設定できる ipv4.* パラメーターの詳細は、man ページの nm-settings(5)IPv4 settings セクションを参照してください。
  • nmcli connection add コマンドに設定できる connection.* パラメーターの詳細は、man ページの nm-settings(5)Connection settings セクションを参照してください。
  • nmcli を使用した NetworkManager 接続の管理の詳細は、man ページの nmcli(1)Connection management commands セクションを参照してください。

15.2. 従来のネットワークスクリプトを使用する場合のポリシーベースのルーティングに関連する設定ファイルの概要

NetworkManager の代わりに従来のネットワークスクリプトを使用してネットワークを設定する場合は、ポリシーベースのルーティングを設定することもできます。

注記

network-scripts パッケージが提供する従来のネットワークスクリプトを使用したネットワークの設定は、RHEL 8 では非推奨になりました。Red Hat は、NetworkManager を使用してポリシーベースのルーティングを設定することを推奨します。例については、「NetworkManager を使用した特定のサブネットから別のデフォルトゲートウェイへのトラフィックのルーティング」を参照してください。

レガシーネットワークスクリプトを使用する場合、次の構成ファイルがポリシーベースルーティングに含まれます。

  • /etc/sysconfig/network-scripts/route-interface - このファイルは IPv4 ルートを定義します。table オプションを使用してルーティングテーブルを指定します。以下に例を示します。

    192.0.2.0/24 via 198.51.100.1 table 1
    203.0.113.0/24 via 198.51.100.2 table 2
  • /etc/sysconfig/network-scripts/route6-interface - このファイルは IPv6 ルートを定義します。
  • /etc/sysconfig/network-scripts/rule-interface - このファイルは、カーネルがトラフィックを特定のルーティングテーブルにルーティングする IPv4 ソースネットワークのルールを定義します。以下に例を示します。

    from 192.0.2.0/24 lookup 1
    from 203.0.113.0/24 lookup 2
  • /etc/sysconfig/network-scripts/rule6-interface - このファイルは、カーネルがトラフィックを特定のルーティングテーブルにルーティングする IPv6 ソースネットワークのルールを定義します。
  • /etc/iproute2/rt_tables - このファイルは、特定のルーティングテーブルを参照する数字の代わりに名前を使用する場合にマッピングを定義します。以下に例を示します。

    1     Provider_A
    2     Provider_B

関連情報

  • IP ルーティングの詳細は、man ページの ip-route(8) を参照してください。
  • ルーティングルールの詳細は、man ページの ip-rule(8) を参照してください。

15.3. レガシーネットワークスクリプトを使用して、特定のサブネットから別のデフォルトゲートウェイにトラフィックをルーティング

本セクションでは、デフォルトで、デフォルトルートを使用して、すべてのトラフィックをインターネットプロバイダー A にルーティングするルーターとして RHEL を構成する方法を説明します。RHEL は、ポリシーベースのルーティングを使用して、内部ワークステーションのサブネットから受信したトラフィックをプロバイダー B にルーティングします。

重要

network-scripts パッケージが提供する従来のネットワークスクリプトを使用したネットワークの設定は、RHEL 8 では非推奨になりました。このセクションの手順は、ホストで NetworkManager ではなく、レガシーネットワークスクリプトを使用している場合に限り行います。NetworkManager を使用してネットワーク設定を管理する場合は、「NetworkManager を使用した特定のサブネットから別のデフォルトゲートウェイへのトラフィックのルーティング」を参照してください。

この手順では、次のネットワークトポロジを想定しています。

policy based routing

注記

従来のネットワークスクリプトは、設定ファイルをアルファベット順に処理します。したがって、他のインターフェースのルールとルートで使用されるインターフェースが、依存するインターフェースが必要とするときに確実に稼働するように、構成ファイルに名前を付ける必要があります。正しい順序を達成するために、この手順では ifcfg-* ファイル、route-* ファイル、および rules-* ファイルの番号を使用します。

前提条件

  • NetworkManager パッケージがインストールされていないか、NetworkManager サービスが無効になります。
  • network-scripts パッケージがインストールされている。
  • この手順で設定する 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. 以下の内容で /etc/sysconfig/network-scripts/ifcfg-1_Provider-A ファイルを作成して、ネットワークインターフェースの設定をプロバイダー A に追加します。

    TYPE=Ethernet
    IPADDR=198.51.100.1
    PREFIX=30
    GATEWAY=198.51.100.2
    DNS1=198.51.100.200
    DEFROUTE=yes
    NAME=1_Provider-A
    DEVICE=enp7s0
    ONBOOT=yes
    ZONE=external

    以下の一覧は、設定ファイルで使用されるパラメーターについて説明しています。

    • TYPE=Ethernet: 接続タイプがイーサネットであることを定義します。
    • IPADDR=IP_address - IPv4 アドレスを設定します。
    • PREFIX=subnet_mask - サブネットマスクを設定します。
    • GATEWAY=IP_address: - デフォルトゲートウェイアドレスを設定します。
    • DNS1=IP_of_DNS_server - DNS サーバーの IPv4 アドレスを設定します。
    • DEFROUTE=yes|no - 接続がデフォルトルートであるかどうかを定義します。
    • NAME=connection_name - プロファイルの名前を設定します。混乱を避けるために、わかりやすい名前を使用してください。
    • DEVICE=network_device - ネットワークインターフェースを設定します。
    • ONBOOT=yes - システムの起動時に RHEL がこの接続を開始することを定義します。
    • ZONE=firewalld_zone - 定義された firewalld ゾーンにネットワークインターフェースを割り当てます。firewalld は、外部 ゾーンに割り当てられたマスカレードインターフェースを自動的に有効にすることに注意してください。
  2. プロバイダー B にネットワークインターフェースの設定を追加します。

    1. 以下の内容で /etc/sysconfig/network-scripts/ifcfg-2_Provider-B ファイルを作成します。

      TYPE=Ethernet
      IPADDR=192.0.2.1
      PREFIX=30
      DEFROUTE=no
      NAME=2_Provider-B
      DEVICE=enp1s0
      ONBOOT=yes
      ZONE=external

      このインターフェースの設定ファイルには、デフォルトのゲートウェイ設定が含まれていないことに注意してください。

    2. 2_Provider-B 接続のゲートウェイを別のルーティングテーブルに割り当てます。したがって、以下の内容で /etc/sysconfig/network-scripts/route-2_Provider-B ファイルを作成します。

      0.0.0.0/0 via 192.0.2.2 table 5000

      このエントリーは、このゲートウェイを経由するすべてのサブネットからのゲートウェイおよびトラフィックをテーブル 5000 に割り当てます。

  3. 内部ワークステーションサブネットへのネットワークインターフェースの設定を作成します。

    1. 以下の内容で /etc/sysconfig/network-scripts/ifcfg-3_Internal-Workstations ファイルを作成します。

      TYPE=Ethernet
      IPADDR=10.0.0.1
      PREFIX=24
      DEFROUTE=no
      NAME=3_Internal-Workstations
      DEVICE=enp8s0
      ONBOOT=yes
      ZONE=internal
    2. 内部ワークステーションサブネットのルーティングルール設定を追加します。したがって、以下の内容で /etc/sysconfig/network-scripts/rule-3_Internal-Workstations ファイルを作成します。

      pri 5 from 10.0.0.0/24 table 5000

      この設定では、優先度 5 のルーティングルールを定義します。これは、すべてのトラフィックを 10.0.0.0/24 サブネットからテーブル 5000 にルーティングします。値が小さいほど優先度が高くなります。

    3. 以下の内容を含む /etc/sysconfig/network-scripts/route-3_Internal-Workstations ファイルを作成し、ID 5000 のルーティングテーブルに静的ルートを追加します。

      10.0.0.0/24 via 192.0.2.1 table 5000

      この静的ルートは、RHEL が、ローカルネットワークインターフェースの IP への 10.0.0.0/24 サブネットから、プロバイダー B (192.0.2.1) にトラフィックを送信することを定義します。このインターフェースは、ルーティングテーブル 5000 に対するものであり、ネクストホップとして使用されます。

  4. 以下の内容で /etc/sysconfig/network-scripts/ifcfg-4_Servers ファイルを作成して、ネットワークインターフェースの設定をサーバーのサブネットに追加します。

    TYPE=Ethernet
    IPADDR=203.0.113.1
    PREFIX=24
    DEFROUTE=no
    NAME=4_Servers
    DEVICE=enp9s0
    ONBOOT=yes
    ZONE=internal
  5. ネットワークを再起動します。

    # systemctl restart network

検証手順

  1. 内部ワークステーションサブネットの RHEL ホストで、以下を行います。

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

      # yum install traceroute
    2. traceroute ユーティリティーを使用して、インターネットのホストへのルートを表示します。

      # traceroute redhat.com
      traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets
       1  10.0.0.1 (10.0.0.1)     0.337 ms  0.260 ms  0.223 ms
       2  192.0.2.1 (192.0.2.1)   0.884 ms  1.066 ms  1.248 ms
       ...

      コマンドの出力には、プロバイダー B のネットワークである 192.0.2.1 経由でルーターがパケットを送信することが表示されます。

  2. サーバーのサブネットの RHEL ホストで、以下を行います。

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

      # yum install traceroute
    2. traceroute ユーティリティーを使用して、インターネットのホストへのルートを表示します。

      # traceroute redhat.com
      traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets
       1  203.0.113.1 (203.0.113.1)    2.179 ms  2.073 ms  1.944 ms
       2  198.51.100.2 (198.51.100.2)  1.868 ms  1.798 ms  1.549 ms
       ...

      コマンドの出力には、ルーターがプロバイダー A のネットワークである 198.51.100.2 経由でパケットを送信することが表示されます。

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

RHEL ルーターで以下を行います。

  1. ルールの一覧を表示します。

    # ip rule list
    0:      from all lookup local
    5:      from 10.0.0.0/24 lookup 5000
    32766:  from all lookup main
    32767:  from all lookup default

    デフォルトでは、RHEL には、local テーブル、main テーブル、および default テーブルのルールが含まれます。

  2. テーブル 5000 のルートを表示します。

    # ip route list table 5000
    default via 192.0.2.2 dev enp1s0
    10.0.0.0/24 via 192.0.2.1 dev enp1s0
  3. インターフェースとファイアウォールゾーンを表示します。

    # firewall-cmd --get-active-zones
    external
      interfaces: enp1s0 enp7s0
    internal
      interfaces: enp8s0 enp9s0
  4. 外部 ゾーンでマスカレードが有効になっていることを確認します。

    # firewall-cmd --info-zone=external
    external (active)
      target: default
      icmp-block-inversion: no
      interfaces: enp1s0 enp7s0
      sources:
      services: ssh
      ports:
      protocols:
      masquerade: yes
      ...

関連情報

第16章 VLAN タグの設定

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

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

16.1. nmcli コマンドによる VLAN タグ付けの設定

本セクションでは、nmcli ユーティリティーを使用して、仮想ローカルエリアネットワーク (VLAN) のタグ付けを設定する方法を説明します。

前提条件

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

    • ボンディングのスレーブが起動している。
    • ボンドが、fail_over_mac=follow オプションで設定されていない。VLAN 仮想デバイスは、親の新規 MAC アドレスに一致する MAC アドレスを変更できません。このような場合、トラフィックは間違ったソースの MAC アドレスで送信されます。
  • ホストが接続するスイッチは、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 802-3-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

検証手順

  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

関連情報

  • 接続のテストに関する詳細は、35章基本的なネットワーク設定のテストを参照してください。
  • nmcli の例は、man ページの nmcli-examples(7) を参照してください。
  • 設定可能なすべての vlan プロパティーは、man ページの nm-settings (5)vlan setting セクションを参照してください。

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

関連情報

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

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

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

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

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

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

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

    Red Hat Enterprise Linux は、システム起動時にマスターデバイスおよびスレーブデバイスをアクティブにします。スレーブ接続をアクティベートすると、マスターもアクティベートされます。ただし、この場合、スレーブ接続は 1 つだけアクティブになります。デフォルトでは、マスターを有効にしても、自動的にスレーブがアクティベートされません。ただし、この動作は、以下の設定で有効にできます。

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

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

      # nmcli connection up bridge0

検証手順

  • 特定のブリッジのスレーブであるイーサネットデバイスのリンク状態を表示します。

    # 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 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 コマンドを使用します。

関連情報

  • 接続のテストに関する詳細は、35章基本的なネットワーク設定のテストを参照してください。
  • nmcli の例は、man ページの nmcli-examples(7) を参照してください。
  • 設定可能なすべてのブリッジプロパティーは、man ページの nm-settings(5)bridge settings セクションを参照してください。
  • 設定可能なすべてのブリッジポートプロパティーは、man ページの nm-settings(5)bridge-port settings セクションを参照してください。
  • bridge ユーティリティーの詳細は、man ページの bridge (8) を参照してください。
  • ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager の起動または再起動により、デバイスの設定を反映するインメモリー接続が作成されます。詳細と、この問題を回避する方法は、「NetworkManager duplicates a connection after restart of NetworkManager service」を参照してください。

17.2. 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 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 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 コマンドを使用します。

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

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

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

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

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

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

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

ネットワークチーミングでは、ポート という用語は スレーブ としても知られています。NetworkManager サービスでは ポート という用語が好まれますが、teamd サービスの スレーブ は、チームを作成するインターフェースを指します。

重要

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

18.2. マスターインターフェースおよびスレーブインターフェースのデフォルト動作の理解

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

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

18.3. ネットワークチーミングとボンディング機能の比較

以下の表では、ネットワークチームおよびネットワークのボンディングで対応している機能を比較します。

機能ネットワークボンドネットワークチーム

ブロードキャストの Tx ポリシー

はい

はい

ラウンドロビンの Tx ポリシー

はい

はい

アクティブバックアップの Tx ポリシー

はい

はい

LACP (802.3ad) への対応

あり (アクティブのみ)

はい

ハッシュベースの Tx ポリシー

はい

はい

ユーザーによるハッシュ機能の設定

いいえ

はい

Tx 負荷分散への対応 (TLB)

はい

はい

LACP ハッシュポートの選択

はい

はい

LACP 対応の負荷分散

いいえ

はい

Ethtool リンク監視

はい

はい

ARP リンク監視

はい

はい

NS/NA (IPv6) リンク監視

いいえ

はい

ポートのアップ/ダウンの遅延

はい

はい

ポートの優先度および持続性 (スティッキネス) (「プライマリー」のオプション強化)

いいえ

はい

ポートごとに個別のリンク監視の設定

いいえ

はい

複数のリンク監視の設定

限定的

はい

ロックなしの Tx/Rx パス

なし (rwlock)

あり (RCU)

VLAN への対応

はい

はい

ユーザー空間のランタイム制御

限定的

はい

ユーザー空間での論理

いいえ

はい

拡張性

困難

容易

モジュラー設計

いいえ

はい

パフォーマンスのオーバーヘッド

非常に低い

D-Bus インターフェース

いいえ

はい

複数デバイスのスタッキング

はい

はい

LLDP を使用したゼロ設定

いいえ

(計画中)

NetworkManager への対応

はい

はい

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

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

前提条件

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

手順

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

    # yum install teamd NetworkManager-team

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

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

前提条件

手順

  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

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

関連情報

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

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

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

前提条件

  • サーバーに、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

関連情報

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

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

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

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

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

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

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

詳細は、お使いのスイッチと https://www.kernel.org/doc/Documentation/networking/bonding.txt のドキュメントを参照してください。

重要

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

19.2. マスターインターフェースおよびスレーブインターフェースのデフォルト動作の理解

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

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

19.3. ネットワークチーミングとボンディング機能の比較

以下の表では、ネットワークチームおよびネットワークのボンディングで対応している機能を比較します。

機能ネットワークボンドネットワークチーム

ブロードキャストの Tx ポリシー

はい

はい

ラウンドロビンの Tx ポリシー

はい

はい

アクティブバックアップの Tx ポリシー

はい

はい

LACP (802.3ad) への対応

あり (アクティブのみ)

はい

ハッシュベースの Tx ポリシー

はい

はい

ユーザーによるハッシュ機能の設定

いいえ

はい

Tx 負荷分散への対応 (TLB)

はい

はい

LACP ハッシュポートの選択

はい

はい

LACP 対応の負荷分散

いいえ

はい

Ethtool リンク監視

はい

はい

ARP リンク監視

はい

はい

NS/NA (IPv6) リンク監視

いいえ

はい

ポートのアップ/ダウンの遅延

はい

はい

ポートの優先度および持続性 (スティッキネス) (「プライマリー」のオプション強化)

いいえ

はい

ポートごとに個別のリンク監視の設定

いいえ

はい

複数のリンク監視の設定

限定的

はい

ロックなしの Tx/Rx パス

なし (rwlock)

あり (RCU)

VLAN への対応

はい

はい

ユーザー空間のランタイム制御

限定的

はい

ユーザー空間での論理

いいえ

はい

拡張性

困難

容易

モジュラー設計

いいえ

はい

パフォーマンスのオーバーヘッド

非常に低い

D-Bus インターフェース

いいえ

はい

複数デバイスのスタッキング

はい

はい

LLDP を使用したゼロ設定

いいえ

(計画中)

NetworkManager への対応

はい

はい

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

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

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

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

自動ポートが必要です。

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

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

    Red Hat Enterprise Linux は、システム起動時にマスターデバイスおよびスレーブデバイスをアクティブにします。スレーブ接続をアクティベートすると、マスターもアクティベートされます。ただし、この場合、スレーブ接続は 1 つだけアクティブになります。デフォルトでは、マスターを有効にしても、自動的にスレーブがアクティベートされません。ただし、この動作は、以下の設定で有効にできます。

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

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

      # nmcli connection up bond0

検証手順

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

    # cat /proc/net/bonding/bond0
    Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
    
    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
    
    Slave Interface: enp7s0
    MII Status: up
    Speed: Unknown
    Duplex: Unknown
    Link Failure Count: 0
    Permanent HW addr: 52:54:00:d5:e0:fb
    Slave queue ID: 0
    
    Slave Interface: enp8s0
    MII Status: up
    Speed: Unknown
    Duplex: Unknown
    Link Failure Count: 0
    Permanent HW addr: 52:54:00:b2:e2:63
    Slave queue ID: 0

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

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

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

      # cat /proc/net/bonding/bond0

関連情報

19.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 を閉じます。

検証手順

  • ボンディングのステータスを表示します。

    $ cat /proc/net/bonding/bond0
    Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
    
    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
    
    Slave Interface: enp7s0
    MII Status: up
    Speed: Unknown
    Duplex: Unknown
    Link Failure Count: 0
    Permanent HW addr: 52:54:00:d5:e0:fb
    Slave queue ID: 0
    
    Slave Interface: enp8s0
    MII Status: up
    Speed: Unknown
    Duplex: Unknown
    Link Failure Count: 0
    Permanent HW addr: 52:54:00:b2:e2:63
    Slave queue ID: 0

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

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

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

前提条件

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

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

    • enp11s0u1 イーサネットデバイスに関連付けられた Docking_station
    • wlp61s0 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      wlp61s0
    ...

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

  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: wlp61s0
    MII Status: up
    Speed: Unknown
    Duplex: Unknown
    Link Failure Count: 2
    Permanent HW addr: 00:53:00:b3:22:ba
    Slave queue ID: 0

第20章 VPN 接続の設定

本セクションでは、仮想プライベートネットワーク (VPN) 接続を設定する方法を説明します。

VPN は、インターネットを介してローカルネットワークに接続する方法です。Libreswan が提供する IPsec は、VPN を作成するのに推奨される方法です。Libreswan は、VPN 用のオープンソースで、ユーザー空間の IPsec 実装です。VPN は、インターネットなどの中間ネットワークにトンネルを設定して、LAN と別のリモート LAN との間の通信を可能にします。セキュリティー上の理由から、VPN トンネルは常に認証と暗号化を使用します。暗号化操作では、LibreswanNSS ライブラリーを使用します。

20.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 セクションでは、以下の設定が可能です。

      図20.1 VPN 接続の詳細なオプション

      Networking vpn の詳細なオプション
      警告

      gnome-control-center アプリケーションを使用して IPsec ベースの VPN 接続を設定すると、Advanced ダイアログには設定が表示されますが、変更することはできません。したがって、詳細な IPsec オプションを変更できません。nm-connection-editor ツールまたは nmcli ツールを使用して、詳細なプロパティーの設定を実行します。

      識別

    • Domain - 必要な場合は、ドメイン名を入力します。

      Security

    • 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) - 接続しているネットワークがルーター通知 (RA) または DHCP サーバーを使用して動的 IP アドレスを割り当てる場合は、このオプションを選択します。
    • 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 接続をアクティブにします。

関連情報

  • 対応している Libreswan パラメーターの詳細は、man ページの nm-settings-libreswan(5) を参照してください。

20.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. 必要に応じて、詳細 ボタンをクリックして、追加設定を設定します。以下の設定を構成できます。

      • 識別

        • ドメイン - 必要な場合は、ドメイン名を入力します。
      • Security

        • 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 メニューエントリーがあることです。

関連情報

  • 対応している IPsec パラメーターの詳細は、man ページの nm-settings-libreswan(5) を参照してください。

第21章 ダミーインターフェースの作成

Red Hat Enterprise Linux ユーザーは、デバッグおよびテストの目的でダミーネットワークインターフェースを作成および使用できます。ダミーインターフェースは、実際には送信せずにパケットをルーティングするデバイスを提供します。NetworkManager が管理する追加のループバックのようなデバイスを作成し、非アクティブな SLIP (Serial Line Internet Protocol) アドレスをローカルプログラムの実アドレスのようにすることができます。

21.1. nmcli を使用して IPv4 アドレスと IPv6 アドレスの両方を使用したダミーインターフェースの作成

さまざまな設定でダミーインターフェースを作成できます。この手順では、IPv4 アドレスと IPv6 アドレスの両方でダミーインターフェースを作成する方法を説明します。ダミーインターフェースを作成すると、NetworkManager により自動的にデフォルトの public ファイアウォールゾーンに割り当てられます。

注記

IPv4 アドレスまたは IPv6 アドレスなしでダミーインターフェースを設定するには、ipv4.method パラメーターおよび ipv6.method パラメーターを disabled に設定します。それ以外の場合は、IP 自動設定が失敗し、NetworkManager が接続を無効にしてダミーデバイスを削除します。

手順

  1. 静的な IPv4 アドレスおよび IPv6 アドレスで dummy0 という名前のダミーインターフェースを作成するには、次のコマンドを実行します。

    # nmcli connection add type dummy ifname dummy0 ipv4.method manual ipv4.addresses 192.0.2.1/24 ipv6.method manual ipv6.addresses 2001:db8:2::1/64
  2. 必要に応じて、ダミーインターフェースを表示するには、以下を入力します。

    # nmcli connection show
    NAME            UUID                                  TYPE      DEVICE
    enp1s0          db1060e9-c164-476f-b2b5-caec62dc1b05  ethernet    ens3
    dummy-dummy0    aaf6eb56-73e5-4746-9037-eed42caa8a65  dummy    dummy0

関連情報

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

第22章 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 で動作します。

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

検証手順

  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 ページの nmcli を参照してください。
  • nmcli で設定できるトンネル設定の詳細は、man ページの nm-settings(5)ip-tunnel settings セクションを参照してください。

22.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 tun0 +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 ipip 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 tun0 +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 ページの nmcli を参照してください。
  • nmcli で設定できるトンネル設定の詳細は、man ページの nm-settings(5)ip-tunnel settings セクションを参照してください。

22.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 ページの nmcli を参照してください。
  • nmcli で設定できるトンネル設定の詳細は、man ページの nm-settings(5)ip-tunnel settings セクションを参照してください。

22.4. 関連情報

  • トンネルインターフェースの一覧と、ip ユーティリティーを使用したトンネルの一時的な設定については、man ページの ip-link(8) を参照してください。

第23章 DNS サーバーの順序の設定

ほとんどのアプリケーションは、glibc ライブラリーの getaddrinfo() 関数を使用して DNS 要求を解決します。デフォルトでは、glibc はすべての DNS 要求を、/etc/resolv.conf ファイルで指定された最初の DNS サーバーに送信します。このサーバーが応答しない場合、Red Hat Enterprise Linux はこのファイルの次のサーバーを使用します。

本セクションでは、DNS サーバーの順序をカスタマイズする方法を説明します。

23.1. NetworkManager が /etc/resolv.conf で DNS サーバーを順序付ける方法

NetworkManager は、以下のルールに基づいて /etc/resolv.conf ファイルの DNS サーバーの順序を付けます。

  • 接続プロファイルが 1 つしか存在しない場合、NetworkManager は、その接続で指定された IPv4 および IPv6 の DNS サーバーの順序を使用します。
  • 複数の接続プロファイルがアクティベートされると、NetworkManager は DNS の優先度の値に基づいて DNS サーバーを順序付けます。DNS の優先度を設定すると、NetworkManager の動作は、dns パラメーターに設定した値によって異なります。このパラメーターは、/etc/NetworkManager/NetworkManager.conf ファイルの [main] セクションで設定できます。

    • dns=default または dns パラメーターが設定されていないと、以下のようになります。

      NetworkManager は、各接続の ipv4.dns-priority パラメーターおよび ipv6.dns-priority パラメーターに基づいて、複数の接続から DNS サーバーを順序付けます。

      値を指定しない場合、または ipv4.dns-priority および ipv6.dns-priority0 に設定すると、NetworkManager はグローバルのデフォルト値を使用します。「DNS 優先度パラメーターのデフォルト値」を参照してください。

    • dns=dnsmasq または dns=systemd-resolved:

      この設定のいずれかを使用すると、NetworkManager は dnsmasq127.0.0.1 に設定するか、127.0.0.53nameserver エントリーとして /etc/resolv.conf ファイルに設定します。

      dnsmasq サービスおよび systemd-resolved サービスの両方で、NetworkManager 接続に設定された検索ドメインのクエリーをその接続で指定された DNS サーバーに転送し、その他のドメインへのクエリーをデフォルトのルートを持つ接続に転送します。複数の接続に同じ検索ドメインが設定されている場合は、dnsmasq および systemd-resolved が、このドメインのクエリーを、優先度の値が最も低い接続に設定された DNS サーバーへ転送します。

DNS 優先度パラメーターのデフォルト値

NetworkManager は、接続に以下のデフォルト値を使用します。

  • VPN 接続の場合は 50
  • 他の接続の場合は 100

有効な DNS 優先度の値:

グローバルのデフォルトおよび接続固有の ipv4.dns-priority パラメーターおよび ipv6.dns-priority パラメーターの両方を -2147483647 から 2147483647 までの値に設定できます。

  • 値が小さいほど優先度が高くなります。
  • 負の値は、値が大きい他の設定を除外する特別な効果があります。たとえば、優先度が負の値の接続が 1 つでも存在する場合は、NetworkManager が、優先度が最も低い接続プロファイルで指定された DNS サーバーのみを使用します。
  • 複数の接続の DNS の優先度が同じ場合、NetworkManager は以下の順番で DNS の優先順位を決定します。

    1. VPN 接続。
    2. アクティブなデフォルトルートとの接続。アクティブなデフォルトルートは、最も低いメトリックのデフォルトのルートです。

関連情報

  • NetworkManager が /etc/resolv.conf ファイルで DNS サーバーエントリーを順序付ける方法の詳細は、man ページの nm-settings(5)ipv4 セクションおよび ipv6 セクションの dns-priority パラメーターの説明を参照してください。
  • systemd-resolved を使用して、異なるドメインに別の DNS サーバーを使用する方法は、30章異なるドメインでの各種 DNS サーバーの使用を参照してください。

23.2. NetworkManager 全体でデフォルトの DNS サーバー優先度の値の設定

NetworkManager は、接続に以下の DNS 優先度のデフォルト値を使用します。

  • VPN 接続の場合は 50
  • 他の接続の場合は 100

本セクションでは、このシステム全体のデフォルトを、IPv4 接続および IPv6 接続のカスタムデフォルト値で上書きする方法を説明します。

手順

  1. /etc/NetworkManager/NetworkManager.conf ファイルを編集します。

    1. [connection] セクションが存在しない場合は追加します。

      [connection]
    2. [connection] セクションにカスタムのデフォルト値を追加します。たとえば、IPv4 と IPv6 の両方で新しいデフォルトを 200 に設定するには、以下を追加します。

      ipv4.dns-priority=200
      ipv6.dns-priority=200

      パラメーターは、-2147483647 から 2147483647 までの値に設定できます。パラメーターを 0 に設定すると、組み込みのデフォルト (VPN 接続の場合は 50、他の接続の場合は 100) が有効になります。

  2. NetworkManager サービスを再読み込みします。

    # systemctl reload NetworkManager

関連情報

  • NetworkManager のすべての接続にデフォルト値を設定する方法は、man ページの NetworkManager.conf(5)Connection Section を参照してください。

23.3. NetworkManager 接続の DNS 優先度の設定

本セクションでは、NetworkManager が /etc/resolv.conf ファイルを作成または更新する際に DNS サーバーの順序を定義する方法を説明します。

DNS 優先度の設定は、異なる DNS サーバーが設定された複数の接続がある場合にのみ有効であることに注意してください。複数の DNS サーバーが設定された接続が 1 つしかない場合は、接続プロファイルで DNS サーバーを優先順に手動で設定します。

前提条件

  • システムに NetworkManager の接続が複数設定されている。
  • システムで、/etc/NetworkManager/NetworkManager.conf ファイルに dns パラメーターが設定されていないか、そのパラメーターが default に設定されている。

手順

  1. 必要に応じて、利用可能な接続を表示します。

    # nmcli connection show
    NAME           UUID                                  TYPE      DEVICE
    Example_con_1  d17ee488-4665-4de2-b28a-48befab0cd43  ethernet  enp1s0
    Example_con_2  916e4f67-7145-3ffa-9f7b-e7cada8f6bf7  ethernet  enp7s0
    ...
  2. ipv4.dns-priority パラメーターおよび ipv6.dns-priority パラメーターを設定します。たとえば、Example_con_1 接続に対して、両方のパラメーターを 10 に設定するには、次のコマンドを実行します。

    # nmcli connection modify Example_con_1 ipv4.dns-priority 10 ipv6.dns-priority 10
  3. 必要に応じて、他のコネクションに対しても 1 つ前の手順を繰り返します。
  4. 更新した接続を再度アクティブにします。

    # nmcli connection up Example_con_1

検証手順

  • /etc/resolv.conf ファイルの内容を表示して、DNS サーバーの順序が正しいことを確認します。

    # cat /etc/resolv.conf

第24章 ifcfg ファイルで IP ネットワークの設定

本セクションでは、ifcfg ファイルを編集して、ネットワークインターフェースを手動で設定する方法を説明します。

インターフェース設定 (ifcfg) ファイルは、個々のネットワークデバイスのソフトウェアインターフェースを制御します。これは、システムの起動時に、このファイルを使用して、どのインターフェースを起動するかと、どのように設定するかを決定します。これらのファイルは、通常 ifcfg-name になります。接尾辞の name は、設定ファイルが制御するデバイスの名前を指します。規則により、ifcfg ファイルのサフィックスは、設定ファイル自体の DEVICE ディレクティブが指定する文字列と同じです。

24.1. ifcfg ファイルの静的ネットワーク設定でインタフェースの設定

この手順では、ifcfg ファイルを使用して、ネットワークインターフェースを設定する方法を説明します。

手順

ifcfg ファイルを使用して、静的ネットワークで、インターフェース enp1s0 を設定するには、/etc/sysconfig/network-scripts/ ディレクトリー内に、以下のような内容で ifcfg-enp1s0 という名前のファイルを作成します。

  • IPv4 設定の場合は、以下のようになります。

    DEVICE=enp1s0
    BOOTPROTO=none
    ONBOOT=yes
    PREFIX=24
    IPADDR=10.0.1.27
    GATEWAY=10.0.1.1
  • IPv6 設定の場合は、以下のようになります。

    DEVICE=enp1s0
    BOOTPROTO=none
    ONBOOT=yes
    IPV6INIT=yes
    IPV6ADDR=2001:db8:1::2/64

関連情報

24.2. ifcfg ファイルの動的ネットワーク設定でインタフェースの設定

この手順では、ifcfg ファイルを使用して、動的ネットワーク設定でネットワークインターフェースを設定する方法を説明します。

手順

  1. ifcfg ファイルの動的ネットワークを使用して、インターフェース em1 を設定するには、/etc/sysconfig/network-scripts/ ディレクトリーに、以下のような内容で、ifcfg-em1 という名前のファイルを作成します。

    DEVICE=em1
    BOOTPROTO=dhcp
    ONBOOT=yes
  2. DHCP サーバーに、別のホスト名を送信するようにインターフェースを設定する場合は、ifcfg ファイルに以下の行を追加します。

    DHCP_HOSTNAME=hostname
  3. DHCP サーバーに、別の完全修飾ドメイン名 (FQDN) を送信するようにインターフェースを設定する場合は、ifcfg ファイルに以下の行を追加します。

    DHCP_FQDN=fully.qualified.domain.name
    注記

    指定した ifcfg ファイルでは、DHCP_HOSTNAMEDHCP_FQDN のいずれかのディレクティブだけを使用してください。DHCP_HOSTNAMEDHCP_FQDN の両方が指定される場合は、後者だけが使用されます。

  4. 特定の DNS サーバーを使用するようにインターフェースを設定する場合は、ifcfg ファイルに以下の行を追加します。

      PEERDNS=no
      DNS1=ip-address
      DNS2=ip-address

    ip-address は、DNS サーバーのアドレスです。これにより、ネットワークサービスが、指定した DNS サーバーで /etc/resolv.conf を更新します。DNS サーバーアドレスは、1 つだけ必要です。もう 1 つは任意です。

24.3. ifcfg ファイルでシステム全体およびプライベート接続プロファイルの管理

この手順では、システム全体の接続プロファイルおよびプライベート接続プロファイルを管理するために、ifcfg ファイルを設定する方法を説明します。

手順

パーミッションは、ifcfg ファイルの USERS ディレクティブに対応します。USERS ディレクティブがない場合は、すべてのユーザーでそのネットワークプロファイルが利用できます。

  1. たとえば、次の行で ifcfg ファイルを変更します。これにより、一覧表示されるユーザーにのみ接続が利用できるようにします。

    USERS="joe bob alice"

第25章 NetworkManager を使用するシステムで IPv6 の無効化

本セクションは、NetworkManager を使用してネットワークインターフェースを管理するシステムで IPv6 プロトコルを無効にする方法を説明します。IPv6 を無効にすると、NetworkManager は、カーネルに対応する sysctl 値を自動的に設定します。

注記

NetworkManager サービスは、接続の開始時に特定の sysctl 値を設定します。予期しない動作を回避するには、手動で sysctl 値を設定して IPv6 を無効にしないでください。

前提条件

  • システムが NetworkManager を使用してネットワークインターフェースを管理します。これは、Red Hat Enterprise Linux 8 のデフォルトです。
  • システムは Red Hat Enterprise Linux 8.1 以降を実行します。

25.1. nmcli を使用した接続で IPv6 の無効化

本セクションでは、nmcli ユーティリティーを使用して IPv6 プロトコルを無効にする方法を説明します。

手順

  1. 必要に応じて、ネットワーク接続の一覧を表示します。

    # nmcli connection show
    NAME    UUID                                  TYPE      DEVICE
    Example 7a7e0151-9c18-4e6f-89ee-65bb2d64d365  ethernet  enp1s0
    ...
  2. 接続の ipv6.method パラメーターを disabled に設定します。

    # nmcli connection modify Example ipv6.method "disabled"
  3. ネットワーク接続が再起動します。

    # nmcli connection up Example

検証手順

  1. ip address show コマンドを実行して、デバイスの IP 設定を表示します。

    # ip address show enp1s0
    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:6b:74:be brd ff:ff:ff:ff:ff:ff
        inet 192.0.2.1/24 brd 192.10.2.255 scope global noprefixroute enp1s0
           valid_lft forever preferred_lft forever

    inet6 エントリーが表示されない場合は、デバイスで IPv6 が無効になります。

  2. /proc/sys/net/ipv6/conf/enp1s0/disable_ipv6 ファイルに値 1 が含まれていることを確認します。

    # cat /proc/sys/net/ipv6/conf/enp1s0/disable_ipv6
    1

    値が 1 の場合は、デバイスに対して IPv6 が無効になります。

第26章 /etc/resolv.conf ファイルの手動設定

デフォルトでは、Red Hat Enterprise Linux (RHEL) 8 の NetworkManager は、アクティブな NetworkManager の接続プロファイルから DNS 設定を使用して、/etc/resolv.conf ファイルを動的に更新します。本セクションでは、この機能を無効にして、/etc/resolv.conf で DNS を手動で設定する方法を説明します。

26.1. NetworkManager 設定で DNS 処理の無効化

本セクションでは、/etc/resolv.conf ファイルを手動で設定するために、NetworkManager 設定で DNS 処理を無効にする方法を説明します。

手順

  1. 以下の内容で /etc/NetworkManager/conf.d/90-dns-none.conf ファイルを作成します。

    [main]
    dns=none
  2. NetworkManager サービスを再読み込みします。

    # systemctl reload NetworkManager
    注記

    サービスを再読み込みすると、NetworkManager は /etc/resolv.conf ファイルを更新しなくなります。ただし、ファイルの最後の内容は保持されます。

  3. 必要に応じて、混乱を避けるために、NetworkManager により生成された コメントを /etc/resolv.conf から削除します。

検証手順

  1. /etc/resolv.conf ファイルを編集し、設定を手動で更新します。
  2. NetworkManager サービスを再読み込みします。

    # systemctl reload NetworkManager
  3. /etc/resolv.conf ファイルを表示します。

    # cat /etc/resolv.conf

    DNS 処理を無効にできた場合、NetworkManager は手動で構成した設定を上書きしませんでした。

関連情報

  • 詳細は、man ページの NetworkManager.conf(5)dns パラメーターの説明を参照してください。

第28章 NetworkManager を使用した ethtool オフロード機能の設定

ネットワークインターフェースカードは、TCP オフロードエンジン (TOE) を使用して、ネットワークコントローラーへの特定の操作をオフロードして、ネットワークのスループットを向上できます。

本セクションでは、NetworkManager が対応するオフロード機能と、その設定方法を説明します。

28.1. NetworkManager で対応している機能のオフロード

NetworkManager を使用して、以下の ethtool オフロード機能を設定できます。

  • ethtool.feature-esp-hw-offload
  • ethtool.feature-esp-tx-csum-hw-offload
  • ethtool.feature-fcoe-mtu
  • ethtool.feature-gro
  • ethtool.feature-gso
  • ethtool.feature-highdma
  • ethtool.feature-hw-tc-offload
  • ethtool.feature-l2-fwd-offload
  • ethtool.feature-loopback
  • ethtool.feature-lro
  • ethtool.feature-ntuple
  • ethtool.feature-rx
  • ethtool.feature-rx-all
  • ethtool.feature-rx-fcs
  • ethtool.feature-rx-gro-hw
  • ethtool.feature-rx-udp_tunnel-port-offload
  • ethtool.feature-rx-vlan-filter
  • ethtool.feature-rx-vlan-stag-filter
  • ethtool.feature-rx-vlan-stag-hw-parse
  • ethtool.feature-rxhash
  • ethtool.feature-rxvlan
  • ethtool.feature-sg
  • ethtool.feature-tls-hw-record
  • ethtool.feature-tls-hw-tx-offload
  • ethtool.feature-tso
  • ethtool.feature-tx
  • ethtool.feature-tx-checksum-fcoe-crc
  • ethtool.feature-tx-checksum-ip-generic
  • ethtool.feature-tx-checksum-ipv4
  • ethtool.feature-tx-checksum-ipv6
  • ethtool.feature-tx-checksum-sctp
  • ethtool.feature-tx-esp-segmentation
  • ethtool.feature-tx-fcoe-segmentation
  • ethtool.feature-tx-gre-csum-segmentation
  • ethtool.feature-tx-gre-segmentation
  • ethtool.feature-tx-gso-partial
  • ethtool.feature-tx-gso-robust
  • ethtool.feature-tx-ipxip4-segmentation
  • ethtool.feature-tx-ipxip6-segmentation
  • ethtool.feature-tx-nocache-copy
  • ethtool.feature-tx-scatter-gather
  • ethtool.feature-tx-scatter-gather-fraglist
  • ethtool.feature-tx-sctp-segmentation
  • ethtool.feature-tx-tcp-ecn-segmentation
  • ethtool.feature-tx-tcp-mangleid-segmentation
  • ethtool.feature-tx-tcp-segmentation
  • ethtool.feature-tx-tcp6-segmentation
  • ethtool.feature-tx-udp-segmentation
  • ethtool.feature-tx-udp_tnl-csum-segmentation
  • ethtool.feature-tx-udp_tnl-segmentation
  • ethtool.feature-tx-vlan-stag-hw-insert
  • ethtool.feature-txvlan

個別のオフロード機能の詳細は、ethtool ユーティリティーとカーネルのドキュメントを参照してください。

28.2. NetworkManager を使用した ethtool オフロード機能の設定

本セクションでは、NetworkManager を使用して ethtool オフロード機能を有効または無効にする方法と、NetworkManager 接続プロファイルから機能の設定を削除する方法を説明します。

手順

  1. たとえば、RX オフロード機能を有効にし、enp0s1 接続プロファイルで TX オフロードを無効にするには、次のコマンドを実行します。

    # nmcli con modify enp0s1 ethtool.feature-rx on ethtool.feature-tx off

    このコマンドは、RX オフロードを明示的に有効にし、TX オフロードを無効にします。

  2. 上で有効または無効にしたオフロード機能の設定を削除するには、この機能のパラメーターを ignore に設定します。たとえば、TX オフロードの設定を削除するには、次のコマンドを実行します。

    # nmcli con modify enp0s1 ethtool.feature-tx ignore
  3. ネットワークプロファイルを再度アクティブにします。

    # nmcli connection up enp0s1

検証手順

  1. ethtool -k コマンドを使用して、ネットワークデバイスの現在のオフロード機能を表示します。

    # ethtool -k network_device

関連情報

第29章 MACsec の設定

次のセクションでは、イーサネットリンクのすべてのトラフィックで、安全な通信のために、802.1AE IEEE 標準セキュリティー技術である MACsec (Media Control Access Security) を設定する方法を説明します。

29.1. MACsec の概要

MACsec (Media Access Control Security (IEEE 802.1AE)) は、LAN におけるすべてのトラフィックを、GCM-AES-128 アルゴリズムで認証します。MACsec は、IP だけでなく、ARP (Address Resolution Protocol)、ND (Neighbor Discovery)、または DHCP も保護できます。IPsec はネットワーク層 (レイヤー 3) で機能しますが、SSL または TLS はアプリケーション層 (レイヤー 7) で機能し、MACsec はデータリンク層 (レイヤー 2) で機能します。MACsec を、その他のネットワーク層のセキュリティープロトコルと組み合わせて、これらの標準規格が提供するさまざまなセキュリティー機能を活用します。

29.2. nmcli ツールで MACsec の使用

この手順は、nmcli ツールを使用して MACsec を設定する方法を説明します。

前提条件

  • NetworkManager が実行している。
  • 16 バイトの 16 進数表記 CAK ($MKA_CAK) と、32 バイトの 16 進数表記 CKN ($MKA_CKN) がある。

手順

~]# nmcli connection add type macsec \
  con-name test-macsec+ ifname macsec0 \
  connection.autoconnect no \
  macsec.parent enp1s0 macsec.mode psk \
  macsec.mka-cak $MKA_CAK \
  macsec.mka-ckn $MKA_CKN

~]# nmcli connection up test-macsec+

これにより、macsec0 デバイスが設定され、ネットワークに使用できます。

29.3. wpa_supplicant で MACsec の使用

この手順は、事前に共有された CAK/CKN (Connectivity Association Key/CAK Name) のペアで認証を実行するスイッチを使用して、MACsec を有効にする方法を説明します。

手順

  1. CAK/CKN ペアを作成します。たとえば、次のコマンドにより、16 バイトの鍵が 16 進数表記で生成されます。

    ~]$ dd if=/dev/urandom count=16 bs=1 2> /dev/null | hexdump -e '1/2 "%02x"'
  2. wpa_supplicant.conf 設定ファイルを作成し、次の行を追加します。

    ctrl_interface=/var/run/wpa_supplicant
    eapol_version=3
    ap_scan=0
    fast_reauth=1
    
    network={
        key_mgmt=NONE
        eapol_flags=0
        macsec_policy=1
    
        mka_cak=0011... # 16 bytes hexadecimal
        mka_ckn=2233... # 32 bytes hexadecimal
    }

    wpa_supplicant.conf 設定ファイルの mka_cak 行および mka_ckn 行には、前の手順の値を使用します。

    詳細は、man ページの wpa_supplicant.conf(5) を参照してください。

  3. ネットワークの接続に、たとえば wlp61s0 を使用している場合は、次のコマンドを実行して wpa_supplicant を起動します。

    ~]# wpa_supplicant -i wlp61s0 -Dmacsec_linux -c wpa_supplicant.conf

第30章 異なるドメインでの各種 DNS サーバーの使用

デフォルトでは、Red Hat Enterprise Linux (RHEL) は、すべての DNS リクエストを、/etc/resolv.conf ファイルで指定されている最初の DNS サーバーに送信します。このサーバーが応答しない場合、RHEL は、このファイルに指定されている次のサーバーを使用します。

ある DNS サーバーがすべてのドメインを解決できない環境では、管理者は、特定のドメインの DNS 要求を選択した DNS サーバーに送信するように RHEL を設定できます。たとえば、DNS サーバーを 1 台設定し、example.com および別の DNS サーバーのクエリーを解決して、example.net のクエリーを解決できます。その他の DNS 要求は、RHEL は、デフォルトゲートウェイとの接続に設定された DNS サーバーを使用します。

30.1. 選択した DNS サーバーへの特定ドメインの DNS 要求の送信

本セクションでは、systemd-resolved サービスおよび NetworkManager を設定して、特定のドメインの DNS クエリーを選択した DNS サーバーに送信します。

本セクションの手順を完了すると、RHEL は、/etc/resolv.conf ファイルの systemd-resolved が提供する DNS サービスを使用します。systemd-resolved サービスは、53 ポートの IP アドレス 127.0.0.53 でリッスンする DNS サービスを起動します。サービスは、DNS 要求を、NetworkManager で指定された対応する DNS サーバーに動的にルーティングします。

注記

127.0.0.53 アドレスは、ローカルシステムからのみ到達でき、ネットワークからは到達できません。

前提条件

  • システムに NetworkManager の接続が複数設定されている。
  • DNS サーバーと検索ドメインは、特定のドメインを解決する NetworkManager 接続で設定されます。

    たとえば、VPN 接続で指定された DNS サーバーが example.com ドメインのクエリーを解決する必要がある場合は、VPN 接続プロファイルに以下が必要になります。

    • example.com を解決できる DNS サーバーの設定している。
    • ipv4.dns-search パラメーターおよび ipv6.dns-search パラメーターで、検索ドメインを example.com に設定している。

手順

  1. systemd-resolved サービスを開始して有効にします。

    # systemctl --now enable systemd-resolved
  2. /etc/NetworkManager/NetworkManager.conf ファイルを編集し、[main] セクションに以下のエントリーを設定します。

    dns=systemd-resolved
  3. NetworkManager サービスを再読み込みします。

    # systemctl reload NetworkManager

検証手順

  1. /etc/resolv.conf ファイルの nameserver エントリーが 127.0.0.53 を指していることを確認します。

    # cat /etc/resolv.conf
    nameserver 127.0.0.53
  2. systemd-resolved サービスがローカルの IP アドレス 127.0.0.5353 ポートでリッスンしていることを確認します。

    # netstat -tulpn | grep "127.0.0.53:53"
    tcp   0   0 127.0.0.53:53   0.0.0.0:*   LISTEN   1050/systemd-resolv
    udp   0   0 127.0.0.53:53   0.0.0.0:*            1050/systemd-resolv

関連情報

  • 詳細は、man ページの NetworkManager.conf(5)dns パラメーターの説明を参照してください。

第31章 IPVLAN の使用

ここでは、IPVLAN ドライバーを説明します。

31.1. IPVLAN の概要

IPVLAN は、仮想ネットワークデバイス用のドライバーで、コンテナ環境でホストネットワークにアクセスするのに使用できます。IPVLAN は外部ネットワークに対し、ホストネットワーク内で作成された IPVLAN デバイスの数に関わらず、MAC アドレスを 1 つ公開します。つまり、ユーザーは複数コンテナーに複数の IPVLAN デバイスを持つことができますが、対応するスイッチは MAC アドレスを 1 つ読み込むということです。IPVLAN ドライバーは、ローカルスイッチで管理できる MAC アドレスの数に制限がある場合に役立ちます。

31.2. IPVLAN モード

IPVLANでは、次のモードが使用できます。

  • L2 モード

    IPVLAN の L2 モード では、仮想デバイスは アドレス解決プロトコル (ARP) リクエストを受信して応答します。netfilter フレームワークは、仮想デバイスを所有するコンテナー内でのみ動作します。netfilter チェーンは、コンテナー化したトラッフィクにあるデフォルトの名前空間では実行されません。L2 モードを使用すると、パフォーマンスは高くなりますが、ネットワークトラフィックの制御性は低下します。

  • L3 モード

    L3 モードでは、仮想デバイスは L3 以上のトラフィックのみを処理します。仮想デバイスは ARP リクエストに応答せず、関連するピアの IPVLAN IP アドレスは、隣接エントリーをユーザーが手動で設定する必要があります。関連するコンテナーの送信トラフィックはデフォルトの名前空間の netfilter の POSTROUTING および OUTPUT チェーンに到達する一方、受信トラフィックは L2 モード と同様にスレッド化されます。L3 モード を使用すると、制御性は高くなりますが、ネットワークトラフィックのパフォーマンスは低下します。

  • L3S モード

    L3S モード では、仮想デバイスは L3 モード と同様の処理をしますが、関連するコンテナーの送信トラフィックと受信トラフィックの両方がデフォルトの名前空間の netfilter チェーンに到達する点が異なります。L3S モード は、L3 モード と同様の動作をしますが、ネットワークの制御が強化されます。

注記

IPVLAN 仮想デバイスは、L3 モードおよび L3S モードでは、ブロードキャストトラフィックおよびマルチキャストトラフィックを受信しません。

31.3. MACVLAN の概要

MACVLAN ドライバーを使用すると、1 つの NIC に複数の仮想ネットワークデバイスを作成することができます。各 NIC は、それぞれ固有の MAC アドレスで識別されます。物理 NIC に到達するパケットは、宛先の MAC アドレスから関連する MACVLAN デバイスに対して分割します。MacVLAN デバイスは、カプセル化のレベルを追加しません。

31.4. IPVLAN および MACVLAN の比較

以下の表は、MACVLAN と IPVLAN の主な相違点を示しています。

MACVLANIPVLAN

各 MACVLAN デバイスに対して、MAC アドレスを使用します。スイッチの MAC テーブルの MAC アドレスの過剰制限により、接続が悪化する可能性があります。

IPVLAN デバイスの数を制限しないMAC アドレスを 1 つ使用します。

グローバル名前空間の netfilter ルールは、子名前空間の MACVLAN デバイスへのトラフィックに影響を及ぼしません。

L3 モード および L3S モード の IPVLAN デバイスとのトラフィックを制御できます。

IPVLAN および MACVLAN の両方には、カプセル化のレベルは必要ありません。

31.5. IPVLAN ネットワークの設定

31.5.1. iproute2 を使用した IPVLAN デバイスの作成および設定

この手順では、iproute2 を使用して IPVLAN デバイスを設定する方法を説明します。

手順

  1. IPVLAN デバイスを作成するには、次のコマンドを実行します。

    ~]# ip link add link real_NIC_device name IPVLAN_device type ipvlan mode l2

    ネットワークインターフェースコントローラー (NIC) は、コンピューターをネットワークに接続するハードウェアコンポーネントです。

    例31.1 IPVLAN デバイスの作成

    ~]# ip link add link enp0s31f6 name my_ipvlan type ipvlan mode l2
    ~]# ip link
    47: my_ipvlan@enp0s31f6: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether e8:6a:6e:8a:a2:44 brd ff:ff:ff:ff:ff:ff
  2. IPv4 アドレスまたは IPv6 アドレスをインターフェースに割り当てるには、次のコマンドを実行します。

    ~]# ip addr add dev IPVLAN_device IP_address/subnet_mask_prefix
  3. L3 モード または L3S モード の IPVLAN デバイスを設定する場合は、以下の設定を行います。

    1. リモートホストのリモートピアのネイバー設定を行います。

      ~]# ip neigh add dev peer_device IPVLAN_device_IP_address lladdr MAC_address

      MAC_address は、IPVLAN デバイスのベースである実際の NIC の MAC アドレスになります。

    2. L3 モード の IPVLAN デバイスを設定する場合は、次のコマンドを実行します。

      ~]# ip neigh add dev real_NIC_device peer_IP_address lladdr peer_MAC_address

      L3S モード の場合は、次のコマンドを実行します。

      ~]# ip route dev add real_NIC_device peer_IP_address/32

      IP アドレスは、リモートピアのアドレスを使用します。

  4. IPVLAN デバイスをアクティブに設定するには、次のコマンドを実行します。

    ~]# ip link set dev IPVLAN_device up
  5. IPVLAN デバイスがアクティブであることを確認するには、リモートホストで次のコマンドを実行します。

    ~]# ping IP_address

    IP_address には、IPVLAN デバイスの IP アドレスを使用します。

第32章 VRF (Virtual Routing and Forwarding) の設定

VRF (Virtual Routing and Forwarding) を使用すると、管理者は、同じホストで複数のルーティングテーブルを同時に使用できます。このため、VRF はレイヤー 3 でネットワークをパーティションで区切ります。これにより、管理者は、VRF ドメインごとに個別の独立したルートテーブルを使用してトラフィックを分離できるようになります。この技術は、レイヤー 2 でネットワークのパーティションを作成する仮想 LAN (VLAN) に類似しており、ここではオペレーティングシステムが異なる VLAN タグを使用して、同じ物理メディアを共有するトラフィックを分離させます。

レイヤー 2 のパーティションにある VRF の利点は、関与するピアの数に対して、ルーティングが適切にスケーリングすることです。

Red Hat Enterprise Linux は、各 VRF ドメインに仮想 vrt デバイスを使用し、既存のネットワークデバイスを VRF デバイスにスレーブにして、VRF ドメインにルートを追加します。スレーブになったデバイスに接続していたアドレスとルートは、VRF ドメイン内に移動します。

各 VRF ドメインが互いに分離しているることに注意してください。

32.1. 複数のインターフェースで同じ IP アドレスを一時的に再利用

本セクションの手順では、VRF (Virtual Routing and Forwarding) 機能を使用して、1 台のサーバーの複数のインターフェースで同じ IP アドレスを一時的に使用する方法を説明します。この手順は、システムの再起動後に設定が一時的で失われてしまうため、テスト目的にのみ使用します。

重要

同じ IP アドレスを再利用しながら、リモートのピアが VRF インターフェースの両方に接続するようにするには、ネットワークインターフェースが異なるブロードキャストドメインに属する必要があります。ネットワークのブロードキャストドメインは、ノードのいずれかによって送信されたブロードキャストトラフィックを受信するノードセットです。ほとんどの設定では、同じスイッチに接続されているすべてのノードが、同じブロードキャストドメインに属するようになります。

前提条件

  • root ユーザーとしてログインしている。
  • ネットワークインターフェースが設定されていない。

手順

  1. 最初の VRF デバイスを作成して設定します。

    1. VRF デバイスを作成し、ルーティングテーブルに割り当てます。たとえば、1001 ルーティングテーブルに割り当てられた blue という名前の VRF デバイスを作成するには、次のコマンドを実行します。

      # ip link add dev blue type vrf table 1001
    2. blue デバイスを有効にします。

      # ip link set dev blue up
    3. VRF デバイスにネットワークデバイスを割り当てます。たとえば、イーサネットデバイス enp1s0 を、VRF デバイス blue に追加するには、次のコマンドを実行します。

      # ip link set dev enp1s0 master blue
    4. enp1s0 デバイスを有効にします。

      # ip link set dev enp1s0 up
    5. IP アドレスとサブネットマスクを enp1s0 デバイスに割り当てます。たとえば、これを 192.0.2.1/24 に設定するには、次のコマンドを実行します。

      # ip addr add dev enp1s0 192.0.2.1/24
  2. 次の VRF デバイスを作成して設定します。

    1. VRF デバイスを作成し、ルーティングテーブルに割り当てます。たとえば、ルーティングテーブル 1002 に割り当てられた red という名前の VRF デバイスを作成するには、次のコマンドを実行します。

      # ip link add dev red type vrf table 1002
    2. red デバイスを有効にします。

      # ip link set dev red up
    3. VRF デバイスにネットワークデバイスを割り当てます。たとえば、イーサネットデバイス enp7s0 を、VRF デバイス red に追加するには、次のコマンドを実行します。

      # ip link set dev enp7s0 master red
    4. enp7s0 デバイスを有効にします。

      # ip link set dev enp7s0 up
    5. VRF ドメイン blueenp1s0 に使用したものと同じ IP アドレスとサブネットマスクを enp7s0 デバイスに割り当てます。

      # ip addr add dev enp7s0 192.0.2.1/24
  3. 必要に応じて、上記のとおりに、VRF デバイスをさらに作成します。

第33章 システムのルーティングプロトコルの設定

このセクションでは、Free Range Routing (FRRouting または FRR) 機能を使用して、システムに必要なルーティングプロトコルを有効にして設定する方法を説明します。

33.1. FRRouting の概要

Free Range Routing (FRRouting または FRR) は、AppStream リポジトリーで利用可能な frr パッケージで提供されるルーティングプロトコルスタックです。

FRR は、以前のバージョンの RHEL で使用されていた Quagga に代わるものです。このように、FRR は、複数のルーティングプロトコル IPv4 および IPv6 に対応する TCP/IP ベースのルーティングサービスを提供します。

対応プロトコルは次のとおりです。

  • BGP (Border Gateway Protocol)
  • IS-IS (Intermediate System to Intermediate System)
  • OSPF (Open Shortest Path First)
  • PIM (Potocol-Independent Multicast)
  • RIP (Routing Information Protocol)
  • RIPng (Routing Information Protocol next generation)
  • EIGRP (Enhanced Interior Gateway Routing Protocol)
  • NHRP (Next Hop Resolution Protocol)
  • BFD (Bidirectional Forwarding Detection)
  • PBR (Policy-based Routing)

FRR には、以下のサービスが含まれます。

  • zebra
  • bgpd
  • isisd
  • ospfd
  • ospf6d
  • pimd
  • ripd
  • ripngd
  • eigrpd
  • nhrpd
  • bfdd
  • pbrd
  • staticd
  • fabricd

frr がインストールされている場合、システムは専用ルーターとして動作します。これにより、ルーティングプロトコルを使用する内部ネットワークまたは外部ネットワークのいずれかで、その他のルーターとルーティング情報を交換します。

33.2. FRRouting の設定

前提条件

  • システムに frr パッケージがインストールされている。
# yum install frr

手順

  1. /etc/frr/daemons 設定ファイルを編集し、システムに必要なデーモンを有効にします。

    たとえば、ripd デーモンを有効にするには、以下の行を追加します。

    ripd=yes
    警告

    zebra デーモンは、常に有効にする必要があるため、zebra=yes に設定して FRR を使用できるようにする必要があります。

    重要

    デフォルトでは、/etc/frr/daemons には、すべてのデーモンの [daemon_name]=no エントリーが含まれます。したがって、すべてのデーモンが無効になり、システムを新規インストールした後に FRR を開始しても効果がありません。

  2. frr サービスを起動します。

    # systemctl start frr
  3. 必要に応じて、FRR がシステムの起動時に自動的に開始されるように設定することもできます。

    # systemctl enable frr

33.3. FRR の設定の修正

本セクションでは、以下を説明します。

  • FRR の設定後に追加のデーモンを有効にする方法
  • FRR の設定後にデーモンを無効にする方法

追加のデーモンの有効化

前提条件

手順

追加のデーモンを 1 つ以上有効にするには、以下を実行します。

  1. /etc/frr/daemons 設定ファイルを編集し、必要なデーモンの行を、no ではなく yes に変更します。

    たとえば、ripd デーモンを有効にするには、次のコマンドを実行します。

    ripd=yes
  2. frr サービスを再読み込みします。

    # systemctl reload frr

デーモンの無効化

前提条件

手順

複数のデーモンを無効にするには、以下を実行します。

  1. /etc/frr/daemons 設定ファイルを編集し、必要なデーモンの行を、yes ではなく no に変更します。

    たとえば、ripd デーモンを無効にするには、次のコマンドを実行します。

    ripd=no
  2. frr サービスを再読み込みします。

    # systemctl reload frr

33.4. 特定のデーモンの設定の修正

デフォルトの設定では、FRR のすべてのルーティングデーモンがプレーンルーターとしてのみ動作します。

デーモンの追加設定には、以下の手順を使用します。

手順

  1. /etc/frr/ ディレクトリーで、必要なデーモンの設定ファイルを作成し、次のようにファイルに名前を付けます。

    [daemon_name].conf

    たとえば、eigrpd デーモンをさらに設定する場合は、前述のディレクトリーに eigrpd.conf ファイルを作成します。

  2. 必要な内容で新規ファイルを設定します。

    特定の FRR デーモンの設定例は、/usr/share/doc/frr/ ディレクトリーを参照してください。

  3. frr サービスを再読み込みします。

    # systemctl reload frr

第34章 RX リングバッファーの監視およびチューニング

受信 (RX) リングバッファーは、デバイスドライバーとネットワークインターフェースカード (NIC) 間で共有バッファーで、デバイスドライバーが処理できるまで着信パケットを保存します。

パケットの破棄率によりアプリケーションが報告するようになる場合は、イーサネットデバイスの RX リングバッファーのサイズを増やすことができます。

  • データ損失
  • クラスターフェンス
  • パフォーマンスの低下
  • タイムアウト
  • バックアップの失敗

本セクションでは、破棄されたパケットの数を特定し、RX リングバッファーを増やして、パケットの高い破棄率を減らす方法を説明します。

34.1. 破棄されたパケット数の表示

ethtool ユーティリティーを使用すると、管理者はネットワークドライバーの設定をクエリー、設定、または制御できます。

RX リングバッファーを使い切ると、ethtool -S interface_name の出力の「discard」や「drop」などのカウンターにインクリメントが生じます。破棄されたパケットは、カーネルがパケットを処理できるよりも早く利用可能なバッファーが満杯になっていることを示しています。

この手順では、ethtool を使用してドロップカウンターを表示する方法を説明します。

手順

  • enp1s0 インターフェースのドロップカウンターを表示するには、次のコマンドを実行します。

    $ ethtool -S enp1s0

34.2. パケットの破棄レートが高いのを減らすために RX リングバッファーを増やす

ethtool ユーティリティーは、パケットの破棄率を高くするために RX バッファーを増やすのに役立ちます。

手順

  1. RX リングバッファーの最大サイズを表示するには、次のコマンドを実行します。

    # ethtool -g enp1s0
     Ring parameters for enp1s0:
     Pre-set maximums:
     RX:             4080
     RX Mini:        0
     RX Jumbo:       16320
     TX:             255
     Current hardware settings:
     RX:             255
     RX Mini:        0
     RX Jumbo:       0
     TX:             255
  2. Pre-set maximums セクションの値が Current hardware settings セクションの値よりも高い場合は、RX リングバッファーを増やします。

重要

ネットワークインターフェースカードが使用するドライバーによっては、リングバッファーで変更したことでネットワーク接続がすぐに中断する可能性があります。

第35章 基本的なネットワーク設定のテスト

本セクションでは、基本的なネットワークテストを実行する方法を説明します。

35.1. ping ユーティリティーを使用した他のホストへの IP 接続の検証

ping ユーティリティーは ICMP パケットをリモートホストに送信します。この機能を使用すると、別のホストへの IP 接続が機能するかどうかをテストできます。

手順

  • デフォルトゲートウェイなど、同じサブネット内のホストの IP アドレスに ping します。

    # ping 192.0.2.3

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

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

    # ping 198.162.3.1

    コマンドが失敗した場合は、デフォルトのゲートウェイ設定を確認し、ゲートウェイが接続ネットワーク間のパケットを転送することを確認します。

35.2. host ユーティリティーを使用した名前解決の検証

この手順では、Red Hat Enterprise Linux 8 で名前解決を確認する方法を説明します。

手順

  • host ユーティリティーを使用して名前解決が機能することを確認します。たとえば、client.example.com のホスト名を IP アドレスに解決するには、次のコマンドを実行します。

    # host client.example.com

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

第36章 NetworkManager のデバッグの概要

すべてのドメインまたは特定のドメインのログレベルを増やすと、NetworkManager が実行する操作の詳細をログに記録するのに役立ちます。管理者は、この情報を使用して問題のトラブルシューティングを行うことができます。NetworkManager は、ロギング情報を生成するさまざまなレベルとドメインを提供します。/etc/NetworkManager/NetworkManager.conf ファイルは、NetworkManager の主な設定ファイルです。ログはジャーナルに保存されます。

本セクションでは、NetworkManager のデバッグロギングを有効にし、さまざまなロギングレベルおよびドメインを使用してロギングの詳細量を設定する方法を説明します。

36.1. デバッグレベルおよびドメイン

levels および domains パラメーターを使用して、NetworkManager のデバッグを管理できます。レベルは詳細レベルを定義しますが、ドメインは特定の重大度 (level) でログを記録するメッセージのカテゴリーを定義します。

ログレベル説明

OFF

NetworkManager に関するメッセージをログに記録しません。

ERR

重大なエラーのみのログ

WARN

操作を反映できる警告をログに記録します。

INFO

状態および操作の追跡に役立つさまざまな情報メッセージをログに記録します。

DEBUG

デバッグの目的で詳細なログを有効にします。

TRACE

DEBUG レベルよりも多くの詳細ロギングを有効にします。

後続のレベルでは、以前のレベルのすべてのメッセージをログに記録することに注意してください。たとえば、ログレベルを INFO に設定すると、ERR および WARN ログレベルに含まれるメッセージをログに記録します。

関連情報

  • domains の詳細は、man ページの NetworkManager.conf(5) を参照してください。

36.2. NetworkManager ログレベルの設定

デフォルトでは、すべてのログドメインは INFO ログレベルを記録します。デバッグログを収集する前にレート制限を無効にします。帯域制限により、systemd-journald は、短時間にメッセージが多すぎる場合にメッセージを破棄します。これは、ログレベルが TRACE の場合に発生する可能性があります。

この手順では、レート制限を無効にし、すべての (ALL) ドメインのデバッグログの記録を有効にします。

手順

  1. レート制限を無効にするには、/etc/systemd/journald.conf ファイルを編集し、[Journal] セクションの RateLimitBurst パラメーターのコメントを解除し、その値を 0 に設定します。

    RateLimitBurst=0
  2. systemd-journald サービスを再起動します。

    # systemctl restart systemd-journald
  3. 以下の内容で /etc/NetworkManager/conf.d/95-nm-debug.conf ファイルを作成します。

    [logging]
    domains=ALL:DEBUG

    domains パラメーターには、複数のコンマ区切りの domain:level ペアを含めることができます。

  4. NetworkManager サービスを再読み込みします。

    # systemctl restart NetworkManager

36.3. nmcli を使用して、ランタイム時にログレベルを一時的に設定

nmcli を使用すると、ランタイム時にログレベルを変更できます。ただし、Red Hat は、設定ファイルを使用してデバッグを有効にし、NetworkManager を再起動することを推奨します。.conf ファイルを使用してデバッグの levels および domains を更新すると、ブートの問題をデバッグし、初期状態からすべてのログをキャプチャーできます。

手順

  1. 必要に応じて、現在のログ設定を表示します。

    # nmcli general logging
      LEVEL  DOMAINS
      INFO   PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,WIFI_SCAN,IP4,IP6,A
    UTOIP4,DNS,VPN,SHARING,SUPPLICANT,AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,
    WIMAX,INFINIBAND,FIREWALL,ADSL,BOND,VLAN,BRIDGE,DBUS_PROPS,TEAM,CONCHECK,DC
    B,DISPATCH
  2. ログレベルおよびドメインを変更するには、以下のオプションを使用します。

    • すべてのドメインのログレベルを同じ LEVEL に設定するには、次のコマンドを実行します。

      # nmcli general logging level LEVEL domains ALL
    • 特定のドメインのレベルを変更するには、以下を入力します。

      # nmcli general logging level LEVEL domains DOMAINS

      このコマンドを使用してログレベルを更新すると、他のすべてのドメインのログが無効になることに注意してください。

    • 特定のドメインのレベルを変更し、他のすべてのドメインのレベルを保持するには、次のコマンドを実行します。

      # nmcli general logging level KEEP domains DOMAIN:LEVEL,DOMAIN:LEVEL

36.4. NetworkManager ログの表示

トラブルシューティング用の NetworkManager ログを表示できます。

手順

  • ログを表示するには、以下を入力します。

    # journalctl -u NetworkManager -b

関連情報

  • man ページの NetworkManager.conf(5)
  • man ページの journalctl

第37章 カーネルのインストールおよび更新

カーネルは Linux オペレーティングシステムのコア部分で、システムリソースを管理し、ハードウェアアプリケーションおよびソフトウェアアプリケーション間のインターフェースを確立します。Red Hat カーネルは、アップストリームの Linux メインラインカーネルをベースにしたカスタムカーネルです。Red Hat のエンジニアは、安定性と、最新のテクノロジーおよびハードウェアとの互換性に重点を置き、さらなる開発と強化を行っています。

本セクションでは、GRUB ブートローダーでカーネルをインストールし、更新し、選択する方法を説明します。

37.1. カーネルのインストール

以下の手順では、yum パッケージマネージャーを使用して新しいカーネルをインストールする方法を説明します。

手順

  • 特定のカーネルバージョンをインストールするには、以下を使用します。

    # yum install kernel-{version}

関連情報

  • 利用可能なカーネルの一覧は、「Red Hat Code Browser」を参照してください。
  • 特定のカーネルバージョンのリリース日の一覧は、この記事を参照してください。

37.2. カーネルの更新

以下の手順では、yum パッケージマネージャーを使用してカーネルを更新する方法を説明します。

手順

  1. カーネルを更新するには、以下を実行します。

    # yum update kernel

    このコマンドは、カーネルと、利用可能な最新バージョンへのすべての依存関係を更新します。

  2. システムを再起動して、変更を有効にします。
注記

Red Hat Enterprise Linux 7 から Red Hat Enterprise Linux 8 にアップグレードする場合は、『RHEL 7 から RHEL 8 へのアップグレード』の関連セクションを参照してください。

37.3. 以前のカーネルバージョンを使用した RHEL の起動

デフォルトでは、アップデート後、システムがカーネルの最新バージョンを起動します。Red Hat Enterprise Linux では、同時に 3 つのカーネルバージョンをインストールできます。これは /etc/dnf/dnf.conf ファイルで定義されます (installonly_limit=3)。

システムが新しいカーネルで読み込まれたときに問題が発生した場合は、以前のカーネルで再起動し、実稼働マシンを復元できます。問題のトラブルシューティングは、サポートチームにお問い合わせください。

手順

  1. システムを起動します。
  2. GRUB ブートローダーにインストール済みカーネルが表示されます。 キーおよび キーを使用してカーネルを選択し、Enter を押して起動します。

第38章 DHCP サービスの提供

DHCP (Dynamic Host Configuration Protocol) は、クライアントに IP 情報を自動的に割り当てるネットワークプロトコルです。

本セクションでは、dhcpd サービスに関する一般情報と、DHCP サーバーおよび DHCP リレーの設定方法を説明します。

DHCP を提供する手順が、IPv4 および IPv6 のネットワークで異なる場合は、本章のセクションで、両方のプロトコルの手順を紹介します。

38.1. DHCPv4 および DHCPv6 で dhcpd を使用する場合の相違点

dhcpd サービスは、1 台のサーバーで DHCPv4 と DHCPv6 の両方を提供できます。ただし、各プロトコルに DHCP を提供するには、別に設定ファイルを使用する dhcpd のインスタンスがそれぞれ必要です。

DHCPv4
  • 設定ファイル -/etc/dhcp/dhcpd.conf
  • systemd サービス名 - dhcpd
DHCPv6
  • 設定ファイル - /etc/dhcp/dhcpd6.conf
  • systemd サービス名 - dhcpd6

38.2. dhcpd サービスのリースデータベース

DHCP リースは、dhcpd サービスがネットワークアドレスをクライアントに割り当てる期間です。dhcpd サービスは、DHCP リースを以下のデータベースに保存します。

  • DHCPv4 の場合 - /var/lib/dhcpd/dhcpd.leases
  • DHCPv6 の場合 - /var/lib/dhcpd/dhcpd6.leases
警告

データベースファイルを手動で更新すると、データベースが破損する可能性があります。

リースデータベースには、メディアアクセス制御 (MAC) アドレスに割り当てられた IP アドレス、リースが期限切れになる際のタイムスタンプなど、割り当てられたリースに関する情報が含まれます。リースデータベースのタイムスタンプはすべて、協定世界時 (UTC) であることに注意してください。

dhcpd サービスは、定期的にデータベースを再作成します。

  1. サービスは、既存のファイルの名前を変更します。

    • /var/lib/dhcpd/dhcpd.leases から /var/lib/dhcpd/dhcpd.leases~
    • /var/lib/dhcpd/dhcpd6.leases から /var/lib/dhcpd/dhcpd6.leases~
  2. このサービスは、新たに作成された /var/lib/dhcpd/dhcpd.leases ファイルおよび /var/lib/dhcpd/dhcpd6.leases ファイルに、既知のリースをすべて書き込みます。

関連情報

38.3. IPv6 ネットワークにおける動的な IP アドレスの割り当て

IPv6 ネットワークでは、ルーター広告メッセージのみが IPv6 デフォルトゲートウェイに関する情報を提供します。これにより、デフォルトのゲートウェイ設定を必要とするサブネットで DHCPv6 を使用する場合は、ルーター通知デーモン (radvd) などのルーター広告サービスを追加で設定する必要があります。

radvd サービスは、ルーター通知パケットのフラグを使用して、DHCPv6 サーバーの可用性をアナウンスします。

本セクションでは、DHCPv6 および radvd を比較し、radvd の設定に関する情報を提供します。

38.3.1. DHCPv6 と radvd の比較

 DHCPv6radvd

デフォルトゲートウェイに関する情報を提供する。

いいえ

はい

プライバシーを保護するために、ランダムなアドレスを保証する。

はい

いいえ

その他のネットワーク設定オプションを送信する。

はい

いいえ

メディアアクセス制御 (MAC) アドレスを IPv6 アドレスにマッピングする。

はい

いいえ

38.3.2. IPv6 ルーター用に radvd サービスの設定

ルーター広告デーモン (radvd) は、IPv6 のステートレス自動設定に必要なルーター広告メッセージを送信します。これにより、ユーザーがアドレス、設定、ルートを自動的に構成し、そこから提供された情報に基づいてデフォルトのルーターを選択できます。

本セクションの手順では、radvd の設定方法を説明します。

前提条件

  • root ユーザーとしてログインしている。

手順

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

    # yum install radvd
  2. /etc/radvd.conf ファイルを編集し、以下の設定を追加します。

    interface enp1s0
    {
      AdvSendAdvert on;
      AdvManagedFlag on;
      AdvOtherConfigFlag on;
    
      prefix 2001:db8:0:1::/64 {
      };
    };

    この設定により、2001:db8:0:1::/64 サブネット用の enp1s0 デバイスにルーター広告メッセージを送信するように radvd を設定します。AdvManagedFlag on 設定は、クライアントが、DHCP サーバーから IP アドレスを受け取る必要があることを定義し、on に設定した AdvOtherConfigFlag パラメーターは、DHCP サーバーからもアドレス以外の情報を取得する必要があることを定義します。

  3. 必要に応じて、システムの起動時に radvd が自動的に起動するように設定します。

    # systemctl enable radvd
  4. radvd サービスを起動します。

    # systemctl start radvd
  5. 必要に応じて、ルーター広告パッケージのコンテンツと、radvd が送信する設定値を表示します。

    # radvdump

関連情報

  • radvd の設定方法は、man ページの radvd.conf(5) を参照してください。
  • radvd の設定例は、/usr/share/doc/radvd/radvd.conf.example ファイルを参照してください。

38.4. DHCP サーバーのネットワークインターフェースの設定

デフォルトでは、dhcpd サービスプロセスは、サービスの設定ファイルで定義されているサブネットに IP アドレスのあるネットワークインターフェースでのみ要求します。

たとえば、以下のシナリオでは、dhcpd は、enp0s1 ネットワークインターフェースでのみリッスンします。

  • /etc/dhcp/dhcpd.conf ファイルには、192.0.2.0/24 ネットワークの subnet 定義しかない。
  • enp0s1 ネットワークインターフェースが 192.0.2.0/24 サブネットに接続されている。
  • enp7s0 インターフェースが別のサブネットに接続されます。

DHCP サーバーに同じネットワークに接続された複数のネットワークインターフェイスが含まれているにもかかわらず、サービスが特定のインターフェイスでのみリッスンする必要がある場合にのみ、本セクションの手順に従ってください。

IPv4、IPv6、またはその両方のプロトコルに DHCP を提供するかどうかに応じて、以下の手順を参照してください。

前提条件

  • root ユーザーとしてログインしている。
  • dhcp-server パッケージがインストールされている。
IPv4 ネットワークの場合
  1. /usr/lib/systemd/system/dhcpd.service ファイルを /etc/systemd/system/ ディレクトリーにコピーします。

    # cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/

    /usr/lib/systemd/system/dhcpd.service ファイルは編集しないでください。dhcp-server パッケージの今後の更新により、変更が上書きされます。

  2. /etc/systemd/system/dhcpd.service ファイルを編集し、dhcpd が、ExecStart パラメーターのコマンドでリッスンする必要があるインターフェースの名前を追加します。

    ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid $DHCPDARGS enp0s1 enp7s0

    この例では、dhcpdenp0s1 インターフェースおよび enp7s0 インターフェースでのみリッスンするように設定します。

  3. systemd マネージャー設定を再読み込みします。

    # systemctl daemon-reload
  4. dhcpd サービスを再起動します。

    # systemctl restart dhcpd.service
IPv6 ネットワークの場合
  1. /usr/lib/systemd/system/dhcpd6.service ファイルを /etc/systemd/system/ ディレクトリーにコピーします。

    # cp /usr/lib/systemd/system/dhcpd6.service /etc/systemd/system/

    /usr/lib/systemd/system/dhcpd6.service ファイルは編集しないでください。dhcp-server パッケージの今後の更新により、変更が上書きされます。

  2. /etc/systemd/system/dhcpd6.service ファイルを編集し、dhcpd は、ExecStart パラメーターのコマンドでリッスンする必要があるインターフェースの名前を追加します。

    ExecStart=/usr/sbin/dhcpd -f -6 -cf /etc/dhcp/dhcpd6.conf -user dhcpd -group dhcpd --no-pid $DHCPDARGS enp0s1 enp7s0

    この例では、dhcpdenp0s1 インターフェースおよび enp7s0 インターフェースでのみリッスンするように設定します。

  3. systemd マネージャー設定を再読み込みします。

    # systemctl daemon-reload
  4. dhcpd6 サービスを再起動します。

    # systemctl restart dhcpd6.service

38.5. DHCP サーバーに直接接続されたサブネット用の DHCP サービスの設定

DHCP サーバーが、DHCP 要求に応答するサブネットに直接接続されている場合は、以下の手順を使用します。サーバーのネットワークインターフェースに、このサブネットの IP アドレスが割り当てられている場合は、以下のようになります。

IPv4、IPv6、またはその両方のプロトコルに DHCP を提供するかどうかに応じて、以下の手順を参照してください。

前提条件

  • root ユーザーとしてログインしている。
  • dhcpd-server パッケージがインストールされている。
IPv4 ネットワークの場合
  1. /etc/dhcp/dhcpd.conf ファイルを編集します。

    1. その他のディレクティブにこの設定がない場合は、dhcpd が使用するグローバルパラメーターをデフォルトとして追加します。

      option domain-name "example.com";
      default-lease-time 86400;

      この例では、接続のデフォルトのドメイン名を example.com に設定し、デフォルトのリース時間を 86400 秒 (1 日) に設定します。

    2. authoritative ステートメントを新しい行に追加します。

      authoritative;
      重要

      authoritative ステートメントがない場合、dhcpd サービスは、クライアントがプール外にあるアドレスを要求する場合に、DHCPNAKDHCPREQUEST メッセージに応答することはありません。

    3. サーバーのインターフェースに直接接続された各 IPv4 サブネットに、subnet 宣言を追加します。

      subnet 192.0.2.0 netmask 255.255.255.0 {
        range 192.0.2.20 192.0.2.100;
        option domain-name-servers 192.0.2.1;
        option routers 192.0.2.1;
        option broadcast-address 192.0.2.255;
        max-lease-time 172800;
      }

      この例では、192.0.2.0/24 ネットワークにサブネットの宣言を追加します。この設定では、DHCP サーバーは以下の設定を、このサブネットから DHCP 要求を送信するクライアントに割り当てます。

      • range パラメーターで定義されている範囲からの空き IPv4 アドレス
      • このサブネットの DNS サーバーの IP - 192.0.2.1
      • このサブネットのデフォルトゲートウェイ - 192.0.2.1
      • このサブネットのブロードキャストアドレス - 192.0.2.255
      • このサブネットのクライアントが IP を解放し、サーバーに新しい要求を送信する最大リース時間 - 172800 秒 (2 日)
  2. 必要に応じて、システムの起動時に dhcpd が自動的に起動するように設定します。

    # systemctl enable dhcpd
  3. dhcpd サービスを開始します。

    # systemctl start dhcpd
IPv6 ネットワークの場合
  1. /etc/dhcp/dhcpd6.conf ファイルを編集します。

    1. その他のディレクティブにこの設定がない場合は、dhcpd が使用するグローバルパラメーターをデフォルトとして追加します。

      option dhcp6.domain-search "example.com";
      default-lease-time 86400;

      この例では、接続のデフォルトのドメイン名を example.com に設定し、デフォルトのリース時間を 86400 秒 (1 日) に設定します。

    2. authoritative ステートメントを新しい行に追加します。

      authoritative;
      重要

      authoritative ステートメントがない場合、dhcpd サービスは、クライアントがプール外にあるアドレスを要求する場合に、DHCPNAKDHCPREQUEST メッセージに応答することはありません。

    3. サーバーのインターフェースに直接接続された各 IPv6 サブネットに、subnet 宣言を追加します。

      subnet6 2001:db8:0:1::/64 {
        range6 2001:db8:0:1::20 2001:db8:0:1::100;
        option dhcp6.name-servers 2001:db8:0:1::1;
        max-lease-time 172800;
      }

      以下の例では、 2001:db8:0:1::/64 ネットワークにサブネット宣言を追加します。この設定では、DHCP サーバーは以下の設定を、このサブネットから DHCP 要求を送信するクライアントに割り当てます。

      • range6 パラメーターで定義されている範囲外の空き IPv6 アドレスです。
      • このサブネットの DNS サーバーの IP は 2001:db8:0:1::1 です。
      • このサブネットのクライアントが IP を解放し、サーバーに新しい要求を送信する最大リース時間は、172800 秒 (2 日) です。

        IPv6 では、デフォルトのゲートウェイを特定するために、ルーター広告メッセージを使用する必要があることに注意してください。

  2. 必要に応じて、システムの起動時に dhcpd6 が自動的に開始するように設定します。

    # systemctl enable dhcpd6
  3. dhcpd6 サービスを起動します。

    # systemctl start dhcpd6

関連情報

  • /etc/dhcp/dhcpd.conf および /etc/dhcp/dhcpd6.conf で設定したパラメーターの一覧は、man ページの dhcp-options(5) を参照してください。
  • authoritative ステートメントの詳細は、man ページの dhcpd.conf(5)The authoritative statement のセクションを参照してください。
  • 設定例は、/usr/share/doc/dhcp-server/dhcpd.conf.example ファイルおよび /usr/share/doc/dhcp-server/dhcpd6.conf.example ファイルを参照してください。
  • IPv6 ルーター広告用の radvd サービスの設定方法は、「IPv6 ルーター用に radvd サービスの設定」を参照してください。

38.6. DHCP サーバーに直接接続していないサブネット用の DHCP サービスの設定

DHCP サーバーが、DHCP 要求に応答するサブネットに直接接続していない場合は、以下の手順に従います。これは、DHCP リレーエージェントが DHCP サーバーに要求を転送する場合を指します。DHCP サーバーのインターフェイスが、サーバーが提供するサブネットに直接接続していないためです。

IPv4、IPv6、またはその両方のプロトコルに DHCP を提供するかどうかに応じて、以下の手順を参照してください。

前提条件

  • root ユーザーとしてログインしている。
  • dhcpd-server パッケージがインストールされている。
IPv4 ネットワークの場合
  1. /etc/dhcp/dhcpd.conf ファイルを編集します。

    1. その他のディレクティブにこの設定がない場合は、dhcpd が使用するグローバルパラメーターをデフォルトとして追加します。

      option domain-name "example.com";
      default-lease-time 86400;

      この例では、接続のデフォルトのドメイン名を example.com に設定し、デフォルトのリース時間を 86400 秒 (1 日) に設定します。

    2. authoritative ステートメントを新しい行に追加します。

      authoritative;
      重要

      authoritative ステートメントがない場合、dhcpd サービスは、クライアントがプール外にあるアドレスを要求する場合に、DHCPNAKDHCPREQUEST メッセージに応答することはありません。

    3. 以下のように、サーバーのインターフェースに直接接続していない IPv4 サブネットに、shared-network 宣言を追加します。

      shared-network example {
        option domain-name-servers 192.0.2.1;
        ...
      
        subnet 192.0.2.0 netmask 255.255.255.0 {
          range 192.0.2.20 192.0.2.100;
          option routers 192.0.2.1;
        }
      
        subnet 198.51.100.0 netmask 255.255.255.0 {
          range 198.51.100.20 198.51.100.100;
          option routers 198.51.100.1;
        }
        ...
      }

      この例では、192.0.2.0/24 と 198.51.100.0/24 の両方のネットワークの subnet 宣言を含む、共有ネットワーク宣言を追加します。この設定では、DHCP サーバーは以下の設定を、このサブネットのいずれかから DHCP 要求を送信するクライアントに割り当てます。

      • 両方のサブネットにおけるクライアントの DNS サーバーの IP は 192.0.2.1 です。
      • クライアントがどのサブネットから要求を送信したかに応じて、range パラメーターで定義された範囲の 空き IPv4 アドレスです。
      • デフォルトゲートウェイは、クライアントがどのサブネットから要求を送信したかに応じて、192.0.2.1 または 198.51.100.1 のいずれかになります。
    4. サーバーが直接接続し、上記の shared-network で指定したリモートのサブネットに到達するのに使用されるサブネットの subnet 宣言を追加します。

      subnet 203.0.113.0 netmask 255.255.255.0 {
      }
      注記

      サーバーがこのサブネットに DHCP サービスを提供しない場合は、以下の例のように、subnet 宣言を空にする必要があります。直接接続したサブネットの宣言がないと、dhcpd は起動しません。

  2. 必要に応じて、システムの起動時に dhcpd が自動的に起動するように設定します。

    # systemctl enable dhcpd
  3. dhcpd サービスを開始します。

    # systemctl start dhcpd
IPv6 ネットワークの場合
  1. /etc/dhcp/dhcpd6.conf ファイルを編集します。

    1. その他のディレクティブにこの設定がない場合は、dhcpd が使用するグローバルパラメーターをデフォルトとして追加します。

      option dhcp6.domain-search "example.com";
      default-lease-time 86400;

      この例では、接続のデフォルトのドメイン名を example.com に設定し、デフォルトのリース時間を 86400 秒 (1 日) に設定します。

    2. authoritative ステートメントを新しい行に追加します。

      authoritative;
      重要

      authoritative ステートメントがない場合、dhcpd サービスは、クライアントがプール外にあるアドレスを要求する場合に、DHCPNAKDHCPREQUEST メッセージに応答することはありません。

    3. 以下のように、サーバーのインターフェースに直接接続していない IPv6 サブネットに、shared-network 宣言を追加します。

      shared-network example {
        option domain-name-servers 2001:db8:0:1::1:1
        ...
      
        subnet6 2001:db8:0:1::1:0/120 {
          range6 2001:db8:0:1::1:20 2001:db8:0:1::1:100
        }
      
        subnet6 2001:db8:0:1::2:0/120 {
          range6 2001:db8:0:1::2:20 2001:db8:0:1::2:100
        }
        ...
      }

      この例では、2001:db8:0:1::1:0/120 と 2001:db8:0:1::2:0/120 の両方のネットワークの subnet6 宣言を含む共有ネットワーク宣言を追加します。この設定では、DHCP サーバーは以下の設定を、このサブネットのいずれかから DHCP 要求を送信するクライアントに割り当てます。

      • 両方のサブネットからのクライアントに対する DNS サーバーの IP は 2001:db8:0:1::1:1 です。
      • クライアントがどのサブネットから要求を送信したかに応じて、range6 パラメーターで定義された範囲の 空き IPv6 アドレスです。

        IPv6 では、デフォルトのゲートウェイを特定するために、ルーター広告メッセージを使用する必要があることに注意してください。

    4. サーバーが直接接続され、上記の shared-network で指定したリモートサブネットに到達するのに使用されるサブネットの subnet6 宣言を追加します。

      subnet6 2001:db8:0:1::50:0/120 {
      }
      注記

      サーバーがこのサブネットに DHCP サービスを提供しない場合、subnet6 宣言は以下の例のように空にする必要があります。直接接続したサブネットの宣言がないと、dhcpd は起動しません。

  2. 必要に応じて、システムの起動時に dhcpd6 が自動的に開始するように設定します。

    # systemctl enable dhcpd6
  3. dhcpd6 サービスを起動します。

    # systemctl start dhcpd6

関連情報

  • /etc/dhcp/dhcpd.conf および /etc/dhcp/dhcpd6.conf で設定したパラメーターの一覧は、man ページの dhcp-options(5) を参照してください。
  • authoritative ステートメントの詳細は、man ページの dhcpd.conf(5)The authoritative statement のセクションを参照してください。
  • 設定例は、/usr/share/doc/dhcp-server/dhcpd.conf.example ファイルおよび /usr/share/doc/dhcp-server/dhcpd6.conf.example ファイルを参照してください。
  • IPv6 ルーター広告用の radvd サービスの設定方法は、「IPv6 ルーター用に radvd サービスの設定」を参照してください。
  • 「DHCP リレーエージェントの設定」

38.7. DHCP を使用してホストに静的アドレスの割り当て

host 宣言を使用して、DHCP サーバーを設定して、ホストのメディアアクセス制御 (MAC) アドレスに固定 IP アドレスを割り当てることができます。たとえば、この方法を使用して、常に同じ IP アドレスをサーバーまたはネットワークデバイスに割り当てます。

重要

MAC アドレスの固定 IP アドレスを設定する場合、IP アドレスは、fixed-address パラメーターおよび fixed-address6 パラメーターで指定されたアドレスプールの外にある必要があります。

IPv4、IPv6、またはその両方のプロトコルに固定アドレスを設定するかどうかに応じて、以下の手順を参照してください。

前提条件

  • dhcpd サービスを設定し、実行している。
  • root ユーザーとしてログインしている。
IPv4 ネットワークの場合
  1. /etc/dhcp/dhcpd.conf ファイルを編集します。

    1. host 宣言を追加します。

      host server.example.com {
      	hardware ethernet 52:54:00:72:2f:6e;
      	fixed-address 192.0.2.130;
      }

      以下の例では、DHCP サーバーが、MAC アドレス 52:54:00:72:2f:6e を使用して、常に IP アドレス 192.0.2.130 をホストに割り当てるように設定します。

      dhcpd サービスは、fixed-address パラメーターで指定された MAC アドレスでシステムを識別しますが、host 宣言の名前とは異なります。これにより、この名前を、他の host 宣言に一致しない任意の文字列に設定できます。複数のネットワークに同じシステムを設定するには、別の名前を使用します。同じ名前を使用すると、dhcpd が起動に失敗します。

    2. 必要に応じて、このホストに固有の host 宣言にその他の設定を追加します。
  2. dhcpd サービスを再起動します。

    # systemctl start dhcpd
IPv6 ネットワークの場合
  1. /etc/dhcp/dhcpd6.conf ファイルを編集します。

    1. host 宣言を追加します。

      host server.example.com {
      	hardware ethernet 52:54:00:72:2f:6e;
      	fixed-address6 2001:db8:0:1::200;
      }

      この例では、DHCP サーバーを設定して、IP アドレス 2001:db8:0:1::20 を常に MAC アドレス 52:54:00:72:2f:6e を持つホストに割り当てます。

      dhcpd サービスは、host 宣言の名前ではなく、fixed-address6 パラメーターで指定された MAC アドレスでシステムを識別します。これにより、他の host 宣言に固有である限り、この名前を任意の文字列に設定できます。複数のネットワークに同じシステムを設定する場合は、同じ名前を使用すると dhcpd が起動に失敗するため、別の名前を使用します。

    2. 必要に応じて、このホストに固有の host 宣言にその他の設定を追加します。
  2. dhcpd6 サービスを再起動します。

    # systemctl start dhcpd6

関連情報

  • /etc/dhcp/dhcpd.conf および /etc/dhcp/dhcpd6.conf で設定したパラメーターの一覧は、man ページの dhcp-options(5) を参照してください。
  • 設定例は、/usr/share/doc/dhcp-server/dhcpd.conf.example ファイルおよび /usr/share/doc/dhcp-server/dhcpd6.conf.example ファイルを参照してください。

38.8. group 宣言を使用して、パラメーターを複数のホスト、サブネット、および共有ネットワークを同時に適用

group 宣言を使用すると、同じパラメーターを複数のホスト、サブネット、および共有ネットワークに適用できます。

本セクションの手順では、ホストの group 宣言を使用する方法を説明しますが、手順はサブネットと共有ネットワークの場合と同じです。

IPv4、IPv6、またはその両方プロトコルにグループを設定するかどうかに応じて、以下の手順を参照してください。

前提条件

  • dhcpd サービスを設定し、実行している。
  • root ユーザーとしてログインしている。
IPv4 ネットワークの場合
  1. /etc/dhcp/dhcpd.conf ファイルを編集します。

    1. group 宣言を追加します。

      group {
        option domain-name-servers 192.0.2.1;
      
        host server1.example.com {
          hardware ethernet 52:54:00:72:2f:6e;
          fixed-address 192.0.2.130;
        }
      
        host server2.example.com {
          hardware ethernet 52:54:00:1b:f3:cf;
          fixed-address 192.0.2.140;
        }
      }

      この group は、2 つの host エントリーを 1 つのグループにまとめます。dhcpd サービスは、option domain-name-servers パラメータに設定した値を、グループ内の両方のホストに適用します。

    2. 必要に応じて、このホストに固有の group 宣言にその他の設定を追加します。
  2. dhcpd サービスを再起動します。

    # systemctl start dhcpd
IPv6 ネットワークの場合
  1. /etc/dhcp/dhcpd6.conf ファイルを編集します。

    1. group 宣言を追加します。

      group {
        option dhcp6.domain-search "example.com";
      
        host server1.example.com {
          hardware ethernet 52:54:00:72:2f:6e;
          fixed-address 2001:db8:0:1::200;
        }
      
        host server2.example.com {
          hardware ethernet 52:54:00:1b:f3:cf;
          fixed-address 2001:db8:0:1::ba3;
        }
      }

      この group は、2 つの host エントリーを 1 つのグループにまとめます。dhcpd サービスは、option dhcp6.domain-search パラメーターに設定された値をグループ内の両方のホストに適用します。

    2. 必要に応じて、このホストに固有の group 宣言にその他の設定を追加します。
  2. dhcpd6 サービスを再起動します。

    # systemctl start dhcpd6

関連情報

  • /etc/dhcp/dhcpd.conf および /etc/dhcp/dhcpd6.conf で設定したパラメーターの一覧は、man ページの dhcp-options(5) を参照してください。
  • 設定例は、/usr/share/doc/dhcp-server/dhcpd.conf.example ファイルおよび /usr/share/doc/dhcp-server/dhcpd6.conf.example ファイルを参照してください。

38.9. 破損したリースデータベースの復元

DHCP サーバーが、リースデータベースに関連するエラー (Corrupt lease file - possible data loss! など) をログに記録すると、dhcpd サービスが作成するコピーからリースデータベースを復元できます。このコピーには、データベースの最新のステータスが反映されない場合があることに注意してください。

警告

リースデータベースをバックアップに置き換えるのではなく削除すると、現在割り当てられているリースに関する情報がすべて失われます。その結果、DHCP サーバーは、他のホストに割り当てられていて、まだ期限が切れていないクライアントにリースを割り当てることができます。これにより IP の競合が発生します。

DHCPv4、DHCPv6、またはその両方のデータベースを復元するかどうかに応じて、以下の手順を参照してください。

前提条件

  • root ユーザーとしてログインしている。
  • リースデータベースが破損している。
DHCPv4 リースデータベースの復元
  1. dhcpd サービスを停止します。

    # systemctl stop dhcpd
  2. 破損したリースデータベースの名前を変更します。

    # mv /var/lib/dhcpd/dhcpd.leases /var/lib/dhcpd/dhcpd.leases.corrupt
  3. リースデータベースを更新する際に作成される dhcp サービスのリースデータベースのコピーを復元します。

    # cp -p /var/lib/dhcpd/dhcpd.leases~ /var/lib/dhcpd/dhcpd.leases
    重要

    リースデータベースの最新のバックアップがある場合には、代わりにこのバックアップを復元します。

  4. dhcpd サービスを開始します。

    # systemctl start dhcpd
DHCPv6 リースデータベースの復元
  1. dhcpd6 サービスを停止します。

    # systemctl stop dhcpd6
  2. 破損したリースデータベースの名前を変更します。

    # mv /var/lib/dhcpd/dhcpd6.leases /var/lib/dhcpd/dhcpd6.leases.corrupt
  3. リースデータベースを更新する際に作成される dhcp サービスのリースデータベースのコピーを復元します。

    # cp -p /var/lib/dhcpd/dhcpd6.leases~ /var/lib/dhcpd/dhcpd6.leases
    重要

    リースデータベースの最新のバックアップがある場合には、代わりにこのバックアップを復元します。

  4. dhcpd6 サービスを起動します。

    # systemctl start dhcpd6

38.10. DHCP リレーエージェントの設定

DHCP リレーエージェント (dhcrelay) は、DHCP サーバーを使用しないサブネットから、他のサブネットにある 1 台以上の DHCP サーバーで、DHCP 要求および BOOTP 要求のリレーを有効にします。DHCP クライアントが情報を要求すると、DHCP リレーエージェントは、指定した DHCP サーバーの一覧に要求を転送します。DHCP サーバーが応答を返すと、DHCP リレーエージェントはこの要求をクライアントに転送します。

IPv4、IPv6、またはその両方のプロトコルに DHCP リレーを設定するかどうかに応じて、以下の手順を参照してください。

前提条件

  • root ユーザーとしてログインしている。
IPv4 ネットワークの場合
  1. dhcp-relay パッケージをインストールします。

    # yum install dhcp-relay
  2. /lib/systemd/system/dhcrelay.service ファイルを /etc/systemd/system/ ディレクトリーにコピーします。

    # cp /lib/systemd/system/dhcrelay.service /etc/systemd/system/

    /usr/lib/systemd/system/dhcrelay.service ファイルは編集しないでください。dhcp-relay パッケージの今後の更新により、変更がオーバーライドされます。

  3. /etc/systemd/system/dhcrelay.service ファイルを編集し、-i interface パラメーターと、サブネットに対応する DHCPv4 サーバーの IP アドレス一覧を追加します。

    ExecStart=/usr/sbin/dhcrelay -d --no-pid -i enp1s0 192.0.2.1

    dhcrelay は、この追加パラメーターを使用して、enp1s0 インターフェースの DHCPv4 要求をリッスンし、IP 192.0.2.1で DHCP サーバーに転送します。

  4. systemd マネージャー設定を再読み込みします。

    # systemctl daemon-reload
  5. 必要に応じて、システムの起動時に dhcrelay サービスが開始するように設定します。

    # systemctl enable dhcrelay.service
  6. dhcrelay サービスを開始します。

    # systemctl start dhcrelay.service
IPv6 ネットワークの場合
  1. dhcp-relay パッケージをインストールします。

    # yum install dhcp-relay
  2. /lib/systemd/system/dhcrelay.service ファイルを /etc/systemd/system/ ディレクトリーにコピーして、dhcrelay6.service ファイルに名前を付けます。

    # cp /lib/systemd/system/dhcrelay.service /etc/systemd/system/dhcrelay6.service

    /usr/lib/systemd/system/dhcrelay.service ファイルは編集しないでください。dhcp-relay パッケージの今後の更新により、変更がオーバーライドされます。

  3. /etc/systemd/system/dhcrelay6.service ファイルを編集し、-l receiving_interface パラメーターおよび -u outgoing_interface パラメーターを追加します。

    ExecStart=/usr/sbin/dhcrelay -d --no-pid -l enp1s0 -u enp7s0

    これらの追加パラメーターを使用すると、dhcrelayenp1s0 インターフェースの DHCPv6 要求をリッスンし、enp7s0 インターフェースに接続されたネットワークに転送します。

  4. systemd マネージャー設定を再読み込みします。

    # systemctl daemon-reload
  5. 必要に応じて、システムの起動時に dhcrelay6 サービスが開始するように設定します。

    # systemctl enable dhcrelay6.service
  6. dhcrelay6 サービスを開始します。

    # systemctl start dhcrelay6.service

関連情報

  • dhcrelay の詳細は、man ページの dhcrelay(8) を参照してください。

第39章 firewalld の使用および設定

ファイアウォール は、外部からの不要なトラフィックからマシンを保護する方法です。ファイアウォールルール セットを定義することで、ホストマシンへの着信ネットワークトラフィックを制御できます。このようなルールは、着信トラフィックを分類して、拒否または許可するために使用されます。

nftables バックエンドを使用した firewalld が、--direct オプションを使用して、カスタムの nftables ルールを firewalld に渡すことに対応していないことに注意してください。

39.1. firewalld、nftables、または iptables を使用する場合

以下は、次のユーティリティーのいずれかを使用する必要があるシナリオの概要です。

  • firewalld - firewalld ユーティリティーを使用して、ワークステーションにファイアウォールを設定します。このユーティリティーは使いやすく、このシナリオの一般的な使用例に対応しています。
  • nftables - nftables ユーティリティーを使用して、ネットワーク全体など、複雑なファイアウォールを設定します。
  • iptables - iptables ユーティリティーは、Red Hat Enterprise Linux 8 では非推奨になりました。代わりに nftables を使用します。
重要

異なるファイアウォールサービスが相互に影響することを回避するには、RHEL ホストでそのうちの 1 つだけを実行し、他のサービスを無効にします。

39.2. firewalld の使用

39.2.1. firewalld

firewalld は、D-Bus インターフェースを使用して、動的にカスタマイズできるホストベースのファイアウォールを提供するファイアウォールサービスデーモンです。ルールが変更するたびに、ファイアウォールデーモンを再起動しなくても、ルールの作成、変更、および削除を動的に可能にします。

firewalld は、ゾーン および サービス の概念を使用して、トラフィック管理を簡素化します。ゾーンは、事前定義したルールセットです。ネットワークインターフェースおよびソースをゾーンに割り当てることができます。許可されているトラフィックは、コンピューターが接続するネットワークと、このネットワークが割り当てられているセキュリティーレベルに従います。ファイアウォールサービスは、特定のサービスに着信トラフィックを許可するのに必要なすべての設定を扱う事前定義のルールで、ゾーンに適用されます。

サービスは、ネットワーク接続に 1 つ以上の ポート または アドレス を使用します。ファイアウォールは、ポートに基づいて接続のフィルターを設定します。サービスに対してネットワークトラフィックを許可するには、そのポートを 開く 必要があります。firewalld は、明示的に開いていないポートのトラフィックをすべてブロックします。trusted などのゾーンでは、デフォルトですべてのトラフィックを許可します。

関連情報

  • man ページの firewalld(1)

39.2.2. ゾーン

firewalld は、インターフェースに追加する信頼レベルと、そのネットワークのトラフィックに従って、複数のネットワークを複数のゾーンに分類できます。接続は、1 つのゾーンにしか指定できませんが、ゾーンは多くのネットワーク接続に使用できます。

NetworkManager は、firewalld にインターフェースのゾーンを通知します。以下を使用して、ゾーンをインターフェースに割り当てることができます。

  • NetworkManager
  • firewall-config ツール
  • firewall-cmd コマンドラインツール
  • RHEL Web コンソール

後者の 3 つは、適切な NetworkManager 設定ファイルの編集のみを行います。Web コンソールを使用してインターフェースのゾーンを変更する (firewall-cmd または firewall-config) と、リクエストが NetworkManager に転送され、⁠firewalld では処理されません。

事前定義したゾーンは /usr/lib/firewalld/zones/ ディレクトリーに保存され、利用可能なネットワークインターフェースに即座に適用されます。このファイルは、修正しないと /etc/firewalld/zones/ ディレクトリーにコピーされません。事前定義したゾーンのデフォルト設定は以下のようになります。

block
IPv4 の場合は icmp-host-prohibited メッセージ、IPv6 の場合は icmp6-adm-prohibited メッセージで、すべての着信ネットワーク接続が拒否されます。システムで開始したネットワーク接続のみが可能です。
dmz
公開アクセスは可能ですが、内部ネットワークへのアクセスに制限がある非武装地帯にあるコンピューター向けです。選択した着信接続のみが許可されます。
drop
着信ネットワークパケットは、通知なしで遮断されます。発信ネットワーク接続だけが可能です。
external
マスカレードをルーター用に特別に有効にした外部ネットワークでの使用向けです。自分のコンピューターを保護するため、ネットワーク上の他のコンピューターを信頼しません。選択した着信接続のみが許可されます。
home
そのネットワークでその他のコンピューターをほぼ信頼できる自宅での使用向けです。選択した着信接続のみが許可されます。
internal
そのネットワークでその他のコンピューターをほぼ信頼できる内部ネットワーク向けです。選択した着信接続のみが許可されます。
public
そのネットワークでその他のコンピューターを信頼できないパブリックエリア向けです。選択した着信接続のみが許可されます。
trusted
すべてのネットワーク接続が許可されます。
work
そのネットワークで、その他のコンピューターをほぼ信頼できる職場での使用向けです。選択した着信接続のみが許可されます。

このゾーンのいずれかを デフォルト ゾーンに設定できます。インターフェース接続を NetworkManager に追加すると、デフォルトゾーンに割り当てられます。firewalld のデフォルトゾーンは、インストール時に public ゾーンに設定されます。デフォルトゾーンは変更できます。

注記

ネットワークゾーン名は、分かりやすく、ユーザーが妥当な決定をすばやく下せるような名前が付けられています。セキュリティー問題を回避するために、ニーズおよびリスク評価に合わせて、デフォルトゾーンの設定の見直しを行ったり、不要なサービスを無効にしてください。

関連情報

  • man ページの firewalld.zone(5)

39.2.3. 事前定義サービス

サービスが、ローカルポート、プロトコル、ソースポート、宛先、そしてサービスが有効になると自動的に読み込まれるファイアウォールのヘルパーモジュールの一覧を指す場合があります。サービスを使用すると、ポートのオープン、プロトコルの定義、パケット転送の有効化などを 1 つ 1 つ行うのではなく、1 回のステップで定義できます。

サービス設定オプションと、一般的なファイル情報は、man ページの firewalld.service(5) で説明されています。サービスは、個々の XML 設定ファイルを使用して指定し、名前は、service-name.xml のような形式になります。プロトコル名は、firewalld のサービス名またはアプリケーション名よりも優先されます。

サービスは、グラフィカルな firewall-config ツールと、firewall-cmd および firewall-offline-cmd を使用して追加または削除できます。

または、/etc/firewalld/services/ ディレクトリーの XML ファイルを変更できます。ユーザーがサービスを追加または変更しないと、/etc/firewalld/services/ には、対応する XML ファイルが記載されません。/usr/lib/firewalld/services/ ディレクトリーのファイルは、サービスを追加または変更する場合にテンプレートとして使用できます。

関連情報

  • man ページの firewalld.service(5)

39.3. firewall-config GUI 設定ツールのインストール

firewall-config GUI 設定ツールを使用するには、firewall-config パッケージをインストールします。

手順

  1. root で次のコマンドを実行します。

    # yum install firewall-config

    また、GNOME で、Super キーを使用して Software と入力し、Software Sources アプリケーションを起動します。右上端で検索ボタンを選択すると表示される検索ボックスに firewall と入力します。検索結果から Firewall アイテムを選択し、Install ボタンをクリックします。

  2. firewall-config を実行するために、firewall-config コマンドを実行するか、Super キーを押して アクティビティーの概要 を開き、firewall と入力して Enter を押します。

39.4. firewalld の現在の状況および設定の表示

39.4.1. firewalld の現在の状況の表示

ファイアウォールサービス firewalld は、システムにデフォルトでインストールされています。CLI インターフェース firewalld を使用して、サービスが実行していることを確認します。

手順

  1. サービスの状況を表示するには、次のコマンドを実行します。

    # firewall-cmd --state
  2. サービスの状況の詳細は、systemctl status サブコマンドを実行します。

    # systemctl status firewalld
    firewalld.service - firewalld - dynamic firewall daemon
       Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor pr
       Active: active (running) since Mon 2017-12-18 16:05:15 CET; 50min ago
         Docs: man:firewalld(1)
     Main PID: 705 (firewalld)
        Tasks: 2 (limit: 4915)
       CGroup: /system.slice/firewalld.service
               └─705 /usr/bin/python3 -Es /usr/sbin/firewalld --nofork --nopid

関連情報

設定を編集する前に、firewalld の設定方法と、強制するルールを確認することが重要です。ファイアウォール設定を表示する場合は、「現在の firewalld 設定の表示」を参照してください。

39.4.2. 現在の firewalld 設定の表示

39.4.2.1. GUI を使用して許可されるサービスの表示

グラフィカルの firewall-config ツールを使用してサービスの一覧を表示する場合は、Super キーを押してアクティビティーの概要を開き、firewall と入力して Enter を押します。firewall-config ツールが表示されます。Services タブの下にサービスの一覧が表示されます。

もしくは、コマンドラインを使用してグラフィカルなファイアウォール設定ツールを起動する場合は、次のコマンドを入力します。

$ firewall-config

Firewall Configuration ウィンドウが開きます。このコマンドは通常のユーザーとして実行できますが、監理者パスワードが求められる場合もあります。

39.4.2.2. CLI を使用した firewalld 設定の表示

CLI クライアントで、現在のファイアウォール設定を、複数の方法で表示できます。--list-all オプションは、firewalld 設定の完全概要を表示します。

firewalld は、ゾーンを使用してトラフィックを管理します。--zone オプションでゾーンを指定しないと、コマンドは、アクティブネットワークインターフェースおよび接続に割り当てたデフォルトゾーンに対して有効になります。

デフォルトゾーンに関連する情報をすべて表示するには、次のコマンドを実行します。

# firewall-cmd --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh dhcpv6-client
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

設定を表示するゾーンを指定するには、たとえば、--zone=zone-name 引数を firewall-cmd --list-all コマンドに指定します。

# firewall-cmd --list-all --zone=home
home
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh mdns samba-client dhcpv6-client
... [trimmed for clarity]

サービス、ポートなど、特定情報の設定を確認するには、特定のオプションを使用します。man ページの firewalld か、コマンドの help でオプションの一覧を表示します。

# firewall-cmd --help

Usage: firewall-cmd [OPTIONS...]

General Options
  -h, --help           Prints a short help text and exists
  -V, --version        Print the version string of firewalld
  -q, --quiet          Do not print status messages

Status Options
  --state              Return and print firewalld state
  --reload             Reload firewall and keep state information
... [trimmed for clarity]

たとえば、現在のゾーンで許可されているサービスを表示します。

# firewall-cmd --list-services
ssh dhcpv6-client
注記

CLI ツールを使用して一覧表示した特定のサブパートの設定は、解釈が難しいことがしばしばあります。たとえば、firewalldSSH サービスを許可し、そのサービスに必要なポート (22) を開くことができます。許可されたサービスを一覧表示すると、一覧には SSH サービスが表示されますが、開いているポートを一覧表示しても、何も表示されません。したがって、--list-all オプションを使用して、完全な情報を取得することが推奨されます。

39.5. firewalld の起動

手順

  1. firewalld を開始するには、root で次のコマンドを実行します。

    # systemctl unmask firewalld
    # systemctl start firewalld
  2. システムの起動時に firewalld を自動的に起動するように設定するには、root で次のコマンドを実行します。

    # systemctl enable firewalld

39.6. firewalld の停止

手順

  1. firewalld を停止するには、root で次のコマンドを実行します。

    # systemctl stop firewalld
  2. システムの起動時に firewalld を自動的に起動しないように設定するには、次のコマンドを実行します。

    # systemctl disable firewalld
  3. firewalld D-Bus インターフェースにアクセスして firewalld を起動していないこと、そしてその他のサービスが firewalld を求めているかどうかを確認するには、次のコマンドを実行します。

    # systemctl mask firewalld

39.7. ランタイムおよび永続化の設定

runtime モードで行った変更は、firewalld が実行している間しか適用されません。firewalld を再起動すると、設定内容は 永続的 な値に戻ります。

変更した内容を再起動後も持続させる場合は、--permanent オプションを使用して適用します。firewalld が実行している間だけ変更を持続させる場合は、--runtime-to-permanent firewall-cmd オプションを使用します。

--permanent オプションのみを使用して firewalld を実行している場合にルールを設定すると、firewalld が再起動するまで有効にはなりません。ただし、firewalld を再起動すると、開いているポートがすべて閉じ、ネットワーキングトラフィックを停止します。

CLI を使用したランタイムおよび永続化の設定の変更

CLI では、2 つのモードのファイアウォール設定を同時に修正することができません。CLI では、ランタイムまたは永続モードを修正します。永続化モードでファイアウォール設定を修正するには、firewall-cmd コマンドで --permanent オプションを使用します。

# firewall-cmd --permanent <other options>

このオプションを使用しないと、コマンドはランタイムモードを変更します。

両方のモードで設定を変更する場合は、2 つの方法を使用できます。

  1. 以下のように、ランタイム設定を変更して、永続化します。

    # firewall-cmd <other options>
    # firewall-cmd --runtime-to-permanent
  2. 永続的な設定を行い、ランタイムモードで設定を再ロードします。

    # firewall-cmd --permanent <other options>
    # firewall-cmd --reload

最初の方法では、永続モードで設定を適用する前に、設定をテストできます。

注記

特にリモートシステムでは、設定を間違えると、ユーザーが自身をロックする結果となります。そのような状況を回避するには、--timeout オプションを使用します。指定した時間が経つと、変更は元に戻ります。このオプションを使用した場合は、--permanent オプションが無効になります。

たとえば、15 分間 SSH サービスを追加するには、次のコマンドを実行します。

# firewall-cmd --add-service=ssh --timeout 15m

39.8. 永続的な firewalld 設定の確認

firewalld 設定ファイルを手動で編集した後など、特定の状況では、変更が正しいことを管理者が確認します。本セクションでは、firewalld サービスの永続的な設定を確認する方法を説明します。

前提条件

  • firewalld サービスが実行している。

手順

  1. firewalld サービスの永続的な設定を確認します。

    # firewall-cmd --check-config
    success

    永続的な設定が有効になると、コマンドが success を返します。その他の場合は、以下のような詳細で、コマンドがエラーを返します。

    # firewall-cmd --check-config
    Error: INVALID_PROTOCOL: 'public.xml': 'tcpx' not from {'tcp'|'udp'|'sctp'|'dccp'}

39.9. firewalld でネットワークトラフィックの制御

39.9.1. 緊急時に CLI を使用してすべてのトラフィックの無効化

システムへの攻撃などの緊急な状態にあるとき、すべてのネットワークトラフィックを無効にし、攻撃を遮断できます。

手順

  1. ネットワークトラフィックを直ちに無効にするには、パニックモードをオンにします。

    # firewall-cmd --panic-on
重要

パニックモードを有効にすると、ネットワークトラフィックがすべて停止します。したがって、そのマシンへの物理アクセスがある場合、またはシリアルコンソールを使用してログインする場合に限り使用してください。

パニックモードをオフにし、ファイアウォールを永続設定に戻します。パニックモードを無効にするには、次のコマンドを実行します。

# firewall-cmd --panic-off

パニックモードを有効または無効にするには、次のコマンドを実行します。

# firewall-cmd --query-panic

39.9.2. CLI を使用して事前定義されたサービスでトラフィックの制御

トラフィックを制御する最も簡単な方法は、事前定義したサービスを firewalld に追加する方法です。これにより、必要なすべてのポートが開き、service definition file に従ってその他の設定が変更されます。

手順

  1. サービスが許可されていないことを確認します。

    # firewall-cmd --list-services
    ssh dhcpv6-client
  2. 事前定義したサービスの一覧を表示します。

    # firewall-cmd --get-services
    RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry ...
    [trimmed for clarity]
  3. サービスを、許可されたサービスに追加します。

    # firewall-cmd --add-service=<service-name>
  4. 新しい設定を永続化します。

    # firewall-cmd --runtime-to-permanent

39.9.3. GUI を使用して事前定義サービスでトラフィックを制御

事前定義したサービスまたはカスタマイズしたサービスを有効または無効にするには、以下を行います。

  1. firewall-config ツールを起動して、サービスを設定するネットワークゾーンを選択します。
  2. Services タブを選択します。
  3. 信頼するサービスタイプのチェックボックスを選択してください。ブロックするサービスタイプのチェックボックスの選択は解除してください。

サービスを編集するには、以下を行います。

  1. firewall-config ツールを起動します。
  2. Configuration メニューから Permanent を選択します。Services ウィンドウの下部に、その他のアイコンおよびメニューボタンが表示されます。
  3. 設定するサービスを選択します。

PortsProtocolsSource Port のタブでは、選択したサービスのポート、プロトコル、およびソースポートの追加、変更、ならびに削除が可能です。モジュールタブは、Netfilter ヘルパーモジュールの設定を行います。Destination タブは、特定の送信先アドレスとインターネットプロトコル (IPv4 または IPv6) へのトラフィックが制限できます。

注記

ランタイム モードでは、サービス設定を変更できません。

39.9.4. 新しいサービスの追加

サービスは、グラフィカルな firewall-config ツールと、firewall-cmd および firewall-offline-cmd を使用して追加または削除できます。または、/etc/firewalld/services/ にある XML ファイルを編集できます。ユーザーがサービスを追加または変更しないと、対応する XML ファイルが /etc/firewalld/services/ に作成されません。/usr/lib/firewalld/services/ のファイルは、サービスを追加または変更する際にテンプレートとして使用できます。

注記

サービス名は英数字にする必要があります。_ (下線) 文字および - (ハイフン) 文字も使用できます。

手順

firewalld がアクティブでない場合に、ターミナルで新しいサービスを追加するには、firewall-cmd または firewall-offline-cmd を使用します。

  1. 新しい、空のサービスを追加するには、次のコマンドを実行します。

    $ firewall-cmd --new-service=service-name --permanent
  2. ローカルファイルを使用して新規サービスを追加するには、次のコマンドを使用します。

    $ firewall-cmd --new-service-from-file=service-name.xml --permanent

    追加オプション --name=service-name を指定して、サービス名を変更できます。

  3. サービス設定を変更すると、直ちにサービスの更新コピーが /etc/firewalld/services/ に作成できます。

    root で次のコマンドを実行して、サービスを手動でコピーします。

    # cp /usr/lib/firewalld/services/service-name.xml /etc/firewalld/services/service-name.xml

firewalld は、最初に /usr/lib/firewalld/services のファイルを読み込みます。ファイルは /etc/firewalld/services に置かれ、そのファイルが有効な場合は、/usr/lib/firewalld/services で一致するファイルを上書きします。/usr/lib/firewalld/services で上書きしたファイルは、/etc/firewalld/services で一致するファイルが削除されるとすぐに、もしくはサービスのデフォルトを読み込むように firewalld が求められた場合に使用されます。これに該当するのは永続環境のみです。ランタイム環境でフォールバックさせるには、再読み込みが必要です。

39.9.5. CLI を使用したポートの制御

ポートは、オペレーティングシステムが、ネットワークトラフィックを受信し、区別し、システムサービスに従って転送する論理デバイスです。これは、通常、ポートをリッスンするデーモンにより示されますが、このポートに入るトラフィックを待ちます。

通常、システムサービスは、サービスに予約されている標準ポートでリッスンします。httpd デーモンは、たとえば、ポート 80 をリッスンします。ただし、デフォルトでは、システム管理者は、セキュリティーを強化するため、またはその他の理由により、別のポートをリッスンするようにデーモンを設定します。

39.9.5.1. ポートを開く

開かれたポートを介して、システムが外部からアクセスできます。これはセキュリティーリスクでもあります。一般的に、ポートを閉じたままにし、特定サービスに要求される場合に限り開きます。

手順

現在のゾーンで開かれたポートの一覧を表示するには、以下を行います。

  1. 許可されているポートの一覧を表示します。

    # firewall-cmd --list-ports
  2. 許可されているポートにポートを追加して、着信トラフィックに対してそのポートを開きます。

    # firewall-cmd --add-port=port-number/port-type
  3. 新しい設定を永続化します。

    # firewall-cmd --runtime-to-permanent

ポートタイプは、tcpudpsctp、または dccp になります。このタイプは、ネットワーク接続の種類と一致させる必要があります。

39.9.5.2. ポートを閉じる

開しているポートが必要なくなった場合に、firewalld のポートを閉じます。ポートをそのままにするとセキュリティーリスクとなるため、使用されなくなったらすぐに不要なポートを閉じることが強く推奨されます。

手順

ポートを閉じるには、許可されているポートの一覧からそれを削除します。

  1. 許可されているポートの一覧を表示します。

    # firewall-cmd --list-ports
    [WARNING]
    ====
    This command will only give you a list of ports that have been opened as ports. You will not be able to see any open ports that have been opened as a service. Therefore, you should consider using the --list-all option instead of --list-ports.
    ====
  2. 「許可されているポート」からポートを削除し、着信トラフィックに対して閉じます。

    # firewall-cmd --remove-port=port-number/port-type
  3. 新しい設定を永続化します。

    # firewall-cmd --runtime-to-permanent

39.9.6. GUI を使用してポートを開く

ファイアウォールを経由して特定のポートに向かうトラフィックを許可するには、以下を行います。

  1. firewall-config ツールを起動して、設定を変更するネットワークゾーンを選択します。
  2. 右側の Ports タブを選択し、Add ボタンをクリックします。Port and Protocol ウィンドウが開きます。
  3. 許可するポート番号またはポートの範囲を入力します。
  4. リストから tcp または udp を選択します。

39.9.7. GUI を使用してプロトコルを使用したトラフィックの制御

特定のプロトコルを使用してファイアウォールを経由したトラフィックを許可するには、以下を行います。

  1. firewall-config ツールを起動して、設定を変更するネットワークゾーンを選択します。
  2. 右側で Protocols タブを選択し、Add ボタンをクリックします。Protocol ウィンドウが開きます。
  3. リストからプロトコルを選択するか、Other Protocol チェックボックスを選択し、そのフィールドにプロトコルを入力します。

39.9.8. GUI を使用してソースポートを開く

特定ポートからファイアウォールを経由したトラフィックを許可するには、以下を行います。

  1. firewall-config ツールを起動し、設定を変更するネットワークゾーンを選択します。
  2. 右側の Source Port タブを選択し、Add ボタンをクリックします。Source Port ウィンドウが開きます。
  3. 許可するポート番号またはポートの範囲を入力します。リストから tcp または udp を選択します。

39.10. ファイアウォールゾーンでの作業

ゾーンは、着信トラフィックをより透過的に管理する概念を表しています。ゾーンはネットワークインターフェースに接続されているか、ソースアドレスの範囲に割り当てられます。各ゾーンは個別にファイアウォールルールを管理しますが、これにより、複雑なファイアウォール設定を定義してトラフィックに割り当てることができます。

39.10.1. ゾーンの一覧

手順

  1. システムで利用可能なゾーンを確認するには、次のコマンドを実行します。

    # firewall-cmd --get-zones

    firewall-cmd --get-zones コマンドは、システムで利用可能な全てのゾーンを表示し、特定ゾーンの詳細は表示しません。

  2. すべてのゾーンで詳細情報を表示する場合は、次のコマンドを実行します。

    # firewall-cmd --list-all-zones
  3. 特定ゾーンに関する詳細情報を表示する場合は、次のコマンドを実行します。

    # firewall-cmd --zone=zone-name --list-all

39.10.2. 特定ゾーンに対する firewalld 設定の修正

「CLI を使用して事前定義されたサービスでトラフィックの制御」および「CLI を使用したポートの制御」は、現在作業中のゾーンの範囲にサービスを追加するか、またはゾーンの範囲にあるポートを修正する方法を説明します。別のゾーンへのルールの設定が必要になる場合もあります。

手順

  1. 別のゾーンに指定するには、--zone=zone-name オプションを使用します。たとえば、public ゾーンで SSH サービスを許可するには、次のコマンドを実行します。
# firewall-cmd --add-service=ssh --zone=public

39.10.3. デフォルトゾーンの変更

システム管理者は、設定ファイルのネットワークインターフェースにゾーンを割り当てます。特定のゾーンに割り当てられないインターフェースは、デフォルトゾーンに割り当てられます。firewalld サービスを再起動するたびに、firewalld は、デフォルトゾーンの設定を読み込み、それをアクティブにします。

手順

デフォルトゾーンを設定するには、以下を行います。

  1. 現在のデフォルトゾーンを表示します。

    # firewall-cmd --get-default-zone
  2. 新しいデフォルトゾーンを設定します。

    # firewall-cmd --set-default-zone zone-name
    注記

    この手順では、--permanent オプションを使用しなくても、設定は永続化します。

39.10.4. ゾーンへのネットワークインターフェースの割り当て

複数のゾーンに複数のルールセットを定義して、使用されているインターフェースのゾーンを変更することで、迅速に設定を変更できます。各インターフェイスに特定のゾーンを設定して、そのゾーンを通過するトラフィックを設定できます。

手順

特定インターフェースにゾーンを割り当てるには、以下を行います。

  1. アクティブゾーン、およびそのゾーンに割り当てられているインターフェースを一覧表示します。

    # firewall-cmd --get-active-zones
  2. 別のゾーンにインターフェースを割り当てます。

    # firewall-cmd --zone=zone_name --change-interface=interface_name --permanent

39.10.5. nmcliを使用して接続にゾーンを割り当て

この手順では、nmcli ユーティリティーを使用して、ファイアウォールゾーンを NetworkManager 接続に追加する方法を説明します。

手順

  1. ゾーンを NetworkManager 接続プロファイルに割り当てます。

    # nmcli connection profile modify connection.zone zone_name
  2. 接続の再読み込みを行います。

    # nmcli connection up profile

39.10.6. ifcfg ファイルでゾーンをネットワーク接続に手動で割り当て

NetworkManager で接続を管理する場合は、NetworkManager が使用するゾーンを認識する必要があります。すべてのネットワーク接続にゾーンを指定できます。これにより、ポータブルデバイスを使用したコンピューターの場所に従って、様々なファイアウォールを柔軟に設定できるようになります。したがって、ゾーンおよび設定には、会社または自宅など、様々な場所を指定できます。

手順

  1. 接続のゾーンを設定するには、/etc/sysconfig/network-scripts/ifcfg-connection_name ファイルを変更して、この接続にゾーンを割り当てる行を追加します。

    ZONE=zone_name

39.10.7. 新しいゾーンの作成

カスタムゾーンを使用するには、新しいゾーンを作成したり、事前定義したゾーンなどを使用したりします。新しいゾーンには --permanent オプションが必要となり、このオプションがなければコマンドは動作しません。

手順

新しいゾーンを作成するには、以下を行います。

  1. 新しいゾーンを作成します。

    # firewall-cmd --new-zone=zone-name
  2. 作成したゾーンが永続設定に追加されたかどうかを確認します。

    # firewall-cmd --get-zones
  3. 新しい設定を永続化します。

    # firewall-cmd --runtime-to-permanent

39.10.8. ゾーンの設定ファイル

また、ゾーンの設定ファイル を使用してゾーンを作成できます。このアプローチは、新しいゾーンを作成する必要がある場合に、別のゾーンの設定を変更して利用する場合に便利です。

firewalld ゾーン設定ファイルには、ゾーンに対する情報があります。これは、XML ファイル形式で、ゾーンの説明、サービス、ポート、プロトコル、icmp-block、マスカレード、転送ポート、およびリッチ言語ルールです。ファイル名は zone-name.xml となります。zone-name の長さは 17 文字に制限されます。ゾーンの設定ファイルは、/usr/lib/firewalld/zones/ ディレクトリーおよび /etc/firewalld/zones/ ディレクトリーに置かれています。

以下の例は、TCP プロトコルまたは UDP プロトコルの両方に、1 つのサービス (SSH) および 1 つのポート範囲を許可する設定を示します。

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>My zone</short>
  <description>Here you can describe the characteristic features of the zone.</description>
  <service name="ssh"/>
  <port port="1025-65535" protocol="tcp"/>
  <port port="1025-65535" protocol="udp"/>
</zone>

そのゾーンの設定を変更するには、セクションを追加または削除して、ポート、転送ポート、サービスなどを追加します。

関連情報

  • 詳細は、man ページの firewalld.zone を参照してください。

39.10.9. 着信トラフィックにデフォルトの動作を設定するゾーンターゲットの使用

すべてのゾーンに対して、特に指定されていない着信トラフィックを処理するデフォルト動作を設定できます。そのような動作は、ゾーンのターゲットを設定することで定義されます。オプションは、defaultACCEPTREJECT、および DROP の 4 つになります。ターゲットを ACCEPT に設定すると、特定ルールで無効にした着信パケット以外のパケットをすべて許可します。REJECT または DROP にターゲットを設定すると、特定のルールで許可したパケット以外の着信パケットがすべて無効になります。パケットが拒否されるとソースマシンに通知されますが、パケットが破棄される時は情報が送信されません。

手順

ゾーンにターゲットを設定するには、以下を行います。

  1. 特定ゾーンに対する情報を一覧表示して、デフォルトゾーンを確認します。

    $ firewall-cmd --zone=zone-name --list-all
  2. ゾーンに新しいターゲットを設定します。

    # firewall-cmd --zone=zone-name --set-target=<default|ACCEPT|REJECT|DROP>

39.11. ゾーンを使用し、ソースに応じた着信トラフィックの管理

39.11.1. ゾーンを使用し、ソースに応じた着信トラフィックの管理

ゾーンを使用して、そのソースに基づいて着信トラフィックを管理するゾーンを使用できます。これにより、着信トラフィックを分類し、複数のゾーンに向け、トラフィックにより到達できるサービスを許可または拒否できます。

ソースをゾーンに追加する場合は、ゾーンがアクティブになり、そのソースからの着信トラフィックは、それを介して行われます。各ゾーンに異なる設定を指定できますが、それは指定したソースから順次トラフィックに適用されます。ネットワークインターフェースが 1 つしかない場合でも、複数のゾーンを使用できます。

39.11.2. ソースの追加

着信トラフィックを特定のソースに転送する場合は、そのゾーンにソースを追加します。ソースは、CIDR (Classless Inter-domain Routing) 表記法の IP アドレスまたは IP マスクになります。

  • 現在のゾーンにソースを設定するには、次のコマンドを実行します。

    # firewall-cmd --add-source=<source>
  • 特定ゾーンのソース IP アドレスを設定するには、次のコマンドを実行します。

    # firewall-cmd --zone=zone-name --add-source=<source>

以下の手順は、信頼される ゾーンで 192.168.2.15 からのすべての着信トラフィックを許可します。

手順

  1. 利用可能なゾーンの一覧を表示します。

    # firewall-cmd --get-zones
  2. 永続化モードで、信頼ゾーンにソース IP を追加します。

    # firewall-cmd --zone=trusted --add-source=192.168.2.15
  3. 新しい設定を永続化します。

    # firewall-cmd --runtime-to-permanent

39.11.3. ソースの削除

ゾーンからソースを削除すると、そのゾーンからのトラフィックを遮断します。

手順

  1. 必要なゾーンに対して許可されているソースの一覧を表示します。

    # firewall-cmd --zone=zone-name --list-sources
  2. ゾーンからソースを永続的に削除します。

    # firewall-cmd --zone=zone-name --remove-source=<source>
  3. 新しい設定を永続化します。

    # firewall-cmd --runtime-to-permanent

39.11.4. ソースポートの追加

発信源となるポートに基づいたトラフィックの分類を有効にするには、--add-source-port オプションを使用してソースポートを指定します。--add-source オプションと組み合わせて、トラフィックを特定の IP アドレスまたは IP 範囲に制限できます。

手順

  1. ソースポートを追加するには、次のコマンドを実行します。

    # firewall-cmd --zone=zone-name --add-source-port=<port-name>/<tcp|udp|sctp|dccp>

39.11.5. ソースポートの削除

ソースポートを削除して、送信元ポートに基づいてトラフィックの分類を無効にします。

手順

  1. ソースポートを削除するには、次のコマンドを実行します。

    # firewall-cmd --zone=zone-name --remove-source-port=<port-name>/<tcp|udp|sctp|dccp>

39.11.6. ゾーンおよびソースを使用して特定ドメインのみに対してサービスの許可

特定のネットワークからのトラフィックを許可して、マシンのサービスを使用するには、ゾーンおよびソースを使用します。以下の手順では、その他のトラフィックをブロックしつつ、192.168.1.0/24 からのトラフィックを許可し、HTTP サービスに到達できるようにします。

手順

  1. 利用可能なゾーンの一覧を表示します。

    # firewall-cmd --get-zones
    block dmz drop external home internal public trusted work
  2. 信頼されるゾーンにソースを追加して、ゾーンを経由してソースから発信するトラフィックに転送します。

    # firewall-cmd --zone=trusted --add-source=192.168.1.0/24
  3. 信頼ゾーンに http サービスを追加するには、次のコマンドを実行します。

    # firewall-cmd --zone=trusted -add-service=http
  4. 新しい設定を永続化します。

    # firewall-cmd --runtime-to-permanent
  5. 信頼されるゾーンがアクティブで、サービスが許可されているのを確認します。

    # firewall-cmd --zone=trusted --list-all
    trusted (active)
    target: ACCEPT
    sources: 192.168.1.0/24
    services: http

39.11.7. プロトコルに基づいてゾーンが許可したトラフィックの設定

プロトコルに基づいて、ゾーンが着信トラフィックを許可できます。指定したプロトコルを使用したすべてのトラフィックがゾーンにより許可されていますが、そこにさらにルールおよびフィルタリングを適用できます。

39.11.7.1. ゾーンへのプロトコルの追加

特定ゾーンへプロトコルを追加すると、このゾーンが許可するこのプロトコルを使用するすべてのトラフィックを許可します。

手順

  1. プロトコルをゾーンに追加するには、次のコマンドを実行します。

    # firewall-cmd --zone=zone-name --add-protocol=port-name/tcp|udp|sctp|dccp|igmp
注記

マルチキャストトラフィックを受けるには、--add-protocol オプションで igmp 値を使用します。

39.11.7.2. ゾーンからプロトコルの削除

特定ゾーンからプロトコルを削除するには、ゾーンにより、このプロトコルに基づいたすべてのトラフィックの許可を停止します。

手順

  1. ゾーンからプロトコルを削除するには、次のコマンドを削除します。

    # firewall-cmd --zone=zone-name --remove-protocol=port-name/tcp|udp|sctp|dccp|igmp

39.12. IP アドレスのマスカレードの設定

以下の手順では、システムで IP マスカレードを有効にする方法を説明します。IP マスカレードは、インターネットにアクセスする際にゲートウェイの向こう側にある個々のマシンを隠します。

手順

  1. external ゾーンなどで IP マスカレーディングが有効かどうかを確認するには、root で次のコマンドを実行します。

    # firewall-cmd --zone=external --query-masquerade

    このコマンドでは、有効な場合は yes と出力され、終了ステータスは 0 になります。無効の場合は no と出力され、終了ステータスは 1 になります。zone を省略すると、デフォルトのゾーンが使用されます。

  2. IP マスカレードを有効にするには、root で次のコマンドを実行します。

    # firewall-cmd --zone=external --add-masquerade
  3. この設定を永続的にするには、--permanent オプションを追加してコマンドを繰り返します。

IP マスカレードを無効にするには、root で次のコマンドを実行します。

# firewall-cmd --zone=external --remove-masquerade --permanent

39.13. ポート転送

この方法を使用するポートのリダイレクトは、IPv4 ベースのトラフィックでのみ機能します。IPv6 リダイレクト設定には、リッチルールを使用する必要があります。

外部システムにリダイレクトするには、マスカレードを有効にする必要があります。詳細は、「IP アドレスのマスカレードの設定」を参照してください。

39.13.1. リダイレクトするポートの追加

firewalld を使用して、システムで特定のポートを到達するための着信トラフィックが、選択した別の内部ポート、または別のマシンの外部ポートに配信されるようにポートのリダイレクトを設定できます。

前提条件

  • あるポートから別のポートにトラフィックをリダイレクトする前に、パケットが到達するポート、使用されるプロトコル、リダイレクト先を確認しておく必要があります。

手順

ポートを別のポートにリダイレクトする場合は、次のコマンドを実行します。

# firewall-cmd --add-forward-port=port=port-number:proto=tcp|udp|sctp|dccp:toport=port-number

別の IP アドレスで、別のポートにポートをリダイレクトする場合は、次のコマンドを実行します。

  1. 転送するポートを追加します。

    # firewall-cmd --add-forward-port=port=port-number:proto=tcp|udp:toport=port-number:toaddr=IP/mask
  2. マスカレードを有効にします。

    # firewall-cmd --add-masquerade

39.13.2. 同一マシンで TCP ポート 80 からポート 88 へのリダイレクト

TCP ポート 80 をポート 88 にリダイレクトするには、以下の手順に従います。

手順

  1. TCP トラフィックに対して、ポート 80 からポート 88 へリダイレクトします。

    # firewall-cmd --add-forward-port=port=80:proto=tcp:toport=88
  2. 新しい設定を永続化します。

    # firewall-cmd --runtime-to-permanent
  3. そのポートがリダイレクトされていることを確認します。

    # firewall-cmd --list-all

39.13.3. リダイレクトしているポートの削除

リダイレクトしているポートを削除するには、次のコマンドを実行します。

~]# firewall-cmd --remove-forward-port=port=port-number:proto=<tcp|udp>:toport=port-number:toaddr=<IP/mask>

別のアドレスにリダイレクトした転送ポートを削除する場合は、以下の手順を使用します。

手順

  1. 転送したポートを削除するには、以下を行います。

    ~]# firewall-cmd --remove-forward-port=port=port-number:proto=<tcp|udp>:toport=port-number:toaddr=<IP/mask>
  2. マスカレードを無効にするには、次のコマンドを実行します。

    ~]# firewall-cmd --remove-masquerade

39.13.4. 同じマシンで TCP ポート 88 に転送されるポート 80 の削除

ポートのリダイレクトを削除するには、以下を行います。

手順

  1. リダイレクトしたポートの一覧を表示します。

    ~]# firewall-cmd --list-forward-ports
    port=80:proto=tcp:toport=88:toaddr=
  2. ファイアウォールからリダイレクトしたポートを削除します。

    ~]# firewall-cmd  --remove-forward-port=port=80:proto=tcp:toport=88:toaddr=
  3. 新しい設定を永続化します。

    ~]# firewall-cmd --runtime-to-permanent

39.14. ICMP リクエストの管理

Internet Control Message Protocol (ICMP) は、接続問題 (要求されているサービスが利用できないなど) を示すエラーメッセージと運用情報を送信するために、様々なネットワークデバイスにより使用されているサポート対象のプロトコルです。ICMP は、システム間でデータを交換するのに使用されていないため、TCP、UDP などの転送プロトコルとは異なります。

ただし、ICMP メッセージ (特に echo-request および echo-reply) を利用して、ネットワークに関する情報を明らかにし、その情報をさまざまな不正行為に悪用することが可能です。したがって、firewalld は、ネットワーク情報を保護するため、ICMP リクエストをブロックできます。

39.14.1. ICMP リクエストの一覧表示およびブロック

ICMP リクエストの一覧表示

ICMP リクエストは、/usr/lib/firewalld/icmptypes/ ディレクトリーにある各 XML ファイルで説明されています。リクエストの説明は、このファイルを参照してください。firewall-cmd コマンドは、ICMP リクエストの操作を制御します。

  • 利用可能な ICMP タイプの一覧を表示するには、次のコマンドを実行します。

    # firewall-cmd --get-icmptypes
  • ICMP リクエストは、IPv4、IPv6、またはその両方のプロトコルで使用できます。ICMP リクエストが使用されてるプロトコルを表示するには、次のコマンドを実行します。

    # firewall-cmd --info-icmptype=<icmptype>
  • ICMP リクエストのステータスは、リクエストが現在ブロックされている場合は yes、ブロックされていない場合は no となります。ICMP リクエストが現在ブロックされているかどうかを確認するには、次のコマンドを実行します。

    # firewall-cmd --query-icmp-block=<icmptype>

ICMP リクエストのブロックまたはブロックの解除

サーバーが ICMP リクエストをブロックした場合は、通常の情報が提供されません。ただし、情報が全く提供されないというわけではありません。クライアントは、特定の ICMP リクエストがブロックされている (拒否されている) 情報を受け取ります。ICMP リクエストは、特に IPv6 トラフィックを使用すると、接続問題が発生することがあるため、注意深く検討する必要があります。

  • ICMP リクエストが現在ブロックされているかどうかを確認するには、次のコマンドを実行します。

    # firewall-cmd --query-icmp-block=<icmptype>
  • ICMP リクエストをブロックするには、次のコマンドを実行します。

    # firewall-cmd --add-icmp-block=<icmptype>
  • ICMP リクエストのブロックを削除するには、次のコマンドを実行します。

    # firewall-cmd --remove-icmp-block=<icmptype>

情報を提供せずに ICMP リクエストのブロック

通常、ICMP リクエストをブロックすると、ブロックしていることをクライアントは認識します。したがって、ライブの IP アドレスを傍受している潜在的な攻撃者は、IP アドレスがオンラインであることを確認できます。この情報を完全に非表示にするには、ICMP リクエストをすべて破棄する必要があります。

  • すべての ICMP リクエストをブロックして破棄するには、次のコマンドを実行します。
  1. ゾーンのターゲットを DROP に設定します。

    # firewall-cmd --set-target=DROP
  2. 新しい設定を永続化します。

    # firewall-cmd --runtime-to-permanent

これで、明示的に許可されるトラフィックを除き、ICMP リクエストを含むすべてのトラフィックが破棄されます。

  • 特定の ICMP リクエストをブロックして破棄し、その他のリクエストを許可するには、以下を行います。
  1. ゾーンのターゲットを DROP に設定します。

    # firewall-cmd --set-target=DROP
  2. すべての ICMP リクエストを一度にブロックする、ICMP ブロックの反転を追加します。

    # firewall-cmd --add-icmp-block-inversion
  3. 許可する ICMP リクエストに ICMP ブロックを追加する場合は、次のコマンドを実行します。

    # firewall-cmd --add-icmp-block=<icmptype>
  4. 新しい設定を永続化します。

    # firewall-cmd --runtime-to-permanent

ブロックの反転 は、ICMP リクエストブロックの設定を反転します。そのため、ゾーンのターゲットが DROP に変更されたため、ブロックされていないリクエストはすべてブロックされます。ブロックされているリクエストはブロックされません。これは、リクエストのブロックを解除する場合は、ブロックコマンドを使用する必要があることを示しています。

  • ブロックの反転を、完全許可の設定に戻すには、以下を行います。
  1. ゾーンのターゲットを default または ACCEPT に戻すには、次のコマンドを設定します。

    # firewall-cmd --set-target=default
  2. ICMP リクエストに追加したすべてのブロックを削除します。

    # firewall-cmd --remove-icmp-block=<icmptype>
  3. ICMP ブロックの反転を削除します。

    # firewall-cmd --remove-icmp-block-inversion
  4. 新しい設定を永続化します。

    # firewall-cmd --runtime-to-permanent

39.14.2. GUI を使用した ICMP フィルターの設定

  • ICMP フィルターを有効または無効にするには、firewall-config ツールを起動して、フィルターをかけるメッセージのネットワークゾーンを選択します。ICMP フィルター タブを選択し、フィルターをかける ICMP メッセージの各タイプのチェックボックスを選択します。フィルターを無効にするには、チェックボックスの選択を外します。これは方向ごとに設定され、デフォルトではすべてが許可されます。
  • ICMP タイプを編集するには、firewall-config ツールを起動してから 設定 ラベルのあるメニューで 永続 モードを選択します。サービス ウィンドウの下部に新たなアイコンが表示されます。以下のダイアログで はい を選択し、マスカレーディングを有効にし、動作している別のマシンに転送します。
  • ICMP フィルター の反転を有効にするには、右側の フィルターの反転 チェックボックスをクリックします。マークがついた ICMP タイプだけが許可され、その他はすべて拒否されます。DROP ターゲットを使用するゾーンでは破棄されます。

39.15. firewalld を使用した IP セットの設定および制御

firewalld で対応する IP セットタイプの一覧を表示するには、root で次のコマンドを実行します。

~]# firewall-cmd --get-ipset-types
hash:ip hash:ip,mark hash:ip,port hash:ip,port,ip hash:ip,port,net hash:mac hash:net hash:net,iface hash:net,net hash:net,port hash:net,port,net

39.15.1. CLI を使用した IP セットオプションの設定

IP セットは、firewalld ゾーンでソースとして使用でき、リッチルールでソースとして使用できます。Red Hat Enterprise Linux で推奨される方法は、ダイレクトルールで firewalld を使用して作成した IP セットを使用する方法です。

  • 永続的な環境で firewalld に認識されている IP セットの一覧を表示するには、次のコマンドを root で実行します。

    # firewall-cmd --permanent --get-ipsets
  • 新しい IP セットを追加するには、永続化環境を使用し、root で次のコマンドを実行します。

    # firewall-cmd --permanent --new-ipset=test --type=hash:net
    success

    上記のコマンドは、名前 test とタイプ hash:net で、IPv4 の新しい IP セットを作成します。IPv6 で使用する IP セットを作成する場合は、--option=family=inet6 オプションを追加します。ランタイム環境で新しい設定を有効にするには、firewalld を再読み込みします。

  • root で次のコマンドを実行して、新しい IP セットの一覧を表示します。

    # firewall-cmd --permanent --get-ipsets
    test
  • IP セットの詳細は、root で次のコマンドを実行します。

    # firewall-cmd --permanent --info-ipset=test
    test
    type: hash:net
    options:
    entries:

    この時点では IP セットにエントリーがありません。

  • IP セット test にエントリーを追加するには、root で次のコマンドを実行します。

    # firewall-cmd --permanent --ipset=test --add-entry=192.168.0.1
    success

    上記のコマンドは、IP アドレス 192.168.0.1 を IP セットに追加します。

  • IP セットの現在のエントリーを一覧表示するには、root で次のコマンドを実行します。

    # firewall-cmd --permanent --ipset=test --get-entries
    192.168.0.1
  • IP アドレスの一覧を含むファイルを生成します。以下に例を示します。

    # cat > iplist.txt <<EOL
    192.168.0.2
    192.168.0.3
    192.168.1.0/24
    192.168.2.254
    EOL

    IP セットの IP アドレスの一覧が含まれるファイルには、行ごとにエントリーが含まれている必要があります。ハッシュ、セミコロン、また空の行から始まる行は無視されます。

  • iplist.txt ファイルからアドレスを追加するには、root で次のコマンドを実行します。

    # firewall-cmd --permanent --ipset=test --add-entries-from-file=iplist.txt
    success
  • 拡張された IP セットのエントリー一覧を表示するには、root で次のコマンドを実行します。

    # firewall-cmd --permanent --ipset=test --get-entries
    192.168.0.1
    192.168.0.2
    192.168.0.3
    192.168.1.0/24
    192.168.2.254
  • IP セットからアドレスを削除し、更新したエントリー一覧を確認するには、root で次のコマンドを実行します。

    # firewall-cmd --permanent --ipset=test --remove-entries-from-file=iplist.txt
    success
    # firewall-cmd --permanent --ipset=test --get-entries
    192.168.0.1
  • IP セットをゾーンへのソースとして追加し、ゾーンを使用して、IP セットに記載されるアドレスから受信するすべてのトラフィックを処理します。たとえば、IP セットの test をソースとして drop ゾーンに追加し、IP セットの test の一覧に表示されるすべてのエントリーから発信されるパケットをすべて破棄するには、root で次のコマンドを実行します。

    # firewall-cmd --permanent --zone=drop --add-source=ipset:test
    success

    ソースの ipset: プレフィックスは、ソースが IP セットで、IP アドレスまたはアドレス範囲ではない firewalld を示しています。

IP セットの作成および削除は、永続環境に限定されますが、その他の IP セットオプションは、--permanent オプションを使用しないランタイム環境で使用できます。

警告

Red Hat は、firewalld を介して管理していない IP セットを使用することは推奨しません。このような IP セットを使用すると、そのセットを参照する永続的なダイレクトルールが必要で、IP セットを作成するカスタムサービスを追加する必要があります。このサービスは、firewalld を起動する前に起動する必要があります。先に起動しておかないと、firewalld が、このセットを使用してダイレクトルールを追加できません。/etc/firewalld/direct.xml ファイルを使用して、永続的なダイレクトルールを追加できます。

39.16. リッチルールの優先度設定

デフォルトでは、リッチルールはルールアクションに基づいて構成されます。たとえば、許可 ルールよりも 拒否 ルールが優先されます。リッチルールで priority パラメーターを使用すると、管理者はリッチルールとその実行順序をきめ細かく制御できます。

39.16.1. priority パラメーターを異なるチェーンにルールを整理する方法

リッチルールの priority パラメーターは、-32768 ~ 32767 の任意の数値に設定でき、値が小さい方が優先されます。

firewalld サービスは、優先度の値に基づいて、ルールを異なるチェーンに整理します。

  • 優先度が 0 未満 - ルールは _pre 接尾辞が付いたチェーンにリダイレクトされます。
  • 優先度が 0 を超える - ルールは _post 接尾辞が付いたチェーンにリダイレクトされます。
  • 優先度が 0 - アクションに基づいて、ルールは、_log_deny、または _allow のアクションを使用してチェーンにリダイレクトされます。

このサブチェーンでは、firewalld は優先度の値に基づいてルールを分類します。

39.16.2. リッチルールの優先度の設定

この手順では、priority パラメーターを使用して、他のルールで許可または拒否されていないすべてのトラフィックをログに記録するリッチルールを作成する方法を説明します。このルールを使用して、予期しないトラフィックにフラグを付けることができます。

手順

  1. 優先度が非常に低いルールを追加して、他のルールと一致していないすべてのトラフィックをログに記録します。

    # firewall-cmd --add-rich-rule='rule priority=32767 log prefix="UNEXPECTED: " limit value="5/m"'

    このコマンドでは、ログエントリーの数を、毎分 5 に制限します。

  2. 必要に応じて、前の手順のコマンドで作成した nftables ルールを表示します。

    # nft list chain inet firewalld filter_IN_public_post
    table inet firewalld {
      chain filter_IN_public_post {
        log prefix "UNEXPECTED: " limit rate 5/minute
      }
    }

39.17. ファイアウォールロックダウンの設定

ローカルのアプリケーションやサービスは、root で実行していれば、ファイアウォール設定を変更できます (たとえば libvirt)。管理者は、この機能を使用してファイアウォール設定をロックし、すべてのアプリケーションでファイアウォール変更を要求できなくするか、ロックダウンのホワイトリストに追加されたアプリケーションのみがファイアウォール変更を要求できるようにすることが可能になります。ロックダウン設定はデフォルトで無効になっています。これを有効にすると、ローカルのアプリケーションやサービスによるファイアウォールへの望ましくない設定変更を確実に防ぐことができます。

39.17.1. CLI を使用したロックダウンの設定

  • ロックダウンが有効になっているかどうかを確認するには、root で次のコマンドを使用します。

    # firewall-cmd --query-lockdown

    ロックダウンが有効な場合は、yes と出力され、終了ステータスは 0 になります。無効の場合は no と出力され、終了ステータスは 1 になります。

  • ロックダウンを有効にするには、root で次のコマンドを実行します。

    # firewall-cmd --lockdown-on
  • ロックダウンを無効にするには、root で次のコマンドを実行します。

    # firewall-cmd --lockdown-off

39.17.2. CLI を使用したロックダウンホワイトリストオプションの設定

ロックダウンのホワイトリストには、コマンド、セキュリティーのコンテキスト、ユーザー、およびユーザー ID を追加できます。ホワイトリストのコマンドエントリーがアスタリスク「*」で終了している場合は、そのコマンドで始まるすべてのコマンドラインが一致することになります。「*」がなければ、コマンドと引数が完全に一致する必要があります。

  • ここでのコンテキストは、実行中のアプリケーションやサービスのセキュリティー (SELinux) コンテキストです。実行中のアプリケーションのコンテキストを確認するには、次のコマンドを実行します。

    $ ps -e --context

    このコマンドは、実行中のアプリケーションをすべて返します。grep ツールを使用して、出力から目的のアプリケーションをパイプ処理します。以下に例を示します。

    $ ps -e --context | grep example_program
  • ホワイトリストにあるコマンドラインの一覧を表示するには、root で次のコマンドを実行します。

    # firewall-cmd --list-lockdown-whitelist-commands
  • ホワイトリストに command コマンドを追加するには、root で次のコマンドを実行します。

    # firewall-cmd --add-lockdown-whitelist-command='/usr/bin/python3 -Es /usr/bin/command'
  • ホワイトリストから command コマンドを削除するには、root で次のコマンドを実行します。

    # firewall-cmd --remove-lockdown-whitelist-command='/usr/bin/python3 -Es /usr/bin/command'
  • command コマンドがホワイトリストに含まれるかどうかを確認するには、root で次のコマンドを実行します。

    # firewall-cmd --query-lockdown-whitelist-command='/usr/bin/python3 -Es /usr/bin/command'

    このコマンドでは、含まれる場合は yes が出力され、終了ステータスは 0 になります。無効の場合は no と出力され、終了ステータスは 1 になります。

  • ホワイトリストにあるセキュリティーコンテキストの一覧を表示するには、root で次のコマンドを実行します。

    # firewall-cmd --list-lockdown-whitelist-contexts
  • ホワイトリストに context コンテキストを追加するには、root で次のコマンドを実行します。

    # firewall-cmd --add-lockdown-whitelist-context=context
  • ホワイトリストから context コンテキストを削除するには、root で次のコマンドを実行します。

    # firewall-cmd --remove-lockdown-whitelist-context=context
  • context コンテキストがホワイトリストに含まれるかどうかを確認するには、root で次のコマンドを実行します。

    # firewall-cmd --query-lockdown-whitelist-context=context

    含まれる場合は、yes と出力され、終了ステータスは 0 になります。含まれない場合は、no が出力され、終了ステータスは 1 になります。

  • ホワイトリストにあるユーザー ID の一覧を表示するには、root で次のコマンドを実行します。

    # firewall-cmd --list-lockdown-whitelist-uids
  • ホワイトリストにユーザー ID (uid) を追加するには、root で次のコマンドを実行します。

    # firewall-cmd --add-lockdown-whitelist-uid=uid
  • ホワイトリストからユーザー ID (uid) を削除するには、root で次のコマンドを実行します。

    # firewall-cmd --remove-lockdown-whitelist-uid=uid
  • ホワイトリストにユーザー ID (uid) があるかどうかを確認するには、次のコマンドを実行します。

    $ firewall-cmd --query-lockdown-whitelist-uid=uid

    含まれる場合は、yes と出力され、終了ステータスは 0 になります。含まれない場合は、no が出力され、終了ステータスは 1 になります。

  • ホワイトリストにあるユーザー名の一覧を表示するには、root で次のコマンドを実行します。

    # firewall-cmd --list-lockdown-whitelist-users
  • ホワイトリストにユーザー名 (user) を追加するには、root で次のコマンドを実行します。

    # firewall-cmd --add-lockdown-whitelist-user=user
  • ホワイトリストからユーザー名 (user) を削除するには、root で次のコマンドを実行します。

    # firewall-cmd --remove-lockdown-whitelist-user=user
  • ホワイトリストにユーザー名 (user) があるかどうかを確認するには、次のコマンドを実行します。

    $ firewall-cmd --query-lockdown-whitelist-user=user

    含まれる場合は、yes と出力され、終了ステータスは 0 になります。含まれない場合は、no が出力され、終了ステータスは 1 になります。

39.17.3. 設定ファイルを使用したロックダウンのホワイトリストオプションの設定

デフォルトのホワイトリスト設定ファイルには、NetworkManager コンテキストと、libvirt のデフォルトコンテキストが含まれます。リストには、ユーザー ID (0) もあります。

<?xml version="1.0" encoding="utf-8"?>
	<whitelist>
	  <selinux context="system_u:system_r:NetworkManager_t:s0"/>
	  <selinux context="system_u:system_r:virtd_t:s0-s0:c0.c1023"/>
	  <user id="0"/>
	</whitelist>

以下のホワイトリスト設定ファイルの例では、firewall-cmd ユーティリティーのコマンドと、ユーザー ID が 815 である user のコマンドをすべて有効にしています。

<?xml version="1.0" encoding="utf-8"?>
	<whitelist>
	  <command name="/usr/libexec/platform-python -s /bin/firewall-cmd*"/>
	  <selinux context="system_u:system_r:NetworkManager_t:s0"/>
	  <user id="815"/>
	  <user name="user"/>
	</whitelist>

この例では、user iduser name の両方が使用されていますが、実際にはどちらか一方のオプションだけが必要です。Python はインタープリターとしてコマンドラインに追加されています。または、以下のような明確なコマンドも使用できます。

/usr/bin/python3 /bin/firewall-cmd --lockdown-on

この例では、--lockdown-on コマンドだけが許可されます。

Red Hat Enterprise Linux では、すべてのユーティリティーが /usr/bin/ ディレクトリーに格納されており、/bin/ ディレクトリーは /usr/bin/ ディレクトリーへのシンボリックリンクとなります。つまり、rootfirewall-cmd へのパスを実行すると /bin/firewall-cmd に対して解決しますが、/usr/bin/firewall-cmd が使用できるようになっています。新たなスクリプトは、すべて新しい格納場所を使用する必要があります。ただし、root で実行するスクリプトが /bin/firewall-cmd へのパスを使用するようになっているのであれば、これまでは root 以外のユーザーにのみ使用されていた /usr/bin/firewall-cmd パスに加え、このコマンドのパスもホワイトリストに追加する必要があります。

コマンドの名前属性の最後にある * は、その名前で始まるすべてのコマンドが一致することを意味します。* がなければ、コマンドと引数が完全に一致する必要があります。

39.18. 拒否されたパケットのログ

firewalldLogDenied オプションを使用して、拒否したパケットに簡易ロギングメカニズムを追加できます。対象となるのは、拒否または破棄されるパケットになります。ログ設定を変更するには、/etc/firewalld/firewalld.conf ファイルを変更するか、コマンドラインまたは GUI 設定ツールを使用します。

LogDenied を有効にすると、デフォルトルールの INPUT チェイン、FORWARD チェイン、および OUTPUT チェインの reject ルールおよび drop ルールと、ゾーンの最後の reject ルールおよび drop ルールの直前に、ロギングルールが追加されます。ここに設定できる値は、allunicastbroadcastmulticast、および off です。デフォルト設定は off です。unicastbroadcast、および multicast の設定では、リンク層のパケットタイプを一致させるのに pkttype 一致を使用します。all を使用すると、すべてのパケットがログに記録されます。

firewall-cmd で実際の LogDenied 設定を一覧表示するには、root で次のコマンドを使用します。

# firewall-cmd --get-log-denied
off

LogDenied 設定を変更するには、root で次のコマンドを実行します。

# firewall-cmd --set-log-denied=all
success

firewalld の GUI 設定ツールを使用して LogDenied 設定を変更する場合は、firewall-config を起動して Options メニューをクリックし、Change Log Denied を選択します。LogDenied ウィンドウが表示されます。メニューから新しい LogDenied 設定を選択し、OK をクリックします。

第40章 nftables の使用

管理者は、nftables フレームワークを使用して、Linux カーネルのファイアウォールで使用されるパケットフィルタリングルールを設定できます。

40.1. nftables の概要

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

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

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

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

関連情報

  • man ページの nft(8) は、nft コマンドラインツールで nftables を使用して、パケットのフィルタリングを設定および検査するための包括的な参考資料を提供します。

40.2. firewalld、nftables、または iptables を使用する場合

以下は、次のユーティリティーのいずれかを使用する必要があるシナリオの概要です。

  • firewalld - firewalld ユーティリティーを使用して、ワークステーションにファイアウォールを設定します。このユーティリティーは使いやすく、このシナリオの一般的な使用例に対応しています。
  • nftables - nftables ユーティリティーを使用して、ネットワーク全体など、複雑なファイアウォールを設定します。
  • iptables - iptables ユーティリティーは、Red Hat Enterprise Linux 8 では非推奨になりました。代わりに nftables を使用します。
重要

異なるファイアウォールサービスが相互に影響することを回避するには、RHEL ホストでそのうちの 1 つだけを実行し、他のサービスを無効にします。

40.3. iptables のルールを nftables ルールに変換

Red Hat Enterprise Linux 8 は、既存の iptables ルールまたは ip6tables ルールを、nftables で同等のルールに変換する iptables-translate ツールおよび ip6tables-translate ツールが追加されました。

拡張機能によっては変換機能がない場合もあります。対応する機能がない拡張機能が存在する場合は、ツールにより、その前に # 記号が付いた未変換ルールが出力されます。以下に例を示します。

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

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

# iptables-save >/tmp/iptables.dump
# iptables-restore-translate -f /tmp/iptables.dump

# Translated by iptables-restore-translate v1.8.0 on Wed Oct 17 17:00:13 2018
add table ip nat
...

詳細と、設定可能なオプションおよび値の一覧は、iptables-translate --help コマンドで確認できます。

40.4. nftables スクリプトの作成および実行

nftables フレームワークは、シェルスクリプトを使用してファイアウォールルールを維持するための主な利点を提供するネイティブのスクリプト環境を提供します。スクリプトの実行はアトミックです。つまり、システムがスクリプト全体を適用するか、エラーが発生した場合には実行を阻止することを意味します。これにより、ファイアウォールは常に一貫した状態になります。

さらに、管理者は、nftables スクリプト環境で以下を行うことができます。

  • コメントの追加
  • 変数の定義
  • 他のルールセットファイルの組み込み

本セクションでは、この機能を使用する方法と、nftables スクリプトの作成方法と実行方法を説明します。

nftables パッケージをインストールすると、Red Hat Enterprise Linux が自動的に *.nft スクリプトを /etc/nftables/ ディレクトリーに作成します。このスクリプトは、さまざまな目的でテーブルと空のチェーンを作成するコマンドが含まれます。これらのファイルを拡張するか、またはスクリプトを作成できます。

40.4.1. nftables スクリプトで必要なスクリプトヘッダー

他のスクリプトと同様に、nftables スクリプトでは、interpreter ディレクティブを設定するスクリプトの最初の行に shebang のシーケンスが必要になります。

nftables スクリプトは、常に次の行で起動する必要があります。

#!/usr/sbin/nft -f
重要

-f パラメーターを指定しないと、nft ユーティリティーはスクリプトを読み取らず、Error: syntax error, unexpected newline, expecting string を表示します。

40.4.2. 対応している nftables スクリプトの形式

nftables スクリプト環境は、次の形式でスクリプトに対応します。

  • nft list ruleset コマンドが、ルールセットを表示するのと同じ形式でスクリプトを作成できます。

    #!/usr/sbin/nft -f
    
    # Flush the rule set
    flush ruleset
    
    table inet example_table {
      chain example_chain {
        # Chain for incoming packets that drops all packets that
        # are not explicitly allowed by any rule in this chain
        type filter hook input priority 0; policy drop;
    
        # Accept connections to port 22 (ssh)
        tcp dport ssh accept
      }
    }
  • nft コマンドと同じ構文を使用できます。

    #!/usr/sbin/nft -f
    
    # Flush the rule set
    flush ruleset
    
    # Create a table
    add table inet example_table
    
    # Create a chain for incoming packets that drops all packets
    # that are not explicitly allowed by any rule in this chain
    add chain inet example_table example_chain { type filter hook input priority 0 ; policy drop ; }
    
    # Add a rule that accepts connections to port 22 (ssh)
    add rule inet example_table example_chain tcp dport ssh accept

40.4.3. nftables スクリプトの実行

nftables スクリプトを実行するには、スクリプトを実行ファイルにする必要があります。スクリプトが別のスクリプトに含まれている場合に限り、スクリプトが実行ファイルである必要がありません。この手順では、スクリプトを実行ファイルにし、スクリプトを実行する方法を説明します。

前提条件

  • このセクションの手順では、nftables スクリプトを /etc/nftables/example_firewall.nft ファイルに保存していることを前提としています。

手順

  1. 以下の手順は、一度だけ必要です。

    1. 必要に応じて、スクリプトの所有者を root に設定します。

      # chown root /etc/nftables/example_firewall.nft
    2. 所有者のスクリプトを実行ファイルに変更します。

      # chmod u+x /etc/nftables/example_firewall.nft
  2. スクリプトを実行します。

    # /etc/nftables/example_firewall.nft

    出力が表示されない場合は、システムがスクリプトを正常に実行します。

    重要

    nft はスクリプトを正常に実行しますが、ルールの配置やパラメーター不足、またはスクリプト内のその他の問題により、ファイアウォールが期待通りの動作を起こさない可能性があります。

関連情報

40.4.4. nftables スクリプトでコメントの使用

nftables スクリプト環境は、# 文字の右側にあるすべてをコメントとして解釈します。

例40.1 nftables スクリプトのコメント

コメントは、コマンドの横だけでなく、行の先頭からも開始できます。

...
# Flush the rule set
flush ruleset

add table inet example_table  # Create a table
...

40.4.5. nftables スクリプトで変数の使用

nftables スクリプトで変数を定義するには、define キーワードを使用します。シングル値および匿名セットを変数に保存できます。より複雑なシナリオの場合は、セットまたは決定マップを使用します。

値を 1 つ持つ変数

以下の例は、値が enp1s0INET_DEV という名前の変数を定義します。

define INET_DEV = enp1s0

スクリプトで変数を使用するには、$ 記号と、それに続く変数名を指定します。

...
add rule inet example_table example_chain iifname $INET_DEV tcp dport ssh accept
...
匿名セットを含む変数

以下の例では、匿名セットを含む変数を定義します。

define DNS_SERVERS = { 192.0.2.1, 192.0.2.2 }

スクリプトで変数を使用するには、$ 記号と、それに続く変数名を指定します。

add rule inet example_table example_chain ip daddr $DNS_SERVERS accept
注記

中括弧は、変数がセットを表していることを示すため、ルールで使用する場合は、特別なセマンティクスを持つことに注意してください。

関連情報

40.4.6. nftables スクリプトへのファイルの追加

nftables スクリプト環境を使用すると、管理者は include ステートメントを使用して他のスクリプトを追加できます。

絶対パスまたは相対パスのないファイル名のみを指定すると、nftables には、デフォルトの検索パスのファイルが含まれます。これは、Red Hat Enterprise Linux では /etc に設定されています。

例40.2 デフォルト検索ディレクトリーからのファイルを含む

デフォルトの検索ディレクトリーからファイルを指定するには、次のコマンドを実行します。

include "example.nft"

例40.3 ディレクトリーの *.nft ファイルをすべて含む

*.nft で終わるすべてのファイルを /etc/nftables/rulesets/ ディレクトリーに保存するには、次のコマンドを実行します。

include "/etc/nftables/rulesets/*.nft"

include ステートメントは、ドットで始まるファイルに一致しないことに注意してください。

関連情報

  • 詳細は、man ページの nft(8)Include files セクションを参照してください。

40.4.7. システムの起動時に nftables ルールの自動読み込み

systemd サービス nftables は、/etc/sysconfig/nftables.conf ファイルに含まれるファイアウォールスクリプトを読み込みます。本セクションでは、システムの起動時にファイアウォールルールを読み込む方法を説明します。

前提条件

  • nftables スクリプトは、/etc/nftables/ ディレクトリーに保存されます。

手順

  1. /etc/sysconfig/nftables.conf ファイルを編集します。

    • nftables パッケージをインストールしたときに /etc/nftables/ に作成された *.nft スクリプトを拡張する場合は、そのスクリプトの include ステートメントのコメントを解除します。
    • スクリプトを新規に作成する場合は、そのスクリプトを含む include ステートメントを追加します。たとえば、nftables サービスの起動時に /etc/nftables/example.nft スクリプトを読み込むには、以下を追加します。

      include "/etc/nftables/example.nft"
  2. nftables サービスを有効にします。

    # systemctl enable nftables
  3. 必要に応じて、nftables サービスを開始して、システムを再起動せずにファイアウォールルールを読み込みます。

    # systemctl start nftables

40.5. nftables ルールセットの表示

nftables のルールセットには、テーブル、チェーン、およびルールが含まれます。本セクションでは、ルールセットを表示する方法を説明します。

手順

  1. すべてのルールセットを表示するには、次のコマンドを実行します。

    # nft list ruleset
    table inet example_table {
      chain example_chain {
        type filter hook input priority 0; policy accept;
        tcp dport http accept
        tcp dport ssh accept
      }
    }
    注記

    デフォルトで、nftables は事前作成のテーブルではありません。したがって、テーブルがないホストに設定したルールを表示すると、nft list ruleset コマンドが出力を表示しません。

40.6. nftables テーブルの作成

nftables の表は、チェーン、ルール、セットなどのオブジェクトを含む名前空間です。本セクションでは、テーブルの作成方法を説明します。

各テーブルには、アドレスファミリーが定義されている必要があります。テーブルのアドレスファミリーは、テーブルプロセスのアドレスタイプを定義します。テーブルを作成する際に、以下のいずれかのアドレスファミリーを設定できます。

  • ip - IPv4 パケットのみと一致します。アドレスファミリーを指定しないと、これがデフォルトになります。
  • ip6 - IPv6 パケットのみと一致します。
  • inet - IPv4 パケットと IPv6 パケットの両方と一致します。
  • arp- IPv4 アドレス解決プロトコル (ARP) パケットと一致します。
  • bridge - ブリッジデバイスを通過するパケットと一致します。
  • netdev ingress からのパケットに一致します。

手順

  1. nft add table コマンドを使用してテーブルを新規作成します。たとえば、IPv4 パケットおよび IPv6 パケットを処理する example_table という名前のテーブルを作成するには、次のコマンドを実行します。

    # nft add table inet example_table
  2. 必要に応じて、ルールセットのテーブルを一覧表示します。

    # nft list tables
    table inet example_table

関連情報

  • アドレスファミリーの詳細は、man ページの nft(8)Address families セクションを参照してください。
  • テーブルで実行可能なその他のアクションの詳細は、man ページの nft(8)Tables セクションを参照してください。

40.7. nftables チェーンの作成

チェーンは、ルールのコンテナーです。次の 2 つのルールタイプが存在します。

  • ベースチェーン - ネットワークスタックからのパケットのエントリーポイントとしてベースチェーンを使用できます。
  • 通常のチェーン - ジャンプ ターゲットとして通常のチェーンを使用し、ルールをより適切に整理できます。

この手順では、既存のテーブルにベースチェーンを追加する方法を説明します。

前提条件

  • 新しいチェーンを追加するテーブルが存在する。

手順

  1. nft add chain コマンドを使用してチェーンを新規作成します。たとえば、example_table に、example_chain という名前のチェーンを作成するには、次のコマンドを実行します。

    # nft add chain inet example_table example_chain { type filter hook input priority 0 \; policy accept \; }
    重要

    シェルで、セミコロンがコマンドの最後として解釈されないようにするには、セミコロンをバックスラッシュでエスケープする必要があります。

    このチェーンは、着信パケットをフィルタリングします。priority パラメーターは、nftables プロセスが同じフック値を持つチェーンを処理する順序を指定します。優先度の値が低いほど優先されます。policy パラメーターは、このチェーン内のルールのデフォルトアクションを設定します。サーバーにリモートでログインし、デフォルトのポリシーを drop に設定すると、他のルールでリモートアクセスが許可されていなければ、すぐに切断されることに注意してください。

  2. 必要に応じて、すべてのチェーンを表示します。

    # nft list chains
    table inet example_table {
      chain example_chain {
        type filter hook input priority 0; policy accept;
      }
    }

関連情報

  • アドレスファミリーの詳細は、man ページの nft(8)Address families セクションを参照してください。
  • チェーンで実行できるその他のアクションの詳細は、man ページの nft(8)Chains セクションを参照してください。

40.8. nftables チェーンへのルールの追加

本セクションでは、既存の nftables チェーンにルールを追加する方法を説明します。デフォルトでは、nftables add rule コマンドは、チェーンの最後に新しいルールを追加します。

代わりにチェーンの先頭にルールを追加する場合は、「nftables チェーンへのルールの追加」を参照してください。

前提条件

  • ルールを追加するチェーンが存在する。

手順

  1. 新規ルールを追加するには、nft add rule コマンドを使用します。たとえば、example_tableexample_chain に、ポート 22 の TCP トラフィックを許可するルールを追加するには、次のコマンドを実行します。

    # nft add rule inet example_table example_chain tcp dport 22 accept

    ポート番号の代わりに、サービス名を指定することもできます。この例では、ポート番号