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章 ネットワークトピックの概要

注記

本章では、実行するコマンドを紹介します。root 権限が必要なコマンドには ~]# がついており、一般ユーザーが実行できるコマンドには ~]$ がついています。

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

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

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

IP ネットワーク
IP アドレスを介して通信するネットワーク。IP ネットワークは、インターネットおよびほとんどの内部ネットワークに実装されています。イーサネット、ケーブルモデム、DSL モデム、ダイヤルアップモデム、無線ネットワーク、VPN 接続などがその代表的な例です。
非 IP ネットワーク
トランスポート層ではなく下位層を介して通信するのに使用されるネットワーク。このネットワークはほとんど使用されないことに注意してください。InfiniBand は非 IP ネットワークです。

1.2. 静的または動的な IP アドレスの指定

静的な IP アドレス指定

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

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

    「ネットワーク設定方法の選択」に列挙されるすべての設定ツールでは、静的な IP アドレスを手動で割り当てることができます。

動的な IP アドレス指定

デバイスに動的 IP アドレスが割り当てられている場合は、そのアドレスが時間の経過とともに変わります。このため、マシンを再起動すると IP アドレスが変わる可能性があるため、随時ネットワークに接続するデバイスに使用することが推奨されます。

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

注記

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

1.3. DHCP クライアントの動作の設定

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

DHCP のタイムアウトの設定

dhcp クライアントは、DHCP 接続が開始する際に、DHCP サーバーに IP アドレスを要求します。dhcp クライアントがこの要求が完了するのを待つ時間は、デフォルトで 45 秒です。この手順では、nmcli ツールを使用して ipv4.dhcp-timeout プロパティーを設定する方法、または /etc/sysconfig/network-scripts/ifcfg-ifnameファイルの IPV4_DHCP_TIMEOUT オプションを設定する方法を説明します。たとえば、次のように nmcli を使用します。

~]# nmcli connection modify enp1s0 ipv4.dhcp-timeout 10

この間にアドレスを取得できないと、IPv4 設定は失敗します。接続全体が失敗する可能性もありますが、これは ipv4.may-fail プロパティーにより異なります。

  • ipv4.may-failyes (デフォルト) に設定されていると、接続の状態は IPv6 設定に依存します。

    1. IPv6 設定が有効であり、これが成功すると、接続はアクティブになりますが、IPv4 設定は再試行できません。
    2. IPv6 設定が無効であるか、または設定されていないと、接続は失敗します。
  • ipv4.may-failno に設定されていると、接続は非アクティブになります。この場合は、以下のようになります。

    1. 接続の autoconnect プロパティーが有効になっている場合、NetworkManager は、autoconnect-retries プロパティーに設定された回数だけ、接続のアクティベーションを再試行します。デフォルトでは 4 回です。
    2. それでも接続が dhcp アドレスを取得できないと、自動アクティベーションは失敗します。

      5 分後に自動接続プロセスが再開し、dhcp クライアントが dhcp サーバーからのアドレスの取得を再試行することに注意してください。

リースの更新と有効期限

NetworkManager は、DHCP リースを正常に取得した後、一定期間 DHCP サーバーから受信したパラメーターでインターフェースを設定し、定期的にリースを更新しようとします。リースの更新期間が切れても更新できないと、NetworkManager は最大 8 分までサーバーへの接続を試み続けます。他方の IP 設定 (IPv4 または IPv6) が成功すると、接続がアクティブである限り DHCP 要求が続きます。

1.3.1. DHCPv4 の永続化

起動時とリース更新プロセス実行時の両方で DHCPv4 を永続化するには、ipv4.dhcp-timeout プロパティーを、32 ビットの整数の最大値 (MAXINT32) である 2147483647 か、または次のように infinity 値に設定します。

~]$ nmcli connection modify enp1s0 ipv4.dhcp-timeout infinity

これにより、NetworkManager による DHCP サーバーからのリースの取得または更新の試行は、成功するまで停止しません。

リース更新プロセス中にのみ DHCP の永続的な動作を保証するには、/etc/sysconfig/network-scripts/ifcfg-device_name 設定ファイルで、または次のように nmcli を使用して、IPADDR プロパティーに静的 IP を手動で追加します。

~]$ nmcli connection modify enp1s0 ipv4.address 192.168.122.88/24

IP アドレスのリース期限が切れると、静的 IP は、設定済みあるいは一部設定済みの IP 状態を保持します。IP アドレスを持つことはできますが、インターネットには接続されていません。

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

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) ページ - ワイヤレスデバイスおよびその設定を表示または操作します。

1.5. sysctl によるネットワークカーネル調整パラメーターの使用

sysctl ユーティリティーを介して特定のカーネル調整パラメーターを使用すると、実行中のシステムでネットワーク設定を調整し、ネットワークパフォーマンスに直接作用させることができます。

ネットワーク設定を変更するには、sysctl コマンドを使用します。システムを再起動しても維持される永続的な変更を行うには、/etc/sysctl.conf ファイルにそれを設定する行を追加します。

利用可能なすべての sysctl パラメーターを表示するには、root で以下を実行します。

~]# sysctl -a

1.6. ncat ユーティリティーを使用したデータの管理

ncat ネットワークユーティリティーは、Red Hat Enterprise Linux 7 で netcat に代わるものです。ncat は、その他のアプリケーションやユーザーにネットワーク接続を提供する、信頼できるバックエンドツールです。ncat は、コマンドラインからネットワーク全体でデータを読み書きし、Transmission Control Protocol (TCP)、User Datagram Protocol (UDP)、Stream Control Transmission Protocol (SCTP)、または Unix ソケットを使用して通信します。IPv4 および IPv6 の両方を処理し、接続を開き、パケットを送信し、ポートスキャンを実行し、SSL などの高度な機能やコネクションブローカーに対応します。

同じオプションを使用して、nc コマンドも ncat として入力できます。ncat オプションの詳細は、『移行計画ガイド』の「新しいネットワーキングユーティリティー (ncat)」 および man ページの ncat(1) を参照してください。

ncat のインストール

ncat パッケージをインストールするには、root で次のコマンドを実行します。

~]# yum install nmap-ncat
ncat ユースケースの簡単な例

例1.1 クライアントとサーバー間の通信の有効化

  1. TCP ポート 8080 で接続をリッスンするように、クライアントマシンを設定します。

    ~]$ ncat -l 8080
  2. サーバーマシンで、クライアントの IP アドレスを指定し、同じポート番号を使用します。

    ~]$ ncat 10.0.11.60 8080

    接続のいずれの側でもメッセージを送信でき、ローカルマシンとリモートマシンの両方に表示されます。

  3. Ctrl+D を押して、TCP 接続を閉じます。
注記

UDP ポートを確認するには、同じ nc コマンドに –u オプションを使用します。以下に例を示します。

~]$ ncat -u -l 8080

例1.2 ファイルの送信

前の例で説明したように情報を画面に表示するのではなく、すべての情報をファイルに送信できます。たとえば、TCP ポート 8080 を介してクライアントからサーバーにファイルを送信するには、次の手順を実行します。

  1. クライアントマシンで、ファイルをサーバーマシンに転送する特定のポートをリッスンするには、次のコマンドを実行します。

    ~]$  ncat -l 8080 > outputfile
  2. サーバーマシンで、クライアントの IP アドレス、ポート、および転送するファイルを指定します。

    ~]$  ncat -l 10.0.11.60 8080 < inputfile

ファイルが転送されると、接続は自動的に閉じます。

注記

他の対象にファイルを転送することもできます。

~]$  ncat -l 8080 < inputfile
~]$  ncat -l 10.0.11.60 8080 > outputfile

例1.3 HTTP プロキシーサーバーの作成

localhost ポート 8080 に HTTP プロキシーサーバーを作成するには、次のコマンドを実行します。

~]$  ncat -l --proxy-type http localhost 8080

例1.4 ポートスキャン

開いているポートを確認するには、–z オプションを使用して、スキャンするポートの範囲を指定します。

~]$  ncat -z 10.0.11.60 80-90
    Connection to 192.168.0.1 80 port [tcp/http] succeeded!

例1.5 SSL を使用した安全なクライアントサーバー通信の設定

サーバーに SSL を設定します。

~]$ ncat -e /bin/bash -k -l 8080 --ssl

クライアントマシンで、次のコマンドを実行します。

~]$ ncat --ssl 10.0.11.60 8080
注記

SSL 接続で真の機密性を保証するには、サーバーでは --ssl-cert オプションおよび --ssl-key オプションが、またクライアントでは --ssl-verify オプションおよび --ssl-trustfile オプションが必要となります。

関連情報

その他の例は、man ページの ncat(1) を参照してください。

第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 は、Red Hat Enterprise Linux 7 と同じデフォルトの命名規則を使用することを推奨します。

このスキームの詳細は「ネットワークデバイス命名における一貫性」を参照してください。

2.7.1. prefixdevname の概要

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

2.7.2. prefixdevname の設定

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

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

手順

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

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

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

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

2.7.3. prefixdevname の制限事項

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

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

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

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

第3章 Netconsole

netconsole カーネルモジュールにより、ネットワークを通じて、他のコンピューターにカーネルメッセージを記録できます。これにより、ディスクロギングに失敗した場合やシリアルコンソールを使用できない場合に、カーネルのデバッグを行うことができます。

3.1. netconsole の設定

この手順では、Red Hat Enterprise Linux (RHEL) 8 で netconsole を設定する方法を説明します。

前提条件

netconsole-service パッケージがインストールされている。

 ~]# yum install netconsole-service

手順

  1. SYSLOGADDR を、syslogd サーバーの IP アドレスに一致するように、/etc/sysconfig/netconsole ファイルの syslogd サーバーの IP アドレスに設定します。以下に例を示します。

    SYSLOGADDR=192.168.0.1
  2. netconsole.serviceを再起動します。

     ~]# systemctl restart netconsole.service
  3. システムを再起動した後に netconsole.service を実行できるようにします。

     ~]# systemctl enable netconsole.service
  4. クライアントからの netconsole メッセージを、/var/log/messages ファイル (デフォルト) または rsyslog.conf で指定されたファイルで表示します。

     ~]# cat /var/log/messages

第4章 NetworkManager によるネットワーク管理の開始

4.1. NetworkManager の概要

Red Hat Enterprise Linux 8 では、デフォルトのネットワークサービスである NetworkManager を使用します。これは動的ネットワークを制御および設定するデーモンで、使用可能な場合にはネットワークデバイスと接続が起動してアクティブな状態を維持します。従来の ifcfg タイプの設定ファイルは引き続きサポートされます。

各ネットワークデバイスは、NetworkManager デバイスに対応します。ネットワークデバイスの設定は、1 つの NetworkManager 接続に完全に保存されます。NetworkManager 接続を NetworkManager デバイスに適用して、ネットワーク設定を実行できます。

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

関連情報

4.2. NetworkManager のインストール

NetworkManager は、Red Hat Enterprise Linux 8 にデフォルトでインストールされます。インストールされない場合は、root で次のコマンドを入力します。

~]# yum install NetworkManager

4.3. NetworkManager の状態の確認

NetworkManager が起動しているかどうかを確認するには、次のコマンドを実行します。

~]$ systemctl status NetworkManager
NetworkManager.service - Network Manager
   Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled)
   Active: active (running) since Fri, 08 Mar 2013 12:50:04 +0100; 3 days ago

NetworkManager が起動していない場合は、systemctl status コマンドを実行すると、Active: inactive (dead) と表示されることに注意してください。

4.4. NetworkManager の開始

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

~]# systemctl start NetworkManager

システムの起動時に NetworkManager を自動的に有効にするには、次のコマンドを実行します。

~]# systemctl enable NetworkManager

4.5. NetworkManager のツール

表4.1 NetworkManager のツールとアプリケーションの概要

アプリケーションおよびツール説明

nmcli

コマンドラインツール。ユーザーとスクリプトが NetworkManager で対話できるようにします。nmcli を、サーバーなど GUI がないシステムで使用して、NetworkManager の全要素を制御できる点に注意。GUI ツールのようにさらに高度な機能を提供します。

nmtui

NetworkManager 向け curses ベースの単純なテキストユーザーインターフェース (TUI)。

nm-connection-editor

ボンドの設定や接続のチーミングなど、control-center ユーティリティーが対応していない特定タスク用のグラフィカルユーザーインターフェースツール。NetworkManager で保存されたネットワーク接続を追加、削除、変更できます。これを起動するには、端末に nm-connection-editor と入力します。

control-center

GNOME Shell が提供し、デスクトップユーザーが利用可能なユーザーインターフェース。これには、ネットワーク設定ツールが含まれます。Super キーを押してアクティビティーの概要に入るには、Network と入力して Enter を押します。Network 設定ツールが表示されます。

ネットワーク接続アイコン

GNOME Shell が提供するグラフィカルユーザーインターフェースで、NetworkManager から報告されたネットワーク接続の状態を示します。アイコンには複数の状態があり、現在使用中の接続の種類を視覚的に表示します。

4.6. dispatcher スクリプトの実行

NetworkManager には、接続状態に基づいてサービスを開始または停止する追加のカスタムスクリプトを実行する方法があります。デフォルトで /etc/NetworkManager/dispatcher.d/ ディレクトリーが存在し、NetworkManager はそこでアルファベット順にスクリプトを実行します。各スクリプトは、root所有する 実行ファイルであることと、書き込み権限 がファイル所有者にのみ付与されているようにする必要があります。

関連情報

4.7. sysconfig ファイルによる NetworkManager の使用

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

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

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

これを確実に行うには、root で以下を入力し、すべての接続プロファイルを再読み込みします。

~]# nmcli connection reload

または、変更したファイル ifcfg-ifname1 つだけ 再読み込みするには、次のコマンドを実行します。

~]# nmcli con load /etc/sysconfig/network-scripts/ifcfg-ifname

上記のコマンドを使用して複数のファイル名を指定できることに注意してください。

変更後に接続を再開するには、次のコマンドを実行します。

~]# nmcli con up connection-name

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

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

注記

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

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

~]# yum install network-scripts

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

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

関連情報

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

第5章 ネットワーク設定方法の概要

本章では、Red Hat Enterprise Linux 8 で利用可能なネットワーク設定方法の概要を説明します。

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

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

    • テキストユーザーインターフェースツールの nmtui
    • コマンドラインツールの nmcli
    • グラフィカルユーザーインターフェースツールの GNOME GUI
  • NetworkManager を使用 せず に、ネットワークインターフェースを設定する方法は、次のとおりです。

    • ifcfg ファイルを手動で編集する。
  • root ファイルシステムがローカルに ない 場合にネットワーク設定を行う方法は、次のとおりです。

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

第6章 nmtui による IP ネットワークの設定

本章では、NetworkManager のツール nmtui を使用し、ネットワークインターフェースを設定する方法を説明します。

6.1. nmtui の使用

nmtui は、NetworkManager 用のシンプルな curses ベースのテキストユーザーインターフェース (TUI) です。

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

前提条件

  • 端末ウィンドウで nmtui ツールを使用する。NetworkManager-tui パッケージに含まれていますが、デフォルトで NetworkManager とともにインストールされるわけではありません。NetworkManager-tui をインストールするには、次のコマンドを実行します。

    ~]# yum install NetworkManager-tui
  • NetworkManager が起動していることを確認するには、「NetworkManager の状態の確認」を参照してください。

手順

  1. nmtui ツールを起動します。

    ~]$ nmtui

    テキストユーザーインターフェースが表示されます。

    図6.1 NetworkManager のテキストユーザーインターフェースの起動メニュー

    nmtui でのオプションの選択
  2. 移動するには矢印キーを使用するか、Tab を押して次に進むか、Shift+Tab を押して前に戻ります。Enter を押してオプションを選択します。Space バーは、チェックボックスのステータスを切り替えます。

6.1.1. nmtui で接続の編集

前提条件

nmtui を使用して接続を編集するには、NetworkManager TUI メニューで Edit a connection オプションを選択し、Enter を押します。

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

すでにアクティブな接続に加えた変更を適用するには、接続を再アクティブすることが必要です。この場合は、以下の手順を実施します。

前提条件

手順

  1. メニュー項目の Activate a connection を選択します。

    図6.2 nmtui による接続のアクティブ化

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

    図6.3 nmtui による修正した接続の非アクティブ化

    nmtui で修正した接続の無効化
  3. 接続を再度選択し、Activate ボタンをクリックします。

    図6.4 nmtui による修正した接続の再アクティブ化

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

以下のコマンドも利用できます。

~]$ nmtui edit connection-name

接続名を指定していないと、選択メニューが表示されます。接続名が指定され、正しく特定されると、関連する Edit connection (接続の編集) 画面が表示されます。

~]$ nmtui connect connection-name

接続名を指定していないと、選択メニューが表示されます。接続名を指定して正しく特定されると、関連する接続がアクティブになります。無効なコマンドがあると、使用方法に関するメッセージが表示されます。

nmtui は、すべての種類の接続に対応しているわけではない点に注意してください。特に、VPN、WPA Enterprise を使用したワイヤレスネットワーク接続、802.1X を使用したイーサネット接続は編集できません。

関連情報

第7章 nmcli の使用

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

7.1. nmcli について

nmcli (NetworkManager Command Line Interface) は、NetworkManager を介してネットワークを設定する、コマンドラインユーティリティーです。nmcli は、ネットワーク接続の作成、表示、編集、削除、有効化、無効化のほか、ネットワークデバイスのステータスの制御や表示に使用します。

nmcli ユーティリティーは、ユーザーとスクリプトの両方から使用できます。

  • サーバー、ヘッドレスマシン、ターミナルの場合は、nmcli を使用すると、GUI を使用せずに NetworkManager ディレクトリーを直接制御できます。
  • スクリプトの場合、nmcli は、スクリプト処理により適した形式に出力を変更するオプションに対応します。

各ネットワークデバイスは、NetworkManager デバイスに対応します。ネットワークデバイスの設定は、1 つの NetworkManager 接続に完全に保存されます。NetworkManager 接続を NetworkManager デバイスに適用して、ネットワーク設定を実行できます。

nmcli を使用するのに最も一般的な nmcli コマンドは、nmcli devicenmcli connection です。

  • nmcli device コマンドは、システムで使用可能なネットワークデバイスの一覧を表示します。

デバイスは以下のいずれかになります。

  1. managed - NetworkManager の管理下にある。managed デバイスは、connected (アクティブ化かつ設定済み) の場合と、disconnected (接続されていないが再アクティブ化の準備はできている) の場合とがある。
  2. unmanaged - NetworkManager では管理していない。

managed デバイスまたは unmanaged デバイスの設定に関する詳細は、「nmcli による管理対象または管理対象外のデバイスの設定」を参照してください。

nmcli device コマンドは、多くの引数を取ることができます。最も注目すべきものは、statusshowsetconnectdisconnectmodifydelete、および wifi です。全リストを確認する場合は、nmcli device help コマンドを入力してください。

  • nmcli connection コマンドは、NetworkManager で利用可能な接続のプロファイルの一覧を表示します。

アクティブな接続はすべて、リストの一番上に緑色で表示されます。非アクティブな接続は白で表示されます。DEVICE フィールドは、接続が適用されるデバイスを識別します。

nmcli connection コマンドは、接続プロファイルを管理するために多くの引数をとることができます。最も注目すべきものは、showupdownaddmodify、および delete です。全リストを確認する場合は、nmcli connection help コマンドを入力してください。

重要

nmcli コマンドを使用する場合は、nmcli コマンドの一部を入力して Tab キーを押し、オートコンプリート機能でコマンドシーケンスを補完することが推奨されます。複数の補完候補がある場合は、Tab で一覧が表示されます。これにより、コマンド入力を速く簡単に行えるようになります。nmcli のオートコンプリート機能を有効にするには、bash-completion パッケージをインストールしてください。

~]# yum install bash-completion

パッケージのインストール後、次回コンソールにログインしたときに、nmcli auto-complete が利用できるようになります。これを現在のコンソールでも有効にするには、次のコマンドを入力します。

~]$ source /etc/profile.d/bash_completion.sh

nmcli を使用した基本的な書式は、以下のとおりです。

nmcli [OPTIONS] OBJECT { COMMAND | help }
  • ここでの [OPTIONS] は、次のような任意のオプションになります。

    -t (terse)

    このモードは、コンピューターのスクリプト処理に使用される場合があり、値だけを表示する簡潔な出力を確認できます。

    例7.1 簡潔な出力の表示

    ~]$ nmcli -t device
    ens3:ethernet:connected:Profile 1
    lo:loopback:unmanaged:
    -f (field)

    このオプションでは、どのフィールドを出力に表示できるかを指定します。たとえば、NAME、UUID、TYPE、AUTOCONNECT、ACTIVE、DEVICE、STATE です。フィールドは、1 つまたは複数使用できます。複数のフィールドを使用する場合は、フィールドを区切るコンマの後に空白を入力しないでください。

    例7.2 出力内のフィールドの指定

    ~]$ nmcli -f DEVICE,TYPE device
    DEVICE  TYPE
    ens3    ethernet
    lo      loopback

    また、次のようなスクリプトの記述に適しています。

    ~]$ nmcli -t -f DEVICE,TYPE device
    ens3:ethernet
    lo:loopback
    -p (pretty)

    このオプションでは、nmcli により、人間が理解可能な出力を生成します。たとえば、値を揃え、ヘッダーを表示します。

    例7.3 pretty モードで出力の表示

    ~]$ nmcli -p device
    =====================
      Status of devices
    =====================
    DEVICE  TYPE      STATE      CONNECTION
    --------------------------------------------------------------
    ens3    ethernet  connected  Profile 1
    lo      loopback  unmanaged  --
    -h (help)
    ヘルプ情報を表示します。
  • ここでの OBJECT は、generalnetworkingradioconnectiondeviceagentmonitor のいずれかのオプションになります。
注記

コマンドでは、上記のオプションの接頭辞を使用できます。たとえば、nmcli con helpnmcli c helpnmcli connection help は、同じ出力を生成します。

  • COMMAND は、必須の nmcli コマンドです。
  • help では、次のように、指定されたオブジェクトで使用可能なアクションの一覧を表示します。
~]$ nmcli OBJECT help

以下に例を示します。

~]$ nmcli c help

7.2. nmcli のプロパティー名とエイリアスの概要

前提条件

プロパティー名が、NetworkManager が一般的なオプションの識別に使用する特定の名前である。重要な nmcli プロパティー 名の例を以下に示します。

connection.type
特定の接続のタイプ。指定できる値は、adsl、bond、bond-slave、bridge、bridge-slave、bluetooth、cdma、ethernet、gsm、infiniband、olpc-mesh、team、team-slave、vlan、wifi、wimax です。各接続タイプには、タイプ固有のコマンドオプションがあります。TYPE_SPECIFIC_OPTIONS の一覧は、man ページの nmcli(1) で確認できます。たとえば、gsm 接続では、アクセスポイント名を apn に指定しておく必要があります。wifi デバイスは、サービスセット識別子を ssid に指定しておく必要があります。
connection.interface-name
接続に関連するデバイス名。たとえば、enp1s0 になります。
connection.id

接続プロファイルに使用される名前。接続名を指定しないと、次のように接続名が生成されます。

connection.type -connection.interface-name

connection.id接続プロファイル の名前になります。デバイスを表すインターフェース名 (wlan0ens3em1 など) と混同しないようにしてください。なお、ユーザーはインターフェースと同じ名前を接続に付けることができますが、これは別のものです。1 つのデバイスに複数の接続プロファイルを利用することもできます。これは、モバイルデバイスの場合や異なるデバイス間でネットワークケーブルを切り替える場合に非常に便利です。必要に応じて、設定を編集するのではなく、異なるプロファイルを作成してインターフェースに適用します。id オプションも接続プロファイル名を参照します。

showupdown などの nmcli コマンドで最も重要なオプションを以下に示します。

id
ユーザーが接続プロファイルに割り当てる識別用文字列。nmcli connection コマンドで、ID を使用して接続を指定できます。コマンド出力の NAME フィールドには、必ず接続 ID が表示されます。con-name が参照するのと同じ接続プロファイル名が参照されます。
uuid
システムが接続プロファイルに割り当てる一意の識別用文字列。nmcli connection コマンドで、uuid を使用して接続を指定できます。

エイリアスとプロパティー名

エイリアス は、プロパティー 名の別名です。エイリアスは、nmcliで内部的にプロパティーに変換されます。エイリアス の方が読みやすくなりますが、プロパティー名 を使用することが推奨されます。これはいずれも交換可能なものとして使用できます。

エイリアスプロパティー定義

type

type bond

connection.type

connection.type bond

特定の接続のタイプ。接続タイプの例 - bond、bridge、ethernet、wifi、infiniband、vlan

ifname

ifname enp1s0

connection.interface-name

connection.interface-name enp1s0

接続が属するデバイスの名前

con-name

con-name "My Connection"

connection.id

connection.id "My Connection"

接続名

7.3. nmcli コマンドの簡単な例

重要

nmcli コマンドを使用する場合は、nmcli コマンドの一部を入力して Tab キーを押し、オートコンプリート機能でコマンドシーケンスを補完することが推奨されます。複数の補完候補がある場合は、Tab で一覧が表示されます。これにより、コマンド入力を速く簡単に行えるようになります。nmcli のオートコンプリート機能を有効にするには、bash-completion パッケージをインストールしてください。

~]# yum install bash-completion

パッケージのインストール後、次回コンソールにログインしたときに、nmcli auto-complete が利用できるようになります。これを現在のコンソールでも有効にするには、次のコマンドを入力します。

~]$ source /etc/profile.d/bash_completion.sh

特定のユースケースにおける nmcli の使用例を、以下に示します。

例7.4 すべての接続を表示

~]$ nmcli connection show
  NAME       UUID                                  TYPE      DEVICE
Profile 1  db1060e9-c164-476f-b2b5-caec62dc1b05  ethernet    ens3
bond0       aaf6eb56-73e5-4746-9037-eed42caa8a65  ethernet    --

例7.5 現在アクティブな接続のみを表示

~]$ nmcli connection show --active
  NAME       UUID                                  TYPE      DEVICE
Profile 1  db1060e9-c164-476f-b2b5-caec62dc1b05  ethernet     ens3

例7.6 接続のアクティブ化

接続をアクティブにするには、up 引数を使用します。

~]$ nmcli connection show
  NAME       UUID                                  TYPE      DEVICE
Profile 1  db1060e9-c164-476f-b2b5-caec62dc1b05  ethernet    ens3
bond0       aaf6eb56-73e5-4746-9037-eed42caa8a65  ethernet    --
~]$ nmcli connection up id bond0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
~]$ nmcli connection show
NAME       UUID                                  TYPE      DEVICE
Profile 1  db1060e9-c164-476f-b2b5-caec62dc1b05  ethernet    ens3
bond0       aaf6eb56-73e5-4746-9037-eed42caa8a65  ethernet   bond0

例7.7 特定のアクティブな接続の非アクティブ化

特定のアクティブな接続を非アクティブにするには、down 引数を使用します。

~]$ nmcli connection down id bond0
~]$ nmcli connection show
  NAME       UUID                                  TYPE      DEVICE
Profile 1  db1060e9-c164-476f-b2b5-caec62dc1b05  ethernet    ens3
bond0      aaf6eb56-73e5-4746-9037-eed42caa8a65  ethernet    --

例7.8 自動的に再起動できないようにデバイスの接続解除

~]$ nmcli device disconnect id bond0
注記

nmcli connection down コマンドはデバイスの接続を解除しますが、その後でデバイスが接続を自動的にアクティブにするのを妨げるものではありません。nmcli device disconnect コマンドは、デバイスの接続を解除し、手動で操作しない限り、その後デバイスが接続を自動的にアクティブ化しないようにします。接続の connection.autoconnect フラグが yes に設定されていると、接続は、切断されたデバイスで自動的に再開します。この場合、nmcli device disconnect コマンドではなく、nmcli connection down コマンドを使用します。

例7.9 NetworkManager が認識したデバイスとその状態のみを表示

~]$ nmcli device status
DEVICE  TYPE      STATE      CONNECTION
ens3    ethernet  connected  Profile 1
lo      loopback  unmanaged  --

例7.10 デバイスの一般情報の表示

~]$ nmcli device show
GENERAL.DEVICE:                         ens3
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         52:54:00:0A:2F:ED
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     ens3
[...]

例7.11 NetworkManager の全体的な状態の確認

~]$ nmcli general status
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN
connected  full          enabled  enabled  enabled  enabled

簡潔モードの場合は、以下のようになります。

~]$ nmcli -t -f STATE general
connected

例7.12 NetworkManager のロギングの状態の表示

~]$ 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

nmcli コマンドは、以下の省略形を使用することもできます。

表7.1 nmcli コマンドの省略形の例

nmcli コマンド省略形

nmcli general status

nmcli g

nmcli general logging

nmcli g log

nmcli connection show

nmcli con show または nmcli c

nmcli connection show --active

nmcli con show -a または nmcli c -a

nmcli device status

nmcli dev または nmcli d

nmcli device show

nmcli dev show または nmcli d show

関連情報

7.4. nmcli による管理対象または管理対象外のデバイスの設定

手順

  1. 現在利用可能なネットワーク接続を一覧表示するには、以下を実行します。

    ~]$ nmcli con show
    NAME              UUID                                  TYPE            DEVICE
    Auto Ethernet     9b7f2511-5432-40ae-b091-af2457dfd988  802-3-ethernet  --
    ens3              fb157a65-ad32-47ed-858c-102a48e064a2  802-3-ethernet  ens3
    MyWiFi            91451385-4eb8-4080-8b82-720aab8328dd  802-11-wireless wlan0

    出力の NAME フィールドは常に connection ID (名前) を示すことに留意してください。これはインターフェース名と同じように見えますが、異なるものです。上記の 2 つ目の接続では、NAME フィールドの ens3 が、ユーザーがインターフェース ens3 に適用されるプロファイルに指定した connection ID です。最後の接続では、ユーザーが接続 ID MyWiFi をインターフェース wlan0 に割り当てました。

    イーサネット接続を追加すると、設定プロファイルが作成され、それがデバイスに割り当てられます。新規プロファイルを作成する前に、以下のように利用可能なデバイスを確認します。

    ~]$ nmcli device status
    DEVICE  TYPE      STATE         CONNECTION
    ens3    ethernet  disconnected  --
    ens9    ethernet  disconnected  --
    lo      loopback  unmanaged     --
  2. デバイスを、NetworkManager の管理対象外に設定するには、次のコマンドを実行します。

    ~]$ nmcli device set ifname managed no

たとえば、enp1s0 を unmanaged に設定するには、次のコマンドを実行します。

~]$ nmcli device status
DEVICE      TYPE      STATE      CONNECTION
bond0       bond      connected  bond0
virbr0      bridge    connected  virbr0
enp7s0      ethernet  connected  bond-slave-enp7s0
enp1s0      ethernet  connected  bond-slave-enp1s0
enp8s0      ethernet  unmanaged  --
~]$ nmcli device set enp1s0 managed no
~]$ nmcli device status
DEVICE      TYPE      STATE      CONNECTION
bond0       bond      connected  bond0
virbr0      bridge    connected  virbr0
enp7s0      ethernet  connected  bond-slave-enp7s0
enp1s0      ethernet  unmanaged  --
enp8s0      ethernet  unmanaged  --
注記

デバイスを管理対象外に設定すると、そのデバイスは NetworkManager で制御されません。設定するデバイスが一覧で管理対象外になっている場合、そのデバイスには、nmcli コマンドが有効ではありません。ただし、デバイスは接続されたままになります。

関連情報

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

7.5. nmcli による接続プロファイルの作成および修正

デバイスに関連付ける接続プロファイルを作成できます。

重要

nmcli コマンドを使用する場合は、nmcli コマンドの一部を入力して Tab キーを押し、オートコンプリート機能でコマンドシーケンスを補完することが推奨されます。複数の補完候補がある場合は、Tab で一覧が表示されます。これにより、コマンド入力を速く簡単に行えるようになります。nmcli のオートコンプリート機能を有効にするには、bash-completion パッケージをインストールしてください。

~]# yum install bash-completion

パッケージのインストール後、次回コンソールにログインしたときに、nmcli auto-complete が利用できるようになります。これを現在のコンソールでも有効にするには、次のコマンドを入力します。

~]$ source /etc/profile.d/bash_completion.sh

手順

nmcli を使用して、NetworkManager の新しいプロファイルを 作成 する基本書式は以下のとおりです。

nmcli c add {COMMON_OPTIONS} [IP_OPTIONS]/[NETMASK] [GATEWAY]
  1. {COMMON_OPTIONS} は、エイリアスまたはプロパティー名です。「エイリアス名およびプロパティー名」を参照してください。
  2. [IP_OPTIONS] は IP アドレスです。

    • IPv4 アドレスの場合 - ip4
    • IPv6 アドレスの場合 - ip6
  3. [NETMASK] は、ネットワークマスクの幅です。たとえば、255.255.255.0 は、プレフィックス 198.51.100.0/24 のネットワークマスクです。
  4. [GATEWAY] は、ゲートウェイ情報です。

    • IPv4 アドレスの場合 - gw4
    • IPv6 アドレスの場合 - gw6
nmcli connection add type ethernet con-name connection-name ifname interface-name ip4 address/network mask gw4 address
  1. IPv4 アドレスで接続プロファイルを作成するには、次のコマンドを実行します。

    ~]$ nmcli c add type ethernet ifname enp1s0 con-name "My Connection" ip4 192.168.2.100/24 gw4 192.168.2.1
    Connection 'My Connection' (f0c23472-1aec-4e84-8f1b-be8a2ecbeade) successfully added.
  2. 作成した接続を有効にするには、次のコマンドを実行します。

    ~]$ nmcli c up _"My Connection"
  3. 作成した接続を表示するには、次のコマンドを実行します。

    ~]$ nmcli c show "My Connection"

nmcli c show con-name コマンドを使用すると、空の値やデフォルト値のものも含め、接続内の全プロパティーが表示されることに留意してください。出力がターミナルページより長い場合は、出力での移動が簡単にできるように、nmcli によりページャーが生成されます。ページャーでは、矢印キーで上下に移動し、q キーで終了します。

接続をよりコンパクトに表示するには、-o オプションを使用します。

~]$ nmcli -o c show "My Connection"

nmcli -o c show con-name コマンドでも接続の内容は表示されますが、空のプロパティーや、デフォルト値が設定されたプロパティーは省略されます。これにより、通常は、出力がより読みやすい短いものになります。

関連情報

  • プロパティーとその設定の詳細は、man ページの nm-settings(5) を参照してください。

7.6. nmcli インタラクティブ接続エディターの使用

nmcli ツールには、インタラクティブな接続エディターがあります。これにより、必要に応じて接続パラメーターを変更できます。使用するには、次のコマンドを実行します。

~]$ nmcli con edit

表示された一覧から、有効な 接続の種類 を入力します。その後、パラメーターを修正できます。

~]$ nmcli con edit
Valid connection types: generic, 802-3-ethernet (ethernet), pppoe, 802-11-wireless (wifi), wimax, gsm, cdma, infiniband, adsl, bluetooth, vpn, 802-11-olpc-mesh (olpc-mesh), vlan, bond, team, bridge, bond-slave, team-slave, bridge-slave, no-slave, tun, ip-tunnel, macsec, macvlan, vxlan, dummy
Enter connection type: ethernet

===| nmcli interactive connection editor |===

Adding a new '802-11-wireless' connection

Type 'help' or '?' for available commands.
Type 'describe [<setting>.<prop>]' for detailed property description.

You may edit the following settings: connection, 802-11-wireless (wifi), 802-11-wireless-security (wifi-sec), 802-1x, ipv4, ipv6, proxy
nmcli>

これで、イーサネット 接続の設定を編集できるようになりました。使用可能なコマンドの一覧を表示するには、help または ? と入力します。

nmcli> ?
------------------------------------------------------------------------------
---[ Main menu ]---
goto     [<setting> | <prop>]        :: go to a setting or property
remove   <setting>[.<prop>] | <prop> :: remove setting or reset property value
set      [<setting>.<prop> <value>]  :: set property value
describe [<setting>.<prop>]          :: describe property
print    [all | <setting>[.<prop>]]  :: print the connection
verify   [all | fix]                 :: verify the connection
save     [persistent|temporary]      :: save the connection
activate [<ifname>] [/<ap>|<nsp>]    :: activate the connection
back                                 :: go one level up (back)
help/?   [<command>]                 :: print this help
nmcli    <conf-option> <value>       :: nmcli configuration
quit                                 :: exit nmcli
------------------------------------------------------------------------------
nmcli>

終了するには、quit コマンドを実行します。

例7.13 nmcli インタラクティブ接続エディターを使用した新しい イーサネット 接続の追加

~]$ nmcli con edit
Valid connection types: generic, 802-3-ethernet (ethernet), pppoe, 802-11-wireless (wifi), wimax, gsm, cdma, infiniband, adsl, bluetooth, vpn, 802-11-olpc-mesh (olpc-mesh), vlan, bond, team, bridge, bond-slave, team-slave, bridge-slave, no-slave, tun, ip-tunnel, macsec, macvlan, vxlan, dummy
Enter connection type: ethernet

===| nmcli interactive connection editor |===

Adding a new '802-3-ethernet' connection

Type 'help' or '?' for available commands.
Type 'describe [<setting>.<prop>]' for detailed property description.

You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, ipv4, ipv6, proxy
nmcli> set connection.id new_enp7s0
nmcli> set connection.interface-name enp7s0
nmcli> set connection.autoconnect yes
nmcli> save
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
Connection 'new_enp7s0' (34ac8f9a-e9d8-4e0b-9751-d5dc87cc0467) successfully saved.
nmcli> quit

新しいネットワークインターフェース設定ファイルは、/etc/sysconfig/network-scripts ディレクトリーに作成されます。

~]# ls -lrt /etc/sysconfig/network-scripts/ifcfg*
-rw-r--r--. 1 root root 254 Aug 15  2017 /etc/sysconfig/network-scripts/ifcfg-lo
-rw-r--r--. 1 root root 304 Apr 26 22:14 /etc/sysconfig/network-scripts/ifcfg-ens3
-rw-r--r--. 1 root root 266 Aug  6 11:03 /etc/sysconfig/network-scripts/ifcfg-new_enp7s0

7.7. nmcli による接続プロファイルの修正

接続プロファイルの既存の設定を修正できます。

重要

nmcli コマンドを使用する場合は、nmcli コマンドの一部を入力して Tab キーを押し、オートコンプリート機能でコマンドシーケンスを補完することが推奨されます。複数の補完候補がある場合は、Tab で一覧が表示されます。これにより、コマンド入力を速く簡単に行えるようになります。nmcli のオートコンプリート機能を有効にするには、bash-completion パッケージをインストールしてください。

~]# yum install bash-completion

パッケージのインストール後、次回コンソールにログインしたときに、nmcli auto-complete が利用できるようになります。これを現在のコンソールでも有効にするには、次のコマンドを入力します。

~]$ source /etc/profile.d/bash_completion.sh

手順

  1. 接続プロファイルの 1 つまたは複数のプロパティーを修正するには、次のコマンドを使用します。

    ~]$ nmcli c modify

    たとえば、connection.id"My Connection" から "My favorite connection" に変更し、connection.interface-nameenp7s0 に変更する場合は、次のコマンドを実行します。

    ~]$ nmcli c modify "My Connection" connection.id "My favorite connection" connection.interface-name enp7s0
  2. 接続の修正後、nmcli を使用して変更を 適用 するには、次のコマンドを入力して接続を再度アクティブにします。

    ~]$ nmcli con up "My favorite connection"
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/16)
  3. 修正した接続を表示するには、nmcli con show con-name コマンドを入力します。

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

以下は、グラフィカルユーザーインターフェース (GUI) を使用してネットワークインターフェースを変更する方法になります。

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

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

ネットワーク 設定にアクセスするには、画面右上隅で GNOME Shell の ネットワーク接続アイコン をクリックして、メニューを開きます。

図8.1 ネットワーク接続アイコンメニュー

ネットワークアイコン

GNOME Shell のネットワーク接続アイコンをクリックすると、以下が表示されます。

  • 現在接続しているカテゴリー別のネットワーク一覧 (WiredWi-Fi など)。
  • NetworkManager で検出されている 利用可能なネットワーク の一覧。ネットワークに接続している場合は、接続名の左側に表示される。
  • 設定済みの仮想プライベートネットワーク (VPN) への接続オプション。

    ならびに

  • ネットワーク設定 メニューエントリーの選択オプション。

8.2. control-center によるネットワーク接続の作成

GNOME の control-center アプリケーションを介してネットワーク接続を作成できます。このアプリケーションは、利用可能なネットワークデバイスとその現在の設定を表示するグラフィカルユーザーインターフェースです。

この手順では、control-center を使用して、新たに 有線無線VPN の接続を作成する方法を説明します。

手順

  1. Super キーを押してアクティビティーの概要に入り、Settings と入力して Enter キーを押します。次に、左側の Network タブを選択すると、ネットワーク 設定ツールが表示されます。

    図8.2 ネットワーク設定ウィンドウの表示

    ネットワーク設定
  2. 新しい接続を追加するには、プラスボタンをクリックします。

    • 有線接続 を追加する場合は、有線 エントリーの横のプラスボタンを押して、接続を設定します。
    • VPN 接続の場合は、VPN エントリーの横にあるプラスボタンをクリックします。IPsec VPN を追加するには、IPsec ベースの VPN をクリックし、接続を設定します。
    • Wi-Fi 接続の場合は、Settings メニューの左側の Wi-Fi エントリーをクリックして、接続を設定します。

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

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

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

手順

  1. 2 つの IPv4 DNS サーバーアドレスの設定

    ~]$ nmcli con mod test-lab ipv4.dns "8.8.8.8 8.8.4.4"

    これにより、設定しておいた DNS サーバーが置き換えられる点に留意してください。

    または、2 つの IPv6 DNS サーバーアドレスを設定します。

    ~]$ nmcli con mod test-lab ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"

    これにより、設定しておいた DNS サーバーが置き換えられる点に留意してください。

  2. 以前の設定に別の DNS サーバーを追加する場合は、+ プレフィックスを使用します。

    ~]$ nmcli con mod test-lab +ipv4.dns "8.8.8.8 8.8.4.4"
    ~]$ nmcli con mod test-lab +ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"
  3. 必要に応じて、DNS 検索ドメインを設定します。

    ~]$ nmcli con mod test-lab ipv4.dns-search "example.com"
  4. 新しい イーサネット 接続をアクティブにするには、次のコマンドを実行します。

    ~]$ nmcli con up test-lab ifname ens9
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
  5. デバイスおよび接続の状態を確認するには、次のコマンドを実行します。

    ~]$ nmcli device status
    DEVICE  TYPE      STATE      CONNECTION
    ens3    ethernet  connected  my-office
    ens9    ethernet  connected  test-lab
    lo      loopback  unmanaged  --
  6. 新規に設定した接続の詳細情報を表示するには、次のコマンドを実行します。
~]$ nmcli -p con show test-lab
===============================================================================
                     Connection profile details (test-lab)
===============================================================================
connection.id:                          test-lab
connection.uuid:                        05abfd5e-324e-4461-844e-8501ba704773
connection.interface-name:              ens9
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
connection.timestamp:                   1410428968
connection.read-only:                   no
connection.permissions:
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.secondaries:
connection.gateway-ping-timeout:        0
[output truncated]

-p, --pretty オプションを使用すると、出力にタイトルバナーとセクション区切りが追加されます。

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

nmcli インタラクティブエディターを使用して静的イーサネット接続を設定するには、次のコマンドを実行します。

~]$ nmcli con edit type ethernet con-name ens3

===| nmcli interactive connection editor |===

Adding a new '802-3-ethernet' connection

Type 'help' or '?' for available commands.
Type 'describe [>setting<.>prop<]' for detailed property description.

You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, ipv4, ipv6, dcb
nmcli> set ipv4.addresses 192.168.122.88/24
Do you also want to set 'ipv4.method' to 'manual'? [yes]: yes
nmcli> set ipv4.dns 192.168.122.1
nmcli> set ipv4.dns-search example.com
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] yes
Connection 'ens3' (704a5666-8cbd-4d89-b5f9-fa65a3dbc916) successfully saved.
nmcli> quit

デフォルトの動作では、接続プロファイルが永続的に保存されます。必要な場合は、save temporary コマンドを実行して、次回の再起動時まで、プロファイルをメモリーにのみ保持できます。

関連情報

  • プロパティーとその設定の詳細は、man ページの nm-settings(5) を参照してください。

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

手順

  1. ホストから DHCP サーバーに送信されたホスト名を変更するには、dhcp-hostname プロパティーを修正します。

    ~]$ nmcli con modify my-office my-office ipv4.dhcp-hostname host-name ipv6.dhcp-hostname host-name
  2. ホストから DHCP サーバーに送信された IPv4 クライアント ID を変更するには、dhcp-client-id プロパティーを修正します。

    ~]$ nmcli con modify my-office my-office ipv4.dhcp-client-id client-ID-string

    IPv6 には、IPv6 の識別子を作成する dhclient、つまり dhcp-client-id プロパティーがありません。詳細は、man ページの dhclient(8) を参照してください。

  3. DHCP サーバーからホストに送信された DNS サーバーを無視するには、ignore-auto-dns プロパティーを修正します。

    ~]$ nmcli con modify my-office my-office ipv4.ignore-auto-dns yes ipv6.ignore-auto-dns yes

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

インタラクティブエディターを使用して動的イーサネット接続を設定するには、次のコマンドを実行します。

~]$ nmcli con edit type ethernet con-name ens3

===| nmcli interactive connection editor |===

Adding a new '802-3-ethernet' connection

Type 'help' or '?' for available commands.
Type 'describe [<setting>.<prop>]' for detailed property description.

You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, ipv4, ipv6, dcb
nmcli> describe ipv4.method

=== [method] ===
[NM property description]
IPv4 configuration method.  If 'auto' is specified then the appropriate automatic method (DHCP, PPP, etc) is used for the interface and most other properties can be left unset.  If 'link-local' is specified, then a link-local address in the 169.254/16 range will be assigned to the interface.  If 'manual' is specified, static IP addressing is used and at least one IP address must be given in the 'addresses' property.  If 'shared' is specified (indicating that this connection will provide network access to other computers) then the interface is assigned an address in the 10.42.x.1/24 range and a DHCP and forwarding DNS server are started, and the interface is NAT-ed to the current default network connection.  'disabled' means IPv4 will not be used on this connection.  This property must be set.

nmcli> set ipv4.method auto
nmcli> save
Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection.
Do you still want to save? [yes] yes
Connection 'ens3' (090b61f7-540f-4dd6-bf1f-a905831fc287) successfully saved.
nmcli> quit

デフォルトの動作では、接続プロファイルが永続的に保存されます。必要な場合は、save temporary コマンドを実行して、次回の再起動時まで、プロファイルをメモリーにのみ保持できます。

関連情報

  • プロパティーとその設定の詳細は、man ページの nm-settings(5) を参照してください。

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

GNOME の control-center アプリケーションを介してネットワーク接続を設定できます。

手順

  1. Super キーを押してアクティビティーの概要に入り、Settings と入力して Enter キーを押します。次に、左側の Network メニューエントリーを選択すると、Network 設定ツールが表示されます。「ネットワーク設定ウィンドウの表示」を参照してください。
  2. Wired ネットワークインターフェースを選択します

    システムに、デフォルトで、1 つの有線 接続プロファイル が作成されて設定されます。名前は、Wired となります。必要に応じて、1 つのインターフェースに対して複数のプロファイルを作成して適用できます。デフォルトのプロファイルは削除できませんが、設定は変更できます。

  3. 既存の接続を編集する歯車アイコンをクリックして、デフォルトの Wired プロファイルを編集します。または、プラスボタンをクリックして、新しい接続用に設定オプションを設定します。
注記

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

基本設定オプション

Wired ダイアログでは、Identity メニューエントリーを選択すると、次の設定が表示されます。

図9.1 有線接続に関する基本設定オプション

有線 ID
  • Name - ネットワーク接続の分かりやすい名前を入力します。この名前は、Network ウィンドウのメニューでこの接続を一覧に表示する際に使用されます。
  • MAC Address - このプロファイルを適用する必要があるインターフェースの MAC アドレスを選択します。
  • Cloned Address - 必要な場合は、使用する別の MAC アドレスを入力します。
  • MTU - 必要な場合は、使用する特定の 最大転送単位 (MTU) を入力します。MTU 値は、リンク層が転送する最大パケットサイズをバイト単位で表したものです。この値のデフォルトは 1500 で、通常は指定したり変更したりする必要はありません。

control-center を使用した有線用の IPv4 設定の構成

有線接続での IPv4 設定は、さらに設定できます。Wired ダイアログで、IPv4 メニューエントリーをクリックします。

図9.2 IPv4 設定の構成

IPv4 有線

IPv4 メニューエントリーでは、以下を設定できます。

  • ネットワークへの接続に使用する IPv4 Method
  • DNS
  • Routes

IPv4 Method

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

Link-Local Only - 接続しているネットワークに DHCP サーバーがなく、IP アドレスを手動で割り当てない場合は、このオプションを選択します。接頭辞 169.254/16 付きのランダムなアドレスが、RFC 3927 に従って割り当てられます。

Manual - IP アドレスを手動で割り当てる場合は、このオプションを選択します。

Disable - この接続では IPv4 は無効です。

DNS

DNS セクションでは、AutomaticON になっている場合、Automatic を 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 (この接続はネットワーク上のリソースのためだけに使用)

このチェックボックスを選択すると、この接続はデフォルトルートになりません。よくある例としては、本社への接続が VPN トンネルや専用線で、インターネット向けトラフィックにこの接続を使用しない場合が挙げられます。このオプションを選択すると、この接続で自動的に学習したルートを使用することが明確なトラフィックか、手動で入力したトラフィックのみがこの接続を経由します。

control center を使用した有線用の IPv6 設定

また、有線接続で IPv6 設定を構成するには、IPv6 メニューエントリーをクリックします。

図9.3 IPv6 設定の構成

IPv6 有線

IPv6 メニューエントリーでは、以下を設定できます。

  • ネットワークへの接続に使用する IPv6 Method
  • DNS
  • Routes

IPv6 Method

Automatic - IPv6 ステートレスアドレス自動設定 (SLAAC) を使用して、ハードウェアのアドレスとルーター通知 (RA) に基づくステートレスの自動設定を作成するには、このオプションを選択します。

Automatic, DHCP only - RA を使用せず、直接 DHCPv6 に情報を要求してステートフルな設定を作成する場合は、このオプションを選択します。

Link-Local Only - 接続しているネットワークに DHCP サーバーがなく、IP アドレスを手動で割り当てない場合は、このオプションを選択します。接頭辞 FE80::0 付きのランダムなアドレスが、RFC 4862 に従って割り当てられます。

Manual - IP アドレスを手動で割り当てる場合は、このオプションを選択します。

Disable - この接続では IPv6 は無効です。

control-center を使用した有線用の 802.1X セキュリティー設定

802.1X セキュリティーとは、ポートベースのネットワークアクセス制御 (PNAC) 用の IEEE 規格の名前です。これは、WPA エンタープライズ とも呼ばれます。802.1X セキュリティーは、物理ネットワークから 論理ネットワーク へのアクセスを制御する手段です。論理ネットワークに参加するクライアントはすべて、正しい 802.1X 認証方法を使用して、ルーターなどのサーバーで認証を行う必要があります。

有線接続で 802.1X セキュリティー を設定するには、Security メニューエントリーをクリックします。

図9.4 control-center による有線用の 802.1X セキュリティーの設定

有線セキュリティー

設定を有効にするには、電源ボタンを ON に設定して、以下の認証方法から 1 つ選択します。

  • TLSTransport Layer Security (トランスポート層セキュリティー) の略です。TLS の設定 に進みます
  • PWDPassword の略です。「PWD の設定」に進みます
  • FAST は、Flexible Authentication through Secure Tunneling (セキュアトンネリングを介したフレキシブル認証) の略です。FAST の設定 に進みます
  • Tunneled TLS を選択します。これは Tunneled Transport Layer Security (トンネル化トランスポート層セキュリティー) の略で、TTLS、あるいは EAP-TTLS とも呼ばれます。Tunneled TLS の設定に進みます
  • Protected EAP (PEAP) を選択します。これは (Protected Extensible Authentication Protocol (保護された拡張認証プロトコル) の略で、Protected EAP (PEAP) の設定 に進みます

TLS 設定の構成

トランスポート層セキュリティー (TLS) では、クライアントとサーバーは、TLS プロトコルを使用した相互認証が行われます。

TLS セキュリティーを使用すると、証明書を管理する公開鍵インフラストラクチャー (PKI) のオーバーヘッドが必要になります。TLS セキュリティーを使用する利点は、侵害されたパスワードでは (W)LAN へのアクセスが許可されないことです。侵入者は、認証するクライアントの秘密鍵にもアクセスしなければなりません。

NetworkManager は、対応する TLS のバージョンを決定しません。NetworkManager は、ユーザーが入力するパラメーターを集め、手順を処理するデーモン wpa_supplicant に渡します。このデーモンは、OpenSSL を使用して TLS トンネルを確立します。OpenSSL 自体は、SSL/TLS プロトコルバージョンを処理します。両端が対応する一番高いバージョンが使用されます。

TLS を設定するには、「control-center によるイーサネット接続の設定」で説明されている手順に従います。以下の設定が可能です。

アイデンティティー
このサーバーの識別子を入力します。
ユーザー証明書
クリックして、Distinguished Encoding Rules (DER) または Privacy Enhanced Mail (PEM) でエンコードされた個人の X.509 証明書ファイルを参照し、選択します。
CA 証明書
クリックして、Distinguished Encoding Rules (DER) または Privacy Enhanced Mail (PEM) でエンコードされた X.509 の 証明書 の認証ファイルを参照し、選択します。
秘密鍵
Distinguished Encoding Rules (DER)、Privacy Enhanced Mail (PEM)、または Personal Information Exchange Syntax Standard (PKCS #12) でエンコードされた 秘密鍵 ファイルを参照し、選択します。
秘密鍵のパスワード
Private key フィールドの秘密鍵のパスワードを入力します。Show password を選択すると、入力時にパスワードが表示されます。

PWD 設定の構成

パスワード (PWD) により、ユーザー名とパスワードを指定できます。

Username
認証プロセスで使用するユーザー名を入力します。
Password
認証プロセスで使用するパスワードを入力します。

FAST の設定

FAST を設定するには、「control-center によるイーサネット接続の設定」で説明される手順に従います。以下の設定が可能です。

Anonymous Identity
このサーバーの識別子を入力します。
Allow automatic PAC provisioning (自動 PAC プロビジョニングを許可する)
チェックボックスをオンにして有効にし、Anonymous (匿名)、Authenticated (認証済み)、および Both から選択します。
PAC file
クリックして、Protected Access Credential (PAC) ファイルを参照し、選択します。
Inner authentication

GTC - Generic Token Card (汎用トークンカード)

MSCHAPv2 - Microsoft Challenge Handshake Authentication Protocol version 2 (Microsoft チャレンジハンドシェイク認証プロトコル version 2)

Username
認証プロセスで使用するユーザー名を入力します。
Password
認証プロセスで使用するパスワードを入力します。

Tunneled TLS の設定

Tunneled TLS を設定するには、「control-center によるイーサネット接続の設定」で説明されている手順に従います。以下の設定が可能です。

Anonymous identity
この値は、非暗号化 ID として使用されます。
CA 証明書
クリックして、認証局の証明書を参照し、選択します。
Inner authentication

PAP - パスワード認証プロトコル

MSCHAP - チャレンジハンドシェイク認証プロトコル

MSCHAPv2 - Microsoft Challenge Handshake Authentication Protocol version 2 (Microsoft チャレンジハンドシェイク認証プロトコル version 2)

MSCHAPv2 (no EAP) - 拡張認証プロトコルなしの Microsoft Challenge Handshake Authentication Protocol version 2

CHAP - チャレンジハンドシェイク認証プロトコル

MD5 - Message Digest 5 (暗号学的ハッシュ関数)

GTC - Generic Token Card (汎用トークンカード)

Username
認証プロセスで使用するユーザー名を入力します。
Password
認証プロセスで使用するパスワードを入力します。

Protected EAP (PEAP) の設定

Protected EAP (PEAP) を設定するには、「control-center によるイーサネット接続の設定」で説明されている手順に従います。以下の設定が可能です。

Anonymous Identity
この値は、非暗号化 ID として使用されます。
CA 証明書
クリックして、認証局の証明書を参照し、選択します。
PEAP version
使用する、保護された EAP のバージョン。Automatic、0、1 のいずれか。
Inner authentication

MSCHAPv2 - Microsoft Challenge Handshake Authentication Protocol version 2 (Microsoft チャレンジハンドシェイク認証プロトコル version 2)

MD5 - Message Digest 5 (暗号学的ハッシュ関数)

GTC - Generic Token Card (汎用トークンカード)

Username
認証プロセスで使用するユーザー名を入力します。
Password
認証プロセスで使用するパスワードを入力します。

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

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

前提条件

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

手順

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

    $ nm-connection-editor
  2. + ボタンをクリックして、新しい接続を追加します。
  3. イーサネット 接続タイプを選択し、作成 をクリックします。
  4. イーサネット タブで、デバイスを選択します。必要に応じて、イーサネット関連の設定をさらに選択します。 イーサネット接続の設定
  5. IPv4 Settings タブで、IPv4 設定を構成します。たとえば、静的な IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを設定します。 nm 接続エディターにおける IPv4 設定
  6. IPv6 設定 タブで、IPv6 設定を構成します。たとえば、静的な IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを設定します。 nm 接続エディターにおける IPv6 設定
  7. 接続を読み込みます。
  8. nm-connection-editor を閉じます。

第10章 Wi-Fi 接続の管理

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

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

関連情報

プロパティーとその設定の詳細は、man ページの nm-settings(5) を参照してください。

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

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

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

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

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

手順

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

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

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

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

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

10.6. nmcli による Wi-Fi の 802.1X セキュリティーの構成

この手順では、nmcli ユーティリティーを使用して、ワイヤレス 接続または 有線 接続でネットワークセキュリティー設定を構成する方法を説明します。

前提条件

  • nmcli ユーティリティーがインストールされている。

手順

  1. ワイヤレス 接続の場合は、認証された key-mgmt (キー管理) プロトコルを設定します。セキュアな Wi-Fi 接続の鍵のメカニズムを設定します。
  2. 802-1x 認証設定の構成

表10.1 802-1x 認証設定

802-1x 認証設定名前

802-1x.identity

アイデンティティー

802-1x.ca-cert

CA 証明書

802-1x.client-cert

ユーザー証明書

802-1x.private-key

秘密鍵

802-1x.private-key-password

秘密鍵のパスワード

たとえば、EAP-TLS 認証メソッドを使用して WPA2 Enterprise を設定するには、以下の設定を適用します。

~]$ nmcli c add type wifi ifname wlan0 con-name 'My Wifi Network' \
      802-11-wireless.ssid 'My Wifi' \
      802-11-wireless-security.key-mgmt wpa-eap \
      802-1x.eap tls \
      802-1x.identity identity@example.com \
      802-1x.ca-cert /etc/pki/my-wifi/ca.crt \
      802-1x.client-cert /etc/pki/my-wifi/client.crt \
      802-1x.private-key /etc/pki/my-wifi/client.key \
      802-1x.private-key-password s3cr3t
注記

nmcli ツールを使用して 有線 接続を設定する場合は、鍵管理設定の 802-11-wireless.ssid および 802-11-wireless-security を除き、ワイヤレス 接続と同じ手順に従います。

第11章 既存の接続プロファイルでデフォルトのゲートウェイの設定

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

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

11.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 に設定するには、次のコマンドを実行します。

    $ sudo nmcli connection modify example ipv6.gateway "2001:db8::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 dev example proto static metric 100 pref medium

11.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 に設定するには、次のコマンドを実行します。

    nmcli> set ipv6.gateway 2001:db8::1
  3. 必要に応じて、デフォルトゲートウェイが正しく設定されていることを確認します。

    nmcli> print
    ...
    ipv4.gateway:                           192.0.2.1
    ...
    ipv6.gateway:                           2001:db8::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 dev example proto static metric 100 pref medium

11.3. using nm-connection-editor で、既存の接続にデフォルトのゲートウェイを設定

ほとんどの場合、管理者は、たとえば「control-center によるイーサネット接続の設定」の説明に従って接続を作成する場合のデフォルトのゲートウェイを設定します。

本セクションでは、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 フィールドにアドレスを入力します。

      nm 接続エディター ipv4 にデフォルトのゲートウェイを設定

  4. IPv6 デフォルトゲートウェイを設定します。たとえば、接続のデフォルトゲートウェイの IPv6 アドレスを 2001:db8::1 に設定するには、以下を行います。

    1. IPv6 タブを開きます。
    2. そのゲートウェイのアドレスが含まれる IP アドレスの範囲の隣の gateway フィールドにアドレスを入力します。

      nm 接続エディター 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 dev example proto static metric 100 pref medium

11.4. control-center を使用して、既存の接続でフォルトのゲートウェイを設定

ほとんどの場合、管理者は、たとえば「control-center によるイーサネット接続の設定」の説明に従って接続を作成する場合のデフォルトのゲートウェイを設定します。

本セクションでは、control-center アプリケーションを使用して作成した接続で、デフォルトのゲートウェイを設定または更新する方法を説明します。

前提条件

  • デフォルトゲートウェイが設定されている接続で、静的 IP アドレスを少なくとも 1 つ設定している。
  • control-center アプリケーションで、接続のネットワーク設定を開いている。「control-center によるイーサネット接続の設定」を参照してください。

手順

  1. IPv4 デフォルトゲートウェイを設定します。たとえば、その接続のデフォルトゲートウェイの IPv4 アドレスを 192.0.2.1 に設定します。

    1. IPv4 タブを開きます。
    2. そのゲートウェイのアドレスが含まれる IP アドレスの範囲の隣の gateway フィールドにアドレスを入力します。

      コントロールセンター ipv4 でデフォルトのゲートウェイを設定

  2. IPv6 デフォルトゲートウェイを設定します。たとえば、接続のデフォルトゲートウェイの IPv6 アドレスを 2001:db8::1 に設定するには、以下を行います。

    1. IPv6 タブを開きます。
    2. そのゲートウェイのアドレスが含まれる IP アドレスの範囲の隣の gateway フィールドにアドレスを入力します。

      コントロールセンター 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 dev example proto static metric 100 pref medium

第12章 静的ルートの設定

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

12.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 "…​" を使用して、特定ルートを削除します。

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

12.3. control-center による静的ルートの設定

GNOME で control-center を使用して、ネットワーク接続の設定に静的ルートを追加します。

本セクションの手順では、198.51.100.1 で実行しているゲートウェイを使用する 192.0.2.0/24 ネットワークにルートを追加する方法を説明します。

前提条件

  • ネットワークが設定されている。
  • 静的ルートのゲートウェイが、インターフェースで直接到達できる。
  • control-center アプリケーションで接続のネットワーク設定が開いている。「control-center によるイーサネット接続の設定」を参照してください。

手順

  1. IPv4 タブを開きます。
  2. 必要に応じて、IPv4 タブの Routes セクションの On ボタンをクリックして自動ルートを無効にし、静的ルートのみを使用します。自動ルートが有効になっている場合は、Red Hat Enterprise Linux が静的ルートと、DHCP サーバーから受け取ったルートを使用します。
  3. アドレス、ネットマスク、ゲートウェイを入力します。必要に応じて、メトリック値を入力します。

    コントロールセンターの IPv4 の静的ルート

  4. 適用 をクリックします。
  5. Network ウィンドウに戻り、接続のボタンを Off に切り替えてから On に戻して、接続を無効にして再度有効にし、変更を適用します。

    警告

    接続を再起動すると、そのインターフェースの接続が一時的に中断します。

  6. 必要に応じて、ルートがアクティブであることを確認します。

    $ ip route
    ...
    192.0.2.0/24 via 198.51.100.1 dev example proto static metric 100

12.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 ボタンをクリックして、アドレス、ネットマスク、ゲートウェイを入力します。必要に応じてメトリック値を入力します。

    nm 接続エディターの IPv4 静的ルート

  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

12.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 と入力します。

第13章 VLAN タグの設定

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

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

13.1. 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 設定 nm 接続エディター

  5. IPv4 Settings タブで、IPv4 設定を構成します。たとえば、静的な IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを設定します。 nm 接続エディターにおける VLAN IPv4 設定
  6. IPv6 設定 タブで、IPv6 設定を構成します。たとえば、静的な IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを設定します。 nm 接続エディターにおける VLAN IPv6 設定
  7. 保存 をクリックして VLAN 接続を保存します。
  8. nm-connection-editor を閉じます。
  9. 必要に応じて、設定を検証します。

    # 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 fe80::8dd7:9030:6f8e:89e6/64 scope link noprefixroute
           valid_lft forever preferred_lft forever

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

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

前提条件

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

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

手順

  1. 必要に応じて、利用可能なネットワークインターフェースを表示します。

    # ip address show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:d5:e0:fb brd ff:ff:ff:ff:ff:ff
  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. 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
  5. IPv6 設定を構成します。たとえば、静的 IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを vlan10 接続に設定するには、次のコマンドを実行します。

    # nmcli connection modify vlan10 ipv6.addresses '2001:db8::1/32'
    # nmcli connection modify vlan10 ipv6.gateway '2001:db8::fffe'
    # nmcli connection modify vlan10 ipv6.dns '2001:db8::fffd'
    # nmcli connection modify vlan10 ipv6.method manual
  6. 必要に応じて、設定を検証します。

    # 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 fe80::8dd7:9030:6f8e:89e6/64 scope link noprefixroute
           valid_lft forever preferred_lft forever

関連情報

  • nmcli の例は、man ページの nmcli-examples(7) を参照してください。
  • 設定可能なすべての vlan プロパティーは、man ページの nm-settings (5)vlan setting セクションを参照してください。

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

ネットワークブリッジは、MAC アドレスに基づいてネットワーク間のトラフィックを転送するリンク層デバイスです。ブリッジデバイスは、MAC アドレスのテーブルに基づいて、パッケージの転送を決定します。ブリッジは、ネットワークトラフィックをリッスンし、どのホストが各ネットワークに接続しているかを把握して、MAC アドレステーブルを構築します。

たとえば、以下を行うために、Red Hat Enterprise Linux 8 ホストでソフトウェアブリッジを使用できます。

  • ハードウェアブリッジをエミュレートする
  • 仮想化環境では、仮想マシンをホストと同じネットワークに統合する

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

14.1. nmcli コマンドによるネットワークブリッジの設定

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

前提条件

  • サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
  • root ユーザーとしてログインしている。

手順

  1. ブリッジインターフェースを作成します。たとえば、bridge0 という名前のブリッジインターフェースを作成するには、次のコマンドを実行します。

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

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

    # nmcli connection modify bridge0 bridge.priority '16384'

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

  5. 必要に応じて、ネットワークインターフェースの表示と、次の手順でブリッジに追加するインターフェース名をスレーブとして書き留めておきます。

    # nmcli device
    DEVICE  TYPE      STATE         CONNECTION
    enp1s0  ethernet  connected     enp1s0
    enp7s0  ethernet  disconnected  --
    enp8s0  ethernet  disconnected  --
    lo      loopback  unmanaged     --
  6. ポートインターフェースをブリッジの接続に割り当てます。たとえば、インターフェース enp7s0 および enp8s0bridge0 接続に追加するには、次のコマンドを実行します。

    # 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
  7. 接続をアクティベートします。たとえば、bridge0 接続を有効にするには、次のコマンドを実行します。

    # nmcli connection up bridge0
  8. スレーブデバイスが接続されており、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
  9. 必要に応じて、次のコマンドを使用して、ブリッジの状態を表示します。

    # bridge link show bridge0
    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

関連情報

  • nmcli の例は、man ページの nmcli-examples(7) を参照してください。
  • 設定可能なすべてのブリッジプロパティーは、man ページの nm-settings(5)bridge settings セクションを参照してください。
  • 設定可能なすべてのブリッジポートプロパティーは、man ページの nm-settings(5)bridge-port settings セクションを参照してください。
  • bridge ユーティリティーの詳細は、man ページの bridge (8) を参照してください。

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

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

前提条件

  • サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。

手順

  1. 端末を開き、nm-connection-editor と入力します。

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

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

      1. インターフェースの接続タイプを選択します。たとえば、有線接続に Ethernet を選択します。
      2. 必要に応じて、スレーブデバイスの接続名を設定します。
      3. Ethernet タブの Device フィールドで、ボンディングにスレーブとして追加するネットワークインターフェースを選択します。
      4. 保存 をクリックします。
    3. ブリッジに追加する各インターフェースに、直前の手順を繰り返します。

      nm 接続エディターで nic をブリッジに追加

    4. 必要に応じて、スパニングツリープロトコル (STP) オプションなどの追加のブリッジ設定を行います。
  4. IPv4 Settings タブで、IPv4 設定を構成します。たとえば、静的な IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定します。 nm 接続エディターで IPv4 設定をブリッジ
  5. IPv6 設定 タブで、IPv6 設定を構成します。たとえば、静的な IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定します。 nm 接続エディターで IPv6 設定をブリッジ
  6. ブリッジ接続を保存します。
  7. nm-connection-editor を閉じます。
  8. 必要に応じて、次のコマンドを使用して、ブリッジの状態を表示します。

    # bridge link show bridge0
    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

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

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

前提条件

  • Red Hat Enterprise Linux 8 がインストールされている。
  • システムに、アクティブなサブスクリプションが割り当てられている。

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

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

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

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

重要

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

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

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

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

15.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 への対応

はい

はい

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

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

前提条件

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

手順

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

    # yum install teamd NetworkManager-team

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

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

前提条件

  • サーバーに、2 つ以上のネットワークカードがインストールされている。
  • ネットワークカードがスイッチに接続されている。

手順

  1. チームインターフェースを作成します。たとえば、activebackup ランナーと、team0 という名前のインターフェースおよび接続の両方を使用するチームインターフェースを作成するには、次のコマンドを実行します。

    # nmcli connection add type team con-name team0 ifname team0 team.runner activebackup
  2. 必要に応じて、リンク監視を設定します。たとえば、ethtool リンク監視を設定するには、team0 接続を変更します。

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

    # nmcli connection modify team0 ipv6.addresses '2001:db8::1/32'
    # nmcli connection modify team0 ipv6.gateway '2001:db8::fffe'
    # nmcli connection modify team0 ipv6.dns '2001:db8::fffd'
    # nmcli connection modify team0 ipv6.dns-search 'example.com'
    # nmcli connection modify team0 ipv6.method manual
  5. 必要に応じて、ネットワークインターフェースを表示し、次のステップでチームに追加するインターフェースの名前を書き留めておきます。

    # nmcli device
    DEVICE  TYPE      STATE         CONNECTION
    enp1s0  ethernet  connected     enp1s0
    enp7s0  ethernet  disconnected  --
    enp8s0  ethernet  disconnected  --
    lo      loopback  unmanaged     --
    重要

    いずれの接続にも割り当てられていないチームでネットワークインターフェースのみを使用できます。上記の例では、enp7s0 インターフェースと enp8s0 インターフェースのみを使用できます。

  6. ポートインターフェースをチームの接続に割り当てます。たとえば、インターフェース enp7s0 および enp8s0 を、team0 接続に追加するには、次のコマンドを実行します。

    # 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
  7. 接続をアクティベートします。たとえば、team0 接続をアクティベートにするには、次のコマンドを実行します。

    # nmcli connection up team0
  8. 必要に応じて、チームの状態を表示します。

    # 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

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

関連情報

  • 「teamd サービス、ランナー、およびリンク監視の理解」.
  • nmcli の例は、man ページの nmcli-examples(7) を参照してください。
  • 設定可能なすべてのチームプロパティーは、man ページの nm-settings (5)team セクションを参照してください。
  • JSON 設定や JSON の例で設定できるパラメーターは、man ページの teamd.conf (5) を参照してください。

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

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

前提条件

  • サーバーに、2 つ以上のネットワークカードがインストールされている。
  • ネットワークカードがスイッチに接続されている。

手順

  1. 端末を開き、nm-connection-editor と入力します。

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

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

      1. インターフェースの接続タイプを選択します。たとえば、有線接続に Ethernet を選択します。
      2. 必要に応じて、スレーブデバイスの接続名を設定します。
      3. Ethernet タブの Device フィールドで、スレーブとしてチームに追加するネットワークインターフェースを選択します。

        重要

        ネットワークインターフェースは、設定されていないチームでのみ使用できます。

      4. 保存 をクリックします。
    3. チームに追加する各インターフェースに直前の手順を繰り返します。

      nm 接続エディターで nic をチームに追加

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

      1. Runner タブで、ランナーを選択します。
      2. Link Watcher で、リンクのリンク監視と、そのオプションを設定します。
      3. OK をクリックします。
  5. IPv4 Settings タブで、IPv4 設定を構成します。たとえば、静的な IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定します。 nm 接続エディターでチームの IPv4 設定
  6. IPv6 設定 タブで、IPv6 設定を構成します。たとえば、静的な IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定します。 nm 接続エディターでチームの IPv6 設定
  7. 保存 をクリックして、チーム接続を保存します。
  8. nm-connection-editor を閉じます。
  9. 必要に応じて、チームの状態を表示します。

    # 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

関連情報

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

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

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

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

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

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

16.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 への対応

はい

はい

16.4. nmcli コマンドによるネットワークボンディングの設定

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

前提条件

  • サーバーに、2 つ以上のネットワークカードがインストールされている。
  • ネットワークカードがスイッチに接続されている。

手順

  1. ボンドインターフェースを作成します。たとえば、active-backup モードを使用し、両方のインターフェースとの接続の名前が bond0 であるボンドインターフェースを作成する場合は、次のコマンドを実行します。

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

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

    # nmcli connection modify bond0 ipv6.addresses '2001:db8::1/32
    # nmcli connection modify bond0 ipv6.gateway '2001:db8::fffe'
    # nmcli connection modify bond0 ipv6.dns '2001:db8::fffd'
    # nmcli connection modify bond0 ipv6.dns-search 'example.com'
    # nmcli connection modify bond0 ipv6.method manual
  4. 任意で、ネットワークインターフェースを表示して、ボンドに追加する予定のインターフェース名を書き留めます。

    # # nmcli device
    DEVICE  TYPE      STATE         CONNECTION
    enp1s0  ethernet  connected     enp1s0
    enp7s0  ethernet  disconnected  --
    enp8s0  ethernet  disconnected  --
    lo      loopback  unmanaged     --
  5. ボンドの接続にポートインターフェースを割り当てます。たとえば、インターフェース enp7s0 および enp8s0bond0 接続に追加するには、次のコマンドを実行します。

    # 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
  6. 接続をアクティベートします。たとえば、bond0 接続をアクティベートにするには、次のコマンドを実行します。

    # nmcli connection up bond0
  7. スレーブデバイスが接続されており、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
  8. 必要に応じて、ボンドの状態を表示します。

    # 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

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

関連情報

  • nmcli の例は、man ページの nmcli-examples(7) を参照してください。
  • ボンディングを作成する際に nmcli コマンドの bond.options パラメーターに設定できるオプションの一覧は、https://www.kernel.org/doc/Documentation/networking/bonding.txt を参照してください。

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

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

前提条件

  • サーバーに、2 つ以上のネットワークカードがインストールされている。
  • ネットワークカードがスイッチに接続されている。

手順

  1. 端末を開き、nm-connection-editor と入力します。

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

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

      1. インターフェースの接続タイプを選択します。たとえば、有線接続に Ethernet を選択します。
      2. 必要に応じて、スレーブデバイスの接続名を設定します。
      3. Ethernet タブの Device フィールドで、ボンドにスレーブとして追加するネットワークインターフェースを選択します。

        重要

        ネットワークインターフェースは、設定されていないボンディングでのみ使用できます。

      4. 保存 をクリックします。
    3. ボンディングに追加する各インターフェースで直前の手順を繰り返します。

      nm 接続エディターで nic をボンドに追加

    4. オプションで、Media Independent Interface (MII) の監視間隔などの他のオプションを設定します。
  5. IPv4 Settings タブで、IPv4 設定を構成します。たとえば、静的な IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定します。

    nm 接続エディターで IPv4 設定にボンディング

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

    nm 接続エディターで IPv6 設定にボンディング

  7. 保存 をクリックして、ボンド接続を保存します。
  8. nm-connection-editor を閉じます。
  9. 必要に応じて、ボンドの状態を表示します。

    $ 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

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

第17章 VPN 接続の設定

本セクションでは、VPN 接続を設定する方法を説明します。

17.1. control-center による VPN 接続の確立

仮想プライベートネットワーク (VPN) は、インターネットを介してローカルネットワークに接続する方法です。Libreswan が提供する IPsec は、VPN を作成するのに推奨される方法です。Libreswan は、VPN 用のオープンソースで、ユーザー空間の IPsec 実装です。仮想プライベートネットワーク (VPN) は、ローカルエリアネットワーク (LAN) と、別のリモート LAN との間の通信を可能にします。これは、インターネットなどの中間ネットワークにトンネルを設定して行います。設定している VPN トンネルは、通常、認証と暗号化を使用します。

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

前提条件

手順

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

    一般

    Gateway - リモート VPN ゲートウェイの名前または IP アドレスです。

    認証

    Type

    • IKEv2 (証明書)- クライアントは、証明書により認証されます。これはより安全です (デフォルト)。
    • IKEv1 (XAUTH) - クライアントは、ユーザー名とパスワード、またはシークレット (PSK) で認証されます。

      Advanced セクションでは、以下の設定が可能です。

      図17.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 に対応します。最初から接続を再起動しなくても、接続がエンドポイントを移行することを MOBIKE (RFC 4555) が許可するかどうかを設定します。これは、有線、無線、またはモバイルデータの接続の切り替えを行うモバイルデバイスで使用されます。値は、no (デフォルト) または yes です。
  2. その他の設定には、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 になっている場合は、ルート通知 (RA) または使用する DHCP からのルートが使用されますが、他の静的ルートを追加することもできることに注意してください。OFF の場合は、静的ルートだけが使用されます。

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

      このチェックボックスを選択すると、この接続はデフォルトルートになりません。このオプションを選択すると、この接続で自動的に学習したルートを使用することが明確なトラフィックか、手動で入力したトラフィックのみがこの接続を経由します。

  3. また、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 設定となることに注意してください。

  4. VPN 接続の編集が終了したら、追加 ボタンをクリックして設定をカスタマイズするか、適用 ボタンをクリックして、既存の接続に保存します。
  5. プロファイルを ON に切り替え、VPN 接続をアクティブにします。
注記

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

関連情報

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

17.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 接続エディターの vpn タブ

    3. 必要に応じて、詳細 ボタンをクリックして、追加設定を設定します。以下の設定を構成できます。

      • 識別

        • ドメイン - 必要な場合は、ドメイン名を入力します。
      • セキュリティー

        • Phase1 アルゴリズム は、Libreswan パラメーター ike に対応します。暗号化チャンネルの認証および設定に使用するアルゴリズムを入力します。
        • Phase2 アルゴリズム は、Libreswan パラメーター esp に対応します。IPsec ネゴシエーションに使用するアルゴリズムを入力します。

          • Disable PFS フィールドで PFS (Perfect Forward Secrecy) を無効にし、PFS に対応していない古いサーバーとの互換性があることを確認します。
        • Phase1 ライフタイム は、Libreswan パラメーター ikelifetime に対応します。このパラメーターは、トラフィックの暗号化に使用される鍵が有効である期間を定義します。
        • Phase2 ライフタイム は、Libreswan パラメーター salifetime に対応します。このパラメーターは、セキュリティー関連が有効である期間を定義します。
      • 接続性

        • リモートネットワーク は、Libreswan パラメーター rightsubnet に対応し、VPN から到達できる宛先のプライベートリモートネットワークです。

          • 絞り込むことのできる narrowing フィールドを確認します。これは IKEv2 ネゴシエーションの場合にのみ有効であることに注意してください。
        • フラグメンテーションの有効化 は、Libreswan パラメーターの 断片化 に対応します。IKE 断片化を許可するかどうかを指定します。有効な値は、yes (デフォルト) または no です。
        • Mobike の有効化 は、Libreswan パラメーター mobike に対応します。パラメーターは、最初から接続を再起動しなくても、接続がエンドポイントを移行するようにするため、MOBIKE (Mobility and Multihoming Protocol) (RFC 4555) を許可するかどうかを定義します。これは、有線、無線、またはモバイルデータの接続の切り替えを行うモバイルデバイスで使用されます。値は、no (デフォルト) または yes です。
  5. IPv4 設定 タブで、IP 割り当て方法を選択し、必要に応じて、追加の静的アドレス、DNS サーバー、検索ドメイン、ルートを設定します。

    IPsec IPv4 タブ

  6. 接続を読み込みます。
  7. nm-connection-editor を閉じます。

関連情報

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

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

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

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

RHEL 8 の ifcfg ファイルでは、現在のソリューションの機能を使用するのに、NetworkManager が実行することが必要になる点に注意してください。

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

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

前提条件

  • NetworkManager が実行している。

手順

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::2/48

    IPv6 の ifcfg 設定オプションの詳細は、man ページの nm-settings-ifcfg-rh(5) を参照してください。

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

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

前提条件

  • NetworkManager が実行している。

手順

  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 つは任意です。

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

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

前提条件

  • NetworkManager が実行している。

手順

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

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

    USERS="joe bob alice"

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

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

注記

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

前提条件

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

19.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 が無効になります。

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

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

20.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 パラメーターの説明を参照してください。

第22章 MACsec の設定

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

22.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 を、その他のネットワーク層のセキュリティープロトコルと組み合わせて、これらの標準規格が提供するさまざまなセキュリティー機能を活用します。

22.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 デバイスが設定され、ネットワークに使用できます。

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

第23章 異なるドメインでの各種 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 サーバーを使用します。

23.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 パラメーターの説明を参照してください。

第24章 RDMA (Remote Direct Memory Access) および RMA (Remove Memory Access) ネットワークの使用

本セクションでは、コアの RDMA (Remote Direct Memory Access) サブシステムおよび RMA (Remove Memory Access) サブシステムと OpenSM サービスの構成を説明します。

24.1. コア RDMA サブシステムの設定

本セクションでは、rdma サービスを設定し、ユーザーがシステムで固定 (ピン留め) できるメモリーの量を増やす方法を説明します。

24.1.1. rdma サービスの設定

rdma サービスは、カーネルの RDMA スタックを管理します。Red Hat Enterprise Linux が、InfiniBand デバイス、iWARP デバイス、または RoCE デバイスを検出すると、udev デバイスマネージャーが systemdrdma サービスを開始するよう指示します。これにより、システムが RDMA ハードウェアを検出すると、RDMA サブシステムが自動的に起動します。

手順

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

    # yum install rdma-core
  2. /etc/rdma/rdma.conf ファイルを編集し、有効にするモジュールの変数を yes に設定します。以下は、Red Hat Enterprise Linux 8 のデフォルトの /etc/rdma/rdma.conf ファイルです。

    # Load IPoIB
    IPOIB_LOAD=yes
    # Load SRP (SCSI Remote Protocol initiator support) module
    SRP_LOAD=yes
    # Load SRPT (SCSI Remote Protocol target support) module
    SRPT_LOAD=yes
    # Load iSER (iSCSI over RDMA initiator support) module
    ISER_LOAD=yes
    # Load iSERT (iSCSI over RDMA target support) module
    ISERT_LOAD=yes
    # Load RDS (Reliable Datagram Service) network protocol
    RDS_LOAD=no
    # Load NFSoRDMA client transport module
    XPRTRDMA_LOAD=yes
    # Load NFSoRDMA server transport module
    SVCRDMA_LOAD=no
    # Load Tech Preview device driver modules
    TECH_PREVIEW_LOAD=no
    注記

    Red Hat Enterprise Linux は、システムが i40iw ドライバーを使用する Intel x722 iWARP デバイスを検出すると、RDMA サブシステムを起動しません。これは、このすべてのデバイスが iWARP 対応ではないためです。これにより、かなりのシステムリソースが無駄になるのを防ぐことができます。Intel x722 デバイスを搭載したサーバーで RDMA サブシステムを有効にして起動するには、TECH_PREVIEW_LOAD パラメーターを yes に設定します。

  3. RHEL が自動検出しないハードウェア (つまり soft-iWARP デバイスおよび soft-RoCE デバイス) を使用している場合は、rdma サービスを有効にします。

    # systemctl enable rdma.service
  4. サーバーを再起動します。

    # systemctl reboot

24.1.2. システムの固定 (ピン留め) にユーザーが使用できるメモリー量の増加

RDMA 操作には、物理メモリーのピン留めが必要です。これは、カーネルがメモリーをスワップ領域に書き込むことができないことを意味します。ユーザーがメモリーを過剰にピン留めすると、システムのメモリーが不足し、カーネルがプロセスを終了してより多くのメモリーを解放できます。このため、メモリーのピン留めは特権付きの操作になります。

root 以外のユーザーが大規模な RDMA アプリケーションを実行する場合は、システムでこれらのユーザーがピン留めするメモリー容量を増やす必要があります。本セクションでは、rdma グループのメモリー使用量を無制限に設定する方法を説明します。

手順

  • root ユーザーで、以下の内容で /etc/security/limits.d/rdma.conf ファイルを作成します。

    @rdma    soft    memlock     unlimited
    @rdma    hard    memlock     unlimited

検証手順

  1. /etc/security/limits.d/rdma.conf ファイルを編集したら rdma グループのメンバーとしてログインします。

    Red Hat Enterprise Linux は、ユーザーのログイン時に、更新された ulimit の設定を適用することに注意してください。

  2. ulimit -l コマンドを使用して制限を表示します。

    $ ulimit -l
    unlimited

    コマンドが unlimited を返すと、ユーザーはメモリーのピン留めを無制限にできます。

関連情報

  • システムリソースの制限の詳細は、man ページの limits.conf(5) を参照してください。

24.2. InfiniBand サブネットマネージャーの設定

すべての InfiniBand ネットワークでは、ネットワークが機能するために、サブネットマネージャーが実行している必要があります。これは、2 台のマシンがスイッチなしで直接接続されている場合にも当てはまります。

複数のサブネットマネージャーを使用することもできます。その場合は、サブネットマネージャーの 1 つがマスターとして機能し、マスターサブネットマネージャーが失敗した場合に引き継げるように、別のサブネットマネージャーがスレーブとして機能します。

ほとんどの InfiniBand スイッチには、埋め込みサブネットマネージャーが含まれます。ただし、最新のサブネットマネージャーが必要な場合や、制御が必要な場合は、Red Hat Enterprise Linux が提供する OpenSM サブネットマネージャーを使用します。

24.2.1. opensm サブネットマネージャーのインストール

本セクションでは、OpenSM サブネットマネージャーをインストールする方法を説明します。

手順

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

    # yum install opensm
  2. デフォルトインストールがお使いの環境に一致しない場合に OpenSM を設定します。

    InfiniBand ポートが 1 つ だけインストールされている場合は、ホストがマスターサブネットマネージャーとして機能する必要があり、カスタムの変更は必要ありません。デフォルト設定は変更せずに動作します。

  3. opensm サービスを有効にして開始します。

    # systemctl enable --now opensm

関連情報

  • opensm サービスのコマンドラインオプションの一覧、およびパーティション構成、サービスの品質 (QoS)、およびその他の高度なトピックの詳細は、man ページの opensm(8) を参照してください。

24.2.2. 簡単な方法での OpenSM の設定

本セクションでは、カスタマイズした設定が必要ない場合に OpenSM を設定する方法を説明します。

前提条件

  • 1 つ以上の InfiniBand ポートがサーバーにインストールされている。

手順

  1. ibstat ユーティリティーを使用してポートの GUID を取得します。

    # ibstat -d device_name
    CA 'mlx4_0'
       CA type: MT4099
       Number of ports: 2
       Firmware version: 2.42.5000
       Hardware version: 1
       Node GUID: 0xf4521403007be130
       System image GUID: 0xf4521403007be133
       Port 1:
          State: Active
          Physical state: LinkUp
          Rate: 56
          Base lid: 3
          LMC: 0
          SM lid: 1
          Capability mask: 0x02594868
          Port GUID: 0xf4521403007be131
          Link layer: InfiniBand
       Port 2:
          State: Down
          Physical state: Disabled
          Rate: 10
          Base lid: 0
          LMC: 0
          SM lid: 0
          Capability mask: 0x04010000
          Port GUID: 0xf65214fffe7be132
          Link layer: Ethernet
    注記

    一部の InfiniBand アダプターでは、ノード、システム、およびポートに、同じ GUID を使用します。

  2. /etc/sysconfig/opensm ファイルを編集し、GUIDS パラメーターで GUID を設定します。

    GUIDS="GUID_1 GUID_2"
  3. 必要に応じて、サブネットで複数のサブネットマネージャーが利用可能な場合には、PRIORITY パラメーターを設定します。以下に例を示します。

    PRIORITY=15

関連情報

  • /etc/sysconfig/opensm で設定できるパラメーターの詳細は、そのファイルのドキュメントを参照してください。

24.2.3. opensm.conf ファイルを編集して OpenSM の設定

本セクションでは、/etc/rdma/opensm.conf ファイルを編集して OpenSM を設定する方法を説明します。利用可能な InfiniBand ポートが 1 つだけの場合は、この方法を使用して OpenSM 設定をカスタマイズできます。

前提条件

  • サーバーにインストールされる InfiniBand ポートは 1 つだけです。

手順

  1. /etc/rdma/opensm.conf ファイルを編集し、お使いの環境に合わせて設定をカスタマイズします。
  2. opensm サービスを再起動します。

    # systemctl restart opensm

関連情報

  • 更新した opensm パッケージをインストールすると、yum ユーティリティーが新しい OpenSM 設定ファイルを /etc/rdma/opensm.conf.rpmnew として保存します。このファイルを、カスタマイズした /etc/rdma/opensm.conf ファイルと比較して、手動で変更を加えます。

24.2.4. 複数の OpenSM インスタンスの設定

本セクションでは、OpenSM の複数のインスタンスを設定する方法を説明します。

前提条件

  • 1 つ以上の InfiniBand ポートがサーバーにインストールされている。

手順

  1. 必要に応じて、/etc/rdma/opensm.conf ファイルを /etc/rdma/opensm.conf.orig ファイルにコピーします。

    # cp /etc/rdma/opensm.conf /etc/rdma/opensm.conf.orig

    更新した opensm パッケージをインストールすると、yum ユーティリティーが /etc/rdma/opensm.conf を上書きします。この手順で作成したコピーで、以前のファイルと新しいファイルを比較して変更を特定し、インスタンス固有の opensm.conf ファイルで手動で取り入れることができます。

  2. /etc/rdma/opensm.conf ファイルのコピーを作成します。

    # cp /etc/rdma/opensm.conf /etc/rdma/opensm.conf.1

    作成するインスタンスごとに、設定ファイルのコピーに一意の連続した番号を追加します。

  3. 前の手順で作成したコピーを編集し、お使いの環境に合わせて、インスタンスの設定をカスタマイズします。たとえば、guid パラメーター、subnet_prefix パラメーター、および logdir パラメーターを設定します。
  4. 必要に応じて、このサブネット専用の一意の名前で partitions.conf ファイルを作成し、opensm.conf ファイルの対応するコピーの partition_config_file パラメーターでそのファイルを参照します。
  5. 作成するインスタンスごとに、前の手順を繰り返します。
  6. opensm サービスを開始します。

    # systemctl start opensm

    opensm サービスは、/etc/rdma/ ディレクトリー内の各 opensm.conf.* ファイルで一意のインスタンスを自動的に開始します。複数の opensm.conf.* ファイルが存在する場合、サービスは /etc/sysconfig/opensm ファイルおよびベースファイル /etc/rdma/opensm.conf の設定を無視します。

関連情報

  • 更新した opensm パッケージをインストールすると、yum ユーティリティーが新しい OpenSM 設定ファイルを /etc/rdma/opensm.conf.rpmnew として保存します。このファイルを、カスタマイズした /etc/rdma/opensm.conf.\* ファイルと比較して、手動で変更を加えます。

24.2.5. パーティション設定の作成

本セクションでは、OpenSM 向けに InfiniBand パーティション設定を作成する方法を説明します。パーティションを使用すると、管理者はイーサネット VLAN と同じように、InfiniBand にサブネットを作成できます。

重要

40 Gbps などの特定の速度でパーティションを定義する場合は、このパーティション内のすべてのホストが少なくともこの速度を対応している必要があります。ホストが速度要件を満たさない場合は、パーティションに参加できません。したがって、パーティションの速度を、パーティションに参加することが許可されているホストが対応する最低速度に設定します。

前提条件

  • 1 つ以上の InfiniBand ポートがサーバーにインストールされている。

手順

  1. /etc/rdma/partitions.conf ファイルを編集し、パーティションを設定します。

    注記

    すべてのファブリックには 0x7fff パーティションが含まれ、すべてのスイッチとすべてのホストがそのファブリックに属する必要があります。

    たとえば、次の内容をファイルに追加して、減速した 10 Gbps でデフォルトパーティション 0x7fff を作成し、40 Gbps の速度でパーティション 0x0002 を作成します。

    # For reference:
    # IPv4 IANA reserved multicast addresses:
    #   http://www.iana.org/assignments/multicast-addresses/multicast-addresses.txt
    # IPv6 IANA reserved multicast addresses:
    #   http://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xml
    #
    # mtu =
    #   1 = 256
    #   2 = 512
    #   3 = 1024
    #   4 = 2048
    #   5 = 4096
    #
    # rate =
    #   2  =   2.5 GBit/s
    #   3  =  10   GBit/s
    #   4  =  30   GBit/s
    #   5  =   5   GBit/s
    #   6  =  20   GBit/s
    #   7  =  40   GBit/s
    #   8  =  60   GBit/s
    #   9  =  80   GBit/s
    #   10 = 120   GBit/s
    
    Default=0x7fff, rate=3, mtu=4, scope=2, defmember=full:
        ALL, ALL_SWITCHES=full;
    Default=0x7fff, ipoib, rate=3, mtu=4, scope=2:
        mgid=ff12:401b::ffff:ffff   # IPv4 Broadcast address
        mgid=ff12:401b::1           # IPv4 All Hosts group
        mgid=ff12:401b::2           # IPv4 All Routers group
        mgid=ff12:401b::16          # IPv4 IGMP group
        mgid=ff12:401b::fb          # IPv4 mDNS group
        mgid=ff12:401b::fc          # IPv4 Multicast Link Local Name Resolution group
        mgid=ff12:401b::101         # IPv4 NTP group
        mgid=ff12:401b::202         # IPv4 Sun RPC
        mgid=ff12:601b::1           # IPv6 All Hosts group
        mgid=ff12:601b::2           # IPv6 All Routers group
        mgid=ff12:601b::16          # IPv6 MLDv2-capable Routers group
        mgid=ff12:601b::fb          # IPv6 mDNS group
        mgid=ff12:601b::101         # IPv6 NTP group
        mgid=ff12:601b::202         # IPv6 Sun RPC group
        mgid=ff12:601b::1:3         # IPv6 Multicast Link Local Name Resolution group
        ALL=full, ALL_SWITCHES=full;
    
    ib0_2=0x0002, rate=7, mtu=4, scope=2, defmember=full:
            ALL, ALL_SWITCHES=full;
    ib0_2=0x0002, ipoib, rate=7, mtu=4, scope=2:
        mgid=ff12:401b::ffff:ffff   # IPv4 Broadcast address
        mgid=ff12:401b::1           # IPv4 All Hosts group
        mgid=ff12:401b::2           # IPv4 All Routers group
        mgid=ff12:401b::16          # IPv4 IGMP group
        mgid=ff12:401b::fb          # IPv4 mDNS group
        mgid=ff12:401b::fc          # IPv4 Multicast Link Local Name Resolution group
        mgid=ff12:401b::101         # IPv4 NTP group
        mgid=ff12:401b::202         # IPv4 Sun RPC
        mgid=ff12:601b::1           # IPv6 All Hosts group
        mgid=ff12:601b::2           # IPv6 All Routers group
        mgid=ff12:601b::16          # IPv6 MLDv2-capable Routers group
        mgid=ff12:601b::fb          # IPv6 mDNS group
        mgid=ff12:601b::101         # IPv6 NTP group
        mgid=ff12:601b::202         # IPv6 Sun RPC group
        mgid=ff12:601b::1:3         # IPv6 Multicast Link Local Name Resolution group
        ALL=full, ALL_SWITCHES=full;

第25章 IPVLAN の使用

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

25.1. IPVLAN の概要

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

25.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 モードでは、ブロードキャストトラフィックおよびマルチキャストトラフィックを受信しません。

25.3. MACVLAN の概要

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

25.4. IPVLAN および MACVLAN の比較

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

MACVLANIPVLAN

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

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

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

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

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

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

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

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

手順

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

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

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

    例25.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 アドレスを使用します。

第26章 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 ドメインが互いに分離しているることに注意してください。

26.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 デバイスをさらに作成します。

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

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

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

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

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

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

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

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

手順

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

    [daemon_name].conf

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

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

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

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

    # systemctl reload frr

第28章 DHCP サービスの提供

DHCP (Dynamic Host Configuration Protocol) は、クライアントに IP 情報を自動的に割り当てるネットワークプロトコルです。

本セクションでは、dhcpd サービスに関する一般情報と、DHCP サーバーおよび DHCP リレーの設定方法を説明します。

DHCP を提供する手順が、IPv4 および IPv6 のネットワークで異なる場合は、本章のセクションで、両方のプロトコルの手順を紹介します。

28.1. DHCPv4 および DHCPv6 で dhcpd を使用する場合の相違点

dhcpd サービスは、1 台のサーバーで DHCPv4 と DHCPv6 の両方を提供できます。ただし、各プロトコルに DHCP を提供するには、別に設定ファイルを使用する dhcpd のインスタンスがそれぞれ必要です。

DHCPv4
  • 設定ファイル -/etc/dhcp/dhcpd.conf
  • systemd サービス名 - dhcpd
DHCPv6
  • 設定ファイル - /etc/dhcp/dhcpd6.conf
  • systemd サービス名 - dhcpd6

28.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 ファイルに、既知のリースをすべて書き込みます。

関連情報

28.3. IPv6 ネットワークにおける動的な IP アドレスの割り当て

IPv6 ネットワークでは、ルーター広告メッセージのみが IPv6 デフォルトゲートウェイに関する情報を提供します。これにより、デフォルトのゲートウェイ設定を必要とするサブネットで DHCPv6 を使用する場合は、ルーター通知デーモン (radvd) などのルーター広告サービスを追加で設定する必要があります。

radvd サービスは、ルーター通知パケットのフラグを使用して、DHCPv6 サーバーの可用性をアナウンスします。

本セクションでは、DHCPv6 および radvd を比較し、radvd の設定に関する情報を提供します。

28.3.1. DHCPv6 と radvd の比較

 DHCPv6radvd

デフォルトゲートウェイに関する情報を提供する。

いいえ

はい

プライバシーを保護するために、ランダムなアドレスを保証する。

はい

いいえ

その他のネットワーク設定オプションを送信する。

はい

いいえ

メディアアクセス制御 (MAC) アドレスを IPv6 アドレスにマッピングする。

はい

いいえ

28.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 ファイルを参照してください。

28.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. dhcpd サービスを再起動します。

    # systemctl restart dhcpd.service

28.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 サービスの設定」を参照してください。

28.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 リレーエージェントの設定」

28.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 ファイルを参照してください。

28.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 ファイルを参照してください。

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

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

第29章 firewalld の使用および設定

ファイアウォール は、外部からの不要なトラフィックからマシンを保護する方法です。ファイアウォールルール セットを定義することで、ホストマシンへの着信ネットワークトラフィックを制御できます。このようなルールは、着信トラフィックを分類し、拒否または許可を行うために使用されます。

29.1. firewalld の使用

29.1.1. firewalld

firewalld は、D-Bus インターフェースを使用して、動的にカスタマイズできるホストベースのファイアウォールを提供するファイアウォールサービスデーモンです。ルールが変更するたびに、ファイアウォールデーモンを再起動しなくても、ルールの作成、変更、および削除を動的に可能にします。

firewalld は、ゾーン および サービス の概念を使用して、トラフィック管理を簡素化します。ゾーンは、事前定義したルールセットです。ネットワークインターフェースおよびソースをゾーンに割り当てることができます。許可されているトラフィックは、コンピューターが接続するネットワークと、このネットワークが割り当てられているセキュリティーレベルに従います。ファイアウォールサービスは、特定のサービスに着信トラフィックを許可するのに必要なすべての設定を扱う事前定義のルールで、ゾーンに適用されます。

サービスは、ネットワーク接続に 1 つ以上の ポート または アドレス を使用します。ファイアウォールは、ポートに基づいて接続のフィルターを設定します。サービスに対してネットワークトラフィックを許可するには、そのポートを 開く 必要があります。firewalld は、明示的に開いていないポートのトラフィックをすべてブロックします。trusted などのゾーンでは、デフォルトですべてのトラフィックを許可します。

関連情報

  • man ページの firewalld(1)

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

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

29.2. 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 を押します。

29.3. firewalld の現在の状況および設定の表示

29.3.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 設定の表示」を参照してください。

29.3.2. 現在の firewalld 設定の表示

29.3.2.1. GUI を使用して許可されるサービスの表示

グラフィカルの firewall-config ツールを使用してサービスの一覧を表示する場合は、Super キーを押してアクティビティーの概要を開き、firewall と入力して Enter を押します。firewall-config ツールが表示されます。Services タブの下にサービスの一覧が表示されます。

もしくは、コマンドラインを使用してグラフィカルなファイアウォール設定ツールを起動する場合は、次のコマンドを入力します。

$ firewall-config

Firewall Configuration ウィンドウが開きます。このコマンドは通常のユーザーとして実行できますが、監理者パスワードが求められる場合もあります。

29.3.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 オプションを使用して、完全な情報を取得することが推奨されます。

29.4. firewalld の起動

手順

  1. firewalld を開始するには、root で次のコマンドを実行します。

    # systemctl unmask firewalld
    # systemctl start firewalld
  2. システムの起動時に firewalld を自動的に起動するように設定するには、root で次のコマンドを実行します。

    # systemctl enable firewalld

29.5. firewalld の停止

手順

  1. firewalld を停止するには、root で次のコマンドを実行します。

    # systemctl stop firewalld
  2. システムの起動時に firewalld を自動的に起動しないように設定するには、次のコマンドを実行します。

    # systemctl disable firewalld
  3. firewalld D-Bus インターフェースにアクセスして firewalld を起動していないこと、そしてその他のサービスが firewalld を求めているかどうかを確認するには、次のコマンドを実行します。

    # systemctl mask firewalld

29.6. ランタイムおよび永続化の設定

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

29.7. 永続的な 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'}

29.8. firewalld でネットワークトラフィックの制御

29.8.1. 緊急時に CLI を使用してすべてのトラフィックの無効化

システムへの攻撃などの緊急な状態にあるとき、すべてのネットワークトラフィックを無効にし、攻撃を遮断できます。

手順

  1. ネットワークトラフィックを直ちに無効にするには、パニックモードをオンにします。

    # firewall-cmd --panic-on
重要

パニックモードを有効にすると、ネットワークトラフィックがすべて停止します。したがって、そのマシンへの物理アクセスがある場合、またはシリアルコンソールを使用してログインする場合に限り使用してください。

パニックモードをオフにし、ファイアウォールを永続設定に戻します。パニックモードを無効にするには、次のコマンドを実行します。

# firewall-cmd --panic-off

パニックモードを有効または無効にするには、次のコマンドを実行します。

# firewall-cmd --query-panic

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

29.8.3. GUI を使用して事前定義サービスでトラフィックを制御

事前定義したサービスまたはカスタマイズしたサービスを有効または無効にするには、以下を行います。

  1. firewall-config ツールを起動して、サービスを設定するネットワークゾーンを選択します。
  2. Services タブを選択します。
  3. 信頼するサービスタイプのチェックボックスを選択してください。ブロックするサービスタイプのチェックボックスの選択は解除してください。

サービスを編集するには、以下を行います。

  1. firewall-config ツールを起動します。
  2. Configuration メニューから Permanent を選択します。Services ウィンドウの下部に、その他のアイコンおよびメニューボタンが表示されます。
  3. 設定するサービスを選択します。

PortsProtocolsSource Port のタブでは、選択したサービスのポート、プロトコル、およびソースポートの追加、変更、ならびに削除が可能です。モジュールタブは、Netfilter ヘルパーモジュールの設定を行います。Destination タブは、特定の送信先アドレスとインターネットプロトコル (IPv4 または IPv6) へのトラフィックが制限できます。

注記

ランタイム モードでは、サービス設定を変更できません。

29.8.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
  2. ローカルファイルを使用して新規サービスを追加するには、次のコマンドを使用します。

    $ firewall-cmd --new-service-from-file=service-name.xml

    追加オプション --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 が求められた場合に使用されます。これに該当するのは永続環境のみです。ランタイム環境でフォールバックさせるには、再読み込みが必要です。

29.8.5. CLI を使用したポートの制御

ポートは、オペレーティングシステムが、ネットワークトラフィックを受信し、区別し、システムサービスに従って転送する論理デバイスです。これは、通常、ポートをリッスンするデーモンにより示されますが、このポートに入るトラフィックを待ちます。

通常、システムサービスは、サービスに予約されている標準ポートでリッスンします。httpd デーモンは、たとえば、ポート 80 をリッスンします。ただし、デフォルトでは、システム管理者は、セキュリティーを強化するため、またはその他の理由により、別のポートをリッスンするようにデーモンを設定します。

29.8.5.1. ポートを開く

開かれたポートを介して、システムが外部からアクセスできます。これはセキュリティーリスクでもあります。一般的に、ポートを閉じたままにし、特定サービスに要求される場合に限り開きます。

手順

現在のゾーンで開かれたポートの一覧を表示するには、以下を行います。

  1. 許可されているポートの一覧を表示します。

    # firewall-cmd --list-ports
  2. 許可されているポートにポートを追加して、着信トラフィックに対してそのポートを開きます。

    # firewall-cmd --add-port=port-number/port-type
  3. 新しい設定を永続化します。

    # firewall-cmd --runtime-to-permanent

ポートタイプは、tcpudpsctp、または dccp になります。このタイプは、ネットワーク接続の種類と一致させる必要があります。

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

29.8.6. GUI を使用してポートを開く

ファイアウォールを経由して特定のポートに向かうトラフィックを許可するには、以下を行います。

  1. firewall-config ツールを起動して、設定を変更するネットワークゾーンを選択します。
  2. 右側の Ports タブを選択し、Add ボタンをクリックします。Port and Protocol ウィンドウが開きます。
  3. 許可するポート番号またはポートの範囲を入力します。
  4. リストから tcp または udp を選択します。

29.8.7. GUI を使用してプロトコルを使用したトラフィックの制御

特定のプロトコルを使用してファイアウォールを経由したトラフィックを許可するには、以下を行います。

  1. firewall-config ツールを起動して、設定を変更するネットワークゾーンを選択します。
  2. 右側で Protocols タブを選択し、Add ボタンをクリックします。Protocol ウィンドウが開きます。
  3. リストからプロトコルを選択するか、Other Protocol チェックボックスを選択し、そのフィールドにプロトコルを入力します。

29.8.8. GUI を使用してソースポートを開く

特定ポートからファイアウォールを経由したトラフィックを許可するには、以下を行います。

  1. firewall-config ツールを起動し、設定を変更するネットワークゾーンを選択します。
  2. 右側の Source Port タブを選択し、Add ボタンをクリックします。Source Port ウィンドウが開きます。
  3. 許可するポート番号またはポートの範囲を入力します。リストから tcp または udp を選択します。

29.9. ファイアウォールゾーンでの作業

ゾーンは、着信トラフィックをより透過的に管理する概念を表しています。ゾーンはネットワークインターフェースに接続されているか、ソースアドレスの範囲に割り当てられます。各ゾーンは個別にファイアウォールルールを管理しますが、これにより、複雑なファイアウォール設定を定義してトラフィックに割り当てることができます。

29.9.1. ゾーンの一覧

手順

  1. システムで利用可能なゾーンを確認するには、次のコマンドを実行します。

    # firewall-cmd --get-zones

    firewall-cmd --get-zones コマンドは、システムで利用可能な全てのゾーンを表示し、特定ゾーンの詳細は表示しません。

  2. すべてのゾーンで詳細情報を表示する場合は、次のコマンドを実行します。

    # firewall-cmd --list-all-zones
  3. 特定ゾーンに関する詳細情報を表示する場合は、次のコマンドを実行します。

    # firewall-cmd --zone=zone-name --list-all

29.9.2. 特定ゾーンに対する firewalld 設定の修正

「CLI を使用して事前定義されたサービスでトラフィックの制御」および「CLI を使用したポートの制御」は、現在作業中のゾーンの範囲にサービスを追加するか、またはゾーンの範囲にあるポートを修正する方法を説明します。別のゾーンへのルールの設定が必要になる場合もあります。

手順

  1. 別のゾーンに指定するには、--zone=zone-name オプションを使用します。たとえば、public ゾーンで SSH サービスを許可するには、次のコマンドを実行します。
# firewall-cmd --add-service=ssh --zone=public

29.9.3. デフォルトゾーンの変更

システム管理者は、設定ファイルのネットワークインターフェースにゾーンを割り当てます。特定のゾーンに割り当てられないインターフェースは、デフォルトゾーンに割り当てられます。firewalld サービスを再起動するたびに、firewalld は、デフォルトゾーンの設定を読み込み、それをアクティブにします。

手順

デフォルトゾーンを設定するには、以下を行います。

  1. 現在のデフォルトゾーンを表示します。

    # firewall-cmd --get-default-zone
  2. 新しいデフォルトゾーンを設定します。

    # firewall-cmd --set-default-zone zone-name
注記

この手順では、--permanent オプションを使用しなくても、設定は永続化します。

29.9.4. ゾーンへのネットワークインターフェースの割り当て

複数のゾーンに複数のルールセットを定義して、使用されているインターフェースのゾーンを変更することで、迅速に設定を変更できます。各インターフェイスに特定のゾーンを設定して、そのゾーンを通過するトラフィックを設定できます。

手順

特定インターフェースにゾーンを割り当てるには、以下を行います。

  1. アクティブゾーン、およびそのゾーンに割り当てられているインターフェースを一覧表示します。

    # firewall-cmd --get-active-zones
  2. 別のゾーンにインターフェースを割り当てます。

    # firewall-cmd --zone=zone-name --change-interface=<interface-name>
注記

再起動後も設定を持続させる --permanent オプションを使用する必要はありません。新しいデフォルトゾーンを設定すると、設定は永続化されます。

29.9.5. ネットワーク接続にデフォルトゾーンの割り当て

NetworkManager で接続を管理する場合は、NetworkManager が使用するゾーンを認識する必要があります。すべてのネットワーク接続にゾーンを指定できます。これにより、ポータブルデバイスを使用したコンピューターの場所に従って、様々なファイアウォールを柔軟に設定できるようになります。したがって、ゾーンおよび設定には、会社または自宅など、様々な場所を指定できます。

手順

  1. インターネット接続にデフォルトゾーンを設定するには、NetworkManager の GUI を使用するか、/etc/sysconfig/network-scripts/ifcfg-connection-name ファイルを変更して、この接続にゾーンを割り当てる行を追加します。

    ZONE=zone-name

29.9.6. 新しいゾーンの作成

カスタムゾーンを使用するには、新しいゾーンを作成したり、事前定義したゾーンなどを使用したりします。新しいゾーンには --permanent オプションが必要となり、このオプションがなければコマンドは動作しません。

手順

新しいゾーンを作成するには、以下を行います。

  1. 新しいゾーンを作成します。

    # firewall-cmd --new-zone=zone-name
  2. 作成したゾーンが永続設定に追加されたかどうかを確認します。

    # firewall-cmd --get-zones
  3. 新しい設定を永続化します。

    # firewall-cmd --runtime-to-permanent

29.9.7. ゾーンの設定ファイル

また、ゾーンの設定ファイル を使用してゾーンを作成できます。このアプローチは、新しいゾーンを作成する必要がある場合に、別のゾーンの設定を変更して利用する場合に便利です。

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

29.9.8. 着信トラフィックにデフォルトの動作を設定するゾーンターゲットの使用

すべてのゾーンに対して、特に指定されていない着信トラフィックを処理するデフォルト動作を設定できます。そのような動作は、ゾーンのターゲットを設定することで定義されます。オプションは、defaultACCEPTREJECT、および DROP の 3 つになります。ターゲットを ACCEPT に設定すると、特定ルールで無効にした着信パケット以外のパケットをすべて許可します。REJECT または DROP にターゲットを設定すると、特定のルールで許可したパケット以外の着信パケットがすべて無効になります。パケットが拒否されるとソースマシンに通知されますが、パケットが破棄される時は情報が送信されません。

手順

ゾーンにターゲットを設定するには、以下を行います。

  1. 特定ゾーンに対する情報を一覧表示して、デフォルトゾーンを確認します。

    $ firewall-cmd --zone=zone-name --list-all
  2. ゾーンに新しいターゲットを設定します。

    # firewall-cmd --zone=zone-name --set-target=<default|ACCEPT|REJECT|DROP>

29.10. ゾーンを使用し、ソースに応じた着信トラフィックの管理

29.10.1. ゾーンを使用し、ソースに応じた着信トラフィックの管理

ゾーンを使用して、そのソースに基づいて着信トラフィックを管理するゾーンを使用できます。これにより、着信トラフィックを分類し、複数のゾーンに向け、トラフィックにより到達できるサービスを許可または拒否できます。

ソースをゾーンに追加する場合は、ゾーンがアクティブになり、そのソースからの着信トラフィックは、それを介して行われます。各ゾーンに異なる設定を指定できますが、それは指定したソースから順次トラフィックに適用されます。ネットワークインターフェースが 1 つしかない場合でも、複数のゾーンを使用できます。

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

29.10.3. ソースの削除

ゾーンからソースを削除すると、そのゾーンからのトラフィックを遮断します。

手順

  1. 必要なゾーンに対して許可されているソースの一覧を表示します。

    # firewall-cmd --zone=zone-name --list-sources
  2. ゾーンからソースを永続的に削除します。

    # firewall-cmd --zone=zone-name --remove-source=<source>
  3. 新しい設定を永続化します。

    # firewall-cmd --runtime-to-permanent

29.10.4. ソースポートの追加

発信源となるポートに基づいたトラフィックの分類を有効にするには、--add-source-port オプションを使用してソースポートを指定します。--add-source オプションと組み合わせて、トラフィックを特定の IP アドレスまたは IP 範囲に制限できます。

手順

  1. ソースポートを追加するには、次のコマンドを実行します。

    # firewall-cmd --zone=zone-name --add-source-port=<port-name>/<tcp|udp|sctp|dccp>

29.10.5. ソースポートの削除

ソースポートを削除して、送信元ポートに基づいてトラフィックの分類を無効にします。

手順

  1. ソースポートを削除するには、次のコマンドを実行します。

    # firewall-cmd --zone=zone-name --remove-source-port=<port-name>/<tcp|udp|sctp|dccp>

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

29.10.7. プロトコルに基づいてゾーンが許可したトラフィックの設定

プロトコルに基づいて、ゾーンが着信トラフィックを許可できます。指定したプロトコルを使用したすべてのトラフィックがゾーンにより許可されていますが、そこにさらにルールおよびフィルタリングを適用できます。

29.10.7.1. ゾーンへのプロトコルの追加

特定ゾーンへプロトコルを追加すると、このゾーンが許可するこのプロトコルを使用するすべてのトラフィックを許可します。

手順

  1. プロトコルをゾーンに追加するには、次のコマンドを実行します。

    # firewall-cmd --zone=zone-name --add-protocol=port-name/tcp|udp|sctp|dccp|igmp
注記

マルチキャストトラフィックを受けるには、--add-protocol オプションで igmp 値を使用します。

29.10.7.2. ゾーンからプロトコルの削除

特定ゾーンからプロトコルを削除するには、ゾーンにより、このプロトコルに基づいたすべてのトラフィックの許可を停止します。

手順

  1. ゾーンからプロトコルを削除するには、次のコマンドを削除します。

    # firewall-cmd --zone=zone-name --remove-protocol=port-name/tcp|udp|sctp|dccp|igmp

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

29.12. ポート転送

この方法を使用するポートのリダイレクトは、IPv4 ベースのトラフィックでのみ機能します。IPv6 リダイレクト設定には、リッチルールを使用する必要があります。

外部システムにリダイレクトするには、マスカレードを有効にする必要があります。詳細は、「IP アドレスのマスカレードの設定」を参照してください。

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

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

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

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

29.13. ICMP リクエストの管理

Internet Control Message Protocol (ICMP) は、接続問題 (要求されているサービスが利用できないなど) を示すエラーメッセージと運用情報を送信するために、様々なネットワークデバイスにより使用されているサポート対象のプロトコルです。ICMP は、システム間でデータを交換するのに使用されていないため、TCP、UDP などの転送プロトコルとは異なります。

ただし、ICMP メッセージ (特に echo-request および echo-reply) を利用して、ネットワークに関する情報を明らかにし、その情報をさまざまな不正行為に悪用することが可能です。したがって、firewalld は、ネットワーク情報を保護するため、ICMP リクエストをブロックできます。

29.13.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 リクエストブロックの設定を反転します。そのため、ブロックしていないリクエストをすべてブロックするようになります。ブロックされているものはブロックされません。したがって、リクエストのブロックを解除する必要がある場合は、ブロックコマンドを使用してください。

  • ブロックの反転を、完全許可の設定に戻すには、以下を行います。
  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

29.13.2. GUI を使用した ICMP フィルターの設定

  • ICMP フィルターを有効または無効にするには、firewall-config ツールを起動して、フィルターをかけるメッセージのネットワークゾーンを選択します。ICMP フィルター タブを選択し、フィルターをかける ICMP メッセージの各タイプのチェックボックスを選択します。フィルターを無効にするには、チェックボックスの選択を外します。これは方向ごとに設定され、デフォルトではすべてが許可されます。
  • ICMP タイプを編集するには、firewall-config ツールを起動してから 設定 ラベルのあるメニューで 永続 モードを選択します。サービス ウィンドウの下部に新たなアイコンが表示されます。以下のダイアログで はい を選択し、マスカレーディングを有効にし、動作している別のマシンに転送します。
  • ICMP フィルター の反転を有効にするには、右側の フィルターの反転 チェックボックスをクリックします。マークがついた ICMP タイプだけが許可され、その他はすべて拒否されます。DROP ターゲットを使用するゾーンでは破棄されます。

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

29.14.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 ファイルを使用して、永続的なダイレクトルールを追加できます。

29.15. リッチルールの優先度設定

デフォルトでは、リッチルールはルールアクションに基づいて構成されます。たとえば、許可 ルールよりも 拒否 ルールが優先されます。リッチルールで priority パラメーターを使用すると、管理者はリッチルールとその実行順序をきめ細かく制御できます。

29.15.1. priority パラメーターを異なるチェーンにルールを整理する方法

リッチルールの priority パラメーターは、-32768 ~ 32767 の任意の数値に設定でき、値が小さい方が優先されます。

firewalld サービスは、優先度の値に基づいて、ルールを異なるチェーンに整理します。

  • 優先度が 0 未満 - ルールは _pre 接尾辞が付いたチェーンにリダイレクトされます。
  • 優先度が 0 を超える - ルールは _post 接尾辞が付いたチェーンにリダイレクトされます。
  • 優先度が 0 - アクションに基づいて、ルールは、_log_deny、または _allow のアクションを使用してチェーンにリダイレクトされます。

このサブチェーンでは、firewalld は優先度の値に基づいてルールを分類します。

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

29.16. ファイアウォールロックダウンの設定

ローカルのアプリケーションやサービスは、root で実行していれば、ファイアウォール設定を変更できます (たとえば libvirt)。管理者は、この機能を使用してファイアウォール設定をロックし、すべてのアプリケーションでファイアウォール変更を要求できなくするか、ロックダウンのホワイトリストに追加されたアプリケーションのみがファイアウォール変更を要求できるようにすることが可能になります。ロックダウン設定はデフォルトで無効になっています。これを有効にすると、ローカルのアプリケーションやサービスによるファイアウォールへの望ましくない設定変更を確実に防ぐことができます。

29.16.1. CLI を使用したロックダウンの設定

  • ロックダウンが有効になっているかどうかを確認するには、root で次のコマンドを使用します。

    # firewall-cmd --query-lockdown

    ロックダウンが有効な場合は、yes と出力され、終了ステータスは 0 になります。無効の場合は no と出力され、終了ステータスは 1 になります。

  • ロックダウンを有効にするには、root で次のコマンドを実行します。

    # firewall-cmd --lockdown-on
  • ロックダウンを無効にするには、root で次のコマンドを実行します。

    # firewall-cmd --lockdown-off

29.16.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 になります。

29.16.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 パスに加え、このコマンドのパスもホワイトリストに追加する必要があります。

コマンドの名前属性の最後にある * は、その名前で始まるすべてのコマンドが一致することを意味します。* がなければ、コマンドと引数が完全に一致する必要があります。

29.17. 拒否されたパケットのログ

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 をクリックします。

第30章 nftables の使用

管理者は、nftables フレームワークを使用して、Linux カーネルのファイアウォールで使用されるパケットフィルタリングルールを設定できます。

30.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 を使用して、パケットのフィルタリングを設定および検査するための包括的な参考資料を提供します。

30.2. firewalld、nftables、または iptables を使用する場合

以下は、次のユーティリティーのいずれかを使用する必要があるシナリオの概要です。

  • firewalld - firewalld ユーティリティーを使用して、ワークステーションにファイアウォールを設定します。このユーティリティーは使いやすく、このシナリオの一般的な使用例に対応しています。
  • nftables - nftables ユーティリティーを使用して、ネットワーク全体など、複雑なファイアウォールを設定します。
  • iptables - iptables ユーティリティーは、Red Hat Enterprise Linux 8 では非推奨になりました。代わりに nftables を使用します。

30.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 コマンドで確認できます。

30.4. nftables スクリプトの作成および実行

nftables フレームワークは、シェルスクリプトを使用してファイアウォールルールを維持するための主な利点を提供するネイティブのスクリプト環境を提供します。スクリプトの実行はアトミックです。つまり、システムがスクリプト全体を適用するか、エラーが発生した場合には実行を阻止することを意味します。これにより、ファイアウォールは常に一貫した状態になります。

さらに、管理者は、nftables スクリプト環境で以下を行うことができます。

  • コメントの追加
  • 変数の定義
  • 他のルールセットファイルの組み込み

本セクションでは、この機能を使用する方法と、nftables スクリプトの作成方法と実行方法を説明します。

nftables パッケージをインストールすると、Red Hat Enterprise Linux が自動的に *.nft スクリプトを /etc/nftables/ ディレクトリーに作成します。このスクリプトは、さまざまな目的でテーブルと空のチェーンを作成するコマンドが含まれます。これらのファイルを拡張するか、またはスクリプトを作成できます。

30.4.1. nftables スクリプトで必要なスクリプトヘッダー

他のスクリプトと同様に、nftables スクリプトでは、interpreter ディレクティブを設定するスクリプトの最初の行に shebang のシーケンスが必要になります。

nftables スクリプトは、常に次の行で起動する必要があります。

#!/usr/sbin/nft -f
重要

-f パラメーターを指定しないと、nft ユーティリティーはスクリプトを読み取らず、Error: syntax error, unexpected newline, expecting string を表示します。

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

30.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 はスクリプトを正常に実行しますが、ルールの配置やパラメーター不足、またはスクリプト内のその他の問題により、ファイアウォールが期待通りの動作を起こさない可能性があります。

関連情報

30.4.4. nftables スクリプトでコメントの使用

nftables スクリプト環境は、# 文字の右側にあるすべてをコメントとして解釈します。

例30.1 nftables スクリプトのコメント

コメントは、コマンドの横だけでなく、行の先頭からも開始できます。

...
# Flush the rule set
flush ruleset

add table inet example_table  # Create a table
...

30.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
注記

中括弧は、変数がセットを表していることを示すため、ルールで使用する場合は、特別なセマンティクスを持つことに注意してください。

関連情報

30.4.6. nftables スクリプトへのファイルの追加

nftables スクリプト環境を使用すると、管理者は include ステートメントを使用して他のスクリプトを追加できます。

絶対パスまたは相対パスのないファイル名のみを指定すると、nftables には、デフォルトの検索パスのファイルが含まれます。これは、Red Hat Enterprise Linux では /etc に設定されています。

例30.2 デフォルト検索ディレクトリーからのファイルを含む

デフォルトの検索ディレクトリーからファイルを指定するには、次のコマンドを実行します。

include "example.nft"

例30.3 ディレクトリーの *.nft ファイルをすべて含む

*.nft で終わるすべてのファイルを /etc/nftables/rulesets/ ディレクトリーに保存するには、次のコマンドを実行します。

include "/etc/nftables/rulesets/*.nft"

include ステートメントは、ドットで始まるファイルに一致しないことに注意してください。

関連情報

  • 詳細は、man ページの nft(8)Include files セクションを参照してください。

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

30.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 コマンドが出力を表示しません。

30.6. nftables テーブルの作成

nftables の表は、チェーン、ルール、セットなどのオブジェクトを含む名前空間です。本セクションでは、テーブルの作成方法を説明します。

各テーブルには、アドレスファミリーが定義されている必要があります。テーブルのアドレスファミリーは、テーブルプロセスのアドレスタイプを定義します。テーブルを作成する際に、以下のいずれかのアドレスファミリーを設定できます。

  • ip - IPv4 パケットのみと一致します。アドレスファミリーを指定しないと、これがデフォルトになります。
  • ip6 - IPv6 パケットのみと一致します。
  • inet - IPv4 パケットと IPv6 パケットの両方と一致します。
  • arp- IPv4 アドレス解決プロトコル (ARP) パケットと一致します。
  • ブリッジ - ブリッジデバイスを通過するパケットと一致します。
  • 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 セクションを参照してください。

30.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 セクションを参照してください。

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

    ポート番号の代わりに、サービス名を指定することもできます。この例では、ポート番号 22 の代わりに ssh を使用できます。サービス名は、/etc/services ファイルのエントリーに基づいてポート番号に解決されることに注意してください。

  2. 必要に応じて、example_table ですべてのチェーンとそのルールを表示します。

    # nft list table inet example_table
    table inet example_table {
      chain example_chain {
        type filter hook input priority 0; policy accept;
        ...
        tcp dport ssh accept
      }
    }

関連情報

  • アドレスファミリーの詳細は、man ページの nft(8)Address families セクションを参照してください。
  • ルールを実行できるその他のアクションの詳細は、man ページの nft(8)Rules セクションを参照してください。

30.9. nftables チェーンへのルールの追加

本セクションでは、nftables insert rule コマンドを使用して、既存の nftables チェーンの先頭にルールを追加する方法を説明します。チェーンの最後にルールを追加する場合は、「nftables チェーンへのルールの追加」を参照してください。

前提条件

  • ルールを追加するチェーンが存在する。

手順

  1. 新しいルールを追加するには、nft insert rule コマンドを使用します。たとえば、ポート 22 で TCP トラフィックを許可するルールを example_tableexample_chain に追加するには、次のコマンドを実行します。

    # nft add rule inet example_table example_chain tcp dport 22 accept

    代わりに、ポート番号の代わりにサービスの名前を指定することもできます。この例では、ポート番号 22 の代わりに ssh を使用できます。サービス名は、/etc/services ファイルのエントリーに基づいてポート番号に解決されることに注意してください。

  2. 必要に応じて、example_table ですべてのチェーンとそのルールを表示します。

    # nft list table inet example_table
    table inet example_table {
      chain example_chain {
        type filter hook input priority 0; policy accept;
        tcp dport ssh accept
        ...
      }
    }

関連情報

  • アドレスファミリーの詳細は、man ページの nft(8)Address families セクションを参照してください。
  • ルールを実行できるその他のアクションの詳細は、man ページの nft(8)Rules セクションを参照してください。

30.10. nftables を使用した NAT の設定

nftables を使用すると、以下のネットワークアドレス変換 (NAT) タイプを設定できます。

  • マスカレーディング
  • ソース NAT (SNAT)
  • 宛先 NAT (DNAT)

30.10.1. 異なる NAT タイプ - マスカレード、ソース NAT、および宛先 NAT

以下は、ネットワークアドレス変換 (NAT) タイプになります。

マスカレードおよびソースの NAT (SNAT)

この NAT タイプのいずれかを使用して、パケットのソース IP アドレスを変更します。たとえば、インターネットプロバイダーは予約 IP 範囲 (10.0.0.0/8 など) をルーティングしません。ネットワークで予約済みの IP 範囲を使用し、ユーザーがインターネット上のサーバーにアクセスできるようにする必要がある場合は、この範囲のパケットのソース IP アドレスをパブリック IP アドレスにマップします。

マスカレードおよび SNAT の両方は非常に似ています。相違点は次のとおりです。

  • マスカレードは、出力インターフェースの IP アドレスを自動的に使用します。したがって、出力インターフェースが動的 IP アドレスを使用する場合は、マスカレードを使用します。
  • SNAT は、パケットのソース IP アドレスを指定された IP に設定し、出力インターフェースの IP アドレスを動的に検索しません。そのため、SNAT の方がマスカレードよりも高速です。出力インターフェースが固定 IP アドレスを使用する場合は、SNAT を使用します。
宛先 NAT (DNAT)
この NAT タイプを使用して、着信トラフィックを別のホストにルーティングします。たとえば、Web サーバーが予約済み IP 範囲の IP アドレスを使用しているため、インターネットから直接アクセスできない場合は、ルーターに DNAT ルールを設定し、着信トラフィックをこのサーバーにリダイレクトできます。

30.10.2. nftables を使用したマスカレードの設定

マスカレードを使用すると、ルーターは、インターフェースを介して送信されるパケットのソース IP を、インターフェースの IP アドレスに動的に変更できます。これは、インターフェースに新しい IP が割り当てられている場合に、nftables はソース IP の置き換え時に新しい IP を自動的に使用することを意味します。

次の手順では、ens3 インターフェイスを介して、ホストから ens3 の IP セットに送信されるパケットのソース IP を置き換える方法を説明します。

手順

  1. テーブルを作成します。

    # nft add table nat
  2. テーブルに、prerouting チェーンおよび postrouting チェーンを追加します。

    # nft -- add chain nat prerouting { type nat hook prerouting priority -100 \; }
    # nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
    重要

    prerouting チェーンにルールを追加しなくても、nftables フレームワークでは、着信パケット返信に一致するようにこのチェーンが必要になります。

    nft コマンドに -- オプションを渡すと、シェルが優先度の負の値を nft コマンドのオプションとして解釈する必要がなくなります。

  3. postrouting チェーンに、ens3 インターフェースの出力パケットに一致するルールを追加します。

    # nft add rule nat postrouting oifname "ens3" masquerade

30.10.3. nftables を使用したソース NAT の設定

ルーターでは、ソース NAT (SNAT) を使用して、インターフェースを介して特定の IP アドレスに送信するパケットの IP を変更できます。

次の手順では、ens3 インターフェイスを介して、ルーターから 192.0.2.1 に送信されるパケットのソース IP を置き換える方法を説明します。

手順

  1. テーブルを作成します。

    # nft add table nat
  2. テーブルに、prerouting チェーンおよび postrouting チェーンを追加します。

    # nft -- add chain nat prerouting { type nat hook prerouting priority -100 \; }
    # nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
    重要

    postrouting チェーンにルールを追加しなくても、nftables フレームワークでは、このチェーンが発信パケット返信に一致するようにする必要があります。

    nft コマンドに -- オプションを渡すと、シェルが優先度の負の値を nft コマンドのオプションとして解釈する必要がなくなります。

  3. ens3 を介した発信パケットのソース IP を 192.0.2.1 に置き換えるルールを postrouting チェーンに追加します。

    # nft add rule nat postrouting oifname "ens3" snat to 192.0.2.1

30.10.4. nftables を使用した宛先 NAT の設定

宛先 NAT により、ルーター上のトラフィックをインターネットから直接アクセスできないホストにリダイレクトできます。

以下の手順では、ルーターの 80 ポートおよび 443 ポートに送信される着信トラフィックを、IP アドレス 192.0.2.1 のホストにリダイレクトする方法を説明します。

手順

  1. テーブルを作成します。

    # nft add table nat
  2. テーブルに、prerouting チェーンおよび postrouting チェーンを追加します。

    # nft -- add chain nat prerouting { type nat hook prerouting priority -100 \; }
    # nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
    重要

    postrouting チェーンにルールを追加しなくても、nftables フレームワークでは、このチェーンが発信パケット返信に一致するようにする必要があります。

    nft コマンドに -- オプションを渡すと、シェルが優先度の負の値を nft コマンドのオプションとして解釈する必要がなくなります。

  3. prerouting チェーンに、80 ポートおよび 443 ポートに送信された ens3 インターフェースの着信トラフィックを、IP アドレスが 192.0.2.1 であるホストにリダイレクトするルールを追加します。

    # nft add rule nat prerouting iifname ens3 tcp dport { 80, 443 } dnat to 192.0.2.1
  4. 環境に応じて、SNAT ルールまたはマスカレードルールを追加して、ソースアドレスを変更します。

    1. ens3 インターフェースが動的 IP アドレスを使用している場合は、マスカレードルールを追加します。

      # nft add rule nat postrouting oifname "ens3" masquerade
    2. ens3 インターフェースが静的 IP アドレスを使用する場合は、SNAT ルールを追加します。たとえば、ens3 が IP アドレス 198.51.100.1 を使用している場合は、以下のようになります。

      nft add rule nat postrouting oifname "ens3" snat to 198.51.100.1

30.11. nftables コマンドを使用したセットの使用

nftables フレームワークは、セットをネイティブに対応します。たとえば、ルールが複数の IP アドレス、ポート番号、インターフェース、またはその他の一致基準に一致する必要がある場合など、セットを使用できます。

30.11.1. nftables での匿名セットの使用

匿名セットには、ルールで直接使用する { 22, 80, 443 } などの中括弧で囲まれたコンマ区切りの値が含まれます。IP アドレスやその他の一致基準に匿名セットを使用することもできます。

匿名セットの欠点は、セットを変更する場合はルールを置き換える必要があることです。動的なソリューションの場合は、「nftables で名前付きセットの使用」に従って名前付きセットを使用します。

前提条件

  • inet ファミリーに example_chain チェーンおよび example_table テーブルがある。

手順

  1. たとえば、ポート 2280、および 443 に着信トラフィックを許可するルールを、example_tableexample_chain に追加するには、次のコマンドを実行します。

    # nft add rule inet example_table example_chain tcp dport { 22, 80, 443 } accept
  2. 必要に応じて、example_table ですべてのチェーンとそのルールを表示します。

    # nft list table inet example_table
    table inet example_table {
      chain example_chain {
        type filter hook input priority 0; policy accept;
        tcp dport { ssh, http, https } accept
      }
    }

30.11.2. nftables で名前付きセットの使用

nftables フレームワークは、変更可能な名前付きセットに対応します。名前付きセットは、テーブル内の複数のルールで使用できる要素の一覧または範囲です。匿名セットに対する別の利点として、セットを使用するルールを置き換えることなく、名前付きセットを更新できます。

名前付きセットを作成する場合は、セットに含まれる要素のタイプを指定する必要があります。以下のタイプを設定できます。

  • 192.0.2.1192.0.2.0/24 など、IPv4 アドレスまたは範囲を含むセットの場合は ipv4_addr
  • 2001:db8::12001:db8::1/24 など、IPv6 アドレスまたは範囲を含むセットの場合は ipv6_addr
  • 52:54:00:6b:66:42 など、メディアアクセス制御 (MAC) アドレスの一覧を含むセットの場合は ether_addr
  • tcp など、インターネットプロトコルタイプの一覧が含まれるセットの場合は inet_proto
  • ssh など、インターネットサービスの一覧を含むセットの場合は inet_service
  • パケットマークの一覧を含むセットの場合は mark。パケットマークは、任意の正の 32 ビットの整数値 (0 ~ 2147483647) にできます。

前提条件

  • example_chain チェーンと example_table テーブルが存在する。

手順

  1. 空のファイルを作成します。以下の例では、IPv4 アドレスのセットを作成します。

    • 複数の IPv4 アドレスを格納することができるセットを作成するには、次のコマンドを実行します。

      # nft add set inet example_table example_set { type ipv4_addr \; }
    • IPv4 アドレス範囲を保存できるセットを作成するには、次のコマンドを実行します。

      # nft add set inet example_table example_set { type ipv4_addr \; flags interval \; }
    重要

    シェルで、セミコロンがコマンドの最後として解釈されないようにするには、セミコロンをバックスラッシュでエスケープする必要があります。

  2. 必要に応じて、セットを使用するルールを作成します。たとえば、次のコマンドは、example_set の IPv4 アドレスからのパケットをすべて破棄するルールを、example_tableexample_chain に追加します。

    # nft add rule inet example_table example_chain ip saddr @example_set drop

    example_set が空のままなので、ルールには現在影響がありません。

  3. IPv4 アドレスを example_set に追加します。

    • 個々の IPv4 アドレスを保存するセットを作成する場合は、次のコマンドを実行します。

      # nft add element inet example_table example_set { 192.0.2.1, 192.0.2.2 }
    • IPv4 範囲を保存するセットを作成する場合は、次のコマンドを実行します。

      # nft add element inet example_table example_set { 192.0.2.0-192.0.2.255 }

      IP アドレス範囲を指定する場合は、上記の例の 192.0.2.0/24 のように、CIDR (Classless Inter-Domain Routing) 表記を使用することもできます。

30.12. nftables コマンドにおける決定マップの使用

ディクショナリーとしても知られている決定マップにより、nft は一致基準をアクションにマッピングすることで、パケット情報に基づいてアクションを実行できます。

30.12.1. nftables でリテラルマップの使用

リテラルマップは、ルールで直接使用する { match_criteria : action } ステートメントです。ステートメントには、複数のカンマ区切りマッピングを含めることができます。

リテラルマップの欠点は、マップを変更する際に、ルールを置き換える必要があることです。動的なソリューションの場合は、「nftables で変更可能な決定マップの使用」にあるように、名前付き決定マップを使用します。

この例では、literal マップを使用して、IPv4 プロトコルおよび IPv6 プロトコルの TCP パケットと UDP パケットの両方を別のチェーンに転送し、着信の TCP パケットと UDP パケットを個別にカウントする方法を説明します。

手順

  1. example_table を作成します。

    # nft add table inet example_table
  2. example_tabletcp_packets チェーンを作成します。

    # nft add chain inet example_table tcp_packets
  3. このチェーンのトラフィックをカウントする tcp_packets にルールを追加します。

    # nft add rule inet example_table tcp_packets counter
  4. example_tableudp_packets チェーンを作成します。

    # nft add chain inet example_table udp_packets
  5. このチェーンのトラフィックをカウントする udp_packets にルールを追加します。

    # nft add rule inet example_table udp_packets counter
  6. 着信トラフィックのチェーンを作成します。たとえば、example_table に、着信トラフィックをフィルタリングする incoming_traffic という名前のチェーンを作成するには、次のコマンドを実行します。

    # nft add chain inet example_table incoming_traffic { type filter hook input priority 0 \; }
  7. リテラルマップを持つルールを incoming_traffic に追加します。

    # nft add rule inet example_table incoming_traffic ip protocol vmap { tcp : jump tcp_packets, udp : jump udp_packets }

    リテラルマップはパケットを区別し、プロトコルに基づいて別のカウンターチェーンに送信します。

  8. トラフィックカウンターの一覧を表示する場合は、example_table を表示します。

    # nft list table inet example_table
    table inet example_table {
      chain tcp_packets {
        counter packets 36379 bytes 2103816
      }
    
      chain udp_packets {
        counter packets 10 bytes 1559
      }
    
      chain incoming_traffic {
        type filter hook input priority 0; policy accept;
        ip protocol vmap { tcp : jump tcp_packets, udp : jump udp_packets }
      }
    }

    tcp_packets チェーンおよび udp_packets チェーンのカウンターは、受信パケットとバイトの両方を表示します。

30.12.2. nftables で変更可能な決定マップの使用

nftables フレームワークは、変更可能な決定マップをサポートします。テーブルの複数のルールでこのマップを使用できます。リテラルマップに対するもう 1 つの利点は、変更可能なマップを使用するルールを置き換えることなく、そのマップを更新できることです。

変更可能な決定マップを作成するときは、要素のタイプを指定する必要があります

  • 一致する部分に 192.0.2.1 などの IPv4 アドレスが含まれるマップの場合は ipv4_addr
  • 一致する部分に 2001:db8::1 などの IPv6 アドレスが含まれるマップの場合は ipv6_addr
  • 52:54:00:6b:66:42 などのメディアアクセス制御 (MAC) アドレスを含むマップの場合は ether_addr
  • 一致する部分に tcp などのインターネットプロトコルタイプが含まれるマップの場合は inet_proto
  • 一致する部分に ssh22 などのインターネットサービス名のポート番号が含まれるマップの場合は inet_service
  • 一致する部分にパケットマークが含まれるマップの場合は mark。パケットマークは、任意の正の 32 ビットの整数値 (0 ~ 2147483647) にできます。
  • 一致する部分にカウンターの値が含まれるマップの場合は counter。カウンター値は、正の値の 64 ビットであれば任意の値にすることができます。
  • 一致する部分にクォータ値が含まれるマップの場合は quota。クォータの値は、64 ビットの整数値にできます。

この例では、送信元の IP アドレスに基づいて着信パケットを許可または破棄する方法を説明します。変更可能な決定マップを使用すると、このシナリオを構成するのに必要なルールは 1 つだけで、IP アドレスとアクションがマップに動的に保存されます。この手順では、マップからエントリーを追加および削除する方法を説明します。

手順

  1. テーブルを作成します。たとえば、IPv4 パケットを処理する example_table という名前のテーブルを作成するには、次のコマンドを実行します。

    # nft add table ip example_table
  2. チェーンを作成します。たとえば、example_table に、example_chain という名前のチェーンを作成するには、次のコマンドを実行します。

    # nft add chain ip example_table example_chain { type filter hook input priority 0 \; }
    重要

    シェルで、セミコロンがコマンドの最後として解釈されないようにするには、セミコロンをバックスラッシュでエスケープする必要があります。

  3. 空のマップを作成します。たとえば、IPv4 アドレスのマッピングを作成するには、次のコマンドを実行します。

    # nft add map ip example_table example_map { type ipv4_addr : verdict \; }
  4. マップを使用するルールを作成します。たとえば、次のコマンドは、両方とも example_map で定義されている IPv4 アドレスにアクションを適用するルールを、example_tableexample_chain に追加します。

    # nft add rule example_table example_chain ip saddr vmap @example_map
  5. IPv4 アドレスと対応するアクションを example_map に追加します。

    # nft add element ip example_table example_map { 192.0.2.1 : accept, 192.0.2.2 : drop }

    以下の例では、IPv4 アドレスのアクションへのマッピングを定義します。上記で作成したルールと組み合わせて、ファイアウォールは 192.0.2.1 からのパケットを許可し、192.0.2.2 からのパケットを破棄します。

  6. 必要に応じて、別の IP アドレスおよび action ステートメントを追加してマップを拡張します。

    # nft add element ip example_table example_map { 192.0.2.3 : accept }
  7. 必要に応じて、マップからエントリーを削除します。

    # nft delete element ip example_table example_map { 192.0.2.1 }
  8. 必要に応じて、ルールセットを表示します。

    # nft list ruleset
    table ip example_table {
      map example_map {
        type ipv4_addr : verdict
        elements = { 192.0.2.2 : drop, 192.0.2.3 : accept }
      }
    
      chain example_chain {
        type filter hook input priority 0; policy accept;
        ip saddr vmap @example_map
      }
    }

30.13. nftables を使用したポート転送の設定

ポート転送を使用すると、管理者は特定の宛先ポートに送信されたパケットを、別のローカルまたはリモートポートに転送できます。

たとえば、Web サーバーにパブリック IP アドレスがない場合は、ファイアウォールの 80 ポートおよび 443 ポートの着信パケットを Web サーバーに転送するファイアウォールのポート転送ルールを設定できます。このファイアウォールルールを使用すると、インターネットのユーザーは、ファイアウォールの IP またはホスト名を使用して Web サーバーにアクセスできます。

30.13.1. 着信パケットの別のローカルポートへの転送

本セクションでは、8022 ポートの着信 IPv4 パケットを、ローカルシステムの 22 ポートに転送する例を説明します。

手順

  1. ip アドレスファミリーを使用して、nat という名前のテーブルを作成します。

    # nft add table ip nat
  2. テーブルに、prerouting チェーンおよび postrouting チェーンを追加します。

    # nft -- add chain ip nat prerouting { type nat hook prerouting priority -100 \; }
    注記

    nft コマンドに -- オプションを渡して、シェルが優先度の負の値を nft コマンドのオプションとして解釈しないようにします。

  3. 8022 ポートの着信パケットを、ローカルポート 22 にリダイレクトするルールを prerouting チェーンに追加します。

    # nft add rule ip nat prerouting tcp dport 8022 redirect to :22

30.13.2. 特定のローカルポートで着信パケットを別のホストに転送

宛先ネットワークアドレス変換 (DNAT) ルールを使用して、ローカルポートの着信パケットをリモートホストに転送できます。これにより、インターネット上のユーザーは、プライベート IP アドレスを持つホストで実行しているサービスにアクセスできるようになります。

この手順では、ローカルポート 443 の着信 IPv4 パケットを、IP アドレス 192.0.2.1 を持つリモートシステムの同じポート番号に転送する方法を説明します。

前提条件

  • パケットを転送するシステムに root ユーザーとしてログインしている。

手順

  1. ip アドレスファミリーを使用して、nat という名前のテーブルを作成します。

    # nft add table ip nat
  2. テーブルに、prerouting チェーンおよび postrouting チェーンを追加します。

    # nft -- add chain ip nat prerouting { type nat hook prerouting priority -100 \; }
    # nft add chain ip nat postrouting { type nat hook postrouting priority 100 \; }
    注記

    nft コマンドに -- オプションを渡して、シェルが優先度の負の値を nft コマンドのオプションとして解釈しないようにします。

  3. 443 ポートの着信パケットを 192.0.2.1 上の同じポートにリダイレクトするルールを prerouting チェーンに追加します。

    # nft add rule ip nat prerouting tcp dport 443 dnat to 192.0.2.1
  4. 出力トラフィックをマスカレードするルールを postrouting チェーンに追加します。

    # nft add rule ip daddr 192.0.2.1 masquerade
  5. パケット転送を有効にします。

    # echo "sysctl net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf
    # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf

30.14. nftables を使用した接続数の制限

nft ユーティリティーの ct count パラメーターを使用すると、管理者は接続数を制限できます。この手順では、受信接続を制限する方法の基本的な例を説明します。

前提条件

  • example_table にベースの example_chain が存在する。

手順

  1. IPv4 アドレスから SSH ポート (22) への 2 つの同時接続のみを許可し、同じ IP からのすべての接続を拒否するルールを追加します。

    # nft add rule ip example_table example_chain tcp dport ssh meter example_meter { ip saddr ct count over 2 } counter reject
  2. 必要に応じて、前の手順で作成した meter を表示します。

    # nft list meter ip example_table example_meter
    table ip example_table {
      meter example_meter {
        type ipv4_addr
        size 65535
        elements = { 192.0.2.1 : ct count over 2 , 192.0.2.2 : ct count over 2  }
      }
    }

    elements エントリーは、現在のルールに一致するアドレスを表示します。この例では、elements は、SSH ポートへのアクティブな接続がある IP アドレスの一覧を表示します。出力には、アクティブな接続の数を表示しないため、接続が拒否された場合は表示されないことに注意してください。

30.15. nftables ルールのデバッグ

nftables フレームワークは、管理者がルールをデバッグし、パケットがそれに一致するかどうかを確認するためのさまざまなオプションを提供します。本セクションでは、3 つのオプションを説明します。

30.15.1. カウンターによるルールの作成

ルールが一致しているかどうかを確認するには、カウンターを使用できます。本セクションでは、カウンターを使用して新しいルールを作成する方法を説明します。

既存のルールにカウンターを追加する手順は、「既存のルールへのカウンターの追加」を参照してください。

前提条件

  • ルールを追加するチェーンが存在する。

手順

  1. counter パラメーターで、新しいルールをチェーンに追加します。以下の例では、ポート 22 で TCP トラフィックを許可し、このルールに一致するパケットとトラフィックをカウントするカウンターを使用するルールを追加します。

    # nft add rule inet example_table example_chain tcp dport 22 counter accept
  2. カウンター値を表示するには、次のコマンドを実行します。

    # nft list ruleset
    table inet example_table {
      chain example_chain {
        type filter hook input priority 0; policy accept;
        tcp dport ssh counter packets 6872 bytes 105448565 accept
      }
    }

30.15.2. 既存のルールへのカウンターの追加

ルールが一致しているかどうかを確認するには、カウンターを使用できます。本セクションでは、既存のルールにカウンターを追加する方法を説明します。

カウンターで新しいルールを追加する手順は、「カウンターによるルールの作成」を参照してください。

前提条件

  • カウンターを追加するルールがある。

手順

  1. チェーンのルール (ハンドルを含む) を表示します。

    # nft --handle list chain inet example_table example_chain
    table inet example_table {
      chain example_chain { # handle 1
        type filter hook input priority 0; policy accept;
        tcp dport ssh accept # handle 4
      }
    }
  2. ルールの代わりに、counter パラメーターを使用してカウンターを追加します。以下の例は、前の手順で表示したルールの代わりに、カウンターを追加します。

    # nft replace rule inet example_table example_chain handle 4 tcp dport 22 counter accept
  3. カウンター値を表示するには、次のコマンドを実行します。

    # nft list ruleset
    table inet example_table {
      chain example_chain {
        type filter hook input priority 0; policy accept;
        tcp dport ssh counter packets 6872 bytes 105448565 accept
      }
    }

30.15.3. 既存のルールに一致するパケットの監視

nftables のトレース機能と、nft monitor コマンドを組み合わせることにより、管理者はルールに一致するパケットを表示できます。この手順では、ルールのトレースと、このルールに一致するパケットの監視を有効にする方法を説明します。

前提条件

  • カウンターを追加するルールがある。

手順

  1. チェーンのルール (ハンドルを含む) を表示します。

    # nft --handle list chain inet example_table example_chain
    table inet example_table {
      chain example_chain { # handle 1
        type filter hook input priority 0; policy accept;
        tcp dport ssh accept # handle 4
      }
    }
  2. ルールの代わりに meta nftrace set 1 パラメーターを使用して、トレース機能を追加します。以下の例は、前の手順で表示したルールの代わりに、トレースを有効にします。

    # nft replace rule inet example_table example_chain handle 4 tcp dport 22 meta nftrace set 1 accept
  3. nft monitor コマンドを使用して、トレースを表示します。以下の例は、コマンドの出力をフィルタリングして、inet example_table example_chain が含まれるエントリーのみを表示します。

    # nft monitor | grep "inet example_table example_chain"
    trace id 3c5eb15e inet example_table example_chain packet: iif "enp1s0" ether saddr 52:54:00:17:ff:e4 ether daddr 52:54:00:72:2f:6e ip saddr 192.0.2.1 ip daddr 192.0.2.2 ip dscp cs0 ip ecn not-ect ip ttl 64 ip id 49710 ip protocol tcp ip length 60 tcp sport 56728 tcp dport ssh tcp flags == syn tcp window 64240
    trace id 3c5eb15e inet example_table example_chain rule tcp dport ssh nftrace set 1 accept (verdict accept)
    ...
    警告

    nft monitor コマンドは、トレースが有効になっているルールの数と、一致するトラフィックの量に応じて、大量の出力を表示できます。grep などのユーティリティーを使用して出力をフィルタリングします。

30.16. nftables ルールセットのバックアップおよび復元

本セクションでは、nftables ルールのバックアップをファイルに作成し、ファイルからのルールを復元する方法を説明します。

管理者は、ルールを持つファイルを使用して、たとえば、ルールを別のサーバーに転送できます。

30.16.1. ファイルへの nftables ルールセットのバックアップ

本セクションでは、nftables ルールセットをファイルにバックアップする方法を説明します。

手順

  1. nftables ルールのバックアップを作成するには、次のコマンドを実行します。

    • nft list ruleset 形式の場合は、以下のようになります。

      # nft list ruleset > file.nft
    • JSON 形式の場合は、以下のようになります。

      # nft -j list ruleset > file.json

30.16.2. ファイルからの nftables ルールセットの復元

本セクションでは、nftables ルールセットを復元する方法を説明します。

手順

  1. nftables ルールを復元するには、以下を行います。

    • 復元するファイルが nft list ruleset 形式であるか、nft コマンドが含まれている場合は、次のコマンドを実行します。

      # nft -f file.nft
    • 復元するファイルが JSON 形式の場合は、次のコマンドを実行します。

      # nft -j -f file.json

第31章 DPDK の使用

Data Plane Development Kit (DPDK) は、ユーザー領域でパッケージ処理を加速する、ライブラリーとネットワークドライバーを提供します。

管理者は、たとえば仮想マシンで、SR-IOV (Single Root I/O Virtualization) を使用して、レイテンシーを減らして I/O スループットを増やします。

注記

Red Hat は、実験的な DPDK API に対応していません。

31.1. dpdk パッケージのインストール

このセクションでは、dpdk パッケージのインストール方法を説明します。

前提条件

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

手順

  1. yum ユーティリティーを使用して dpdk パッケージをインストールします。

    # yum install dpdk

法律上の通知

Copyright © 2020 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.