Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

ネットワークガイド

Red Hat Enterprise Linux 7

Red Hat Enterprise Linux におけるネットワークの設定と管理

Ioanna Gkioka

Red Hat Customer Content Services

Mirek Jahoda

Red Hat Customer Content Services

Jana Heves

Red Hat Customer Content Services

Stephen Wadeley

Red Hat Customer Content Services

Christian Huffman

Red Hat Customer Content Services

概要

Red Hat Enterprise Linux 7 ネットワークガイド』では、Red Hat Enterprise Linux におけるネットワークインターフェース、ネットワーク、およびネットワークサービスの設定および管理に関する情報を説明します。本ガイドは、Linux およびネットワークに関する基本的知識があるシステム管理者を対象としています。

注記

専門知識を深めるには、Red Hat システム管理 I (RH124) トレーニングコースの受講をお勧めします。

パート I. 作業を開始する前に

第1章 ネットワークトピックの概要

本章では、Red Hat Enterprise Linux でネットワークサービスの基本概念の概要を説明します。

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

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

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

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

1.2. 静的 IP アドレス指定と動的 IP アドレス指定の比較

静的 IP アドレス指定
デバイスに静的 IP アドレスが割り当てられている場合、そのアドレスは手動で変更しない限り、時間の経過とともに変わることはありません。静的 IP アドレス指定の使用が推奨されるのは、次のような場合です。
  • DNS などのサーバーや認証サーバーのネットワークアドレスの整合性を確保する。
  • 他のネットワークインフラストラクチャから独立して動作する、帯域外管理デバイスを使用する。
「ネットワーク設定方法の選択」に記載されるすべての設定ツールを使用すると、静的な IP アドレスを手動で割り当てることができます。「nmcli を使用した静的イーサネット接続の追加および設定」 で説明されている nmcli ツールも適しています。
自動設定および管理の詳細は、『Red Hat Enterprise Linux 7 システム管理ガイド』の『OpenLMI』を参照してください。『Red Hat Enterprise Linux 7 インストールガイド』 では、ネットワーク設定の割り当てを自動化するのに使用できる キックスタート ファイルの使用方法を説明します。
動的 IP アドレス指定
デバイスに動的 IP アドレスが割り当てられている場合、そのアドレスは時間の経過とともに変わります。このため、マシンの再起動後には IP アドレスが変わる可能性があるので、随時ネットワークに接続するデバイスに推奨されます。
動的 IP アドレスはより柔軟で、設定と管理が簡単です。ダイナミックホストコントロールプロトコル (DHCP) は、ネットワーク設定をホストに動的に割り当てる従来の方法です。詳細は「DHCP を使用する理由」を参照してください。また、「nmcli を使用した動的イーサネット接続の追加および設定」 で説明されているように、nmcli ツールを使用できます。

注記

静的 IP アドレスまたは動的 IP アドレスをどのような場合に使用するかを定義する厳密な規則はありません。ユーザーのニーズ、設定、およびネットワーク環境によって異なります。
デフォルトでは、NetworkManager は、DHCP クライアントである dhclient を呼び出します。

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

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

IP アドレスの要求

DHCP 接続が開始すると、dhcp クライアントは、DHCP サーバーに IP アドレスを要求します。dhcp クライアントがこの要求を完了するのを待つ時間は、デフォルトで 60 秒です。nmcli ツールを使用して、ipv4.dhcp-timeout プロパティーを設定できます。または、/etc/sysconfig/network-scripts/ifcfg-ifname ファイルの IPV4_DHCP_TIMEOUT オプションを使用して設定できます。たとえば、次のように、nmcli を使用します。
~]# nmcli connection modify eth1 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 サーバーからのアドレスの取得を再試行することに注意してください。

リース更新の要求

dhcp アドレスを取得し、IP アドレスのリースを更新できない場合、dhcp クライアントは 2 分ごとに 3 回再起動して、dhcp サーバーからリースを取得しようとします。毎回、リースを取得するために、ipv4.dhcp-timeout プロパティーを秒単位 (デフォルトは 60) で設定します。試行時に応答を得ると、プロセスは停止し、リースが更新されます。
3 回失敗した後:
  • ipv4.may-failyes (デフォルト) に設定されており、IPv6 が正常に設定されている場合、接続はアクティブになり、dhcp クライアントは 2 分ごとに再起動します。
  • ipv4.may-failno に設定すると、接続が無効になります。この場合、接続の autoconnect プロパティーが有効になっていると、接続は最初からアクティブになります。

1.3.1. DHCPv4 の永続化

起動時とリース更新プロセス実行時の両方で DHCPv4 を永続化するには、ipv4.dhcp-timeout プロパティーを、32 ビットの整数の最大値 (MAXINT32) である 2147483647 か、または次の infinity 値に設定します。
~]$ nmcli connection modify eth1 ipv4.dhcp-timeout infinity
その結果、NetworkManager による DHCP サーバーからのリースの取得または更新の試行は、成功するまで停止しません。
リース更新プロセス中にのみ DHCP の永続的な動作を保証するには、/etc/sysconfig/network-scripts/ifcfg-ethX 設定ファイルで、または次のように nmcli を使用して、IPADDR プロパティーに静的 IP を手動で追加します。
~]$ nmcli connection modify eth0 ipv4.address 192.168.122.88/24
IP アドレスのリース期限が切れると、静的 IP は、設定済みあるいは一部設定済みの IP 状態を保持します。IP アドレスを持つことはできますが、インターネットには接続されていません。dhcp クライアントが 2 分ごとに再起動することを確認してください。

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

1.5. netconsole の設定

ディスクへのログの記録に失敗した場合や、シリアルコンソールが使用できない場合は、カーネルデバッグの使用が必要になる場合があります。netconsole カーネルモジュールを使用すると、カーネルメッセージのログを、ネットワーク上の別のコンピューターに記録できます。
netconsole を使用できるようにするには、ネットワークに適切に設定されている rsyslog サーバーが必要です。

手順1.1 netconsole 用 rsyslog サーバーの構成

  1. /etc/rsyslog.conf ファイルの MODULES セクションにある以下の行をアンコメントし、514/udp ポートをリッスンしてネットワークからメッセージを受け取るように rsyslogd を設定します。
    $ModLoad imudp
    $UDPServerRun 514
  2. rsyslogd サービスを再起動して、変更を有効にします。
    ]# systemctl restart rsyslog
  3. rsyslogd が、514/udp ポートをリッスンしていることを確認します。
    ]# netstat -l | grep syslog
    udp        0      0 0.0.0.0:syslog          0.0.0.0:*
    udp6       0      0 [::]:syslog             [::]:*
    netstat -l により 0.0.0.0:syslog 値および [::]:syslog 値が出力されていますが、これは rsyslogd/etc/services ファイルで定義されるデフォルトの netconsole ポートをリッスンしていることを意味します。
    ]$ cat /etc/services | grep syslog
    syslog          514/udp
    syslog-conn     601/tcp                 # Reliable Syslog Service
    syslog-conn     601/udp                 # Reliable Syslog Service
    syslog-tls      6514/tcp                # Syslog over TLS
    syslog-tls      6514/udp                # Syslog over TLS
    syslog-tls      6514/dccp               # Syslog over TLS
Netconsole は、initscripts パッケージに含まれる /etc/sysconfig/netconsole ファイルを使用して設定します。このパッケージはデフォルトでインストールされ、netconsole サービスも提供します。
送信元マシンを設定する場合は、次の手順に従ってください。

手順1.2 送信元マシンの設定

  1. /etc/sysconfig/netconsole ファイルの SYSLOGADDR 変数の値を、syslogd サーバーの IP アドレスと一致するように設定します。以下に例を示します。
    SYSLOGADDR=192.168.0.1
  2. netconsole サービスを再起動して、変更を有効にします。
    ]# systemctl restart netconsole.service
  3. システムを再起動した後に netconsole.service を実行できるようにします。
    ]# systemctl enable netconsole.service
  4. /var/log/messages ファイル (デフォルト)、または rsyslog.conf で指定したファイルにある、クライアントの netconsole メッセージを表示します。
    ]# cat /var/log/messages

注記

デフォルトでは、rsyslogd および netconsole.service はポート 514 を使用します。別のポートを使用するには、/etc/rsyslog.conf で次の行を、必要なポート番号に変更します。
$UDPServerRun <PORT>
送信元マシンで、/etc/sysconfig/netconsole ファイルの以下の行をアンコメントして編集します。
SYSLOGPORT=514
netconsole 設定の詳細およびトラブルシューティングのヒントについては、Netconsole カーネルのドキュメント を参照してください。

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

sysctl ユーティリティーを介して特定のカーネル調整パラメーターを使用すると、実行中のシステムでネットワーク設定を調整し、ネットワークパフォーマンスに直接影響を与えることができます。
ネットワーク設定を変更するには、sysctl コマンドを使用します。システムを再起動しても維持される永続的な変更を行うには、/etc/sysctl.conf ファイルにそれを設定する行を追加します。
利用可能なすべての sysctl パラメーターを表示するには、root で以下を実行します。
~]# sysctl -a
sysctl を使用したネットワークカーネル調整パラメーターの詳細は、『システム管理ガイド』の「複数のインターフェースでの PTP の使用」を参照してください。
ネットワークカーネル調整パラメーターの詳細は、『カーネル管理ガイド』の「Network Interface Tunables」を参照してください。

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

ncat ネットワークユーティリティーは、Red Hat Enterprise Linux 7 で netcat に置き換わりました。ncat は信頼できるバックエンドツールで、他のアプリケーションやユーザーにネットワーク接続を提供します。ネットワークをまたいでコマンドラインからデータを読み書きし、Transmission Control Protocol (TCP)、User Datagram Protocol (UDP)、Stream Control Transmission Protocol (SCTP)、または Unix ソケットを使用して通信します。ncat は、IPv4IPv6 の両方を処理し、接続を開き、パケットを送信し、ポートスキャンを実行でき、SSL、コネクションブローカーなどの高度な機能をサポートします。
同じオプションを使用して、nc コマンドも ncat として入力できます。ncat オプションの詳細は、『移行計画ガイド』の新しいネットワーキングユーティリティ (ncat) と、man ページの 『ncat(1)』 を参照してください。

ncat のインストール

ncat パッケージをインストールするには、root で以下のコマンドを実行します。
~]# yum install 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 オプションが必要です。OpenSSL の詳細は、『セキュリティーガイド』のOpenSSL の使用を参照してください。
その他の例は、man ページの 『ncat(1)』 を参照してください。

パート II. IP ネットワークの管理

第2章 NetworkManager の使用

2.1. NetworkManager の概要

Red Hat Enterprise Linux 7 では、NetworkManager がデフォルトのネットワークサービスを提供します。これは動的なネットワーク制御および設定デーモンで、ネットワークデバイスと接続が利用可能な間は、これらをアクティブな状態に保ちます。従来の ifcfg タイプの設定ファイルも、サポートが継続されます。詳細は、「ネットワークスクリプトによる NetworkManager の使用」を参照してください。

2.1.1. NetworkManager を使用する利点

NetworkManager を使用する主な利点は、次の通りです。
  • ネットワーク管理が容易になります。NetworkManager はネットワーク接続を確実に機能させます。システムにネットワーク設定がないにも関わらず、ネットワークデバイスがあることを検出すると、NetworkManager は一時的な接続を作成して接続を提供します。
  • ユーザーの接続設定が簡単になります。NetworkManager は、GUI、nmtui、nmcli など、さまざまなツールでの管理を提供します。「NetworkManager のツール」を参照してください。
  • 柔軟な設定に対応します。たとえば、WiFi インターフェースを設定すると、NetworkManager は、使用可能な wifi ネットワークをスキャンして表示します。インターフェースを選択でき、NetworkManager は再起動プロセス後の自動接続を提供するのに必要な資格情報を表示します。NetworkManager では、ネットワークエイリアス、IP アドレス、静的ルート、DNS 情報、VPN 接続の他、接続固有の多くのパラメーターを設定できます。設定オプションは必要に合わせて修正できます。
  • ネットワーク設定と状態についてアプリケーションによるクエリーと制御を可能にする、D-Bus を介した API を提供します。この方法により、アプリケーションは D-BUS を介してネットワークを確認し、制御できます。たとえば、Web ベースインターフェース Cockpit は、Web ブラウザ―経由でサーバーを監視して設定し、NetworkManager D-BUS インターフェースを使用してネットワークを設定します。
  • 再起動プロセス後もデバイスの状態を維持し、再起動中に管理モードに設定されているインターフェースを引き継ぎます。
  • 明示的に管理対象外として設定されていないが、ユーザーまたは他のネットワークサービスによって手動で制御されているデバイスを処理します。

2.2. NetworkManager のインストール

NetworkManager は、デフォルトで Red Hat Enterprise Linux にインストールされます。インストールされていない場合は、root で以下のコマンドを実行します。
~]# yum install NetworkManager
ユーザーの権限および権限の取得に関する詳細情報は、Red Hat Enterprise Linux システム管理者のガイドを参照してください。

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

2.4. NetworkManager の開始

NetworkManager を開始するには、以下のコマンドを実行します。
~]# systemctl start NetworkManager
システムの起動時に自動的に NetworkManager を有効にするには、以下のコマンドを実行します。
~]# systemctl enable NetworkManager
サービスの起動、停止、および管理の詳細は、「systemd によるサービス管理」を参照してください。

2.5. systemdNetworkManager の管理

Systemd は、Linux オペレーティングシステムのシステムおよびサービスマネージャーです。systemd の詳細は、「systemd によるサービス管理」を参照してください。プロセスは特定の順番で実行するようにサービスを管理できます。このため、systemd には特別なユニットディレクティブ (Before および After) があります。
この手順は、ネットワークが切断される前に NetworkManager.service を停止する方法を説明します。
systemd では、ネットワークが切断している場合、systemd.services のシャットダウンの順番に対して、次のターゲットユニットが重要になります。

2.6. ネットワークスクリプトによる NetworkManager の使用

本セクションは、スクリプトの実行方法と、ネットワークスクリプトでカスタムコマンドを使用する方法を説明します。
ネットワークスクリプト という用語は、/etc/init.d/network スクリプト、またはそれが呼び出すその他のインストール済みスクリプトを指します。NetworkManager は、デフォルトのネットワークサービスを提供し、スクリプトおよび NetworkManager は同時に実行し、連携させることができます。Red Hat は、それを最初にテストすることを推奨します。

ネットワークスクリプトの実行

ネットワークスクリプトは、systemctl コマンドを使用した場合に 限り 実行します。
systemctl start|stop|restart|status network
systemctl ユーティリティーは、既存の環境変数を削除し、正しく実行されるようにします。
Red Hat Enterprise Linux 7 では NetworkManager が最初に起動し、/etc/init.d/networkNetworkManager をチェックして NetworkManager 接続の改ざんを防ぎます。NetworkManager は sysconfig 設定ファイルを使用するプライマリーアプリケーションとされており、/etc/init.d/network はセカンダリーとされています。
/etc/init.d/network スクリプトは、以下を実行します。
  1. 手動 (systemctl コマンドの start|stop|restart network のいずれかで使用)。
    または
  2. ネットワークサービスが有効になっている場合は、起動時およびシャットダウン時 (systemctl enable network コマンドによる)。
これは手動のプロセスで、起動後に発生するイベントに反応しません。ユーザーは ifup スクリプトおよび ifdown スクリプトを手動で呼び出すこともできます。

注記

initscript の技術制限により、systemctl reload network.service コマンドが動作しません。ネットワークサービスに新しい設定を適用するには、restart コマンドを使用します。
~]# systemctl restart network.service
これにより、新しい設定を読み込むために、ネットワークインターフェースカード (NIC) をすべて無効にして有効にします。詳細は、Red Hat ナレッジベースソリューション 「Reload and force-reload options for network service」を参照してください。

ネットワークスクリプトのカスタムコマンドを使用

/sbin/ifup-localifdown-pre-local、および ifdown-local の各スクリプト内のカスタムコマンドは、そのデバイスが /etc/init.d/network サービスで制御されている時にのみ、実行されます。ifup-local ファイルは、デフォルトでは存在しません。必要であれば、/sbin/ ディレクトリーの下に作成します。
ifup-local スクリプトは initscripts だけが読み取り可能で、NetworkManager は読み取ることができません。NetworkManager を使ってカスタムスクリプトを実行するには、dispatcher.d ディレクトリーの下に作成します。「dispatcher スクリプトの実行」を参照してください。

重要

initscripts パッケージに含まれるファイルや、関連する rpms を変更することは推奨されません。ファイルを変更した場合は、Red Hat サポートの対象外となります。
カスタムタスクは、ネットワーク接続が起動または停止したときに、従来の ネットワークスクリプト および NetworkManager の両方を使用して実行できます。NetworkManager が有効な場合は、ifup スクリプトおよび ifdown スクリプトにより、NetworkManager が問題のインターフェースを管理するかどうかを NetworkManager に尋ねます。これは、ifcfg ファイルの DEVICE= 行で確認できます。
NetworkManager が管理するデバイス:
ifup の呼び出し
ifup を呼び出し、デバイスが NetworkManager により 管理されている 場合は、オプションが 2 つあります。
  • デバイスが接続されて いない 場合は、ifup により、NetworkManager が接続を開始します。
  • デバイスがすでに 接続している 場合は、何もする必要がありません。
ifdown の呼び出し
ifdown を呼び出し、デバイスが NetworkManager により 管理される 場合は、以下を行います。
  • ifdown により、NetworkManager は接続を終了します。
NetworkManager が管理しないデバイス:
ifup または ifdown を呼び出す場合は、このスクリプトが、NetworkManager が現れる前から使用されていた、NetworkManager 以外のメカニズムを使用して接続を開始します。

dispatcher スクリプトの実行

NetworkManager により、別のカスタムスクリプトを実行し、接続の状態に応じてサービスを開始/停止できます。デフォルトでは、/etc/NetworkManager/dispatcher.d/ ディレクトリーが存在し、NetworkManager はアルファベット順にそこにあるスクリプトを実行します。それぞれのスクリプトは、root所有者である 実行可能ファイルで、ファイル所有者にのみ 書き込みのパーミッション が設定されている必要があります。NetworkManager の dispatcher スクリプト実行の詳細は、Red Hat ナレッジベースソリューション「ethtool コマンドを適用するように NetworkManager の dispatcher スクリプトを記述する」を参照してください。

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

/etc/sysconfig/ ディレクトリーは、設定ファイルとスクリプト用の場所です。ほとんどのネットワーク設定情報がここに保存されます。例外は VPN、モバイルブロードバンド、および PPPoE の設定で、これらは /etc/NetworkManager/ サブディレクトリーに保存されます。たとえば、インターフェース固有の情報は、/etc/sysconfig/network-scripts/ ディレクトリーの ifcfg ファイルに保存されます。
グローバル設定には、/etc/sysconfig/network ファイルを使用します。VPN、モバイルブロードバンド、および PPPoE 接続の情報は、/etc/NetworkManager/system-connections/ に保存されます。
Red Hat Enterprise Linux 7 では、ifcfg ファイルを編集しても、NetworkManager は自動的に変更を認識しないため、変更を通知する必要があります。このツールのいずれかを使用して NetworkManager プロファイル設定を更新した場合は、そのプロファイルを使用して再接続するまで、NetworkManager はこの変更を実装しません。たとえば、エディターを使用して設定ファイルを変更すると、NetworkManager がその設定ファイルを再度読み込む必要があります。
これを確実に行うには、root で以下を入力し、すべての接続プロファイルを再読み込みします。
~]# nmcli connection reload
また、変更したファイル ifcfg-ifname1 つだけ 再読み込みするには、以下のコマンドを実行します。
~]# nmcli con load /etc/sysconfig/network-scripts/ifcfg-ifname
上記のコマンドを使用して複数のファイル名を指定できることに注意してください。
nmcli などのツールで行った変更をリロードする必要はありませんが、関連するインターフェースをオフラインにしてから再度オンラインにする必要があります。
~]# nmcli dev disconnect interface-name
~]# nmcli con up interface-name
nmcli の詳細は、「nmcli を使用する IP ネットワークの設定」を参照してください。
ifup コマンドの実行時に NetworkManager が稼働している場合、ネットワークスクリプトは NetworkManager の起動を試みますが、NetworkManager はネットワークスクリプトを起動することはありません。ネットワークスクリプトの詳細は、「ネットワークスクリプトによる NetworkManager の使用」を参照してください。
ifup スクリプトは汎用スクリプトで、いくつかの動作を行った後に、ifup-ethXifup-wirelessifup-ppp などのインターフェース固有のスクリプトを呼び出します。ユーザーが ifup eth0 を手動で実行すると、以下のことが発生します。
  1. ifup/etc/sysconfig/network-scripts/ifcfg-eth0 という名前のファイルを検索します。
  2. ifcfg ファイルが存在する場合、ifup はそのファイルの TYPE キーを探して、どのタイプ固有のスクリプトを呼び出すか判断します。
  3. ifupTYPE に基づいて ifup-wirelessifup-eth、または ifup-XXX のいずれかを呼び出します。
  4. タイプ固有のスクリプトがタイプ固有のセットアップを実行します。
  5. タイプ固有のスクリプトは、共通機能に DHCP や静的セットアップなどの IP 関連タスクの実行を許可します。
/etc/init.d/network は起動時にすべての ifcfg ファイルを読み込み、ONBOOT=yes となっているすべてのファイルに関して、NetworkManager がすでに ifcfg ファイルの DEVICE を起動しているかどうかをチェックします。NetworkManager がデバイスを起動している最中、またはすでに起動し終わっている場合は、そのファイルについてはこれ以上なにも実行されず、次の ONBOOT=yes ファイルがチェックされます。NetworkManager がまだデバイスを起動していない場合は、initscripts は従来の動作を継続し、その ifcfg ファイルの ifup を呼び出します。
その結果、ifcfg ファイルで ONBOOT=yes となっているものはすべて、NetworkManager または initscripts でシステム起動時に開始されるはずです。これにより、(ISDN、アナログダイヤルアップのモデムなどの) NetworkManager が処理しないレガシーネットワークタイプや、NetworkManager のサポート対象となっていない新規アプリケーションは、NetworkManager がこれらを処理できなくても initscripts で正常に開始されることになります。

重要

スクリプトは、ifcfg-* だけを行うため、バックアップファイルは、 /etc ディレクトリー、または使用中のファイルと同じ場所に保存しないようにすることが推奨されます。拡張子が .old.orig.rpmnew.rpmorig、および .rpmsave のものは除外されます。
sysconfig ファイルを使用する方法は、「ifcfg ファイルを使用した IP ネットワークの設定」、および man ページの 『ifcfg(8)』 を参照してください。

2.8. NetworkManager のツール

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

アプリケーションおよびツール説明
nmcliコマンドラインツール。ユーザーとスクリプトが NetworkManager で対話できるようにします。nmcli を、サーバーなど GUI のないシステムで使用して、NetworkManager の全要素を制御できる点に注意。GUI ツールのようにさらに高度な機能を提供します。
nmtuiNetworkManager 用のシンプルな curses ベースのテキストユーザーインターフェース (TUI)
nm-connection-editorボンドの設定、接続のチーミングなど、control-center ユーティリティーが対応していない特定のタスク用のグラフィカルユーザーインターフェース。NetworkManager で保存されたネットワーク接続を追加、削除、変更できます。これを開始するには、端末に nm-connection-editor と入力します。
~]$ nm-connection-editor
control-centerデスクトップユーザーが使用するユーザーインターフェース。GNOME Shell が提供し、ネットワーク設定ツールが含まれます。Super キーを押してアクティビティー概要画面を開き、Network と入力してから Enter キーを押すと開始して、ネットワーク設定ツールが表示されます。
network connection iconGNOME Shell が提供するグラフィカルユーザーインターフェースツールで、NetworkManager から報告されたネットワーク接続の状態を示します。アイコンには複数の状態があり、現在使用中の接続の種類を視覚的に表示します。

2.9. 関連資料

  • man(1) man ページ: man ページについての説明とそれらの見つけ方が説明されています。
  • NetworkManager(8) man ページ - ネットワーク管理デーモンについて説明されています。
  • NetworkManager.conf(5) man ページ: NetworkManager 設定ファイルについて説明されています。
  • /usr/share/doc/initscripts-version/sysconfig.txt: レガシーのネットワークサービスで理解される ifcfg 設定ファイルとそのディレクティブについて説明されています。
  • /usr/share/doc/initscripts-version/examples/networking/: 設定ファイルのサンプルが含まれるディレクトリーです。
  • ifcfg(8) の man ページ - ifcfg コマンドについて簡単に説明します。

第3章 IP ネットワークの設定

システム管理者は、NetworkManager を使用して、ネットワークインターフェースを設定することもできます。

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

3.2. nmtui を使用した IP ネットワークの設定

システム管理者は、NetworkManager ツール nmtui を使用してネットワークインターフェースを設定できます。「NetworkManager のツール」を参照してください。
この手順は、テキスト形式のユーザーインターフェースツール nmtui を使用してネットワークを設定する方法を説明します。
前提条件
  • 端末ウィンドウで nmtui ツールが使用されている。NetworkManager-tuiパッケージに同梱されますが、デフォルトでは、(NetworkManager と同様) インストールされません。NetworkManager-tui をインストールするには、以下のコマンドを実行します。
    ~]# yum install NetworkManager-tui
  • NetworkManager を実行していることを確認するには、「NetworkManager のステータスの確認」を参照してください。
手順
  1. nmtui ツールを起動します。
    ~]$ nmtui
    テキストユーザーインターフェースが表示されます。
    NetworkManager のテキスト形式ユーザーインターフェースの開始メニュー

    図3.1 NetworkManager のテキスト形式ユーザーインターフェースの開始メニュー

  2. 移動するには矢印キーを使用するか、Tab を押して次に進むか Shift+Tab を押して前に戻ります。Enter を押してオプションを選びます。Space バーは、チェックボックスのステータスを切り替えます。
すでにアクティブな接続に加えた変更を適用するには、接続の再アクティブ化が必要です。この場合は、以下の手順を実施します。
手順
  1. 接続をアクティベートする メニューエントリーを選択します。
    接続のアクティブ化

    図3.2 接続のアクティブ化

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

    図3.3 修正した接続の非アクティブ化

  3. もう一度接続を選択し、アクティベート ボタンをクリックします。
    修正した接続の再アクティブ化

    図3.4 修正した接続の再アクティブ化

以下のコマンドも利用できます。
  • nmtui edit connection-name
    接続名を指定しないと、選択メニューが表示されます。接続名を指定して適切に認識されると、関連する 接続の編集 画面が表示されます。
  • nmtui connect connection-name
    接続名を指定しないと、選択メニューが表示されます。接続名を指定して適切に認識されると、関連する接続がアクティブ化されます。無効なコマンドの場合は、使用法に関するメッセージがプリントされます。
nmtui は、すべての種類の接続をサポートしているわけではない点に注意してください。特に、VPN、WPA Enterprise を使用したワイヤレスネットワーク接続、802.1X を使用したイーサネット接続は編集できません。

3.3. nmcli を使用する IP ネットワークの設定

nmcli (NetworkManager コマンドラインインターフェース) コマンドラインユーティリティーは、NetworkManager を制御しネットワークの状態をレポートするのに使用されます。このユーティリティーは、nm-applet またはその他のグラフィカルクライアントの代替として使用できます。「NetworkManager のツール」を参照してください。nmcli は、ネットワークデバイスの状態を制御および表示するのに加えて、ネットワーク接続を作成、表示、編集、削除、アクティブ化、および非アクティブ化するのに用いられます。
ユーザーおよびスクリプトの両方が、nmcli ユーティリティーを使用して NetworkManager を制御できます。
  • サーバー、ヘッドレスのマシン、およびターミナルについては、GUI を介さずに直接 nmcli を使って NetworkManager を制御し、ネットワーク接続を作成、編集、開始、および停止したり、ネットワークの状態を把握したりできます。
  • スクリプトに関しては、nmcli はスクリプト処理に適した簡素出力フォーマットをサポートします。この場合、ネットワーク接続を手動で管理するのではなく、ネットワーク設定の整合性を維持するために用いられます。
nmcli コマンドの基本形式は、以下のようになります。
nmcli [OPTIONS] OBJECT { COMMAND | help }
ここで、OBJECT は generalnetworkingradioconnectiondeviceagent、および monitor のいずれかに設定できます。コマンドには、このいずれかのプレフィックスを使用できます。たとえば、nmcli con helpnmcli c helpnmcli connection help はいずれも同じ出力を生成します。
OPTIONS で便利なオプションは以下のとおりです。
-t (terse)
このモードは、コンピューターのスクリプト処理に使用される場合があり、値だけを表示する簡潔な出力を確認できます。

例3.1 簡潔な出力の表示

nmcli -t device
ens3:ethernet:connected:Profile 1
lo:loopback:unmanaged:
-f (field)
このオプションでは、どのフィールドを出力に表示できるかを指定します。たとえば、NAME、UUID、TYPE、AUTOCONNECT、ACTIVE、DEVICE、STATE などです。フィールドは、1 つまたは複数使用できます。複数のフィールドを使用する場合は、フィールドを区切るコンマの後にスペースを入れないでください。

例3.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 により、人間が理解可能な出力を生成します。たとえば、値を揃え、ヘッダーを表示します。

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

nmcli -p device
=====================
  Status of devices
=====================
DEVICE  TYPE      STATE      CONNECTION
--------------------------------------------------------------
ens3    ethernet  connected  Profile 1
lo      loopback  unmanaged  --
-h (help)
ヘルプ情報を表示します。
nmcli ツールには、コンテキスト感知ヘルプが組み込まれています。
nmcli help
このコマンドでは、その後のコマンドで使用される利用可能なオプションおよびオブジェクト名のリストが表示されます。
nmcli object help
このコマンドでは、指定したオブジェクトに関する利用可能なアクションのリストが表示されます。以下に例を示します。
nmcli c help

3.3.1. nmcli の簡単な選択例

例3.4 NetworkManager の全体ステータスの確認

~]$ nmcli general status
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN
connected  full          enabled  enabled  enabled  enabled
簡潔モードの場合:
~]$ nmcli -t -f STATE general
connected

例3.5 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

例3.6 すべての接続の表示

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

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

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

例3.8 NetworkManager が認識するデバイスおよびそのステータスの表示

~]$ nmcli device status
DEVICE  TYPE      STATE      CONNECTION
ens3    ethernet  connected  Profile 1
lo      loopback  unmanaged  --
nmcli コマンドの次の省略形も使用できます。

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

nmcli command省略形 
nmcli general statusnmcli g 
nmcli general loggingnmcli g log 
nmcli connection shownmcli con show 
nmcli connection show --activenmcli con show -a 
nmcli device statusnmcli dev 
その他の例は、man ページの 『nmcli-examples(5)』 を参照してください。

3.3.2. nmcli を使用したネットワークインターフェースの起動および停止

nmcli ツールを使用すると、マスターを含めたネットワークインターフェースの開始および停止ができます。例を示します。
nmcli con up id bond0
nmcli con up id port0
nmcli dev disconnect bond0
nmcli dev disconnect ens3

注記

nmcli connection down コマンドでは、デバイスからの接続は非アクティブ化されますが、その後デバイスが接続を自動的にアクティブ化することは禁じません。nmcli device disconnect コマンドでは、デバイスが切断され、手動の操作がない限りその後デバイスが接続を自動的にアクティブ化することはありません。

3.3.3. nmcli オプションについて

nmcli の重要なプロパティーオプションを以下に示します。一覧は、man ページの 『nmcli(1)』 を参照してください。
connection.type
接続の種類です。設定可能な値は、adsl、bond、bond-slave、bridge、bridge-slave、bluetooth、cdma、ethernet、gsm、infiniband、olpc-mesh、team、team-slave、vlan、wifi、wimax です。それぞれの接続の種類には、固有のコマンドオプションがあります。man ページの 『nmcli(1)』 の TYPE_SPECIFIC_OPTIONS の一覧を参照してください。以下に例を示します。
  • gsm 接続の場合は、apn でアクセスポイント名を指定する必要があります。
    nmcli c add connection.type gsm apn access_point_name
  • wifi デバイスの場合は、ssid でサービスセットの識別子を指定する必要があります。
    nmcli c add connection.type wifi ssid My identifier
connection.interface-name
接続に関連するデバイス名です。
nmcli con add connection.interface-name eth0 type ethernet
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 を使用して接続を指定できます。

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

nmcli ツールには、対話型の接続エディターがあります。使用するには、以下のコマンドを実行します。
~]$ nmcli con edit
表示されたリストから有効な接続の種類を入力するよう求められます。接続の種類を入力すると、nmcli プロンプトが表示されます。接続の種類に精通している場合は、有効な接続の type オプションを nmcli con edit コマンドに追加して、直接 nmcli プロンプト表示とすることができます。既存の接続プロファイルを編集する場合は、以下のような形式になります。
nmcli con edit [id | uuid | path] ID
新規接続プロファイルの編集には、以下の形式を使用します。
nmcli con edit [type new-connection-type] [con-name new-connection-name]
有効なコマンド一覧を確認するには、nmcli プロンプトで help と入力します。設定およびプロパティーの説明を確認するには、describe コマンドを使用します。
describe setting.property
以下に例を示します。
nmcli> describe team.config

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

接続プロファイルには、データソースへの接続に必要な接続プロパティー情報が含まれています。
nmcli を使用して、NetworkManager に新しいプロファイルを 作成 するには、以下のコマンドを実行します。
nmcli c add {ARGUMENTS}
nmcli c add では、以下に示す異なる 2 つのタイプのパラメーターが使用可能です。
プロパティー名
接続を内部的に記述するために NetworkManager が使用する名前。最も重要なものを以下に示します。
  • connection.type
    nmcli c add connection.type bond
  • connection.interface-name
    nmcli c add connection.interface-name eth0
  • connection.id
    nmcli c add connection.id "My Connection"
    属性およびその設定に関する詳細は、man ページの nm-settings(5) を参照してください。
エイリアス名
内部的にプロパティーに翻訳された、人間が理解可能な名前。最も一般的なものを以下に示します。
  • type (connection.type プロパティー)
    nmcli c add type bond
  • ifname (connection.interface-name プロパティー)
    nmcli c add ifname eth0
  • con-name (connection.id プロパティー)
    nmcli c add con-name "My Connection"
以前のバージョンの nmcli では、接続を作成するのに エイリアス名 を使用する必要がありました。たとえば、ifname eth0 および con-name My Connection。以下の形式のコマンドが使用されました。
nmcli c add type ethernet ifname eth0 con-name "My Connection"
最新のバージョンでは、プロパティー名エイリアス名 の両方を、区別なく使用できます。以下の例は、すべて有効で同じ結果が得られます。
nmcli c add type ethernet ifname eth0 con-name "My Connection" ethernet.mtu 1600
nmcli c add connection.type ethernet ifname eth0 con-name "My Connection" ethernet.mtu 1600 
nmcli c add connection.type ethernet connection.interface-name eth0 connection.id  "My Connection" ethernet.mtu 1600
引数は、接続の種類によって異なります。type 引数だけは、すべての接続の種類で必須です。また、ifnamebondteambridge、および vlan を除くすべての種類で必須です。
type (type_name)
接続の種類です。例:
nmcli c add type bond
ifname (interface_name)
接続のバインド先となるインターフェースです。例:
nmcli c add ifname interface_name type ethernet
接続プロファイルの 1 つまたは複数のプロパティーを 修正する には、以下のコマンドを使用します。
nmcli c modify
たとえば、connection.id を My Connection から My favorite connection に、connection.interface-nameeth1 に変更するには、以下のようにコマンドを実行します。
nmcli c modify "My Connection" connection.id "My favorite connection" connection.interface-name eth1

注記

一般的には、プロパティー名 が使用されます。エイリアス名 は、互換性の理由からしか使用されません。
また、イーサネットの MTU を 1600 に設定するには、サイズを以下のように修正します。
nmcli c modify "My favorite connection" ethernet.mtu 1600 
nmcli を使用して接続を修正したあと、変更を適用するには、以下のコマンドを実行して接続を再度アクティブにします。
nmcli con up con-name
以下に例を示します。
nmcli con up My-favorite-connection 
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/16)

3.3.6. nmcli を使用したネットワーク接続

現在利用可能なネットワーク接続を一覧表示するには、以下を実行します。
~]$ 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 フィールドは、常に接続 ID (名前) を表す事に留意してください。これはインターフェース名と同じように見えますが、異なるものです。上記の 2 つ目の接続では、NAME フィールドである ens3 は、ユーザーがプロファイルに割り当て、インターフェース ens3 に適用される接続 ID です。最後の接続では、ユーザーが、接続 ID MyWiFi をインターフェース wlan0 に割り当てています。
イーサネット接続を追加すると、設定プロファイルが作成され、それがデバイスに割り当てられます。新規プロファイルを作成する前に、以下のように利用可能なデバイスを確認します。
~]$ nmcli device status
DEVICE  TYPE      STATE         CONNECTION
ens3    ethernet  disconnected  --
ens9    ethernet  disconnected  --
lo      loopback  unmanaged     --
デバイスを NetworkManager が管理しない状態 (unmanaged) に設定するには、以下のコマンドを実行します。
nmcli device set ifname managed no 
たとえば、eth2 を unmanaged に設定するには、以下のコマンドを実行します。
nmcli device status
DEVICE      TYPE      STATE      CONNECTION
bond0       bond      connected  bond0
virbr0      bridge    connected  virbr0
eth1        ethernet  connected  bond-slave-eth1
eth2        ethernet  connected  bond-slave-eth2
eth0        ethernet  unmanaged  --
nmcli device set eth2 managed no 
nmcli device status
DEVICE      TYPE      STATE      CONNECTION
bond0       bond      connected  bond0
virbr0      bridge    connected  virbr0
eth1        ethernet  connected  bond-slave-eth1
eth2        ethernet  unmanaged  --
eth0        ethernet  unmanaged  --

注記

デバイスを unmanaged に設定すると、NetworkManager はそのデバイスを制御しなくなります。ただし、デバイスは接続された状態を維持します。

3.3.7. nmcli を使用した動的イーサネット接続の追加および設定

動的イーサネット接続を追加する

動的な IP 設定を使用して、イーサネット設定プロファイルを追加し、DHCP がネットワーク設定を割り当てられるようにするには、以下のコマンドを実行します。
nmcli connection add type ethernet con-name connection-name ifname interface-name
たとえば、my-office という名前の動的接続を作成するには、以下のコマンドを実行します。
~]$ nmcli con add type ethernet con-name my-office ifname ens3
Connection 'my-office' (fb157a65-ad32-47ed-858c-102a48e064a2) successfully added.
イーサネット接続を開くには、以下のコマンドを実行します。
~]$ nmcli con up my-office
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
デバイスおよび接続のステータスを確認します。
~]$ nmcli device status
DEVICE  TYPE      STATE         CONNECTION
ens3    ethernet  connected     my-office
ens9    ethernet  disconnected  --
lo      loopback  unmanaged     --

動的イーサネット接続の設定

以下のように、ホストが DHCP サーバーに送信するホスト名を変更するには、以下のように dhcp-hostname プロパティーを編集します。
~]$ nmcli con modify my-office my-office ipv4.dhcp-hostname host-name ipv6.dhcp-hostname host-name
ホストが DHCP サーバーに送信する IPv4 クライアント ID を変更するには、dhcp-client-id プロパティーを編集します。
~]$ nmcli con modify my-office my-office ipv4.dhcp-client-id client-ID-string
IPv6 には dhcp-client-id プロパティーがなく、dhclientIPv6 に識別子を作成します。詳細は、dhclient(8) man ページを参照してください。
DHCP サーバーにより、ホストに送信された DNS サーバーを無視するには、ignore-auto-dns プロパティーを修正します。
~]$ nmcli con modify my-office my-office ipv4.ignore-auto-dns yes ipv6.ignore-auto-dns yes
属性およびその設定に関する詳細は、man ページの nm-settings(5) を参照してください。

例3.9 インタラクティブエディターを使用した動的イーサネット接続の設定

インタラクティブエディターを使用して動的イーサネット接続を設定するには、次を実行します。
~]$ 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 コマンドで、プロファイルを次回の再起動時までメモリーにだけ保持することもできます。

3.3.8. nmcli を使用した静的イーサネット接続の追加および設定

静的イーサネット接続の追加

静的 IPv4 設定のイーサネット接続を追加するには、以下の形式のコマンドを使用します。
nmcli connection add type ethernet con-name connection-name ifname interface-name ip4 address gw4 address
ip6 および gw6 のオプションを使用して IPv6 アドレスとゲートウェイ情報を追加することもできます。
たとえば、IPv4 アドレスおよびゲートウェイを使用して静的イーサーネット接続を作成するには、以下のコマンドを実行します。
~]$ nmcli con add type ethernet con-name test-lab ifname ens9 ip4 10.10.10.10/24 \
gw4 10.10.10.254
必要に応じて、同時にデバイスの IPv6 アドレスおよびゲートウェイを指定します。
~]$ nmcli con add type ethernet con-name test-lab ifname ens9 ip4 10.10.10.10/24 \
gw4 10.10.10.254 ip6 abbe::cafe gw6 2001:db8::1
Connection 'test-lab' (05abfd5e-324e-4461-844e-8501ba704773) successfully added.
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 サーバーが置換されることに注意してください。別の方法では、+ 接頭辞を使用して、新たな 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"
新しいイーサネット接続を開くには、以下のコマンドを実行します。
~]$ nmcli con up test-lab ifname ens9
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
デバイスおよび接続のステータスを確認します。
~]$ nmcli device status
DEVICE  TYPE      STATE      CONNECTION
ens3    ethernet  connected  my-office
ens9    ethernet  connected  test-lab
lo      loopback  unmanaged  --
新規に設定した接続の詳細情報を表示するには、以下のコマンドを実行します。
~]$ 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[出力は省略されています]
-p, --pretty オプションを使用すると、出力にタイトルバナーが追加され、セクションが分けられます。

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

インタラクティブエディターを使用した静的イーサネット接続を設定するには、以下のコマンドを実行します。
~]$ 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>
nmcli> save temporary
Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection.
Do you still want to save? [yes] no
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' (704a5666-8cbd-4d89-b5f9-fa65a3dbc916) successfully saved.
nmcli> quit
~]$
デフォルトの動作では、接続プロファイルが永続的に保存されます。必要な場合は save temporary コマンドで、プロファイルを次回の再起動時までメモリーにだけ保持することもできます。
NetworkManager には、内部パラメーター connection.autoconnectyes に設定します。NetworkManager は、その設定を /etc/sysconfig/network-scripts/ifcfg-my-office に書き出します。ここで、対応する BOOTPROTO を none に設定し、ONBOOT を yes に設定します。
ifcfg ファイルへの手動の変更は、そのインターフェースが次に起動するまで、NetworkManager により認識されません。設定ファイルの使用方法は 「sysconfig ファイルによる NetworkManager の使用」 および 「ifcfg ファイルを使用した IP ネットワークの設定」 を参照してください。

3.3.9. nmcli を使用してプロファイルを特定のデバイスにロック

プロファイルを特定のインターフェースデバイスにロックするには、以下のコマンドを実行します。
nmcli connection add type ethernet con-name connection-name ifname interface-name
プロファイルを、互換性のあるイーサーネットインターフェースに利用できるようにするには、以下のコマンドを実行します。
nmcli connection add type ethernet con-name connection-name ifname "*"
特定のインターフェースを設定しない場合も、ifname 引数は使用する必要があります。プロファイルを互換性のあるデバイスに使用できるようにするには、ワイルドカード文字 * を使用します。
プロファイルを、特定の MAC アドレスにロックするには、以下のコマンドを実行します。
nmcli connection add type ethernet con-name "connection-name" ifname "*" mac 00:00:5E:00:53:00

3.3.10. nmcli を使用する Wi-Fi 接続の追加

利用可能な Wi-Fi アクセスポイントを表示するには、以下のコマンドを実行します。
~]$ nmcli dev wifi list
  SSID            MODE  CHAN  RATE     SIGNAL  BARS  SECURITY
  FedoraTest     Infra  11    54 MB/s  98      ▂▄▆█  WPA1
  Red Hat Guest  Infra  6     54 MB/s  97      ▂▄▆█  WPA2
  Red Hat        Infra  6     54 MB/s  77      ▂▄▆_  WPA2 802.1X
* Red Hat        Infra  40    54 MB/s  66      ▂▄▆_  WPA2 802.1X
  VoIP           Infra  1     54 MB/s  32      ▂▄__  WEP
  MyCafe         Infra  11    54 MB/s  39      ▂▄__  WPA2
静的な IP 設定で Wi-Fi 接続プロファイルを作成し、DNS アドレスの自動割り当てを有効にするには、以下のコマンドを実行します。
~]$ nmcli con add con-name MyCafe ifname wlan0 type wifi ssid MyCafe \
ip4 192.168.100.101/24 gw4 192.168.100.1
WPA2 パスワード (例: caffeine) を設定するには、以下のコマンドを実行します。
~]$ nmcli con modify MyCafe wifi-sec.key-mgmt wpa-psk
~]$ nmcli con modify MyCafe wifi-sec.psk caffeine
パスワードのセキュリティーに関する情報は、『Red Hat Enterprise Linux 7 セキュリティーガイド』を参照してください。
Wi-Fi 状態を変更するには、以下のコマンドを実行します。
~]$ nmcli radio wifi [on | off ]

nmcli を使用した特定プロパティーの変更

特定のプロパティー (例: mtu) を確認するには、以下のコマンドを実行します。
~]$ nmcli connection show id 'MyCafe' | grep mtu
802-11-wireless.mtu:                     auto
設定のプロパティーを変更するには、以下のコマンドを実行します。
~]$ nmcli connection modify id 'MyCafe' 802-11-wireless.mtu 1350
変更を確認するには、以下のコマンドを実行します。
~]$ nmcli connection show id 'MyCafe' | grep mtu
802-11-wireless.mtu:                     1350
NetworkManager802-3-ethernet802-11-wireless といったパラメーターを設定として参照し、mtu を設定のプロパティーとして参照することに留意してください。プロパティーおよびそれらの設定に関する詳細情報は、nm-settings(5) man ページを参照してください。

3.4. GNOME GUI を使用した IP ネットワークの設定

Red Hat Enterprise Linux 7 では、NetworkManager に独自のグラフィカルユーザーインターフェース (GUI) はありません。デスクトップの右上にあるネットワーク接続アイコンは GNOME シェルに含まれ、Network 設定の構成ツールは、有線、無線、vpn 接続に対応する新しい GNOME control-center GUI の一部として提供されます。nm-connection-editor は、GUI 設定用のメインツールです。control-center の機能に加え、ボンディング、チーム、ブリッジの設定など、GNOME control-center で提供されていない機能も適用されます。本セクションでは、以下を使用してネットワークインターフェースを設定できます。
  • GNOME の control-center アプリケーション
  • GNOME の nm-connection-editor アプリケーション

3.4.1. control-center GUI を使用したネットワーク接続

control-center アプリケーションの ネットワーク 設定ウィンドウにアクセスするには、2 つの方法があります。
  • Super キーを押してアクティビティーの概要を表示し、Settings と入力して Enter キーを押します。次に、左側の Network タブを選択すると、Network 設定ツールが表示されます。「control-center を使用した新しい接続の設定」 に進んでください。
  • 画面右上にある GNOME シェルのネットワーク接続アイコンをクリックして、メニューを開く。
    control-center アプリケーションを使用したネットワーク設定

    図3.5 control-center アプリケーションを使用したネットワーク設定

GNOME シェルのネットワーク接続アイコンをクリックすると、以下が表示されます。
  • 現在接続しているカテゴリー別のネットワーク一覧 (有線Wi-Fi など)
  • NetworkManager が検出した Available Networks (利用可能なネットワーク) の一覧
  • 設定済みの仮想プライベートネットワーク (VPN) への接続オプション。
    ならびに
  • Network Settings メニューエントリーの選択オプション。
ネットワークに接続されていれば、その接続名の左側に 黒い点 が表示されます。
Network Settings をクリックすると、Network 設定ツールが表示されます。「control-center を使用した新しい接続の設定」に進みます。

3.4.2. GUI を使用した新規接続の設定および既存接続の編集

システム管理者は、ネットワーク接続を設定できます。これにより、ユーザーがインターフェースの設定を適用または変更できます。それには、次のいずれかの方法を使用できます。
  • GNOME の control-center アプリケーション
  • GNOME の nm-connection-editor アプリケーション

3.4.2.1. control-center を使用した新規接続の設定および既存接続の編集

GNOME control-center アプリケーションを使用して、ネットワーク接続を作成および設定できます。
control-center を使用した新しい接続の設定
control-center アプリケーションを使用して、新しい優先、無線、vpn 接続を設定するには、以下の手順に従ってください。
  1. Super キーを押してアクティビティーの概要を表示し、Settings と入力して Enter キーを押します。次に、左側の Network タブを選択すると、Network 設定ツールが表示されます。右側のメニューに Network 設定ツールが表示されます。
    ネットワーク設定ウィンドウの表示

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

  2. 新しい接続を追加するには、プラスボタンをクリックします。
    設定するには、以下のコマンドを実行します。
    Wi-Fi 接続 を設定するには、Settings メニューの Wi-fi エントリーをクリックして、「GUI を使用した Wi-Fi 接続の設定」に進みます。
control-center を使用した既存の接続の編集
ネットワーク 設定ウィンドウで既存接続のプロファイルのギアアイコンをクリックすると 詳細 ウィンドウが開き、IP アドレスや DNS、ルート設定といったほとんどのネットワーク設定タスクが実行できます。
ネットワーク接続詳細ウィンドウを使用したネットワークの設定

図3.7 ネットワーク接続詳細ウィンドウを使用したネットワークの設定

追加や設定を行うすべての接続タイプで、NetworkManager を選択して、利用可能になると自動的にそのネットワークに接続できます。これを行うには、自動接続する を選択して、その接続が利用可能であることを NetworkManager が検出すると、NetworkManager が自動接続するようになります。NetworkManager の自動接続を望まない場合は、チェックボックスを外します。この場合、接続するには手動でネットワーク接続のアイコンを選択する必要があります。
他のユーザーにも利用可能にするには、他のユーザーにも利用可能にする チェックボックスを選択します。
接続の変更後に変更を適用するには、接続ウィンドウの右上隅にある Apply ボタンをクリックします。
Remove Connection Profile の赤いボックスをクリックすると、接続を削除できます。

3.4.2.2. nm-connection-editor を使用した新規接続の設定および既存接続の編集

nm-connection-editor GUI アプリケーションを使用すると、control-center が提供する以外の追加機能を使用して、接続を設定できます。また、nm-connection-editor は、ボンディング、ブリッジ、VLAN、チーム接続の設定など、GNOME control-center で提供されていない機能を適用します。
nm-connection-editor を使用した新しい接続の設定
nm-connection-editor を使用して、新しい接続タイプを追加するには、以下を行います。
手順
  1. 端末に nm-connection-editor を入力します。
    ~]$ nm-connection-editor
    Network Connections ウィンドウが表示されます。
  2. + (プラス) ボタンをクリックして、接続タイプを選択します。
    nm-connection-editor を使用した接続タイプの追加

    図3.8 nm-connection-editor を使用した接続タイプの追加

    nm-connection-editor を使用した接続タイプの選択

    図3.9 nm-connection-editor を使用した接続タイプの選択

    作成および設定するには、以下のコマンドを実行します。
nm-connection-editor を使用した既存接続の編集
既存の接続の種類は、Network Connections ダイアログから歯車アイコンをクリックしてください。「nm-connection-editor を使用した新しい接続の設定」を参照してください。

3.4.3. nm-connection-editor を使用した一般的な設定オプション

nm-connection-editor ユーティリティーを使用する場合は、以下の手順に従って、ほとんどの接続の種類 (イーサネット、wifi、モバイルブロードバンド、DSL) に共通する設定オプションが 5 つあります。
手順
  1. 端末に nm-connection-editor を入力します。
    ~]$ nm-connection-editor
    Network Connections ウィンドウが表示されます。+ (プラス) ボタンをクリックして接続タイプを選択するか、歯車アイコンをクリックして、既存の接続を編集します。
  2. 編集 ダイアログで 全般 タブを選択します。
    nm-connection-editor における設定オプション

    図3.10 nm-connection-editor における設定オプション

  • Connection name - 分かりやすい名前でネットワーク接続名を入力します。この名前は、Network ウィンドウメニューの接続名一覧に表示されます。
  • Connection priority for auto-activation - 接続が自動接続に設定されている場合は、番号がアクティブになります (デフォルトでは 0)。番号が大きくなれば、優先順位が高くなります。
  • Automatically connect to this network when it is available - このチェックボックスを選択すると、NetworkManager が利用可能なときにこの接続に自動接続します。詳細は「control-center を使用した既存の接続の編集」を参照してください。
  • All users may connect to this network - このチェックボックスを選択すると、システムですべてのユーザーが利用できる接続が作成されます。この設定を変更するには root 権限が必要になる場合があります。詳細は「GUI を使用したシステム全体およびプライベート接続プロファイルの管理」を参照してください。
  • この接続を使用したときは自動的に VPN に接続する - このボックスを選択すると、この接続が利用可能な時に NetworkManager が自動で選択した VPN に接続します。ドロップダウンメニューから VPN を選択します。
  • ファイアウォールゾーン - ドロップダウンメニューからファイアウォールゾーンを選択します。ファイアウォールゾーンに関する詳細情報は、『Red Hat Enterprise Linux 7 セキュリティーガイド』を参照してください。

注記

接続の種類が VPN の場合は、上記設定オプションのうち次に挙げる 3 つだけが利用可能です。接続名全ユーザーがこのネットワークに接続可能とする、および ファイアウォールゾーン

3.4.4. GUI を使用してネットワークに自動的に接続

追加や設定を行うすべての接続で、ネットワークが利用可能な時に NetworkManager が自動的に接続を試行するかどうか選択できます。以下のいずれかの方法を使用できます。
  • GNOME の control-center アプリケーション
  • GNOME の nm-connection-editor アプリケーション

3.4.4.1. control-center を使用したネットワークの自動接続

control-center を使用して、自動的にネットワークに接続できます。
手順
  1. Super キーを押してアクティビティーの概要を表示し、Settings と入力して Enter キーを押します。次に、左側の Network タブを選択すると、右側にネットワーク設定ツールが表示されます。「control-center を使用した新しい接続の設定」を参照してください。
  2. 右側のメニューから、ネットワークインターフェースを選択します。
  3. 右側のメニューにある接続プロファイルの歯車アイコンをクリックします。Network 詳細ウィンドウが表示されます。
  4. Details メニューエントリーを選択します。「control-center を使用した既存の接続の編集」を参照してください。
  5. 自動接続する を選択すると、その接続が利用可能であることを NetworkManager が検出すると、NetworkManager が自動接続するようになります。NetworkManager の自動接続を望まない場合は、チェックボックスを外します。この場合、接続するには手動でネットワーク接続のアイコンを選択する必要があります。

3.4.4.2. nm-connection-editor を使用したネットワークの自動接続

GNOME nm-connection-editor アプリケーションを使用して、ネットワークに自動的に接続することもできます。これを行うには、「nm-connection-editor を使用した一般的な設定オプション」 に記載される手順に従って、General タブの Automatically connect to this network when it is available チェックボックスを確認します。

3.4.5. GUI を使用したシステム全体およびプライベート接続プロファイルの管理

NetworkManager は、すべての 接続プロファイル を保存します。プロファイルは、インターフェースに適用できる名前付き設定の集まりです。NetworkManager では、システム全体で使用するための接続プロファイル (システムの接続) と、すべての ユーザー接続 プロファイルを格納します。接続プロファイルへのアクセスは、NetworkManager に保存されている権限により制限されます。connection 設定の permissions プロパティーの詳細は、man ページの nm-settings(5) を参照してください。次のグラフィカルインターフェースツールを使用して、接続プロファイルへのアクセスを制御できます。
  • nm-connection-editor アプリケーション
  • control-center アプリケーション

3.4.5.1. nm-connection-editor を使用した接続プロファイルの権限の管理

システムの全ユーザーが利用できる接続を作成するには、「nm-connection-editor を使用した一般的な設定オプション」 に記載される手順に従って、General タブの All users may connect to this network チェックボックスをオンにします。

3.4.5.2. control-center を使用した接続プロファイルの権限の管理

接続をその他のユーザーが利用できるようにするには、「control-center を使用した既存の接続の編集」 に記載される手順に従って、GNOME control-center の Network 設定の Details ウィンドウで、Make available to other users チェックボックスを選択します。
逆に 他のユーザーにも利用可能にする のチェックボックスを外すと、この接続はシステム全体ではなく、ユーザー固有になります。

注記

システムのポリシーによっては、接続をユーザー固有またはシステム全体に変更するために、システムで root 権限が必要となる場合があります。
NetworkManager のデフォルトポリシーでは、すべてのユーザーがシステム全体の接続を作成、編集できます。起動時に利用可能とするプロファイルは、ユーザーがログインするまで見えないため、これらをプライベートにすることはできません。たとえば、ユーザーが接続プロファイル user-em2 を作成し、自動接続する にチェックを入れて、他のユーザーにも利用可能にする にチェックを入れないと、この接続は起動時に利用可能となりません。
接続とネットワークを制限するには 2 つのオプションがあり、これらは個別または合わせて使用できます。
  • 他のユーザーにも利用可能にする のチェックボックスを外します。これでこの接続は、この変更を行ったユーザーのみが編集、使用できるようになります。
  • polkit フレームワークを使用して、ユーザーごとに全般的なネットワーク操作のパーミッションを制限します。
この 2 つのオプションを合わせると、ネットワークに関して詳細なセキュリティーと制御が可能になります。polkit に関する詳細情報は、polkit(8) man ページを参照してください。
VPN 接続は Wi-Fi やイーサネット接続よりもプライベートなものという前提なので、これは 常に ユーザーごとのプライベートとして作成されることに留意してください。

3.4.6. GUI を使用した有線 (イーサーネット) 接続の設定

GUI を使用して有線接続を構成する方法は 2 つあります。
  • control-center アプリケーション
  • nm-connection-editor アプリケーション

3.4.6.1. control-center を使用した有線接続の設定

手順
  1. Super キーを押してアクティビティーの概要を表示し、Settings と入力して Enter キーを押します。次に、左側の Network メニューエントリーを選択すると、Network 設定ツールが表示されます。「control-center を使用した新しい接続の設定」 を参照してください。
  2. 有線 ネットワークインターフェースが強調表示されていない場合は、選択します。
    システムに、デフォルトで 1 つの有線接続プロファイルが作成されて設定されます。名前は、Wired です。プロファイルとは、インターフェースに適用可能な設定の集合に名前を付けたものです。必要に応じて、1 つのインターフェースに対して複数のプロファイルを作成して、適用できます。デフォルトのプロファイルは削除できませんが、設定は変更できます。
  3. 歯車アイコンをクリックして、デフォルトの 有線 プロファイルを編集します。
基本設定オプション
Wired ダイアログでは、Identity メニューエントリーを選択すると、次の設定が表示されます。
有線接続に関する基本設定オプション

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

  • 名前: ネットワーク接続の名前を入力します。この名前は Network ウィンドウメニューの接続名一覧に表示されます。
  • MAC アドレス: このプロファイルを適用する必要のあるインターフェースの MAC アドレスを選択します。
  • クローンしたアドレス: 必要な場合には、別の MAC アドレスを入力します。
  • MTU: 必要に応じて、使用する特定の 最大転送単位 (MTU) を入力します。MTU の値は、リンク層が転送する最大パケットサイズをバイト数で表したものです。この値のデフォルトは 1500 で、通常は指定や変更の必要はありません。
有線設定の追加作成
編集ダイアログで、既存の接続をさらに設定できます。
設定するには、以下のコマンドを実行します。
新しい (または変更した) 有線接続の保存
有線接続の編集が終わったら、適用 ボタンをクリックしてカスタマイズした設定を保存します。編集中に該当プロファイルが使用されていた場合は、接続を再起動して、NetworkManager が変更を適用するようにします。プロファイルがオフだった場合は、これをオンにするか、ネットワーク接続アイコンメニューで選択します。新規および変更後の接続の使用方法は、control-center GUI を使用したネットワーク接続」を参照してください。
有線接続の新規作成
新しい有線接続プロファイルを作成するには、+ (プラス) ボタンをクリックします。「control-center を使用した新しい接続の設定」を参照してください。
+ (プラス) ボタンをクリックして新しい接続を追加する場合は、NetworkManager により、その接続用の新しい設定が作成され、既存の接続の編集に使用するのと同じダイアログが表示されます。「control-center を使用した既存の接続の編集」を参照してください。これらのダイアログの違いは、既存の接続プロファイルに Details メニューエントリーがあることです。

3.4.6.2. nm-connection-editor を使用した有線接続の設定

nm-connection-editor GUI アプリケーションは、control-center GUI アプリケーションより多くの設定オプションを提供します。nm-connection-editor を使用して有線接続を設定するには、以下を行います。
  1. 端末で nm-connection-editor を入力します。
    ~]$ nm-connection-editor
    Network Connections ウィンドウが表示されます。
  2. 編集するイーサネット接続を選択して、歯車アイコンをクリックします。
    有線接続を編集します。

    図3.12 有線接続を編集します。

    Editing ダイアログが表示されます。

3.4.7. GUI を使用した Wi-Fi 接続の設定

本セクションは、NetworkManager を使用して、アクセスポイントに Wi-Fi 接続 (ワイヤレス接続または 802.11a/b/g/n とも呼ばれます) を行う設定方法を説明します。
(3G などの) モバイルブロードバンドの設定方法は、「GUI を使用したモバイルブロードバンド接続の設定」を参照してください。

利用可能なアクセスポイントにすばやく接続

手順
  1. ネットワーク接続アイコンをクリックして、ネットワーク接続アイコンのメニューをアクティブにします。control-center GUI を使用したネットワーク接続」を参照してください。
  2. Wi-Fi ネットワークの一覧で、アクセスポイント サービスセット識別子 (SSID) を検索します。
  3. ネットワークの SSID をクリックします。鍵の記号は、アクセスポイントが認証を要求することを示します。アクセスポイントがセキュリティーで保護されている場合は、認証鍵またはパスワードの入力を求めるダイアログが表示されます。
    NetworkManager は、アクセスポイントが使用するセキュリティーの種類を自動検出しようとします。いくつかの選択肢がある場合は、NetworkManager がセキュリティーの種類を推測し、Wi-Fi security ドロップダウンメニューに表示します。
    • WPA-PSK セキュリティー (パスフレーズ付きの WPA) の場合は、選択する必要がありません。
    • WPA Enterprise (802.1X) の場合は、セキュリティーを自動検出できないため、セキュリティーを選択する必要があります。
      良くわからない場合は、順番に、それぞれのタイプに接続してみてください。
  4. Password フィールドで鍵またはパスフレーズを入力します。40 ビットの WEP 鍵または 128 ビットの WPA 鍵は、必要な長さがないと無効になります。選択したセキュリティーの種類に必要な分だけ鍵を入力するまで、Connect ボタンは無効になります。ワイヤレスセキュリティーの詳細は、「802.1X セキュリティーの設定」を参照してください。
NetworkManager が正常にアクセスポイントに接続すると、ネットワーク接続アイコンが無線接続信号の強度を示すグラフィカルインジケーターに変わります。
また、自動作成されたアクセスポイント接続の設定を、あたかも自分で追加したように編集することもできます。ネットワーク ウィンドウの Wi-Fi ページには 履歴 ボタンがあります。このボタンをクリックすると、接続を試みたすべての接続が一覧表示されます。「既存の Wi-Fi 接続の編集」を参照してください。

非表示 Wi-Fi ネットワークへの接続

すべてのアクセスポイントにはそれら自体の識別のために サービスセット識別子 (SSID) があります。しかし、アクセスポイントはその SSID をブロードキャストしないように設定されている場合もあります。その際には 非表示となり、NetworkManager 内の 使用可能 ネットワーク一覧に表示されないことになります。ただし、その SSID と認証方法と秘密情報が分かっていれば、SSID を非表示としているワイヤレスアクセスポイントに接続することは可能です。非表示のワイヤレスネットワークに接続するには、以下を行います。
手順
  1. Super キーを押して、アクティビティーの概要を表示し、Settings と入力して Enter キーを押します。次に、左側にある Wi-Fi メニューエントリーを選択します。
  2. Connect to Hidden Network を選択します。2 つの選択肢があります。
    • 以前非表示にしたネットワークに接続したことがある場合は、以下を行います。
      1. ネットワークを選択するには、Connection ドロップダウンを使用します。
      2. Connect をクリックします。
    • そうでない場合は、以下の手順に従ってください。
      1. Connection ドロップダウンを New のままにします。
      2. 非表示のネットワークの SSID を入力します。
      3. その Wi-Fi security 方法を選択します。
      4. 正しい認証の秘密を入力します。
      5. Connect をクリックします。
ワイアレスセキュリティー設定の詳細は、「802.1X セキュリティーの設定」を参照してください。

新しい Wi-Fi 接続の設定

手順
  1. SettingsWi-Fi メニューエントリーを選択します。
  2. 接続する Wi-Fi 接続名 (デフォルトでは SSID と同じ) をクリックします。
    • SSID が範囲外の場合、詳細は「非表示 Wi-Fi ネットワークへの接続」を参照してください。
    • SSID が範囲内にある場合は、右側のメニューで Wi-Fi 接続プロファイルをクリックします。鍵の記号は、鍵やパスワードが必要であることを示します。要求されたら、認証の詳細を入力してください。

既存の Wi-Fi 接続の編集

以前接続しようとした、または接続できた既存の接続を編集できます。
手順
  1. Super キーを押して、アクティビティーの概要を表示し、Settings と入力して Enter キーを押します。
  2. 左側のメニューエントリーから Wi-Fi を選択します。
  3. 編集する Wi-Fi 接続名の右側にある歯車アイコンをクリックすると、接続の編集ダイアログが表示されます。このネットワークが現在範囲外にある場合は、History をクリックして以前の接続を表示します。Details ウィンドウには接続の詳細が表示されます。

Wi-Fi 接続に関する基本設定オプション

Wi-Fi 接続の設定を編集するには、接続の編集ダイアログから Identity を選択します。以下の設定が可能です。
Wi-Fi 接続に関する基本設定オプション

図3.13 Wi-Fi 接続に関する基本設定オプション

SSID
アクセスポイント (AP) の サービスセット識別子 (SSID) です。
BSSID
BSSID (基本的サービスセット識別子) (BSSID) は、インフラストラクチャー モードで接続している際の特定のワイヤレスアクセスポイントの MAC アドレスで、ハードウェアアドレス とも呼ばれます。このフィールドはデフォルトで空白になっており、BSSID を指定せずに SSID でワイヤレスアクセスポイントに接続できます。BSSID が指定されると、システムは強制的に特定のアクセスポイントのみに関連付けられます。
アドホックネットワークが生成される際にこのネットワーク用に mac80211 サブシステムがランダムに BSSID を生成します。これは NetworkManager では表示されません。
MAC アドレス
MAC アドレスを選択します。これは、Wi-Fi が使用する ハードウェアアドレス とも呼ばれます。
単一システムには、1 つまたは複数のワイヤレスネットワークアダプターを接続できます。そのため、MAC アドレス フィールドで、特定のワイヤレスアダプターと特定の接続 (単一または複数) の関連付けを可能にしています。
クローンしたアドレス
実際のハードウェアアドレスの代わりに使用する、クローンした MAC アドレスです。必要なければ、空白のままにします。
以下の設定は、ほとんどの接続の種類に共通のものです。

Wi-Fi 接続の追加設定

編集ダイアログで、既存の接続をさらに設定できます。
設定するには、以下のコマンドを実行します。

新しい (または変更した) 接続の保存

ワイヤレス接続の編集が終了したら、適用 ボタンを押して設定を保存します。設定が適切であれば、ネットワーク接続のアイコンメニューから、この変更した接続を選択することで接続できます。ネットワークの選択および接続の詳細は、control-center GUI を使用したネットワーク接続」を参照してください。

3.4.8. GUI を使用した VPN 接続の設定

Libreswan により提供される IPsec は、VPN を作成するための望ましい方法です。Libreswan は、VPN に、オープンソースのユーザー領域 IPsec 実装です。コマンドラインを使用して IPsec VPN を設定する方法は、『Red Hat Enterprise Linux 7 セキュリティーガイド』 を参照してください。

3.4.8.1. control-center を使用した VPN 接続の確立

Libreswan により提供される IPsec は、Red Hat Enterprise Linux 7 で VPN を作成するための推奨される方法です。詳細は「GUI を使用した VPN 接続の設定」を参照してください。
以下で説明される GNOME グラフィカルユーザーインターフェースには、NetworkManager-libreswan-gnome パッケージが必要です。パッケージをインストールするには、root で以下のコマンドを実行します。
~]# yum install NetworkManager-libreswan-gnome
Red Hat Enterprise Linux で新規パッケージをインストールする方法については、Red Hat Enterprise Linux システム管理者のガイドを参照してください。
仮想プライベートネットワーク (VPN) を確立すると、使用中の LAN (ローカルエリアネットワーク) と別のリモートの LAN との間で通信ができるようになります。これは、インターネットなどの仲介ネットワークにトンネルを設定することで実施されます。セットアップされる VPN トンネルは通常、認証および暗号化を使用します。安全なトンネルを使用して VPN 接続を正常に確立した後は、ユーザーが送信するパケットに対して、VPN ルーターまたはゲートウェイが以下のアクションを実行します。
  1. ルーティングおよび認証目的で 認証ヘッダー を追加します。
  2. パケットデータを暗号化します。
  3. カプセル化セキュリティーペイロード (ESP) プロトコルに従ってデータをパケットに囲みます。ESP は暗号化解除および処理の指示を構成します。
受信側の VPN ルーターはヘッダー情報を開いてデータを暗号化解読し、それを目的地 (ネットワーク上のワークステーションまたは他のノード) に送信します。ネットワーク対ネットワークの接続を使用すると、ローカルネットワーク上の受信側ノードはすでに暗号化解読されいてすぐに処理ができる状態のパケットを受信します。このため、ネットワーク対ネットワークの VPN 接続での暗号化と暗号化解除のプロセスは、クライアントに透過的になっています。
VPN は認証と暗号化で複数のレイヤーを使用するため、複数のリモートノードを統合してひとつのイントラネットとして作動させる上で安全かつ効果的な手段となります。
新しい IPsec VPN 接続の追加
手順
  1. Super キーを押してアクティビティーの概要を表示し、Settings と入力して Enter キーを押します。次に、Network メニューエントリーを選択すると、Network 設定ツールが表示されます。「control-center を使用した新しい接続の設定」 を参照してください。
  2. VPN エントリーで + (プラス) ボタンをクリックします。
  3. Add VPN ウィンドウが表示されます。手動で設定する場合は、IPsec based VPN を選択してください。
    IPsec モードの VPN の設定

    図3.14 IPsec モードの VPN の設定

  4. Identity 設定フォームで、全般 および 高度 セクションのフィールドを指定できます。
    全般オプションおよび高度セクション

    図3.15 全般オプションおよび高度セクション

  • 全般 セクションでは、以下のフィールドを指定できます。
ゲートウェイ
リモート VPN ゲートウェイの名前もしくは IP アドレスです。
ユーザー名
必要な場合は、認証のために VPN ユーザーに関連付けられたパスワードを入力します。
ユーザーパスワード
必要に応じて、認証のために VPN ユーザーの ID に関連付けられているパスワードを入力します。
グループ名
リモートゲートウェイで設定された VPN グループ名です。空欄の場合は、デフォルトのアグレッシブモードではなく IKEv1 メインモードが使われます。
シークレット
ユーザー認証の前に暗号化を初期化するのに使われる、事前共有キーです。必要に応じて、グループ名に関連付けられたパスワードを入力します。
  • 高度 セクションでは、以下の設定が可能です。
フェーズ1 アルゴリズム
必要な場合は、暗号化チャンネルの認証および設定で使用するアルゴリズムを入力します。
フェーズ2 アルゴリズム
必要に応じて、IPsec ネゴシエーションに使用するアルゴリズムを入力します。
ドメイン
必要な場合は、ドメイン名を入力します。

注記

NetworkManager を使用せずに、IPsec の VPN を設定するには、「GUI を使用した VPN 接続の設定」を参照してください。
既存の VPN 接続を編集する
手順
  1. Super キーを押してアクティビティーの概要を表示し、Settings と入力して Enter キーを押します。次に、Network メニューエントリーを選択すると、Network 設定ツールが表示されます。「control-center を使用した新しい接続の設定」 を参照してください。
  2. 編集する VPN 接続を選択し、歯車アイコンをクリックして、General セクションおよび Advanced セクションを編集するには、「control-center を使用した VPN 接続の確立」 を参照してください。
新規 (または修正した) 接続を保存して他の設定を行う
新しい VPN 接続の編集が終了したら、保存 ボタンをクリックしてカスタマイズした設定を保存します。編集中に該当プロファイルが使用されていた場合、接続を切断してから再接続し、NetworkManager が変更を適用するようにします。プロファイルがオフだった場合は、これをオンにするか、ネットワーク接続アイコンメニューで選択します。新規および変更後の接続を使用することに関する詳細情報は、control-center GUI を使用したネットワーク接続」を参照してください。
既存の接続をさらに設定をするには、ネットワーク接続 ウィンドウ内でその接続を選択し、編集 をクリックして編集ダイアログに戻ります。
そして、以下のいずれかの設定をします。

3.4.8.2. nm-connection-editor を使用した VPN 接続の設定

nm-connection-editor を使用して、VPN 接続を追加および設定することもできます。これを行うには、以下の手順を行います。
手順
  1. 端末に nm-connection-editor と入力します。ネットワーク接続 ウィンドウが表示されます。「nm-connection-editor を使用した一般的な設定オプション」を参照してください。
  2. + (プラス) ボタンをクリックします。接続の種類の選択 メニューが表示されます。
  3. VPN メニューエントリーから、IPsec ベースの VPN オプションを選択します。
  4. Create をクリックして Editing ダイアログを開き、「新しい IPsec VPN 接続の追加」 に進んで General セクションおよび Advanced セクションを編集します。

3.4.9. GUI を使用したモバイルブロードバンド接続の設定

NetworkManager のモバイルブロードバンド接続機能を使用すると、以下の 2G3G のサービスに接続できます。
  • 2G: GPRS (General Packet Radio Service)、EDGE (Enhanced Data Rates for GSM Evolution)、または CDMA (Code Division Multiple Access)。
  • 3G: UMTS (Universal Mobile Telecommunications System)、HSPA (High Speed Packet Access)、または EVDO (EVolution Data-Only)。
接続を作成するには、使用中のシステムがすでに発見して認識しているモバイルブロードバンドのデバイス (モデム) をコンピューターが備えている必要があります。そのようなデバイスはコンピューターに内蔵されている場合 (多くのノートブックやネットブック) と、外付けまたは内蔵のハードウェアとして提供されている場合があります。たとえば、PC カードや USB モデム、ドングル、モデムとして機能する携帯電話などです。

3.4.9.1. nm-connection-editor を使用したモバイルブロードバンド接続の設定

GNOME nm-connection-editor を使用して、モバイルブロードバンド接続を設定できます。
新しいモバイルブロードバンド接続の追加
手順
  1. 端末に nm-connection-editor と入力します。ネットワーク接続 ウィンドウが表示されます。「nm-connection-editor を使用した一般的な設定オプション」を参照してください。
  2. + (プラス) ボタンをクリックします。接続の種類の選択 メニューが表示されます。
  3. モバイルブロードバンド メニューエントリーを選びます。
  4. 作成 をクリックして、モバイルブロードバンド接続のセットアップ を開きます。
  5. このモバイルブロードバンドデバイス用の接続を作成 の下で、その接続で使用する 2G または 3G に対応したデバイスを選択します。ドロップダウンメニューが使用できない場合は、システムがモバイルブロードバンドの機能を持ったデバイスを検出できなかったことを示します。この状況では、キャンセル をクリックして、モバイルブロードバンドの機能を持ったデバイスが接続されており、それがコンピューターに認識されていることを確認してください。それからこの手順を再試行します。続行 ボタンをクリックします。
  6. 使用するサービスプロバイダーの国をリストから選んで、続行 ボタンをクリックします。
  7. 一覧からプロバイダーを選択するか、手動で入力します。続行 ボタンをクリックします。
  8. ドロップダウンメニューから請求プランを選んで、Access Point Name (APN) が正しいか確認します。続行 ボタンをクリックします。
  9. 設定を確認して、適用 ボタンをクリックします。
  10. 「モバイルブロードバンドタブの設定」を参照して、モバイルブロードバンド特有の設定を編集します。
既存のモバイルブロードバンド接続を編集する
手順
  1. 端末に nm-connection-editor と入力します。ネットワーク接続 ウィンドウが表示されます。
  2. Mobile Broadband タブを選択します。
  3. 編集する接続を選択し、歯車アイコンをクリックします。詳細は「nm-connection-editor を使用した一般的な設定オプション」を参照してください。
  4. 「モバイルブロードバンドタブの設定」を参照して、モバイルブロードバンド特有の設定を編集します。
モバイルブロードバンドタブの設定
アシスタント (使用法は「新しいモバイルブロードバンド接続の追加」を参照) を使用して新規のモバイルブロードバンド接続をすでに追加している場合は、モバイルブロードバンド タブを編集して、ホームネットワークが使用不可能な場合はローミングを無効にしたり、ネットワーク ID を割り当てたり、接続使用時に特定の技術 (3G や 2G など) を優先するように NetworkManager に指示したりできます。
番号
GSM ベースのモバイルブロードバンドネットワークでの PPP 接続を確立するためにダイアルする番号です。このフィールドは、ブロードバンドデバイスの初期インストールの際に自動設定されている場合があります。通常、このフィールドは空白で残し、代わりに APN を記入します。
ユーザー名
ネットワークでの認証に使用するユーザー名を記入します。一部のプロバイダーは、ユーザー名を提供しないことや、ネットワーク接続の時点でユーザー名を受け付けたりすることがあります。
パスワード
ネットワークで認証に使用するパスワードを記入します。一部のプロバイダーはパスワードを提供しなかったり、またはすべてのパスワードを受け付けたりします。
APN
GSM ベースのネットワークとの接続を確立するために使用する Access Point Name (APN) を記入します。これは以下の項目を決定するので、正しい APN を記入することが重要になります。
  • ネットワーク使用量についてユーザーが請求される方法
  • ユーザーがインターネット、イントラネット、サブネットワークにアクセスできるかどうか。
ネットワーク ID
ネットワーク ID を記入すると、NetworkManager は強制的にデバイスが特定のネットワークのみに登録されるようにします。これにより、ローミングを直接に制御できない時に接続がローミングしないようにします。
種別
Any: デフォルト値の Any では、モデムが最速のネットワークを選択します。
3G (UMTS/HSPA): 接続が 3G ネットワーク技術のみを使用するように強制します。
2G (GPRS/EDGE): 接続が 2G ネットワーク技術のみを使用するように強制します。
Prefer 3G (UMTS/HSPA): 最初に HSPA または UMTS などの 3G 技術を使用した接続を試み、失敗した後にのみ GPRS または EDGE にフォールバックします。
Prefer 2G (GPRS/EDGE): 最初に GPRS または EDGE などの 2G 技術を使用した接続を試み、失敗した後にのみ HSPA または UMTS にフォールバックします。
ホームネットワークが使用できない場合にローミングを許可
ホームネットワークからローミングへの移行ではなく、NetworkManager が接続を終了するようにするには、このボックスからチェックを外します。これにより、ローミング料金を回避できます。ボックスにチェックが入っていると、NetworkManager はホームネットワークからローミングに、またはその逆に切り替えることで接続を維持しようとします。
PIN 番号
デバイスの SIM (Subscriber Identity Module (購読者識別モジュール)) が PIN (Personal Identification Number (個人識別番号)) でロックされている場合は、その PIN を入力して NetworkManager がデバイスのロックを解除できるようにします。どんな目的でもデバイスの使用に PIN を必要とする場合は、NetworkManager は SIM をロック解除する必要があります。
CDMA および EVDO のオプションは少なくなります。APNNetwork ID、および Type にはオプションがありません。
新規 (または修正した) 接続を保存して他の設定を行う
モバイルブロードバンド接続の編集が終わったら、適用 ボタンをクリックしてカスタマイズした設定を保存します。編集中に該当プロファイルが使用されていた場合、接続を切断してから再接続し、NetworkManager が変更を適用するようにします。プロファイルがオフだった場合は、これをオンにするか、ネットワーク接続アイコンメニューで選択します。新規および変更後の接続の使用に関する詳細情報は、control-center GUI を使用したネットワーク接続」を参照してください。
既存の接続をさらに設定をするには、ネットワーク接続 ウィンドウ内でその接続を選択し、編集 をクリックして 編集 ダイアログに戻ります。
そして、以下のいずれかの設定をします。

3.4.10. GUI を使用して DSL 接続の設定

このセクションでは、個人ユーザーや SOHO インストールでよくある DSL モデムルーターの外部の組み合わせではなく、ホスト内に DSL カードが組み込まれているインストールについて説明します。

3.4.10.1. nm-connection-editor を使用した DSL 接続の設定

GNOME nm-connection-editor を使用して DSL 接続を設定できます。
新しい DSL 接続の追加
手順
  1. 端末に nm-connection-editor と入力します。ネットワーク接続 ウィンドウが表示されます。「nm-connection-editor を使用した一般的な設定オプション」を参照してください。
  2. + (プラス) ボタンをクリックします。
  3. 接続の種類の選択 が表示されます。
  4. DSL を選択し、作成 ボタンをクリックします。
  5. DSL 接続 1 の編集 ウィンドウが表示されます。
既存の DSL 接続を編集する
手順
  1. 端末に nm-connection-editor と入力します。ネットワーク接続 ウィンドウが表示されます。
  2. 編集する接続を選択し、歯車アイコンをクリックします。詳細は「nm-connection-editor を使用した一般的な設定オプション」を参照してください。
DSL タブの設定
ユーザー名
サービスプロバイダー認証で使用するユーザー名を入力します。
サービス
サービスプロバイダーからの指示がない限り、空白のままにします。
パスワード
サービスプロバイダーから提供されたパスワードを入力します。
新規 (または修正した) 接続を保存して他の設定を行う
DSL 接続の編集が終わったら、適用 ボタンをクリックしてカスタマイズした設定を保存します。編集中に該当プロファイルが使用されていた場合は、接続を切断してから再接続し、NetworkManager が変更を適用するようにします。プロファイルがオフだった場合は、これをオンにするか、ネットワーク接続アイコンメニューで選択します。新規および変更後の接続を使用することに関する詳細情報は、control-center GUI を使用したネットワーク接続」を参照してください。
既存の接続をさらに設定をするには、ネットワーク接続 ウィンドウ内でその接続を選択し、編集 をクリックして 編集 ダイアログに戻ります。
設定するには、以下のコマンドを実行します。

3.5. ifcfg ファイルを使用した IP ネットワークの設定

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

ifcfg ファイルを使用した静的ネットワーク設定によるインタフェースの設定

たとえば、ifcfg ファイルを使って eth0 という名前のインターフェースを静的ネットワークで設定するには、/etc/sysconfig/network-scripts/ ディレクトリー内に以下のような内容で ifcfg-eth0 という名前のファイルを作成します。
  • IPv4 設定の場合
    DEVICE=eth0
    BOOTPROTO=none
    ONBOOT=yes
    PREFIX=24
    IPADDR=10.0.1.27
  • IPv6 設定の場合
    DEVICE=eth0
    BOOTPROTO=none
    ONBOOT=yes
    IPV6INIT=yes
    IPV6ADDR=2001:db8::2/48
    ネットワークまたはブロードキャストアドレスは、ipcalc が自動的に計算するので指定する必要はありません。
    IPv6 の ifcfg 設定オプションの詳細は、man ページの 『nm-settings-ifcfg-rh(5)』 を参照してください。

重要

Red Hat Enterprise Linux 7 では、11章ネットワークデバイス命名における一貫性で説明されるように、ネットワークインターフェースの命名規則が変更されています。HWADDR ディレクティブを使用してハードウェアまたは MAC アドレスを指定すると、デバイスの命名手順に影響が出ます。

ifcfg ファイルを使用した動的ネットワーク設定によるインタフェースの設定

ifcfg ファイルを使用して、em1 という名前のインターフェースを動的ネットワークで設定するには、/etc/sysconfig/network-scripts/ ディレクトリーに以下のような内容で、ifcfg-em1 という名前のファイルを作成します。
DEVICE=em1
BOOTPROTO=dhcp
ONBOOT=yes
インターフェースが DHCP サーバーに異なるホスト名を送信するよう設定するには、ifcfg ファイルに以下の行を追加します。
DHCP_HOSTNAME=hostname
インターフェースが DHCP サーバーに異なる完全修飾ドメイン名 (FQDN) を送信するよう設定するには、ifcfg ファイルに以下の行を追加します。
DHCP_FQDN=fully.qualified.domain.name

注記

指定した ifcfg ファイルでは、DHCP_HOSTNAME または DHCP_FQDN ディレクティブのどちらか 1 つしか使用しないでください。DHCP_HOSTNAMEDHCP_FQDN の両方を指定した場合には、後者だけが使用されます。
インターフェースが特定の DNS サーバーを使用するよう設定するには、ifcfg ファイルに以下の行を追加します。
  PEERDNS=no
  DNS1=ip-address
  DNS2=ip-address
ここで、ip-addressDNS サーバーのアドレスです。これにより、ネットワークサービスは指定した DNS サーバーで /etc/resolv.conf を更新します。指定する必要のある DNS サーバーのアドレスは 1 つだけで、その他はオプションです。
ifcfg ファイルで静的ルートを設定するには、「ifcfg ファイルでの静的ルートの設定」を参照してください。
デフォルトでは、インターフェース設定ファイルの BOOTPROTOdhcp に設定され、アドレスを自動的に取得するようにプロファイルが設定されていると、NetworkManagerDHCP クライアントの dhclient を呼び出します。DHCP が必要な場合は、インターフェース上で、すべてのインターネットプロトコル (IPv4 および IPv6) に dhclient のインスタンスが開始されます。NetworkManager が実行中ではない場合、もしくはこれがインターフェースを管理していない場合は、必要に応じてレガシーのネットワークサービスが dhclient のインスタンスを呼び出します。動的な IP アドレスの詳細は、「静的 IP アドレス指定と動的 IP アドレス指定の比較」を参照してください。

重要

設定を適用するには、nmcli c reload コマンドを入力する必要があります。

3.5.1. ifcfg ファイルを使用したシステム全体およびプライベート接続プロファイルの管理

パーミッションは、ifcfg ファイルの USERS ディレクティブに対応します。USERS ディレクティブが表示されない場合は、ネットワークプロファイルがすべてのユーザーに利用できます。たとえば、ifcfg ファイルにある以下のコマンドは、記載されているユーザーにのみ利用可能になります。
USERS="joe bob alice"
また、USERCTL ディレクティブを設定して、デバイスを管理できます。
  • yes に設定すると、root ユーザー以外のユーザーがこのデバイスを制御できます。
  • no に設定すると、root ユーザー以外のユーザーがこのデバイスを制御 できなくなります

3.6. ip コマンドを使用した IP ネットワークの設定

システム管理者は、ip コマンドを使用してネットワークインターフェースを設定できますが、その変更は永続的ではなく、システムを再起動すると変更内容はすべて失われます。
ip ユーティリティーのコマンドはそのアップストリームのパッケージ名から iproute2 と呼ばれることもあり、man ip(8) ページで説明されています。Red Hat Enterprise Linux 7 におけるパッケージ名は、iproute となります。必要な場合は、ip ユーティリティーのバージョン番号を以下のようにチェックすることで、インストールされているかどうかを確認できます。
~]$ ip -V
ip utility, iproute2-ss130716
ip コマンドを使うと、NetworkManager と並行して、インターフェースにアドレスやルートを追加したり削除したりできます。NetworkManager はアドレスやルートを保持し、nmclinmtuicontrol-center、D-Bus API でこれらを認識します。
インターフェースを停止するには、以下のコマンドを実行します。
ip link set ifname down

注記

ip link set ifname コマンドは、ネットワークインターフェースを IFF_UP 状態に設定し、それをカーネルのスコープから有効にします。これは、initscript の ifup ifname コマンドや、NetworkManager のデバイスのアクティブ状態とは異なります。実際には、NetworkManager は、インターフェースが現在切断されていてもインターフェースが常に起動するように設定します。nmcli ツールを介してデバイスを切断しても、IFF_UP フラグを削除しません、この方法では、NetworkManager は、通信事業者の状態に関する通知を受け取ります。
ip ユーティリティーは、ifconfig ユーティリティーに代わるものです。(ifconfig を提供する) net-tools パッケージは InfiniBand アドレスに対応しないためです。
利用可能な OBJECT は、ip help コマンドで確認してください。たとえば、ip link helpip addr help などです。

注記

コマンドライン上で発行された ip コマンドは、システム再起動後は維持されません。再起動後も維持する場合は、設定ファイル (ifcfg ファイル) を利用するか、コマンドをスクリプトに追加します。
コマンドラインを使用する例と設定ファイルの例は、各タスクの nmtuinmcli の例の後に置かれています。ただし、control-center および nm-connection-editor といった NetworkManager へのグラフィカルユーザーインターフェースの使用法の前にあります。
ip ユーティリティーを使用すると、インターフェースに IP アドレスを割り当てることができます。コマンドは以下の形式になります。
ip addr [ add | del ] address dev ifname

ip コマンドを使って静的アドレスを割り当てる

IP アドレスをインターフェースに割り当てるには、以下を行います。
~]# ip address add 10.0.0.3/24 dev eth0
You can view the address assignment of a specific device:
~]# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether f0:de:f1:7b:6e:5f brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.3/24 brd 10.0.0.255 scope global global eth0
       valid_lft 58682sec preferred_lft 58682sec
    inet6 fe80::f2de:f1ff:fe7b:6e5f/64 scope link
       valid_lft forever preferred_lft forever
ip-address(8) man ページでは、他の例やコマンドオプションが説明されています。

ip コマンドを使って複数のアドレスを設定する

ip ユーティリティーでは同一インターフェースへの複数のアドレス割り当てをサポートしているので、エイリアスインターフェースを使って複数アドレスを同一インターフェースにバインドする必要がありません。ip コマンドによるアドレスの割り当ては、複数のアドレス割り当てのために繰り返すことができます。例を示します。
~]# ip address add 192.168.2.223/24 dev eth1
~]# ip address add 192.168.4.223/24 dev eth1
~]# ip addr
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:fb:77:9e brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.223/24 scope global eth1
    inet 192.168.4.223/24 scope global eth1
ip ユーティリティーの詳細は、man ページの ip(8) を参照してください。

注記

ip コマンドをコマンドライン上で実行すると、システム再起動後は維持 されません

3.7. カーネルコマンドラインから IP ネットワークの設定

インターフェースから iSCSI ターゲットの root ファイルシステムに接続すると、インストール済みシステムでネットワーク設定が構成されません。この問題を解決するためには、以下を行います。
  1. dracut ユーティリティーをインストールします。dracut 使用の詳細は、Red Hat Enterprise Linux システム管理者のガイドを参照してください。
  2. カーネルコマンドラインで ip オプションを使用して、構成を設定します。
    ip<client-IP-number>:[<server-id>]:<gateway-IP-number>:<netmask>:<client-hostname>:<interface>:{dhcp|dhcp6|auto6|on|any|none|off}
    • dhcp: DHCP 設定
    • dhpc6: DHCP IPv6 設定
    • auto6: 自動 IPv6 設定
    • onany: カーネルで利用可能な任意のプロトコル (デフォルト)
    • noneoff - 自動設定なし、静的ネットワーク設定
    以下に例を示します。
    ip=192.168.180.120:192.168.180.100:192.168.180.1:255.255.255.0::eth0:off
  3. ネームサーバーの設定を定義します。
    nameserver=srv1 [nameserver=srv2 [nameserver=srv3 […]]]
dracut ユーティリティーによりネットワーク接続が設定され、新たな ifcfg ファイルが生成されます。このファイルを /etc/sysconfig/network-scripts/ ファイルにコピーできます。

3.8. IGMP で IP マルチキャストの有効化

IGMP (Internet Group Management Protocol) を使用すると、管理者は、ネットワーク間、ホスト間、およびルーター間のマルチキャストトラフィックへのルーティングおよびサブスクリプションを管理できるようになります。Red Hat Enterprise Linux のカーネルは IGMPv3 をサポートします。
マルチキャスト情報を表示するには、以下のように ip maddr show サブコマンドを使用します。
~]$ ip maddr show dev br0
8:	br0
	inet  224.0.0.1
	inet6 ff02::1
	inet6 ff01::1
[output truncated]
もしくは、ip link show コマンド出力で MULTICAST 文字列を見つけます。
~]$ ip link show br0
8: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT qlen 1000
    link/ether 6c:0b:84:67:fe:63 brd ff:ff:ff:ff:ff:ff
デバイスでマルチキャストを無効にし、br0 デバイスで無効になっていることを確認するには、以下を行います。
~]# ip link set multicast off dev br0
~]$ ip link show br0
8: br0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT qlen 1000
    link/ether 6c:0b:84:67:fe:63 brd ff:ff:ff:ff:ff:ff
MULTICAST 文字列がない場合は、マルチキャストが無効になっていることを示しています。
br0 デバイスでマルチキャストを有効にし、それが有効になっていることを確認するには、以下を行います。
~]# ip link set multicast on dev br0
~]$ ip link show br0
8: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT qlen 1000
    link/ether 6c:0b:84:67:fe:63 brd ff:ff:ff:ff:ff:ff
詳細は「Red Hat Enterprise Linux の ip コマンドチートシート 」 と、man ページの ip(8) を参照してください。
マルチキャストに登録した IGMP の現在のバージョンおよび IP アドレスを確認するには、/proc/net/igmp ファイルを参照してください。
~]$ cat /proc/net/igmp

注記

デフォルトでは、IGMP は firewalld で有効になりません。ゾーンで IGMP を有効にするには、以下を行います。
~]# firewall-cmd --zone=zone-name --add-protocol=igmp

3.9. 関連資料

インストールされているドキュメント

  • ip(8)』 の man ページ - ip ユーティリティーのコマンド構文を説明します。
  • nmcli(1)』 の man ページ - NetworkManager のコマンドラインツールを説明します。
  • nmcli-examples(5)』 の man ページ - nmcli コマンドの例を提供します。
  • nm-settings(5)』 の man ページ - NetworkManager プロパティーおよび設定を説明します。
  • nm-settings-ifcfg-rh(5)』 の man ページ - ifcfg-rh 設定のプラグインを説明します。

オンラインのドキュメント

Red Hat Enterprise Linux 7 セキュリティーガイド
IPsec ベースの VPN とその設定を説明します。DNSSEC を使用する認証済みの DNS クエリーの使用を説明します。
RFC 1518: Classless Inter-Domain Routing (CIDR)
可変長サブネットを含む CIDR アドレス割り当ておよび集約戦略を説明しています。
RFC 1918: Address Allocation for Private Internets
プライベート使用に予約されている IPv4 アドレスの範囲を説明しています。
RFC 3330: Special-Use IPv4 Addresses
Internet Assigned Numbers Authority (IANA) が割り当てたグローバルおよび他の特定 IPv4 アドレスブロックを説明しています。

第4章 静的ルートおよびデフォルトゲートウェイの設定

本章は、静的ルートおよびデフォルトゲートウェイの設定を説明します。

4.1. ルーティングおよびゲートウェイの概要

ルーティングは、別のシステムへのネットワークパスをシステムが見つけられるようにするメカニズムです。ルーティングは、しばしば、ルーティング専用のネットワーク上で、デバイスにより処理されます (ただし、デバイスはルーティングを行うように設定できます)。したがって、Red Hat Enterprise Linux サーバーまたはクライアントで静的ルートを設定する必要がない場合もしばしばあります。例外は、暗号化された VPN トンネルを通過する必要があるトラフィックや、コストやセキュリティー上の理由から、特定のルートを通過する必要があるトラフィックが含まれます。ホストのルーティングテーブルには、ネットワークに直接接続しているルートが自動的に追加されます。このルートは、ネットワークインターフェースが 起動 していると調べられます。リモートネットワークまたはホストに到達するには、システムには、トラフィックが送られるゲートウェイのアドレスが指定されている必要があります。
ホストのインターフェースが、DHCP により設定されると、通常は、アップストリームのネットワークまたはインターネットにつながるゲートウェイのアドレスが割り当てられます。このゲートウェイは、通常はデフォルトのゲートウェイと呼ばれます。そのシステムでそのゲートウェイよりも良いルートが検出され (そしてルーティングテーブルに表示され) る場合を除き、このゲートウェイが使用されるためです。ネットワーク管理者は、しばしば、そのネットワークの最初のホストまたは最後のホストの IP アドレスをゲートウェイアドレスとして使用します (たとえば 192.168.10.1 または 192.168.10.254) です。ネットワークそのものを示すアドレス (この例では 192.168.10.0) や、サブネットのブロードキャストアドレス (この例では 192.168.10.255) とは混合しないでください。デフォルトゲートウェイは、従来のネットワークルーターです。デフォルトゲートウェイは、ローカルネットワーク宛ではなく、ルーティングテーブルで優先ルートが指定されていないすべてのトラフィックに適用されます。

注記

専門知識を深めるには、Red Hat システム管理 I (RH124) トレーニングコースの受講をお勧めします。

4.2. nmcli を使った静的ルートの設定

nmcli ツールを使用して静的ルートを設定するには、以下のいずれかを使用します。
  • nmcli コマンドライン
  • nmcli インタラクティブ接続エディター

例4.1 nmcli を使った静的ルートの設定

コマンドラインを使用して、既存のイーサネット接続に静的ルートを設定するには、以下のコマンドを実行します。
~]# nmcli connection modify eth0 +ipv4.routes "192.168.122.0/24 10.10.10.1"
これで 192.168.122.0/24 サブネットへのトラフィックが 10.10.10.1 のゲートウェイに向けられます。

例4.2 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.routes 192.168.122.0/24 10.10.10.1
nmcli>
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
~]$

4.3. GUI を使用した静的ルートの設定

静的ルートを設定するには、設定する接続のIPv4 または IPv6 の設定ウィンドウを開きます。詳細はcontrol-center GUI を使用したネットワーク接続」を参照してください。
ルート
アドレス: リモートネットワーク、サブネット、またはホストの IP アドレスを入力します。
ネットマスク: 上記で入力した IP アドレスのネットマスクまたプレフィックス長。
ゲートウェイ: 上記で入力したリモートネットワーク、サブネット、またはホストにつながるゲートウェイの IP アドレスです。
メトリック - このルートに与える優先値であるネットワークコスト。高い値よりも低い値の方が望ましい。
自動
自動が オン になっている場合は、RA または DHCP からのルートが使用されますが、追加の静的ルートを追加することもできます。これが オフ の場合は、ユーザーが定義した静的ルートのみが使用されます。
この接続はネットワーク上のリソースのためだけに使用
このチェックボックスを選択すると、この接続はデフォルトルートになりません。よくある例は、ヘッドオフィスへの接続が VPN トンネルや専用線で、インターネット向けトラフィックにこの接続を使用しない場合です。このオプションを選択すると、この接続で自動的に学習されたルートを使用することが明確なトラフィックか、手動で入力されたトラフィックのみがこの接続を経由します。

4.4. ip コマンドでの静的ルートの設定

システム管理者は、ip route コマンドを使用して静的ルートを設定できます。
IP ルーティングテーブルを表示するには、ip route コマンドを使用します。以下に例を示します。
~]$ ip route
default via 192.168.122.1 dev ens9  proto static  metric 1024
192.168.122.0/24 dev ens9  proto kernel  scope link  src 192.168.122.107
192.168.122.0/24 dev eth0  proto kernel  scope link  src 192.168.122.126
ip route コマンドは、以下の形式になります。
ip route [ add | del | change | append | replace ] destination-address
オプションおよびフォーマットの詳細は、man ページの ip-route(8) を参照してください。
静的ルートをホストアドレス、つまり 1 つの IP アドレスに追加するには、以下のコマンドを実行します。
~]# ip route add 192.0.2.1 via 10.0.0.1 [dev interface]
ここでの 192.0.2.1 は、ドット形式 10 進法でのホストの IP アドレスに、10.0.0.1 はネクストホップアドレスに、interface はネクストホップに進む終了インターフェースになります。
ネットワーク (つまり IP アドレスの範囲を表示する IP アドレス) に静的ルートを追加するには、以下を行います。
~]# ip route add 192.0.2.0/24 via 10.0.0.1 [dev interface]
ここでの 192.0.2.0 はドット形式 10 進法での宛先ネットワークの IP アドレスに、/24 はネットワークプレフィックスになります。ネットワークプレフィックスは、サブネットマスク内の有効なビット数です。ネットワークアドレスにスラッシュ、ネットワークプレフィックス長を続けるこの形式は、classless inter-domain routing (CIDR) 表記と呼ばれることもあります。
割り当てた静的ルートを削除するには、以下のコマンドを実行します。
~]# ip route del 192.0.2.1
ip route を使用してルーティングテーブルに行った変更は、システムを再起動すると元に戻ります。静的ルートを永続的に設定するには、そのインターフェースの /etc/sysconfig/network-scripts/ ディレクトリーに route-interface ファイルを作成して、そこに設定できます。たとえば、eth0 インターフェースに対する静的ルートは、/etc/sysconfig/network-scripts/route-eth0 ファイルに保存されます。route-interface ファイルに行った変更は、ネットワークサービスまたはインターフェースを再起動するまで有効になりません。route-interface ファイルには、2 つの形式があります。
ip route コマンドに関する詳細情報は、ip-route(8) man ページを参照してください。

4.5. ifcfg ファイルでの静的ルートの設定

コマンドプロンプトで ip コマンドを使用して設定した静的ルートは、システムがシャットダウンまたは再起動すると失われます。静的ルートの設定を、システムを再起動した後も持続するようにするには、/etc/sysconfig/network-scripts/ ディレクトリーに保存されているインターフェース別の設定ファイルに追加する必要があります。ファイル名は、route-interface の形式にする必要があります。設定ファイルで使用するコマンドの種類は 2 つあります。

IP コマンド引数形式を使用した静的ルート

インターフェースごとの設定ファイル、たとえば /etc/sysconfig/network-scripts/route-eth0 で必要な場合は、1 行目でデフォルトゲートウェイへのルートを定義します。これは、ゲートウェイが DHCP 経由で設定されておらず、かつ /etc/sysconfig/network ファイルでグローバルに設定されていない場合にのみ必要となります。
default via 192.168.1.1 dev interface
ここでの 192.168.1.1 は、デフォルトゲートウェイの IP アドレスになります。interface は、デフォルトゲートウェイに接続されている、または到達可能なインターフェースになります。dev オプションは省略可能なオプションです。この設定は、/etc/sysconfig/network ファイル内の設定に優先することに注意してください。
リモートネットワークへのルートが必要な場合は、静的ルートは以下のように指定できます。各行は、個別のルートとして解析されます。
10.10.10.0/24 via 192.168.1.1 [dev interface]
ここでの 10.10.10.0/24 は、リモートもしくは宛先ネットワークのネットワークアドレスおよびプレフィックス長です。アドレス 192.168.1.1 は、リモートネットワークに続く IP アドレスです。ネクストホップアドレス の方が好ましいですが、出口インターフェースのアドレスでも機能します。ネクストホップとは、ゲートウェイやルーターなどリンクのリモート側を意味します。dev オプションを使うと出口インターフェース interface を指定できますが、これは必須ではありません。必要に応じた数の静的ルートを追加してください。
以下は、ip コマンド引数形式を使用した route-interface ファイルの例です。デフォルトゲートウェイは 192.168.0.1 で、インターフェースは eth0、また専用回線または WAN 接続が 192.168.0.10 で利用可能です。2 つの静的ルートは、10.10.10.0/24 ネットワークおよび 172.16.1.10/32 ホストに到達するためのものです。
default via 192.168.0.1 dev eth0
10.10.10.0/24 via 192.168.0.10 dev eth0
172.16.1.10/32 via 192.168.0.10 dev eth0
上記の例では、ローカルの 192.168.0.0/24 ネットワークに向かうパケットはそのネットワークに接続されているインターフェースに移動します。10.10.10.0/24 ネットワークおよび 172.16.1.10/32 ホストに向かうパケットは、192.168.0.10 に移動します。既知でないリモートネットワークに向かうパケットはデフォルトゲートウェイを使用するので、デフォルトルートが適切でない場合は、静的ルートはリモートネットワークもしくはホスト用のみに設定すべきです。ここでのリモートとは、システムに直接繋がれていないネットワークやホストを指します。
IPv6 設定で、ip route 形式の route6-interface ファイルの例は、以下のようになります。
2001:db8:1::/48 via 2001:db8::1 metric 2048
2001:db8:2::/48
出口インターフェースの指定は、オプションです。特定のインターフェースからトラフィックを強制的に締め出したい場合は、これが便利です。たとえば VPN の場合、tun0 インターフェースが宛先ネットワークにつながる別のサブネットにあったとしても、リモートネットワークへのトラフィックを強制的にこのインターフェース経由とさせることができます。
ip route の形式を使用して、送信元アドレスを指定できます。以下に例を示します。
10.10.10.0/24 via 192.168.0.10 src 192.168.0.2
複数のルーティングテーブルを指定する既存のポリシーベースのルーティング設定を定義するには、「ポリシールーティングについて」を参照してください。

重要

DHCP がすでにデフォルトゲートウェイを割り当てており、設定ファイル内でこの同一ゲートウェイが同一メトリクスで指定されている場合、起動時またはインターフェースをアクティベートする際にエラーが発生します。"RTNETLINK answers: File exists" というエラーメッセージが表示される可能性がありますが、これは無視して構いません。

Network または Netmask のディレクティブ形式を使用した静的ルート

ネットワーク/ネットマスクディレクティブの形式を route-interface ファイルに使用することも可能です。以下は、ネットワーク/ネットマスク形式のテンプレートで、後に説明が続きます。
ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.1.1
  • ADDRESS0=10.10.10.0 は、到達するリモートネットワークまたはホストのネットワークアドレスです。
  • NETMASK0=255.255.255.0 は、ADDRESS0=10.10.10.0 で定義されているネットワークアドレスのネットマスクです。
  • GATEWAY0=192.168.1.1 は、ADDRESS0=10.10.10.0 への到達に使用可能なデフォルトゲートウェイまたは IP アドレスです。
以下は、ネットワーク/ネットマスクディレクティブの形式を使用した route-interface ファイルの例です。デフォルトゲートウェイは 192.168.0.1 ですが、専用回線または WAN 接続が 192.168.0.10 で利用可能です。2 つの静的ルートは、10.10.10.0/24 および 172.16.1.0/24 のネットワークに到達するためのものです。
ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.0.10
ADDRESS1=172.16.1.10
NETMASK1=255.255.255.0
GATEWAY1=192.168.0.10
後に続く静的ルートは、順番に番号付けされる必要があり、いずれの値もスキップしてはいけません。たとえば、ADDRESS0ADDRESS1ADDRESS2 というようになります。
デフォルトでは、パケットをあるインターフェースから別のインターフェースに転送することや、同じインターフェースから外部に送信することは、セキュリティー上の理由から無効になっています。これにより、システムが外部トラフィックのルーターとして機能するのを防ぐことができます。システムに外部トラフィックをルーティングさせる必要がある場合は (たとえば、接続を共有する場合や、VPN サーバーを設定する場合)、IP フォワーディングを有効にする必要があります。詳細は『Red Hat Enterprise Linux 7 セキュリティーガイド』を参照してください。

4.5.1. ポリシールーティングについて

ポリシールーティング は、ソースルーティングとも呼ばれ、より柔軟なルーティング設定のためのメカニズムです。ルーティングの決定は、通常、パッケージの宛先 IP アドレスに基づいて行われます。ポリシールーティング では、送信元 IP アドレス、送信元ポート、プロトコルタイプなど、その他のルーティングプロパティーをより柔軟に選択できます。ルーティングテーブルは、ネットワークに関するルート情報を保存します。これは、数値または名前で識別され、/etc/iproute2/rt_tables ファイルで設定できます。デフォルトテーブルは 254 で識別されます。policy-routing を使用する場合は、ルールも必要になります。ルールは、ルーティングテーブルを選択するために使用され、パケットの特定のプロパティーに基づいています。
initscript の場合、ルーティングテーブルは、テーブルの引数から設定できるルートのプロパティーになります。ip route 形式は、既存のポリシーベースのルーティング設定を定義するために使用できます。これは、複数のルーティングテーブルを指定します。
10.10.10.0/24 via 192.168.0.10 table 1
10.10.10.0/24 via 192.168.0.10 table 2
initscript でルーティングルールを指定するには、IPv4/etc/sysconfig/network-scripts/rule-eth0 ファイル、または、IPv6/etc/sysconfig/network-scripts/rule6-eth0 ファイルで、その指定を編集します。
NetworkManager はポリシールーティングをサポートしますが、ルートはサポートされていません。ルールは、カスタムスクリプトを実行して設定する必要があります。手動の静的なルート 1 つに対して、ルーティングテーブルを 1 つ選択できます。
  • IPv4 の場合は ipv4.route-table
    ならびに
  • IPv6 の場合は ipv6.route-table
特定テーブルにルートを設定するには、DHCPautoconf6DHCP6 からのルートをすべて、その特定テーブルに追加します。また、アドレスをすでに設定しているサブネットのルートはすべて、対応するルーティングテーブルに追加します。たとえば、192.168.1.10/24 アドレスを設定する場合は、ipv4.route-table に 192.168.1.0/24 サブネットを追加します。
policy-routing ルールの詳細は、man ページの ip-rule(8) を参照してください。ルーティングテーブルは、man ページの ip-route(8) を参照してください。

4.6. デフォルトゲートウェイの設定

デフォルトゲートウェイは、ネットワークスクリプトにより決定されます。このスクリプトは、まず /etc/sysconfig/network ファイルを、その後にupの状態にあるインターフェースのネットワークインターフェースの ifcfg ファイルを解析します。ifcfg ファイルは数字の小さい順に解析され、最後に読み取られる GATEWAY ディレクティブがルーティングテーブルのデフォルトルートを作成するために使用されます。
デフォルトルートは、GATEWAY ディレクティブで、グローバルまたはインターフェース固有の設定ファイルのいずれかで指定できます。ただし、Red Hat Enterprise Linux では、グローバルの /etc/sysconfig/network ファイルの使用が非推奨になります。ゲートウェイの指定は、インターフェースごとの設定ファイルでのみ行ってください。
NetworkManager がモバイルホストを管理しているという動的なネットワーク環境では、ゲートウェイ情報はインターフェース固有である可能性が高く、DHCP による割り当てに任せるのが最善です。NetworkManager においてゲートウェイに達する出口インターフェースの選択に影響を及ぼす必要がある特別なケースでは、デフォルトゲートウェイに進まないインターフェースに ifcfg ファイルの DEFROUTE=no コマンドを利用します。

第5章 ネットワーク接続設定の構成

本章では、ネットワーク接続設定のさまざまな構成について説明し、NetworkManager を使用してその設定を構成する方法を示します。

5.2. 802.1X セキュリティーの設定

802.1X セキュリティーとは、ポートベースのネットワークアクセス制御 (PNAC) 用の IEEE 基準の名前です。これは、WPA Enterprise とも呼ばれます。802.1X セキュリティーは、物理ネットワークから 論理ネットワーク へのアクセスを制御する手段です。論理ネットワークに参加するクライアントはすべて、正しい 802.1X 認証方法を使用してルーターなどのサーバーで認証を行う必要があります。
802.1X セキュリティーは、ほとんどの場合、ワイヤレスネットワーク (WLAN) のセキュリティー保護に関連付けられていますが、ネットワーク (LAN) に物理的にアクセスする侵入者が侵入するのを防ぐためにも使用できます。
これまで、DHCP サーバーは、許可されていないユーザーに IP アドレスをリースしないように設定されていましたが、実現が困難で、安全ではないため、推奨されません。代わりに、802.1X セキュリティーを使用して、ポートベースの認証を通じて、論理的に安全なネットワークを確保します。
802.1X は、WLAN と LAN のアクセス制御のためのフレームワークを提供して、EAP (Extensible Authentication Protocol) タイプの 1 つを運搬するエンベロープとして機能します。EAP のタイプとは、ネットワーク上でセキュリティーの達成方法を定義するプロトコルです。

5.2.1. nmcli を使用した Wi-Fi 用の 802.1X セキュリティーの構成

手順
  1. 認証済みの key-mgmt (鍵管理) プロトコルを設定します。このプロトコルにより、安全な wifi 接続のための鍵のメカニズムが設定されます。プロパティーの詳細は、man ページの 『nm-settings(5)』 を参照してください。
  2. 802-1x 認証設定を構成します。TLS (Transport Layer Security) 認証は「TLS の設定」を参照してください。

表5.1 802-1x 認証設定

802-1x 認証設定名前 
802-1x.identityアイデンティティー 
802-1x.ca-certCA 証明書 
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

5.2.2. nmcli を使用した有線用の 802.1X セキュリティーの構成

nmcli ツールを使用して 有線 接続を設定するには、802-11-wireless.ssid および 802-11-wireless-security.key-mgmt 設定を除き、ワイヤレス 接続と同じ手順を実施します。

5.2.3. GUI を使用した Wi-Fi 用の 802.1X セキュリティーの構成

手順
  1. Network ウィンドウを開きます (control-center GUI を使用したネットワーク接続」 を参照)。
  2. 右側のメニューから Wi-Fi ネットワークインターフェースを選択します。必要に応じて電源ボタンを オン にして、ハードウェアのスイッチがオンになっていることをチェックします。
  3. 802.1X セキュリティーを設定する新規接続の接続名を選択するか、既存の接続プロファイルのギアのアイコンをクリックします。新規接続の場合、必要な認証手順を完了して接続を完了させてからギアのアイコンをクリックします。
  4. セキュリティ を選択します。
    以下の設定オプションが利用できます。
    セキュリティー
    なし - Wi-Fi 接続を暗号化しません。
    WEP 40/128-bit キー - IEEE 802.11 標準からの Wired Equivalent Privacy (WEP)。単一の事前共有キー (PSK) を使用。
    WEP 128-bit パスフレーズ - パスフレーズの MD5 ハッシュを使用して WEP キーを引き出します。
    LEAP - Cisco Systems の Lightweight Extensible Authentication Protocol。
    動的 WEP (802.1X) - WEP キーは動的に変更します。「TLS の設定」 とともに使用します。
    WPA & WPA2 Personal - IEEE 802.11i 標準からの Wi-Fi Protected Access (WPA)。WEP に代わるもの。802.11i-2004 標準からの Wi-Fi Protected Access II (WPA2)。パーソナルモードは、事前共有キー (WPA-PSK) を使用。
    WPA & WPA2 Enterprise - IEEE 802.1X ネットワークアクセス制御を提供するために RADIUS 認証サーバーとともに使用する WPA。「TLS の設定」 とともに使用します。
    パスワード
    認証プロセスで使用するパスワードを入力します。
  5. ドロップダウンメニューから、LEAP動的 WEP (802.1X)WPA & WPA2 Enterprise いずれかのセキュリティー方法を選択します。
Security ドロップダウンメニューでの選択に対応する 拡張認証プロトコル (EAP) タイプの説明は、「TLS の設定」 を参照してください。

5.2.4. nm-connection-editor を使用した有線用の 802.1X セキュリティーの構成

手順
  1. 端末で nm-connection-editor を入力します。
    ~]$ nm-connection-editor
    Network Connections ウィンドウが表示されます。
  2. 編集するイーサネット接続を選択し、歯車アイコンをクリックしてください。「nm-connection-editor を使用した有線接続の設定」を参照してください。
  3. セキュリティー を選択してから電源ボタンを ON にして、設定を有効にします。
  4. 以下のいずれかの認証方法を選択します。
    • トランスポートレイヤーセキュリティーを設定するには、TLS を選択して、「TLS の設定」に進みます。
    • Flexible Authentication through Secure Tunneling (セキュアトンネリングを介したフレキシブル認証)を設定するには、FAST を選択して、「Tunneled TLS の設定」に進みます。
    • Tunneled Transport Layer Security (TTLS または EAP-TTLS とも呼ぶ) を設定するには、トンネル化 TLS を選択して「Tunneled TLS の設定」に進みます。
    • Protected Extensible Authentication Protocol を設定するには 保護つき EAP (PEAP) を選択して「Protected EAP (PEAP) の設定」に進みます。

TLS の設定

TLS (トランスポートレイヤーセキュリティー) では、クライアントとサーバーは TLS プロトコルを使用して相互に認証します。サーバーはデジタル証明書を維持していることを示し、クライアントはクライアント側の証明書を使用して自身の ID を証明することで、鍵情報が交換されます。認証が完了すると、TLS トンネルの使用は終了します。その代わりにクライアントとサーバーは交換したキーで、AES、TKIP、WEP のいずれかを使用してデータを暗号化します。
認証を希望する全クライアントに証明書が配布される必要があるということは、EAP-TLS 認証のメソッドが非常に強力であることを意味しますが、セットアップはより複雑になります。TLS セキュリティーを使用すると、証明書を管理するための PKI (パブリックキーインフラストラクチャー) のオーバーヘッドが必要になります。TLS セキュリティーを使用する利点は、パスワードが危険にさらされても (W)LAN へのアクセスが許可されないことです。侵入者は、認証するクライアントのプライベートキーにもアクセスを必要とします。
NetworkManager は、対応する TLS のバージョンを決定しません。NetworkManager は、ユーザーが入力するパラメーターを集め、手順を処理するデーモンである wpa_supplicant にこれらを渡します。このデーモンは、OpenSSL を使って TLS トンネルを確立します。OpenSSL 自体は、SSL/TLS プロトコルバージョンを処理します。このバージョンには、両方の末端でサポートされる一番高いバージョンが使用されます。
TLS を設定するには、「nm-connection-editor を使用した有線用の 802.1X セキュリティーの構成」 で説明されている手順に従います。以下の設定が可能です。
アイデンティティー
このサーバーの識別子を入力します。
ユーザー証明書
個人用 X.509 証明書ファイルをブラウズして選択します。これは、Distinguished Encoding Rules (DER) または Privacy Enhanced Mail (PEM) でエンコードされたものです。
CA 証明書
X.509 認証局 証明書ファイルをブラウズして選択します。これは、Distinguished Encoding Rules (DER) または Privacy Enhanced Mail (PEM) でエンコードされたものです。
プライベートキー
プライベートキーをブラウズして選択します。これは、Distinguished Encoding Rules (DER)、Privacy Enhanced Mail (PEM)、または Personal Information Exchange Syntax Standard (PKCS #12) でエンコードされたものです。
プライベートキーのパスワード
プライベートキー フィールドのプライベートキー用のパスワードを入力します。パスワードを表示を選択すると、入力時にパスワードが表示されます。

FAST の設定

FAST を設定するには、「nm-connection-editor を使用した有線用の 802.1X セキュリティーの構成」で説明されている手順に従います。以下の設定が可能です。
匿名の識別子
このサーバーの識別子を入力します。
PAC プロビジョニング
チェックボックスを選択してから、匿名認証両方 のいずれかを選択します。
PAC ファイル
クリックしてブラウズし、protected access credential (PAC) ファイルを選択します。
内部認証
GTC: Generic Token Card
MSCHAPv2 - Microsoft チャレンジハンドシェイク認証プロトコルバージョン 2
ユーザー名
認証プロセスで使用するユーザー名を入力します。
パスワード
認証プロセスで使用するパスワードを入力します。

Tunneled TLS の設定

Tunneled TLS を設定するには、「nm-connection-editor を使用した有線用の 802.1X セキュリティーの構成」 で説明されている手順に従います。以下の設定が可能です。
匿名の識別子
この値は、非暗号化 ID として使用されます。
CA 証明書
クリックしてブラウズし、認証局 (CA) の証明書を選択します。
内部認証
PAP - パスワード認証プロトコル
MSCHAP - チャレンジ ハンドシェイク認証プロトコル
MSCHAPv2 - Microsoft チャレンジハンドシェイク認証プロトコルバージョン 2
CHAP - チャレンジ ハンドシェイク認証プロトコル
ユーザー名
認証プロセスで使用するユーザー名を入力します。
パスワード
認証プロセスで使用するパスワードを入力します。

Protected EAP (PEAP) の設定

Protected EAP (PEAP) を設定するには、「nm-connection-editor を使用した有線用の 802.1X セキュリティーの構成」 で説明されている手順に従います。以下の設定が可能です。
匿名の識別子
この値は、非暗号化 ID として使用されます。
CA 証明書
クリックしてブラウズし、認証局 (CA) の証明書を選択します。
PEAP バージョン
使用する、保護された EAP のバージョン。Automatic、0、1 のいずれか。
内部認証
MSCHAPv2 - Microsoft チャレンジハンドシェイク認証プロトコルバージョン 2
MD5 - メッセージダイジェスト 5、暗号化ハッシュ関数。
GTC: Generic Token Card
ユーザー名
認証プロセスで使用するユーザー名を入力します。
パスワード
認証プロセスで使用するパスワードを入力します。

5.3. wpa_supplicant および NetworkManager による 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)、およびアプリケーションレイヤー (レイヤー 7) の SSL または TLS で動作しますが、MACsec はデータリンクレイヤー (レイヤー 7) で動作します。その他のネットワークレイヤーのセキュリティープロトコルと 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. eth0 を使ってネットワークに接続している場合は、以下のコマンドを使用して wpa_supplicant を開始します。
    ~]# wpa_supplicant -i eth0 -Dmacsec_linux -c wpa_supplicant.conf
Red Hat では、wpa_supplicant.conf ファイルを作成して編集するのではなく、nmcli コマンドを使用して前の手順と同じように wpa_supplicant を設定することを推奨します。以下の例は、すでに 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 eth0 macsec.mode psk \
  macsec.mka-cak $MKA_CAK \
  macsec.mka-cak-flags 0 \
  macsec.mka-ckn $MKA_CKN

~]# nmcli connection up test-macsec+
この手順の後に、macsec0 デバイスを設定してネットワーク設定に使用する必要があります。
詳細は、「What’s new in MACsec: setting up MACsec using wpa_supplicant and (optionally) NetworkManager」の記事を参照してください。また、MACsec ネットワークのアーキテクチャー、ユースケースのシナリオ、設定例に関する詳しい情報は「MACsec: a different solution to encrypt network traffic」の記事を参照してください。

5.4. IPv4 セッティングの設定

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

手順
  1. Super キーを押してアクティビティーの概要を表示し、Settings と入力して Enter キーを押します。次に、左側の Network タブを選択すると、Network 設定ツールが表示されます。「control-center を使用した新しい接続の設定」 に進んでください。
  2. 編集する接続を選択し、歯車アイコンをクリックします。編集 ダイアログが表示されます。
  3. IPv4 メニューエントリーをクリックします。
IPv4 メニューエントリーでは、ネットワークへの接続に使用する方法を設定し、IP アドレス、DNS を入力し、必要に応じてルート情報を入力します。IPv4 メニューエントリーは、有線、ワイヤレス、モバイルブロードバンド、VPN、DSL のいずれかを作成して変更するのに利用できます。
DHCP を使用して、DHCP サーバーから動的 IP アドレスを取得する場合は、アドレス自動 (DHCP)に設定するだけです。
静的ルートを設定する必要がある場合は、「GUI を使用した静的ルートの設定」を参照してください。

nm-connection-editor を使用した IPV4 の方法の設定

nm-connection-editor を使用して、接続設定の編集および設定ができます。この手順では、IPv4 設定の構成方法を説明します。
手順
  1. 端末で nm-connection-editor を入力します。
  2. 既存の接続タイプの場合は、歯車アイコンをクリックします。
    接続の編集

    図5.2 接続の編集

  3. IPv4 設定 をクリックします。
    IPv4 セッティングの設定

    図5.3 IPv4 セッティングの設定

接続の種類別で利用可能な IPv4 方式

方式 ドロップダウンメニューをクリックすると、設定している接続の種類によって以下の IPv4 接続方式のいずれかを選択できます。関連のある接続の種類に応じてすべての方式がここに一覧表示されています。
有線、ワイヤレス、DSL 接続の方式
自動 (DHCP) - 接続しているネットワークが IP アドレスの割り当てに DHCP サーバーを使用する場合は、このオプションを選択します。DHCP クライアント ID フィールドの記入は必要ありません。
自動 (DHCP) アドレス専用 - 接続しているネットワークが IP アドレスの割り当てに DHCP サーバーを使用しているが、DNS サーバーを手動で割り当てたい場合は、このオプションを選択します。
手動: IP アドレスを手動で割り当てたい場合は、このオプションを選択します。
ローカルへのリンク専用 - 接続しているネットワークに DHCP サーバーがなく、IP アドレスを手動で割り当てたくない場合に、このオプションを選択します。RFC 3927に従って、接頭辞 169.254/16 の付いたランダムなアドレスが割り当てられます。
他のコンピューターへ共有 - 設定中のインターフェースがインターネットまたは WAN 接続の共有用である場合は、このオプションを選択します。インターフェースには 10.42.x.1/24 の範囲内のアドレスが割り当てられ、DHCP および DNS サーバーが起動し、ネットワークアドレス変換 (NAT) でシステム上のデフォルトのネットワーク接続にインターフェースが接続されます。
無効になっています: IPv4 はこの接続で無効になります。
モバイルブロードバンド接続の方式
自動 (PPP) - 接続しているネットワークが IP アドレスと DNS サーバーを自動で割り当てる場合は、このオプションを選択します。
自動 (PPP) アドレスのみ - 接続しているネットワークが IP アドレスと DNS サーバーを自動で割り当てるものの、DNS サーバーを手動で割り当てたい場合は、このオプションを選択します。
VPN 接続の方式
自動 (VPN) - 接続しているネットワークが IP アドレスと DNS サーバーを自動で割り当てる場合は、このオプションを選択します。
自動 (VPN) アドレス専用 - 接続しているネットワークが IP アドレスと DNS サーバーを自動で割り当てるものの、DNS サーバーを手動で割り当てたい場合は、このオプションを選択します。
DSL 接続の方式
自動 (PPPoE) - 接続しているネットワークが IP アドレスと DNS サーバーを自動で割り当てる場合は、このオプションを選択します。
自動 (PPPoE) アドレス専用 - 接続しているネットワークが IP アドレスと DNS サーバーを自動で割り当てるものの、DNS サーバーを手動で割り当てたい場合は、このオプションを選択します。
DHCP を使用して DHCP サーバーから動的 IP アドレスを取得する場合は、方法自動 (DHCP)に設定するだけです。
静的ルートを設定する必要がある場合は、Routes ボタンをクリックします。設定オプションの詳細は「GUI を使用した静的ルートの設定」を参照してください。

5.5. IPv6 セッティングの設定

IPv6 設定を構成するには、「IPv4 セッティングの設定」 に記載されている手順に従い、IPv6 メニューエントリーをクリックします。
方式
無視する: この接続の IPv6 セッティングを無視したい場合は、このオプションを選択します。
自動: SLAAC を使って、ハードウェアのアドレスおよび ルーターアドバタイズ (RA) に基づいて自動のステートレス設定を作成する場合は、このオプションを選択します。
自動、アドレスのみ - 接続中のネットワークが ルーターアドバタイズ (RA) を使用して自動のステートレス設定を作成するものの、DNS サーバーを手動で割り当てたい場合は、このオプションを選択します。
自動、DHCP のみ: RAを使用しないで、DHCPv6 からの情報を直接要求してステートフルな設定を作成する場合は、このオプションを選択します。
手動: IP アドレスを手動で割り当てたい場合は、このオプションを選択します。
ローカルへのリンク専用 - 接続しているネットワークに DHCP サーバーがなく、IP アドレスを手動で割り当てたくない場合に、このオプションを選択します。RFC 4862に従って、接頭辞 FE80::0 の付いたランダムなアドレスが割り当てられます。
アドレス
DNS サーバー: コンマ区切りの DNS サーバーのリストを入力します。
ドメインを検索: コンマで区切られたドメインコントローラーのリストを入力します。
静的ルートを設定する必要がある場合は、Routes ボタンをクリックします。設定オプションの詳細は「GUI を使用した静的ルートの設定」を参照してください。

5.6. PPP (ポイントツーポイント) セッティングの設定

認証方法
多くの場合、プロバイダーの PPP サーバーは許可されたすべての認証方法をサポートしています。接続に失敗する場合は、PPP サーバーの設定に応じて一部の認証方法のサポートを無効にする必要があります。
MPPE (ポイントツーポイント暗号化) を使用
Microsoft のポイントツーポイント暗号化プロトコル (RFC 3078)。
BSD データ圧縮を許可する
PPP BSD 圧縮プロトコル (RFC 1977)。
Deflate データ圧縮を許可する
PPP Deflate プロトコル (RFC 1979)。
TCP ヘッダー圧縮を使用
低スピードシリアルリンク用に TCP/IP ヘッダーを圧縮します (RFC 1144)。
PPP echo のパケットを送信
ループバックテスト用の LCP Echo 要求および Echo 応答コード (RFC 1661)。

注記

NetworkManager ではオプションとして PPP がサポートされるので、PPP セッティングを設定するには、事前に NetworkManager-ppp パッケージがインストールされている必要があります。

第6章 ホスト名の設定

6.1. ホスト名について

hostname には、static (静的)、pretty、transient (一時的) の 3 つのクラスがあります。
staticホスト名は従来の hostname で、ユーザーが選択でき、/etc/hostname ファイルに保存されます。transient hostname は、カーネルによって維持される動的なホスト名です。デフォルトでは static ホスト名に初期化され、その値はlocalhostになります。ランタイム時に DHCP または mDNS による変更が可能です。pretty hostname は、ユーザーに自由形式の UTF8 ホスト名を提示するものです。

注記

ホスト名は、最大 64 文字の長さの自由形式の文字列にできます。ただし、Red Hat では、static および transient の両方の名前が host.example.com のように DNS 内のマシンで使われている 完全修飾ドメイン名 (FQDN) に合致することを推奨しています。また、static および transient のホスト名は 7 ビットの ASCII 小文字のみで構成され、空白やドットを含めず、DNS ドメイン名ラベルで許可されている形式に制限することが推奨されています。ただし、これは厳密な要件ではありません。従来の仕様ではアンダースコアは禁止されているので、この使用も推奨されません。
hostnamectl ツールは、static および transient のホスト名が a-zA-Z0-9-_、および.のみで構成され、最初と最後がドットでないこと、また 2 つのドットが連続しないことを強制します。また、最大 64 文字までの長さも強制されます。

6.2. テキスト形式のユーザーインターフェース nmtui を使用したホスト名の設定

テキスト形式のユーザーインターフェースツール nmtui を使うと、ターミナルのウィンドウでホスト名を設定できます。このツールを起動するには、以下のコマンドを実行します。
~]$ nmtui
テキスト形式のインターフェースが表示されます。無効なコマンドの場合は、使用法に関するメッセージがプリントされます。
NetworkManager のテキスト形式ユーザーインターフェースの開始メニュー

図6.1 NetworkManager のテキスト形式ユーザーインターフェースの開始メニュー

移動するには矢印キーを使用するか、Tab を押して次に進むか Shift+Tab を押して前に戻ります。Enter を押してオプションを選びます。Space バーは、チェックボックスのステータスを切り替えます。
nmtui のインストール方法は「nmtui を使用した IP ネットワークの設定」を参照してください。
NetworkManager のテキストユーザーインターフェースツール nmtui を使用すると、/etc/hostname ファイル内の静的ホスト名にクエリーを実行し、設定できます。

重要

Red Hat Enterprise Linux では、NetworkManagersystemd-hostnamed サービスを使用して /etc/hostname ファイルに保存される静的ホスト名の読み取りおよび書き込みを実行します。したがって、/etc/hostname ファイルに対する手動の変更が NetworkManager によって自動的に取得されなくなりました。hostnamectl ユーティリティーを使って、システムのホスト名を変更する必要があります。また、/etc/sysconfig/network ファイルでの HOSTNAME 変数の使用は非推奨になりました。

6.3. hostnamectl を使用したホスト名の設定

hostnamectl ツールは、システム上で使用中の 3 つのクラスのホスト名を管理するためのものです。

6.3.1. 全ホスト名の表示

現行のホスト名をすべて表示するには、以下のコマンドを実行します。
~]$ hostnamectl status
オプションなしで実行された場合は、デフォルトで status オプションが暗示されます。

6.3.2. 全ホスト名の設定

システム上のホスト名すべてを設定するには、root で以下のコマンドを実行します。
~]# hostnamectl set-hostname name
このコマンドは、pretty、static、および transient のホスト名を同様に変更します。static および transient ホスト名は、pretty ホスト名のシンプルな形式です。空白は-で置換され、特殊文字は削除されます。

6.3.3. 特定のホスト名の設定

特定のホスト名を設定するには、root で以下のコマンドを関連するオプションと実行します。
~]# hostnamectl set-hostname name [option...]
ここでの option は、--pretty--static、および --transient のいずれか 1 つまたは複数となります。
--static または --transient のオプションを --pretty オプションと併用した場合、static および transient のホスト名は簡素化された pretty ホスト名形式になります。空白は-で置換され、特殊文字は削除されます。--pretty オプションを使用しなければ、簡素化されることはありません。
pretty ホスト名を設定する際、ホスト名に空白や単一引用符が含まれているのであれば、適切な引用符を用いてください。例を示します。
~]# hostnamectl set-hostname "Stephen's notebook" --pretty

6.3.4. 特定のホスト名の削除

特定のホスト名を削除してデフォルトに戻すには、root で以下のコマンドを関連するオプションと実行します。
~]# hostnamectl set-hostname "" [option...]
ここでの "" は空白の文字列の引用となり、option--pretty--static、および --transient のいずれか 1 つまたは複数となります。

6.3.5. ホスト名のリモートでの変更

リモートシステム上で hostnamectl コマンドを実行するには、以下のように -H, --host オプションを使用します。
~]# hostnamectl set-hostname -H [username]@hostname
ここでの hostname は、設定対象となるリモートホストです。username はオプション選択になります。hostnamectl ツールは SSH を使ってリモートシステムに接続します。

6.4. nmcli を使用したホスト名の設定

NetworkManager のツール nmcli を使用すると、/etc/hostname ファイル内の静的ホスト名にクエリーを実行し、設定できます。
静的ホスト名にクエリーを実行するには、以下のコマンドを発行します。
~]$ nmcli general hostname
静的ホスト名を my-server に設定するには、root で以下のコマンドを実行します。
~]# nmcli general hostname my-server

6.5. 関連資料

  • hostnamectl(1) man ページ - コマンドおよびコマンドオプ ションを含む hostnamectl を説明しています。
  • hostname(1) man ページ - hostname および domainname の各コマンドを説明しています。
  • hostname(5) man ページ - ホスト名ファイル、そのコンテンツおよび使用法について説明しています。
  • hostname(7) man ページ - ホスト名解決について説明しています。
  • machine-info(5) man ページ - ローカルマシンの情報ファイルおよびそれに含まれる環境変数について説明しています。
  • machine-id(5) man ページ - ローカルマシン ID の設定ファイルについて説明しています。
  • systemd-hostnamed.service(8) man ページ - hostnamectl が使用する systemd-hostnamed システムサービスについて説明しています。

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

Red Hat Enterprise Linux 7 では、管理者が複数のネットワークインターフェースを単一のチャンネルにまとめること (ボンディング) ができます。このチャンネルボンディングにより、複数のネットワークインターフェースが 1 つとして機能できるようになり、また同時に帯域幅が増加し、冗長性を提供します。

警告

ネットワークスイッチを使わずにケーブルの直接接続を使用すると、ボンディングはサポートされません。本章で説明されているフェイルオーバーメカニズムは、ネットワークスイッチがないと予想どおりに機能しません。詳細についてはナレッジベースの記事ボンディングは、クロスオーバーケーブルを使用したダイレクトコレクションをサポートしますか?を参照してください。

注記

active-backup、balance-tlb および balance-alb の各モードはスイッチの特定の設定を必要としません。他のボンディングモードでは、スイッチがリンクを集約するように設定する必要があります。たとえば、Cisco スイッチでは Modes 0、2、および 3 に EtherChannel を必要としますが、Mode 4 には LACP と EtherChannel が必要となります。スイッチに付属の説明書と https://www.kernel.org/doc/Documentation/networking/bonding.txt を参照してください。

7.1. マスターおよびスレーブインターフェースのデフォルト動作について

NetworkManager デーモンを使ってボンディングされたスレーブインターフェースを制御する際、特に障害検索時には、以下の点に留意してください。
  1. マスターインターフェースを起動しても、スレーブインターフェースは自動的に起動されない。
  2. スレーブインターフェースを起動すると、マスターインターフェースは毎回、自動的に起動される。
  3. マスターインターフェースを停止すると、スレーブインターフェースも停止される。
  4. マスターはスレーブなしで静的 IP 接続を開始できる。
  5. マスターはスレーブなしの場合、DHCP 接続の開始時にスレーブを待機する。
  6. DHCP 接続でスレーブを待機中のマスターは、キャリアをともなうスレーブが追加されると完了する。
  7. DHCP 接続でスレーブを待機中のマスターは、キャリアをともなわないスレーブが追加されると待機を継続する。

7.2. テキスト形式のユーザーインターフェース nmtui を使ったボンディングの設定

テキスト形式のユーザーインターフェースツール nmtui を使うと、ターミナルのウィンドウでボンディングを設定できます。このツールを起動するには、以下のコマンドを実行します。
~]$ nmtui
テキスト形式のインターフェースが表示されます。無効なコマンドの場合は、使用法に関するメッセージが出力されます。
移動するには矢印キーを使用するか、Tab を押して次に進むか Shift+Tab を押して前に戻ります。Enter を押してオプションを選びます。Space バーは、チェックボックスのステータスを切り替えます。
  1. メニューから 接続の編集 を選択します。追加 を選択すると 新規の接続 画面が開きます。
    NetworkManager テキスト形式のユーザーインターフェースのボンド接続追加メニュー

    図7.1 NetworkManager テキスト形式のユーザーインターフェースのボンド接続追加メニュー

  2. ボンド の後に 作成 を選択すると 接続の編集 画面が開きます。
    NetworkManager テキスト形式ユーザーインターフェースでボンド接続を設定するメニュー

    図7.2 NetworkManager テキスト形式ユーザーインターフェースでボンド接続を設定するメニュー

  3. この時点で、ボンドにスレーブインターフェースを追加する必要があります。これを行うには 追加 を選択して 新規の接続 画面を開きます。接続の種類を選んだら、作成 ボタンを選択します。
    NetworkManager テキスト形式ユーザーインターフェースで新規ボンドスレーブを設定するメニュー

    図7.3 NetworkManager テキスト形式ユーザーインターフェースで新規ボンドスレーブを設定するメニュー

  4. スレーブの 接続の編集 画面が表示されます。デバイス セクションに必要なスレーブのデバイス名もしくは MAC アドレスを入力します。必要であれば、イーサネット ラベルの右側にある 表示する を選択して、ボンドの MAC アドレスとして使用するクローンの MAC アドレスを入力します。OK ボタンを選択してスレーブを保存します。

    注記

    MAC アドレスなしでデバイスを指定すると、接続の編集 ウィンドウがリロードされる際に デバイス セクションは自動的に設定されます。ただしこれは、デバイスが正常に発見された場合のみです。
    NetworkManager テキスト形式ユーザーインターフェースでボンドスレーブ接続を設定するメニュー

    図7.4 NetworkManager テキスト形式ユーザーインターフェースでボンドスレーブ接続を設定するメニュー

  5. スレーブ セクションにボンドスレーブの名前が表示されます。さらにスレーブ接続を追加する場合は、上記のステップを繰り返します。
  6. 設定を確認してから OK ボタンを選択します。
    NetworkManager のテキスト形式ユーザーインターフェースでボンドを完了

    図7.5 NetworkManager のテキスト形式ユーザーインターフェースでボンドを完了

ボンド用語の定義は、「Bond タブの設定」を参照してください。
nmtui のインストール方法は「nmtui を使用した IP ネットワークの設定」を参照してください。

7.3. NetworkManager のコマンドラインツール nmcli を使用したネットワークボンディング

注記

nmcli の概要は、「nmcli を使用する IP ネットワークの設定」を参照してください。
nmcli ツールを使用して ボンド 接続を作成するには、以下のコマンドを実行します。
~]$ nmcli con add type bond ifname mybond0
Connection 'bond-mybond0' (5f739690-47e8-444b-9620-1895316a28ba) successfully added.
ボンドに con-name を指定しなかったため、接続名がインターフェース名の前に種類を追加したものとなっていることに留意してください。
NetworkManager では、カーネルで提供されるほとんどのボンディングオプションがサポートされます。以下に例を示します。
~]$ nmcli con add type bond ifname mybond0 bond.options "mode=balance-rr,miimon=100"
Connection 'bond-mybond0' (5f739690-47e8-444b-9620-1895316a28ba) successfully added.
スレーブ インターフェースを追加するには、以下の手順を実施します。
  1. 新しい接続を作成します。詳細は「nmcli による接続プロファイルの作成および修正」を参照してください。
  2. マスターのプロパティーを ボンド のインターフェース名、またはマスター接続の名前に設定します。
~]$ nmcli con add type ethernet ifname ens3 master mybond0
Connection 'bond-slave-ens3' (220f99c6-ee0a-42a1-820e-454cbabc2618) successfully added.
新たな スレーブ インターフェースを追加するには、別のインターフェースで前の手順のコマンドを繰り返します。以下に例を示します。
~]$ nmcli con add type ethernet ifname ens7 master mybond0
Connection 'bond-slave-ens7' (ecc24c75-1c89-401f-90c8-9706531e0231) successfully added.
スレーブをアクティブにするには、以下のコマンドを実行します。
~]$ nmcli con up bond-slave-ens7
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/14)
~]$ nmcli con up bond-slave-ens3
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/15)
スレーブをアクティブ化すると、マスター接続も開始されます。詳細は、「マスターおよびスレーブインターフェースのデフォルト動作について」を参照してください。したがって、マスター接続を手動でアクティブ化する必要はありません。
接続を非アクティブ化することなく、ランタイム時にボンドの active_slave オプションおよび primary オプションを変更できます。たとえば、active_slave オプションを変更するには、以下のコマンドを実行します。
~]$ nmcli dev mod bond0 +bond.options "active_slave=ens7"
Connection successfully reapplied to device 'bond0'.
また、primary オプションを変更するには、以下のコマンドを実行します。
~]$ nmcli dev mod bond0 +bond.options "primary=ens3"
Connection successfully reapplied to device 'bond0'.

注記

active_slave オプションで設定したインターフェースが、直ちにアクティブスレーブになります。一方、ボンドの primary オプションでは、新たなスレーブが追加された時またはアクティブスレーブに障害が発生した時にカーネルが自動的に選択するアクティブスレーブを指定します。

7.4. コマンドラインインターフェース (CLI) の使用

ボンドは、ボンディング カーネルモジュールと、チャンネルボンディングインターフェース と呼ばれる特殊なネットワークインターフェースを使用して作成されます。

7.4.1. ボンディングカーネルモジュールがインストールされているかの確認

Red Hat Enterprise Linux 7 では、ボンディングモジュールはデフォルトでは読み込まれません。root で以下のコマンドを実行してこのモジュールを読み込みます。
~]# modprobe --first-time bonding
このアクティベーションは、システム再起動後は維持されません。再起動後も維持されるモジュールの読み込みについては、Red Hat Enterprise Linux システム管理者のガイドを参照してください。BONDING_OPTS ディレクティブを使用した適切な設定ファイルがあれば、ボンディングモジュールは必要に応じて読み込まれるので、別個に読み込む必要はないことに留意してください。
モジュールの情報を表示するには、以下のコマンドを実行します。
~]$ modinfo bonding
コマンドオプションは、man ページの modprobe(8) を参照してください。

7.4.2. チャンネルボンディングインターフェースの作成

チャンネルボンディングインターフェースを作成するには、/etc/sysconfig/network-scripts/ ディレクトリーに ifcfg-bondN という名前のファイルを作成し、N をそのインターフェースの番号 0 などに置き換えます。
ファイルのコンテンツは、イーサネットインターフェースなどボンディングされるインターフェースのものであればどの設定ファイルでもそれをベースにできます。本質的な相違点は、DEVICE ディレクティブが bondN となり、この N をインターフェースの番号で置換し、さらに TYPE=Bond とすることです。また、BONDING_MASTER=yes と設定します。

例7.1 ifcfg-bond0 インターフェース設定ファイルの例

チャンネルボンディングインターフェースの例は以下のようになります。
DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.1.1
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="bonding parameters separated by spaces"
NAME ディレクティブは、NetworkManager 内の接続プロファイルの命名時に便利なものです。ONBOOT は、起動時 (一般的にはデバイスの自動接続時) にプロファイルを起動するかどうかを示しています。

重要

ボンディングカーネルモジュールのパラメーターは、ifcfg-bondN インターフェースファイル内の BONDING_OPTS="bonding parameters" ディレクティブでスペース区切りの一覧として指定する必要があります。/etc/modprobe.d/bonding.conf または非推奨の /etc/modprobe.conf ファイルでボンディングデバイスのオプションを指定しないでください
max_bonds パラメーターはインターフェース固有ではなく、ifcfg-bondN ファイルの使用時に BONDING_OPTS ディレクティブで指定しないでください。このディレクティブを使うと、ネットワークスクリプトが必要に応じてボンディングインターフェースを作成することになります。
ボンディングモジュールの設定に関する指示およびアドバイスとボンディングパラメーターの一覧については、「チャンネルボンディングの使用」を参照してください。

7.4.3. スレーブインターフェースの作成

チャンネルボンディングインターフェースはマスターであり、ボンディングされるインターフェースはスレーブと呼ばれます。チャンネルボンディングインターフェースを作成した後に、ボンディングされるネットワークインターフェースを設定するには、そのスレーブの設定ファイルに MASTERSLAVE のディレクティブを追加する必要があります。各スレーブインターフェースの設定ファイルは、ほぼ同一となる可能性があります。

例7.2 スレーブインターフェース設定ファイルの例

たとえば、2 つのイーサネットインターフェース eth0eth1 をチャンネルボンディングする場合、それらは両方とも以下のようにすることができます。
DEVICE=ethN
NAME=bond0-slave
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
この例では、N をインターフェースの番号で置換します。インターフェースが ONBOOT=yes となっているプロファイルまたは設定ファイルが複数ある場合、それらが相互に競合し、ボンドスレーブではなく単純な TYPE=Ethernet プロファイルがアクティブ化される場合があることに注意してください。

7.4.4. チャンネルボンディングのアクティブ化

ボンドをアクティブにするには、すべてのスレーブを有効にします。root で以下のコマンドを実行します。
~]# ifup ifcfg-eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
~]# ifup ifcfg-eth1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/8)
すでにupとなっているインターフェースのインターフェースファイルを編集する場合は、以下のようにまず最初にそれらを down にします。
ifdown ethN
これが完了した後、すべてのスレーブを有効にすることで、ボンドが有効になります (downに設定されていないことが前提)。
NetworkManager にこれらの変更を認識させるには、変更されたすべてのインターフェースに、root で以下のコマンドを実行します。
~]# nmcli con load /etc/sysconfig/network-scripts/ifcfg-device
または、すべてのインターフェースをリロードします。
~]# nmcli con reload
デフォルトでは、NetworkManager は変更を認識せず、変更前の設定データの使用を継続します。これは NetworkManager.conf ファイルの monitor-connection-files オプションで設定します。詳細情報は、NetworkManager.conf(5) man ページを参照してください。
ボンドインターフェースのステータスを表示するには、以下のコマンドを実行します。
~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:e9:ce:d2 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:38:a6:4c brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
    link/ether 52:54:00:38:a6:4c brd ff:ff:ff:ff:ff:ff

7.4.5. 複数のボンド作成

Red Hat Enterprise Linux では、各ボンドに BONDING_OPTS ディレクティブを含むチャンネルボンディングインターフェースが作成されます。この設定方法を使うと、複数のボンディングデバイスに異なる設定をすることが可能になります。複数のチャンネルボンディングインターフェースを作成するには、以下の手順に従います。
  • BONDING_OPTS ディレクティブがある複数の ifcfg-bondN ファイルを作成します。このディレクティブを使うと、ネットワークスクリプトが必要に応じてボンディングインターフェースを作成するようになります。
  • ボンディングされるインターフェース設定ファイルを作成、または既存のものを編集し、SLAVE ディレクティブをこれに含めます。
  • ボンディングされるスレーブインターフェースを MASTER ディレクティブでチャンネルボンディングインターフェースに割り当てます。

例7.3 複数の ifcfg-bondN インターフェース設定ファイルの例

以下は、チャンネルボンディングインターフェース設定ファイルの例です。
DEVICE=bondN
NAME=bondN
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.1.1
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="bonding parameters separated by spaces"
この例では、N をインターフェースの番号に置き換えます。たとえば 2 つのボンドを作成するには、ifcfg-bond0ifcfg-bond1 という 2 つの設定ファイルを適切な IP アドレスとともに作成します。
例7.2「スレーブインターフェース設定ファイルの例」にあるようにボンディングされるインターフェースを作成し、MASTER=bondN ディレクティブを使って必要に応じてそれらをボンドインターフェースに割り当てます。たとえば上記の例では、ボンドあたり 2 つのインターフェースが必要だとすると、2 つのボンドに 4 つのインターフェース設定ファイルを作成し、最初の 2 つを MASTER=bond0 を使って割り当て、残りの 2 つを MASTER=bond1 を使って割り当てます。

7.5. 冗長性についてネットワーク構成ボンディングの確認

ネットワークの冗長性は、特定のシステムの障害を防止または回復するために、バックアップ目的でデバイスが使用される場合のプロセスです。次の手順では、冗長性でボンディングのネットワーク構成を確認する方法を説明します。
手順
  1. ボンドインターフェースから、宛先の IP を ping します。以下のようなコマンドを実行します。
    ~]# ping -I bond0 DSTADDR
  2. どのインターフェースが アクティブ モードになっているかを表示します。
    ~]# cat /sys/class/net/bond0/bonding/active_slave
    eth1
    eth1 は、アクティブ なスレーブインターフェースです。
  3. アクティブ なスレーブインターフェースを down に設定します。
    ~]# ip link set eth1 down
  4. バックアップ インターフェースが起動しているかどうかを確認します。
    ~]# cat /sys/class/net/bond0/bonding/active_slave
    eth2
    eth2 は、アクティブ なスレーブインターフェースです。
  5. ボンドインターフェースから、宛先の IP を ping できるかどうかを確認します。
    ~]# ping -I bond0 DSTADDR

7.6. チャンネルボンディングの使用

モードを使用して、ボンディングポリシーを指定できるようにします。

チャンネルモードの概念

mode=value
value は、次のいずれかになります。
  • balance-rr または 0: 耐障害性とロードバランシングのためのラウンドロビンポリシーを設定します。利用可能な最初のインターフェースからそれぞれのボンディングされたスレーブインターフェースで送受信が順次行われます。
  • active-backup または 1 - 耐障害性のためアクティブなバックアップポリシーを設定します。最初に利用可能になった、ボンディングされたスレーブインターフェースにより送受信が行われます。別のボンディングされたスレーブインターフェースは、ボンディングされたアクティブなスレーブインターフェースが失敗した場合にのみ使用されます。
  • balance-xor または 2 - 送受信は選択されたハッシュポリシーに基づきます。デフォルトでは、ハッシュはソースの XOR とスレーブインターフェース数による剰余で宛先 MAC アドレスを掛けて導き出します。このモードでは、宛先が特定のピアになっているトラフィックは常に同一インターフェースで送信されます。宛先は MAC アドレスで決められるので、この方法は同一リンクまたはローカルネットワーク上にあるピアが宛先のトラフィックに最適なものです。トラフィックが単一ルーターを通過する必要がある場合は、このトラフィックバランスのモードは最適ではなくなります。
  • broadcast または 3 - 耐障害性のためのブロードキャストポリシーを設定します。すべての送信は、すべてのスレーブインターフェースで行われます。
  • 802.3ad または 4 - IEEE 802.3ad 動的リンクアグリゲーションのポリシーを設定します。同一の速度とデュプレックス設定を共有するアグリゲーショングループを作成します。アクティブなアグリゲーターのすべてのスレーブで送受信を行います。802.3ad に対応するスイッチが必要です。
  • balance-tlb または 5 - 耐障害性とロードバランシングのための送信ロードバランシング (TLB) ポリシーを設定します。発信トラフィックは、各スレーブインターフェースの現在の負荷に従って分散されます。受信トラフィックは、現在のスレーブにより受信されます。受信しているスレーブが失敗すると、別のスレーブが失敗したスレーブの MAC アドレスを引き継ぎます。このモードは、カーネルボンディングモジュールが認識しているローカルアドレスにのみ、適したものになります。このため、仮想マシンのブリッジの背後では使用できません。
  • balance-alb または 6 - 耐障害性とロードバランシングのためアダプティブロードバランシング (ALB) ポリシーを設定します。IPv4 トラフィック用の送受信ロードバランシングが含まれます。ARP ネゴシエーションにより、受信ロードバランシングが可能です。このモードは、カーネルボンディングモジュールが認識しているローカルアドレスにのみ、適したものになります。このため、仮想マシンのブリッジの背後では使用できません。
次の一覧は、最も一般的なチャンネルボンディングパラメーターの名前を示します。詳細は、modinfo bonding の出力にある各 parm の簡単な説明を参照してください。より詳細な情報は https://www.kernel.org/doc/Documentation/networking/bonding.txt を参照してください。

ボンディングモードインタフェースパラメーター

ad_select=value
使用する 802.3ad アグリゲーションの選択論理を指定します。指定可能な値は、以下のとおりです。
  • stable または 0: デフォルト設定です。アクティブなアグリゲーターは、最大のアグリゲーション帯域幅によって選択されます。アクティブなアグリゲーターの再選択は、すべてのスレーブがダウンとなるか、スレーブがなくなった時にのみ行われます。
  • bandwidth または 1: アクティブなアグリゲーターは、最大のアグリゲーション帯域幅によって選択されます。アクティブなアグリゲーターの再選択は以下の場合に行われます。
    • ボンドにスレーブが追加される、またはボンドからスレーブが削除される。
    • スレーブのリンク状態が変更される。
    • スレーブの 802.3ad 関連状態が変更される。
    • ボンドの管理状態が有効になる。
  • count または 2: アクティブなアグリゲーターは、スレーブの最大数によって選択されます。再選択は、上記の bandwidth 設定の場合に行われます。
bandwidth および count の選択ポリシーは、アクティブアグリゲーターが部分的に失敗した場合に、802.3ad アグリゲーションのフェイルオーバーを可能にします。これにより、常にアクティブな状態のアグリゲーターを帯域幅もしくはスレーブ数における最大の利用可能数で維持します。
downdelay=time_in_milliseconds
リンクを無効にする前に、リンクの失敗後に待機する時間を指定します (ミリ秒単位)。値は、miimon パラメーターで指定される値の倍数でなければなりません。デフォルトでは 0 に設定されており、待機時間を無効にします。
fail_over_mac=value
アクティブ-バックアップモードが、スレーブ指定時にすべてのスレーブを同一 MAC アドレスに設定する (従来の動作) か、有効な場合は、選択されたポリシーに従って、MAC アドレスのボンドの特別な処理を実行するかを指定します。利用可能な値は以下のとおりです。
  • none または 0: デフォルト設定です。この設定では fail_over_mac が無効になり、スレーブ指定時にボンディングがアクティブ-バックアップボンドのすべてのスレーブを同一 MAC アドレスに設定するようにします。
  • active または 1: active fail_over_mac ポリシーでは、ボンドの MAC アドレスは常に現在アクティブなスレーブの MAC アドレスにすべきと指示しています。スレーブの MAC アドレスは変更されませんが、代わりにフェイルオーバー中にボンドの MAC アドレスが変更されます。
    このポリシーは、MAC アドレスを変更できないデバイスや、(ARP 監視を妨害する) 自身のソース MAC を持つ着信ブロードキャストを拒否するデバイスに便利なものです。このポリシーのマイナス面は、ネットワーク上のすべてのデバイスが余計な ARP によって更新される必要があるという点です。通常の方法では、スイッチが着信トラフィックを嗅ぎ付けて ARP テーブルを更新します。余計な ARP が失われると、通信が中断される可能性があります。
    このポリシーを MII モニターと合わせて使用すると、実際に送受信可能になる前にリンクを有効にするデバイスが特に余計な ARP を失いやすくなります。また、適切な updelay 設定が必要になる可能性があります。
  • follow または 2: follow fail_over_mac ポリシーでは、ボンドの MAC アドレスは通常どおり選択されます (通常、最初のスレーブの MAC アドレスがボンドに追加されます)。ただし、2 番目以降のスレーブはこの MAC アドレスに設定されず、バックアップの役割を果たします。つまり、スレーブはフェイルオーバー時にボンドの MAC アドレスでプログラミングされます (また、それまでアクティブだったスレーブが新たにアクティブになったスレーブの MAC アドレスを受け取ります)。
    このポリシーは、複数ポートが同一 MAC アドレスでプログラミングされる際に、混乱したりパフォーマンスペナルティーを受けるマルチポートデバイスに便利なものです。
lacp_rate=value
リンクパートナーが 802.3ad モードで LACPDU パケットを送信するレートを指定します。指定可能な値は、以下のとおりです。
  • slow または 0 - デフォルト設定です。パートナーが 30 秒ごとに LACPDU を送信するよう指定します。
  • fast または 1 - パートナーが 1 秒ごとに LACPDU を送信するよう指定します。
primary=interface_name
eth0 のようなプライマリーデバイスのインターフェース名を指定します。primary デバイスは、使用される最初のボンディングインターフェースであり、失敗しない限りは破棄されません。この設定が特に役立つのは、ボンディングインターフェースの NIC の 1 つが高速なため、大規模な負荷に対応できる場合です。
この設定は、ボンディングインターフェースが active-backup モードの場合にのみ有効です。詳細については、https://www.kernel.org/doc/Documentation/networking/bonding.txt を参照してください。
primary_reselect=value
プライマリースレーブに対して再選択ポリシーを指定します。これは、アクティブなスレーブの失敗やプライマリースレーブの回復が発生した場合に、どのようにプライマリースレーブが選択されてアクティブなスレーブになるかという点に影響します。このパラメーターは、プライマリースレーブと他のスレーブ間でのフリップフロップを防ぐように設計されています。指定可能な値は、以下のとおりです。
  • always または 0 (デフォルト) - プライマリースレーブは有効になるといつでもアクティブなスレーブになります。
  • better または 1 - プライマリースレーブの速度とデュプレックスが、現在のアクティブなスレーブの速度とデュプレックスと比べて良い場合は、プライマリースレーブは有効になるとアクティブなスレーブになります。
  • failure または 2 - 現在のアクティブなスレーブが失敗してプライマリースレーブが有効になる場合のみ、プライマリースレーブはアクティブなスレーブになります。
primary_reselect の設定は、以下の 2 つの場合では無視されます。
  • アクティブなスレーブがない場合は、回復する最初のスレーブがアクティブなスレーブになります。
  • 初めにプライマリースレーブがスレーブにされた場合は、それは常にアクティブなスレーブになります。
sysfs により primary_reselect ポリシーが変更されると、新しいポリシーに従って直ちに最良のアクティブなスレーブが選択されます。これにより、状況によってはアクティブなスレーブに変更が生じる場合があります。
resend_igmp=range
フェイルオーバーイベント後に発行される IGMP メンバーシップレポートの数を指定します。1 つのメンバーシップレポート がフェイルオーバーの直後に発行され、以降のパケットは 200ms (ミリ秒) の間隔で送信されます。
有効な範囲は 0 から 255 で、デフォルト値は 1 です。値が 0 だと、フェイルオーバーイベント時に IGMP メンバーシップレポートが発行されません。
このオプションは、フェイルオーバーで IGMP トラフィックをあるスレーブから別のスレーブに切り替えられる balance-rr (mode 0)、active-backup (mode 1)、balance-tlb (mode 5) および balance-alb (mode 6) のボンディングモードで便利なものです。このため、新たに発行される IGMP レポートは、スイッチが着信 IGMP トラフィックを新たに選択されたスレーブに転送させるようにする必要があります。
updelay=time_in_milliseconds
リンクを有効にする前の待機時間を指定します (ミリ秒単位)。値は、miimon パラメーターで指定される値の倍数でなければなりません。デフォルトでは、値は 0 に設定されており、待機時間を無効にします。
use_carrier=number
リンク状態を決定するために miimon が MII/ETHTOOL ioctls または netif_carrier_ok() を使用するかどうか指定します。netif_carrier_ok() 機能は、デバイスドライバーを使用して netif_carrier_on/off によりその状態を維持します。大半のデバイスドライバーはこの機能に対応しています。
MII/ETHTOOL ioctls ツールは、カーネル内の非推奨の呼び出しシーケンスを活用します。ただし、これは使用しているデバイスドライバーが netif_carrier_on/off に対応しない場合でも設定可能です。
有効な値は次のとおりです。
  • 1: デフォルト設定です。netif_carrier_ok() の使用を有効にします。
  • 0: MII/ETHTOOL ioctls の使用を有効にします。

注記

リンクがアップになっているべきでない時にアップであるとボンディングインターフェースが主張した場合、使用しているネットワークデバイスドライバーは netif_carrier_on/off に対応しない可能性があります。
xmit_hash_policy=value
balance-xor および 802.3ad モードで、スレーブを選択する時に使用する送信ハッシュポリシーを選択します。指定可能な値は、以下のとおりです。
  • 0 または layer2: デフォルト設定です。このパラメーターは、ハードウェア MAC アドレスの XOR を使用してハッシュを生成します。使用する式は以下のとおりです。
    (source_MAC_address XOR destination_MAC) MODULO slave_count
    このアルゴリズムは、すべてのトラフィックを同じスレーブの特定のネットワークピアに割り振り、802.3ad に対応します。
  • 1 または layer3+4: 上位レイヤープロトコルの情報を (利用可能な場合は) 使用して、ハッシュを生成します。これにより、特定のネットワークピアへのトラフィックが複数のスレーブに及ぶようにできますが、単一の接続では複数のスレーブに及びません。
    断片化された TCP および UDP パケットに使用される公式は、以下のとおりです:
    ((source_port XOR dest_port) XOR
      ((source_IP XOR dest_IP) AND 0xffff)
        MODULO slave_count
    断片化された TCP または UDP パケットと他のすべての IP プロトコルトラフィックについては、送信元および宛先ポート情報が省略されます。非 IP トラフィックに関しては、式は layer2 送信ハッシュポリシーと同じです。
    このポリシーの目的は、特に PFC2 付きの Cisco スイッチや Foundry および IBM 製品など一部のスイッチの動作を真似ることです。
    このポリシーで使用されるアルゴリズムは、802.3ad に対応していません。
  • 2 または layer2+3: layer2 および layer3 プロトコル情報の組み合わせを使用して、ハッシュを生成します。
    ハードウェア MAC アドレスと IP アドレスの XOR を使用して、ハッシュを生成します。式は以下のとおりです。
    (((source_IP XOR dest_IP) AND 0xffff) XOR
      ( source_MAC XOR destination_MAC ))
        MODULO slave_count
    このアルゴリズムは、すべてのトラフィックを同じスレーブの特定のネットワークピアに割り振ります。非 IP トラフィックの場合、式は layer2 送信ハッシュポリシーと同一です。
    このポリシーの目的は、特に layer3 ゲートウェイデバイスが大半の宛先に到達する必要がある環境において、layer2 単独の場合より分散されたトラフィックを提供することです。
    このアルゴリズムは、802.3ad に対応しています。
miimon=time_in_milliseconds
MII リンク監視が発生する頻度を指定します (ミリ秒単位)。MII は NIC がアクティブであることを検証するために使用されるため、これは高可用性が必要な場合に役立ちます。特定の NIC のドライバーが MII ツールに対応していることを確認するには、root で以下のコマンドを入力します。
~]# ethtool interface_name | grep "Link detected:"
このコマンドでは、interface_name をボンドインターフェースではなく eth0 のようなデバイスインターフェースの名前で置換します。MII が対応している場合は、コマンドは以下を返します。
Link detected: yes
高可用性のためにボンディングされたインターフェースを使用する場合、各 NIC のモジュールは MII に対応していなければなりません。値を 0 (デフォルト) に設定すると、この機能はオフになります。この設定を行う場合、このパラメーターの適切な開始ポイントは 100 です。

重要

arp_interval および arp_ip_target の両パラメーター、あるいは miimon パラメーターの指定は不可欠です。指定されないと、リンクが失敗した場合にネットワークパフォーマンスが低下する恐れがあります。
arp_interval=time_in_milliseconds
ARP 監視が発生する頻度を指定します (ミリ秒単位)。

重要

arp_interval および arp_ip_target の両パラメーター、あるいは miimon パラメーターの指定は不可欠です。指定されないと、リンクが失敗した場合にネットワークパフォーマンスが低下する恐れがあります。
mode=0 または mode=2 (2 つの負荷分散モード) でこの設定を使用する場合、ネットワークスイッチは NIC 全体に均等にパケットを分散するよう設定する必要があります。この方法の詳細については、https://www.kernel.org/doc/Documentation/networking/bonding.txt を参照してください。
デフォルトでは値は 0 に設定されており、ARP 監視を無効にします。
arp_ip_target=ip_address[,ip_address_2,…ip_address_16]
arp_interval パラメーターが有効な場合の ARP 要求のターゲット IP アドレスを指定します。コンマ区切りのリストで最大 16 個の IP アドレスを指定できます。
パフォーマンスを強化するには、利用可能なモジュールオプションを調節して、最適な組み合わせを確認します。特に miimonarp_intervalarp_ip_target パラメーターに注意してください。利用可能なオプション一覧と使用しているボンディングされたインターフェースに最適なオプションを迅速に決定する方法については、「ボンディングモジュールのディレクティブ」を参照してください。

7.6.1. ボンディングモジュールのディレクティブ

ボンディングインターフェース設定ファイル (たとえば ifcfg-bond0) の BONDING_OPTS="bonding parameters" ディレクティブに、チャンネルボンディングのモジュールパラメーターを追加する前に、どのチャンネルボンディングのモジュールパラメーターが、ボンディングされたインターフェースに最適かをテストすることが推奨されます。ボンディングされたインターフェースのパラメーターは、sysfs ファイルシステム内のファイルを操作することで、ボンディングモジュールをアンロード (およびリロード) することなく設定できます。
sysfs は仮想ファイルシステムであり、カーネルオブジェクトをディレクトリー、ファイル、シンボリックリンクとして表示します。sysfs を使用すると、カーネルオブジェクトの情報をクエリーすることが可能で、通常のファイルシステムのコマンドを使用してそれらのオブジェクトの操作もできます。sysfs 仮想ファイルシステムは、/sys/ ディレクトリー下にマウントされます。ボンディングインターフェースはすべて、/sys/class/net/ ディレクトリー下にあるファイルと対話したり、これらを操作することで動的に設定できます。
使用中のボンディングインターフェースに最適なパラメーターを決定するには、「チャンネルボンディングインターフェースの作成」にある手順に従って、ifcfg-bond0 などのチャンネルボンディングインターフェースのファイルを作成します。bond0 にボンディングされている各インターフェースの設定ファイルに、ディレクティブの SLAVE=yes および MASTER=bond0 を追加します。これが完了すると、パラメーターの確認に進むことができます。
まず rootifup bondN を実行して作成したボンドを有効にします。
~]# ifup bond0
ifcfg-bond0 のボンディングインターフェースのファイルを正常に作成していれば、rootip link show を実行した際の出力に bond0 が表示されます。
~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:e9:ce:d2 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:38:a6:4c brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
    link/ether 52:54:00:38:a6:4c brd ff:ff:ff:ff:ff:ff
アップになっていないボンドも含めてすべての既存のボンドを表示するには、以下を実行します。
~]$ cat /sys/class/net/bonding_masters
bond0
/sys/class/net/bondN/bonding/ ディレクトリーにあるファイルを操作すると、各ボンドを個別に設定することができます。まず、設定するボンドをダウンにします。
~]# ifdown bond0
たとえば、bond0 の MII 監視を 1 秒間隔で有効にするには、root で以下を実行します。
~]# echo 1000 > /sys/class/net/bond0/bonding/miimon
bond0 を balance-alb モードに設定するには、以下のいずれかを実行します。
~]# echo 6 > /sys/class/net/bond0/bonding/mode
または、モード名を使用します。
~]# echo balance-alb > /sys/class/net/bond0/bonding/mode
ボンドにオプションを設定後、ifup bondN を実行すると、そのボンドをアップにしてテストできます。オプションを変更する場合はインターフェースを停止して、sysfs を使用してそのパラメーターを修正後、有効に戻して再確認します。
ボンドに最適なパラメーターのセットを決定したら、設定しているボンディングインターフェースの /etc/sysconfig/network-scripts/ifcfg-bondN ファイルの BONDING_OPTS= ディレクティブにそれらのパラメーターを空白区切りのリストとして追加します。ボンドが有効な場合 (たとえば、ONBOOT=yes ディレクティブが設定されていて、ブートシーケンス中にシステムがボンドを有効にする場合) はいつでも、BONDING_OPTS で指定されているボンディングオプションはそのボンドに対して有効となります。

7.7. GUI を使用したボンディング接続の作成

GNOME の control-center ユーティリティーを使用して、NetworkManager に、2 つ以上の Wired または InfiniBand の接続からボンドを作成するように指示できます。最初にボンディングする接続を作成する必要はありません。それは、ボンディングを構成するためのプロセスで設定できます。設定プロセスを完了するには、利用可能なインターフェースの MAC アドレスが必要です。

7.7.1. ボンド接続の確立

手順7.1 nm-connection-editor を使用して新規ボンド接続を追加する

新規ボンド接続を作成するには、以下のステップに従います。
  1. ターミナルで nm-connection-editor と入力します。
    ~]$ nm-connection-editor
  2. 追加 ボタンをクリックします。接続の種類の選択 ウィンドウが表示されます。ボンド を選択して 作成 をクリックします。ボンド接続 1 の編集 ウィンドウが表示されます。
    NetworkManager グラフィカルユーザーインターフェースの Bond 追加メニュー

    図7.6 NetworkManager グラフィカルユーザーインターフェースの Bond 追加メニュー

  3. Bond タブで 追加 をクリックし、このボンド接続で使用するインターフェースのタイプを選択します。作成 ボタンをクリックします。スレーブタイプを選択するダイアログが表示されるのは、最初のスレーブを作成する時のみです。その後は、すべてのスレーブに同じタイプが自動的に使われます。
  4. bond0 スレーブ 1 の編集 ウィンドウが表示されます。デバイスの MAC アドレス ドロップダウンメニューでボンディングされるインターフェースの MAC アドレスを選択します。最初のスレーブの MAC アドレスがボンドインターフェース用の MAC アドレスとして使用されます。必要な場合は、ボンドの MAC アドレスとして使用するクローンした MAC アドレスを入力します。保存 ボタンをクリックします。
    NetworkManager グラフィカルユーザーインターフェースのボンド接続追加メニュー

    図7.7 NetworkManager グラフィカルユーザーインターフェースのボンド接続追加メニュー

  5. ボンディングされたスレーブ名が Bond 接続 ウィンドウに表示されます。追加 ボタンをクリックしてさらにスレーブ接続を追加します。
  6. 設定を確認してから 保存 ボタンをクリックします。
  7. ボンド固有の設定については、「Bond タブの設定」を参照してください。

手順7.2 既存のボンド接続を編集する

既存のボンド接続を編集するには以下のステップに従います。
  1. ターミナルで nm-connection-editor と入力します。
    ~]$ nm-connection-editor
  2. 編集する接続を選択して、編集 ボタンをクリックします。
  3. 全般 タブを選択します。
  4. 接続名、自動接続の動作、および可用性のセッティングを設定します。
    編集 ダイアログの 全般 タブにある 5 つの設定は、すべての接続の種類で共通のものです。
    • Connection name - ネットワーク接続の分かりやすい名前をします。この名前は、Network ウィンドウメニューの接続名一覧に表示されます。
    • Automatically connect to this network when it is available - このチェックボックスを選択すると、NetworkManager が利用可能なときにこの接続に自動接続します。詳細は「control-center を使用した既存の接続の編集」を参照してください。
    • All users may connect to this network - このチェックボックスを選択すると、システムですべてのユーザーが利用できる接続が作成されます。この設定を変更するには root 権限が必要になる場合があります。詳細は「GUI を使用したシステム全体およびプライベート接続プロファイルの管理」を参照してください。
    • この接続を使用したときは自動的に VPN に接続する - このボックスを選択すると、この接続が利用可能な時に NetworkManager が自動で選択した VPN に接続します。ドロップダウンメニューから VPN を選択します。
    • ファイアウォールゾーン - ドロップダウンメニューからファイアウォールゾーンを選択します。ファイアウォールゾーンに関する詳細情報は、『Red Hat Enterprise Linux 7 セキュリティーガイド』を参照してください。
  5. ボンド固有の設定については、「Bond タブの設定」を参照してください。

新規 (または修正した) 接続を保存して他の設定を行う

ボンド接続の編集が終わったら、保存 ボタンをクリックしてカスタマイズした設定を保存します。
そして、以下のいずれかの設定をします。

7.7.1.1. Bond タブの設定

新規のボンド接続をすでに追加している場合 (手順に関しては、手順7.1「nm-connection-editor を使用して新規ボンド接続を追加する」を参照)、ボンド タブを編集して、負荷分散モードとスレーブ接続の障害検出に使用するリンク監視のタイプを設定できます。
モード
ボンドを構成するスレーブ接続でのトラフィック共有に使われるモード。デフォルトは、ラウンドロビン です。802.3ad などの他の負荷分散モードは、ドロップダウンリストから選択できます。
リンク監視
ネットワークトラフィックを伝送するスレーブの能力を監視する方法。
以下の負荷分散モードが、モード のドロップダウンリストから選択できます。
ラウンドロビン
耐障害性とロードバランシングにラウンドロビンポリシーを設定します。送受信は、ボンディングされた各スレーブインターフェースで、最初に利用可能になったインターフェースから順次行われます。このモードは、仮想マシンのブリッジの背後では追加のスイッチ設定がないと機能しない可能性があります。
アクティブバックアップ
耐障害性のためアクティブなバックアップポリシーを設定します。利用可能になった最初のボンディングされたスレーブインターフェースにより送受信が行われます。別のボンディングされたスレーブインターフェースは、アクティブなボンディングされたスレーブインターフェースが失敗した場合にのみ使用されます。これは、InfiniBand デバイスのボンドで利用可能な唯一のモードです。
XOR
XOR (排他的理論和) を設定します。送受信は選択されたハッシュポリシーに基づいて行われます。デフォルトでは、ハッシュはソースの XOR とスレーブインターフェース数による剰余で宛先 MAC アドレスを掛けて導き出します。このモードでは、宛先が特定のピアになっているトラフィックは常に同一インターフェースで送信されます。宛先は MAC アドレスで決められるので、この方法は同一リンクまたはローカルネットワーク上にあるピアが宛先のトラフィックに最適なものです。トラフィックが単一ルーターを通過する必要がある場合は、このトラフィックバランスのモードは最適ではなくなります。
ブロードキャスト
耐障害性にブロードキャストポリシーを設定します。送受信はすべて、スレーブインターフェースで実行されます。このモードは、仮想マシンのブリッジの背後では追加のスイッチ設定がないと機能しない可能性があります。
802.3ad
IEEE 802.3ad 動的リンクアグリゲーションのポリシーを設定します。同一の速度とデュプレックス設定を共有するアグリゲーショングループを作成します。アクティブなアグリゲーターのすべてのスレーブで送受信を行います。802.3ad に対応するネットワークスイッチが必要です。
適応送信のロードバランシング
耐障害性とロードバランシングのための適応型送信ロードバランシング (TLB) ポリシーを設定します。発信トラフィックは、各スレーブインターフェースの現在の負荷に従って分散されます。受信トラフィックは、現在のスレーブにより受信されます。受信しているスレーブが失敗すると、別のスレーブが失敗したスレーブの MAC アドレスを引き継ぎます。このモードは、カーネルボンディングモジュールが認識しているローカルアドレスにのみ、適したものになります。このため、仮想マシンのブリッジの背後では使用できません。
適応ロードバランス
耐障害性とロードバランシングに適応型ロードバランシング (ALB) ポリシーを設定します。IPv4 トラフィック用の送受信ロードバランシングが含まれます。ARP ネゴシエーションにより、受信ロードバランシングが可能です。このモードは、カーネルボンディングモジュールが認識しているローカルアドレスにのみ、適したものになります。このため、仮想マシンのブリッジの背後では使用できません。
以下のリンク監視のタイプは、リンク監視 ドロップダウンリストから選択できます。ボンディングされたインターフェースでどのチャンネルボンディングのモジュールパラメーターが最適な動作をするかテストすることが推奨されます。
MII (Media Independent Interface)
インターフェースのキャリア波の状態を監視します。実行方法は、ドライバーへのクエリー、MII レジスターへの直接クエリー、ethtool を使ったデバイスへのクエリーがあります。利用可能な 3 つのオプションは以下のとおりです。
監視周期
ドライバーもしくはMII レジスターへのクエリーの間隔時間 (ミリ秒単位)
接続遅延
up とレポートされたリンクの使用を試みるまでの待機時間 (ミリ秒単位)。リンクがupとレポートされてからすぐに余計な ARP リクエストが失われた場合に、この遅延は使用できます。これが発生するのは、たとえばスイッチ初期化などの間です。
接断遅延
これまでアクティブだったリンクがdownとレポートされた際に、別のリンクに変更するまでの待ち時間 (ミリ秒単位)。アタッチされたスイッチがバックアップモードに変更するまで比較的長い時間がかかる場合に、この遅延は使用できます。
ARP
アドレス解決プロトコル (ARP) は、1 つ以上のピアにプローブしてリンク層接続の動作具合を判断するために使用されます。これは、送信開始時間および最終受信時間を提供しているデバイスドライバーに依存しています。
以下の 2 つのオプションがあります。
監視周期
ARP リクエストを送信する間隔時間 (ミリ秒単位)。
ARP ターゲット
ARP リクエスト送信先の IP アドレスのコンマ区切り。

7.8. 関連資料

インストールされているドキュメント

  • nmcli(1) の man ページ - NetworkManager のコマンドラインツールが説明されています。
  • nmcli-examples(5) の man ページ - nmcli コマンドの例を提供しています。
  • nm-settings(5) の man ページ - NetworkManager 接続の設定およびパラメーターが説明されています。

オンラインのドキュメント

Red Hat Enterprise Linux システム管理者のガイド
カーネルモジュール機能の使用方法を説明しています。
https://access.redhat.com/site/node/28421/Configuring_VLAN_devices_over_a_bonded_interface
ボンディングされたインターフェースでの VLAN デバイスの設定に関する Red Hat ナレッジベースの記事です。

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

8.1. ネットワークチーミングについて

ネットワークリンクを結合させてより高いスループットの論理リンクや冗長性を提供する手段には、チャンネルボンディングイーサネットボンディングポートトランキングチャンネルチーミングNIC チーミング、または リンクアグリゲーション など多くの名前が付けられています。もともと Linux カーネルで実装されたこの概念は、広く ボンディング と呼ばれています。この概念の新しい実装の呼び方として、ネットワークチーミング という用語が選択されました。既存のボンディングドライバーは影響を受けません。ネットワークチーミングは Red Hat Enterprise Linux 7 のボンディングの代替メカニズムとして提供されるもので、これに置き換わるものではありません。

注記

モード 4 Link Aggregation Control Protocol (LACP) チーミングモードについては、リンクを集約するようにスイッチを設定する必要があります。詳細は https://www.kernel.org/doc/Documentation/networking/bonding.txt を参照してください。
ネットワークチーミング (またはチーム) は、高速でパケットフローを処理する小型のカーネルドライバーおよびその他すべてのユーザースペースタスクを実行する様々なユーザースペースのアプリケーションを提供するという、異なる方法でこの概念を実装するように設計されています。このドライバーにはTeam Netlink APIと呼ばれる アプリケーションプログラミングインターフェース (API) が備わっており、これが Netlink 通信を実装します。ユーザースペースのアプリケーションは、この API を使用してドライバーと通信できます。libと呼ばれるライブラリーは、Team Netlink 通信と RT Netlink メッセージのユーザースペースラッピングを行うために提供されています。libteam ライブラリーを使用するアプリケーションデーモンの teamd も利用可能です。teamd の 1 つのインスタンスが、チームドライバーの 1 つのインスタンスを制御できます。このデーモンは、ランナーと呼ばれる新たなコードを使用することで、ラウンドロビンなどの負荷分散やアクティブバックアップ論理を実装します。このようにコードを分離することで、ネットワークチーミングの実装は負荷分散および冗長性要件に対して容易に拡張可能およびスケーラブルなソリューションを提供します。たとえば、カスタムランナーを作成して teamd により新たな論理を実装するのも比較的簡単です。teamd の使用は必須ではないので、libteam を使用するために独自のアプリケーションを作成することさえ可能です。
teamdctl ユーティリティーにより、D-bus を使用して実行中の teamd インスタンスを制御できます。teamdctl は、teamd D-Bus API を覆う D-Bus ラッパーを提供します。デフォルトでは、teamd は Unix Domain Sockets を使用してリッスン、通信しますが、D-Bus の監視も継続します。これは、D-Bus が存在しない、またはまだ読み込まれていない環境でも teamd を使用可能とするためです。たとえば、teamd リンクで起動する際には、D-Bus はまだ読み込まれていません。ランタイム時に teamdctl ユーティリティーを使うと、設定およびリンク監視の状態を読み取ることや、ポートの状態の確認および変更、ポートの追加および削除、ポートをアクティブおよびバックアップ状態間で切り替えることができます。
Team Netlink API は、Netlink メッセージを使ってユーザースペースのアプリケーションと通信します。ユーザースペースのライブラリーである libteam はこの API と直接対話しませんが、libnl または teamnl を使ってドライバー API と対話します。
要約すると、カーネルで実行中のチームドライバーのインスタンスは、直接設定、制御されることはありません。設定はすべて、teamd アプリケーションのようなユーザースペースのアプリケーションを使って行われます。アプリケーションはその後、カーネルドライバーのパートに適切に指示します。

注記

ネットワークチーミングにおいては、ポート の代わりに スレーブ という用語が使われることもあります。直接 teamd を用いている場合には、ポート を使うのが一般的です。一方、NetworkManager を用いている時にチームを形成するインターフェースを参照する場合には、スレーブ を使います。

8.2. マスターおよびスレーブインターフェースのデフォルト動作について

NetworkManager デーモンを使ってチームポートのインターフェースを制御する際、特に障害検索時には、以下の点に留意してください。
  1. マスターインターフェースを起動しても、ポートインターフェースは自動的に起動されない。
  2. ポートインターフェースを起動すると、マスターインターフェースは毎回、自動的に起動される。
  3. マスターインターフェースを停止すると、ポートインターフェースも停止される。
  4. マスターはポートなしで静的 IP 接続を開始できる。
  5. マスターはポートなしの場合は、DHCP 接続の開始時にポートを待機する。
  6. DHCP 接続でポートを待機中のマスターは、キャリアをともなうポートが追加されると完了する。
  7. DHCP 接続でポートを待機中のマスターは、キャリアをともなわないポートが追加されると待機を継続する。

警告

ネットワークスイッチを使わずにケーブルの直接接続を使用すると、チーミングはサポートされません。本章で説明されているフェイルオーバーメカニズムは、ネットワークスイッチがないと予想どおりに機能しません。詳細についてはナレッジベースの記事ボンディングは、クロスオーバーケーブルを使用したダイレクトコレクションをサポートしますか?を参照してください。

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

表8.1 ボンディングおよびチームにおける機能の比較

機能ボンディングチーム
ブロードキャスト Tx ポリシーはいはい
ラウンドロビン Tx ポリシーはいはい
アクティブバックアップ Tx ポリシーはいはい
LACP (802.3ad) サポートあり (アクティブのみ)はい
ハッシュベース Tx ポリシーはいはい
ユーザーによるハッシュ機能設定いいえはい
Tx 負荷分散サポート (TLB)はいはい
LACP ハッシュポート選択はいはい
LACP サポートの負荷分散いいえはい
Ethtool リンク監視はいはい
ARP リンク監視はいはい
NS/NA (IPv6) リンク監視いいえはい
ポート アップ/ダウン 遅延はいはい
ポート優先度および持続性 (プライマリーオプション強化)いいえはい
ポートごとの個別リンク監視のセットアップいいえはい
複数のリンク監視セットアップ限定的はい
ロックなし Tx/Rx パスなし (rwlock)あり (RCU)
VLAN サポートはいはい
ユーザースペースランタイム制御限定的完全
ユーザースペースでの論理いいえはい
拡張性困難容易
モジュラー設計いいえはい
パフォーマンスオーバーヘッド非常に低い
D-Bus インターフェースいいえはい
複数デバイススタッキングはいはい
LLDP を使った zero configいいえ計画中
NetworkManager サポートはいはい

8.4. ネットワークチーミングデーモンおよび「ランナー」について

チームデーモンの teamd は、libteam を使ってチームドライバーのインスタンス 1 つを制御します。このチームドライバーのインスタンスは、ハードウェアドライバーのインスタンスを追加してネットワークリンクのチームを形成します。チームドライバーは、ネットワークインターフェース、たとえば team0 をカーネルの他の部分に提示します。チームドライバーのインスタンスが作成したインスタンスには team0team1 などの名前が文書内で与えられます。これは分かりやすくするためのもので、他の名前を使っても構いません。チーミング方法のすべてに共通な論理は、teamd が実行します。ラウンドロビンのような異なる負荷分散やバックアップ方法に固有の機能は、ランナーと呼ばれる別のコードユニットによって実行されます。ランナーという用語がこれらのコードユニットの呼称に選ばれたのは、モジュールモードといった言葉がカーネルとの関係ですでに特別な意味を持っているためです。ユーザーは JSON 形式の設定ファイルでランナーを指定し、インスタンスの作成時にコードが teamd インスタンスにコンパイルされます。ランナーのコードはその作成時に teamd のインスタンスにコンパイルされるので、ランナーはプラグインではありません。必要な際には、teamd 用のプラグインとしてコードを作成することは可能です。
本ガイド執筆時点では、以下のランナーが利用可能です。
  • broadcast (データは全ポートで送信されます)
  • round-robin (データは全ポートで順番に送信されます)
  • active-backup (1 つのポートまたはリンクが使用され、他はバックアップとして維持されます)
  • loadbalance (アクティブ Tx 負荷分散と BPF ベースの Tx ポートセレクターを使用)
  • lacp (802.3ad リンクアグリゲーション制御プロトコルを実装)
さらに、以下のリンク監視が利用可能です。
  • ethtool (Libteam lib は ethtool を使用してリンク状態の変更を監視)。設定ファイルで他のリンク監視が指定されていなければ、これがデフォルトになります。
  • arp_ping (arp_ping ユーティリティーは、ARP パケットを使用して先方のハードウェアアドレスの存在を監視します。)
  • nsna_ping (IPv6 近隣検索プロトコルからの近隣アドバタイズと近隣要請を使って近隣のインターフェースの存在を監視します。)
コードには、特定のリンク監視が特定のランナーで使用されることに関する制限はありません。ただし、lacp ランナー使用時に推奨されるリンク監視は、ethtool のみです。

8.5. ネットワークチーミングデーモンのインストール

ネットワークチーミングデーモンである teamd は、デフォルトではインストールされません。teamd をインストールするには、root で以下のコマンドを実行します。
~]# yum install teamd

8.6. ボンドのチーム変換

bond2team ツールを使うと、既存のボンディング設定ファイルをチームの設定ファイルに変換できます。ifcfg 形式のボンド設定ファイルを ifcfg または JSON 形式のチーム設定ファイルにできます。ファイアウォールルールやエイリアスインターフェース、また元のインターフェース名に関連づけられているものはすべて、名前変更後に機能しなくなる可能性があります。これは、このツールが ifcfg ファイル以外のものは変更しないためです。
コマンド形式の例を見るには、以下のコマンドを実行します。
~]$ bond2team --examples
/tmp/bond2team.XXXXXX/ という名前のディレクトリーに新規ファイルが作成されます。ここでの XXXXXX は、ランダムな文字列です。新規設定ファイルを作成したら、既存のボンディングファイルをバックアップフォルダに移動し、新規ファイルを /etc/sysconfig/network-scripts/ ディレクトリーに移動します。

例8.1 ボンドのチーム変換

現行の bond0 設定をチーム ifcfg に変換するには、root で以下のコマンドを実行します。
~]# /usr/bin/bond2team --master bond0
bond0 という名前が維持されることに留意してください。設定を新たな名前で保存する場合は、以下のように --rename を使用します。
~]# /usr/bin/bond2team --master bond0 --rename team0
ifcfg ファイルではなく JSON 形式のファイルを出力するには、--json オプションを追加します。JSON 形式の例については、teamd.conf(5) man ページを参照してください。

例8.2 ボンドをチームに変換してファイルパスを指定する手順

現行の bond0 設定をチーム ifcfg に変換して、ifcfg ファイルへのパスを手動で指定するには、root で以下のコマンドを実行します。
~]# /usr/bin/bond2team --master bond0 --configdir /path/to/ifcfg-file
ifcfg ファイルではなく JSON 形式のファイルを出力するには、--json オプションを追加します。

例8.3 Bond2team を使ってチーム設定を作成する手順

チーム設定は、bond2team ツールにボンディングパラメーター一覧を提供して作成することもできます。例を示します。
~]# /usr/bin/bond2team --bonding_opts "mode=1 miimon=500"
以下のように、コマンドラインにポートを提供することもできます。
~]# /usr/bin/bond2team --bonding_opts "mode=1 miimon=500 primary=eth1 \
  primary_reselect-0" --port eth1 --port eth2 --port eth3 --port eth4
詳細は、bond2team(1) man ページを参照してください。ボンディングパラメーターの説明については、「チャンネルボンディングの使用」を参照してください。

8.7. ネットワークチームでポートとして使用するインターフェースの選択

利用可能なインターフェースを表示するには、以下のコマンドを実行します。
~]$ ip link show
1: lo:  <LOOPBACK,UP,LOWER_UP > mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: em1:  <BROADCAST,MULTICAST,UP,LOWER_UP > mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:6a:02:8a brd ff:ff:ff:ff:ff:ff
3: em2:  <BROADCAST,MULTICAST,UP,LOWER_UP > mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 52:54:00:9b:6d:2a brd ff:ff:ff:ff:ff:ff
利用可能なインターフェースから使用するネットワークチームに最適なものを選択し、「ネットワークチーム設定方式の選択」に進みます。

8.8. ネットワークチーム設定方式の選択

NetworkManager のテキストユーザーインターフェースである nmtui を使用して ネットワークチームを設定するには「テキスト形式のユーザーインターフェース nmtui でネットワークチームを設定する手順」に進みます。
コマンドラインツール nmcli を使用してネットワークチームを作成するには「nmcli を使用したネットワークチーミングの設定」に進みます。
チームデーモン teamd を使用してネットワークチームを作成するには「teamd を使用したネットワークチームの作成」に進みます。
設定ファイルを使用してネットワークチームを作成するには「ifcfg ファイルを使用したネットワークチームの作成」に進みます。
グラフィカルユーザーインターフェースを使用してネットワークチームを設定するには「GUI を使用したネットワークチームの作成」に進みます。

8.9. テキスト形式のユーザーインターフェース nmtui でネットワークチームを設定する手順

テキスト形式のユーザーインターフェースツール nmtui を使用すると、ターミナルのウィンドウでチーミングを設定できます。このツールを起動するには、以下のコマンドを実行します。
~]$ nmtui
テキスト形式のインターフェースが表示されます。無効なコマンドの場合は、使用法に関するメッセージが出力されます。
移動するには矢印キーを使用するか、Tab を押して次に進むか Shift+Tab を押して前に戻ります。Enter を押してオプションを選びます。Space バーは、チェックボックスのステータスを切り替えます。
  1. メニューから 接続の編集 を選択します。追加 を選択すると 新規の接続 画面が開きます。
    NetworkManager テキスト形式のユーザーインターフェースのチーム接続追加メニュー

    図8.1 NetworkManager テキスト形式のユーザーインターフェースのチーム接続追加メニュー

  2. team を選択すると、接続の編集 画面が開きます。
    NetworkManager テキスト形式ユーザーインターフェースでチーム接続を設定するメニュー

    図8.2 NetworkManager テキスト形式ユーザーインターフェースでチーム接続を設定するメニュー

  3. チームにポートインターフェースを追加するには 追加 を選択して 新規の接続 画面を開きます。接続の種類を選んだら、作成 ボタンを選択して、チームの 接続の編集 画面を開きます。
    NetworkManager テキスト形式ユーザーインターフェースで新規チームポートインターフェース接続を設定するメニュー

    図8.3 NetworkManager テキスト形式ユーザーインターフェースで新規チームポートインターフェース接続を設定するメニュー

  4. デバイス セクションに、必要なスレーブのデバイス名、または MAC アドレスを入力します。必要であれば、イーサネット ラベルの右側にある 表示する を選択して、チームの MAC アドレスとして使用するクローンの MAC アドレスを入力します。OK ボタンを選択します。

    注記

    MAC アドレスなしでデバイスを指定すると、接続の編集 ウィンドウがリロードされる際に デバイス セクションは自動的に設定されます。ただしこれは、デバイスが正常に発見された場合のみです。
    NetworkManager テキスト形式ユーザーインターフェースでチームのポートインターフェース接続を設定するメニュー

    図8.4 NetworkManager テキスト形式ユーザーインターフェースでチームのポートインターフェース接続を設定するメニュー

  5. スレーブ セクションにチームのスレーブ名が表示されます。さらにスレーブ接続を追加する場合は、上記のステップを繰り返します。
  6. カスタムポート設定を適用する場合は、JSON 設定 セクションにある 編集 ボタンを選択します。vim コンソールが起動して変更が適用できます。vim で変更を保存した後、JSON 設定 で表示されている JSON 文字列が意図したものになっているか確認します。
  7. 設定を確認してから、OK ボタンを選択します。
    NetworkManager テキスト形式ユーザーインターフェースでチーム接続を設定するメニュー

    図8.5 NetworkManager テキスト形式ユーザーインターフェースでチーム接続を設定するメニュー

JSON 文字列の例については、「teamd ランナーの設定」を参照してください。nmtui を使用したチームまたはポート設定で使用する文字列の例については、関連するセクションのみを使用するように注意してください。JSON 文字列の一部としてDeviceを指定しないでください。たとえば、チームの JSON 設定フィールドでは、deviceの後からportの前までの JSON 文字列を使用してください。ポートに関連するすべての JSON 文字列のみをポート設定フィールドに追加する必要があります。
nmtui のインストール方法は「nmtui を使用した IP ネットワークの設定」を参照してください。

8.10. コマンドラインを使用したネットワークチームの設定

8.10.1. nmcli を使用したネットワークチーミングの設定

システムで利用可能な接続を表示するには、以下のコマンドを実行します。
~]$ nmcli connection show
NAME  UUID                                  TYPE            DEVICE
eth1  0e8185a1-f0fd-4802-99fb-bedbb31c689b  802-3-ethernet  --
eth0  dfe1f57b-419d-4d1c-aaf5-245deab82487  802-3-ethernet  --
システムで利用可能なデバイスを表示するには、以下のコマンドを実行します。
~]$ nmcli device status
DEVICE      TYPE      STATE                                  CONNECTION
virbr0      bridge    connected                              virbr0
ens3        ethernet  connected                              ens3
新しいチームインターフェースを、ServerA という名前で作成するには、以下のコマンドを実行します。
~]$ nmcli connection add type team ifname ServerA
Connection 'team-ServerA' (b954c62f-5fdd-4339-97b0-40efac734c50) successfully added.
NetworkManager が内部パラメーター connection.autoconnectyes に設定し、IP アドレスが与えられないので ipv4.methodauto に設定されます。また NetworkManager/etc/sysconfig/network-scripts/ifcfg-team-ServerA に設定ファイルを書き込みます。ここでは、対応する ONBOOT が yes に、BOOTPROTO が dhcp に設定されます。
ifcfg ファイルへの手動の変更は、そのインターフェースが次に起動するまで、NetworkManager により認識されません。設定ファイルの使用方法は「sysconfig ファイルによる NetworkManager の使用」を参照してください。
割り当てた別の値を表示するには、以下のコマンドを実行します。
~]$ nmcli con show team-ServerA
connection.id:                          team-ServerA
connection.uuid:                        b954c62f-5fdd-4339-97b0-40efac734c50
connection.interface-name:              ServerA
connection.type:                        team
connection.autoconnect:                 yes
ipv4.method:                            auto[出力は省略されています]
JSON 設定ファイルが指定されていないので、デフォルト値が適用されます。チーム JSON パラメーターとそれらのデフォルト値についての詳細情報は、teamd.conf(5) man ページを参照してください。名前は、インターフェース名の前に種類を追加したものになっていることに留意してください。あるいは、以下のように con-name オプションを使って名前を指定することもできます。
~]$ nmcli connection add type team con-name Team0 ifname ServerB
Connection 'Team0' (5f7160a1-09f6-4204-8ff0-6d96a91218a7) successfully added.
設定したチームインターフェースを表示するには、以下のコマンドを実行します。
~]$ nmcli con show
NAME                UUID                                  TYPE            DEVICE
team-ServerA        b954c62f-5fdd-4339-97b0-40efac734c50  team            ServerA
eth1                0e8185a1-f0fd-4802-99fb-bedbb31c689b  802-3-ethernet  --
eth0                dfe1f57b-419d-4d1c-aaf5-245deab82487  802-3-ethernet  --
Team0               5f7160a1-09f6-4204-8ff0-6d96a91218a7  team            ServerB
チームに割り当てられている名前を変更するには、以下の形式のコマンドを実行します。
nmcli con mod old-team-name connection.id new-team-name
既存のチームのチーム設定ファイルを読み込むには、以下のコマンドを実行します。
nmcli connection modify team-name team.config JSON-config
チーム設定は JSON 文字列として指定するか、設定を含んでいるファイル名を提供できます。ファイル名にはパスを含めることができます。どちらの場合でも、team.config プロパティーに保存されるのは、JSON 文字列です。JSON 文字列の場合は、文字列を単一引用符で囲み、文字列全体をコマンドラインにペーストします。
team.config プロパティーを確認するには、以下のコマンドを実行します。
nmcli con show team-name | grep team.config
team.config プロパティーを設定すると、それに合わせて、その他のチームプロパティーがすべて更新されます。
対応する JSON 文字列を直接変更せずに、特定のチームオプションを公開して設定するより柔軟な方法も可能になります。これは、利用可能なその他のチームプロパティーを使用して、必要な値に 1 つずつ関連するチームオプションを設定できます。その結果、新しい値に一致するように team.config プロパティーが更新されます。
たとえば、1 つまたは複数の link-watchers を指定できる team.link-watchers プロパティーを設定するには、以下の形式でコマンドを実行します。
nmcli connection modify team-name team.link-watchers "name=ethtool delay-up=5, name=nsna_ping target-host=target.host"
必要な link-watchers はコンマで区切り、同じ link-watcher に所属する属性はスペースで区切ります。
team.runner プロパティーおよび team.link-watchers プロパティーを設定するには、以下の形式でコマンドを入力します。
nmcli connection modify team-name team.runner activebackup team.link-watchers "name=ethtool delay-up=5, name=nsna_ping target-host=target.host"
これは、対応する JSON 文字列に team.config プロパティーを設定するのと同じです。
nmcli connection modify team-name team.config '{"runner": {"name": "activebackup"}, "link_watch": [{"name": "ethtool", "delay_up": 5},{"name": "nsna_ping", "target_host ": "target.host"}]'
Team0Team0-port1 の名前でインターフェース eth0 を追加するには、以下のコマンドを実行します。
~]$ nmcli con add type ethernet con-name Team0-port1 ifname eth0 master Team0
Connection 'Team0-port1' (ccd87704-c866-459e-8fe7-01b06cf1cffc) successfully added.
同様に Team0-port2 の名前で別のインターフェース eth1 を追加するには、以下のコマンドを実行します。
~]$ nmcli con add type team-slave con-name Team0-port2 ifname eth1 master Team0
Connection 'Team0-port2' (a89ccff8-8202-411e-8ca6-2953b7db52dd) successfully added.
nmcli は、イーサネットポートだけをサポートします。
チームを有効にするには、以下のように最初にポートをアップにする必要があります。
~]$ nmcli connection up Team0-port1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
~]$ nmcli connection up Team0-port2
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
以下のようにポートをアクティブ化することで、チームインターフェースがアップになっていることを確認できます。
~]$ ip link
3:  Team0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
    link/ether 52:54:00:76:6f:f0 brd ff:ff:ff:ff:ff:f
あるいは、以下のようにチームを有効にするコマンドを実行します。
~]$ nmcli connection up Team0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
nmcli の概要は、「nmcli を使用する IP ネットワークの設定」を参照してください。

8.10.2. teamd を使用したネットワークチームの作成

注記

teamd を使って作成された設定には永続性がありません。このため、「nmcli を使用したネットワークチーミングの設定」または「ifcfg ファイルを使用したネットワークチームの作成」で定義されているステップを使ってチームを作成する必要がある場合があります。
ネットワークチームを作成するには、ポートまたはリンクのチームに対するインターフェースとして作動する仮想インターフェースの設定ファイルが JSON 形式で必要になります。簡単な方法は、設定ファイルの例をコピーして、root 権限でエディターを使用してこれを編集するというものです。利用可能な設定例を一覧表示するには、以下のコマンドを実行します。
~]$ ls /usr/share/doc/teamd-*/example_configs/
activebackup_arp_ping_1.conf  activebackup_multi_lw_1.conf   loadbalance_2.conf
activebackup_arp_ping_2.conf  activebackup_nsna_ping_1.conf  loadbalance_3.conf
activebackup_ethtool_1.conf   broadcast.conf                 random.conf
activebackup_ethtool_2.conf   lacp_1.conf                    roundrobin_2.conf
activebackup_ethtool_3.conf   loadbalance_1.conf             roundrobin.conf
ここに含まれるファイル、たとえば activebackup_ethtool_1.conf を表示するには、以下のコマンドを実行します。
~]$ cat /usr/share/doc/teamd-*/example_configs/activebackup_ethtool_1.conf
{
	"device":	"team0",
	"runner":	{"name": "activebackup"},
	"link_watch":	{"name": "ethtool"},
	"ports":	{
		"eth1": {
			"prio": -10,
			"sticky": true
		},
		"eth2": {
			"prio": 100
		}
	}
}
teamd 設定ファイルを保存する作業設定ディレクトリーを作成します。たとえば通常ユーザーの場合、以下の形式のコマンドを実行します。
~]$ mkdir ~/teamd_working_configs
選択したファイルを作業ディレクトリーにコピーし、必要に応じて編集します。以下の形式のコマンドを使用できます。
~]$ cp /usr/share/doc/teamd-*/example_configs/activebackup_ethtool_1.conf \ ~/teamd_working_configs/activebackup_ethtool_1.conf
ネットワークチームのポートとして使用するインターフェースを変更する場合など、使用中の環境に適合するようにファイルを編集するには、以下のように編集するファイルを開きます。
~]$ vi ~/teamd_working_configs/activebackup_ethtool_1.conf
必要な変更を加えて、ファイルを保存します。vi の使用方法については、vi(1) man ページを参照してください。お好みのエディターを使用しても構いません。
チーム内でポートとして使用するインターフェースをチームデバイスに追加する際には、それがアクティブになっていない、つまりdownになっている必要があることに注意してください。インターフェースのステータスを確認するには、以下のコマンドを実行します。
~]$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:d5:f7:d4 brd ff:ff:ff:ff:ff:ff
3: em2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
  link/ether 52:54:00:d8:04:70 brd ff:ff:ff:ff:ff:ff
この例では、使用する予定のインターフェースはどちらもUPになっていることが分かります。
インターフェースをダウンにするには、root で以下の形式のコマンドを実行します。
~]# ip link set down em1
必要に応じて各インターフェースでこれを繰り返します。
設定ファイルに基づいてチームインターフェースを作成するには、root ユーザーで作業設定ディレクトリー (この例では teamd_working_configs ) に移動します。
~]# cd /home/userteamd_working_configs
それから、以下の形式のコマンドを実行します。
~]# teamd -g -f activebackup_ethtool_1.conf -d
Using team device "team0".
Using PID file "/var/run/teamd/team0.pid"
Using config file "/home/user/teamd_working_configs/activebackup_ethtool_1.conf"
-g オプションはデバッグメッセージをオンにし、-f オプションは読み込む設定ファイルを指定します。-d オプションは、起動後に実行するプロセスをデーモン化します。他のオプションについては、teamd(8) man ページを参照してください。
チームのステータスを確認するには、root で以下のコマンドを実行します。
~]# teamdctl team0 state
setup:
  runner: activebackup
ports:
  em1
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
  em2
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
runner:
  active port: em1
ネットワークチームインターフェース team0 にアドレスを適用するには、root で以下の形式のコマンドを実行します。
~]# ip addr add 192.168.23.2/24 dev team0
チームインターフェースの IP アドレスを確認するには、以下のコマンドを実行します。
~]$ ip addr show team0
4: team0:  <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 16:38:57:60:20:6f brd ff:ff:ff:ff:ff:ff
    inet 192.168.23.2/24 scope global team0
       valid_lft forever preferred_lft forever
    inet6 2620:52:0:221d:1438:57ff:fe60:206f/64 scope global dynamic
       valid_lft 2591880sec preferred_lft 604680sec
    inet6 fe80::1438:57ff:fe60:206f/64 scope link
       valid_lft forever preferred_lft forever
チームインターフェースをアクティブ化する、またはupにするには、root で以下の形式のコマンドを実行します。
~]# ip link set dev team0 up
チームインターフェースを一時的に非アクティブ化、つまりdownにするには、root で以下の形式のコマンドを実行します。
~]# ip link set dev team0 down
チームデーモンのインスタンスを強制終了、kill、するには、root で以下の形式のコマンドを実行します。
~]# teamd -t team0 -k
-k オプションは、デバイス team0 に関連するデーモンのインスタンスを強制終了、kill、することを指定します。他のオプションについては、teamd(8) man ページを参照してください。
teamd のコマンドラインオプションでヘルプを表示するには、以下のコマンドを実行します。
~]$ teamd -h
また、teamd(8) man ページも参照してください。

8.10.3. ifcfg ファイルを使用したネットワークチームの作成

ifcfg ファイルを使ってネットワークチームを作成するには、以下のようなファイルを /etc/sysconfig/network-scripts/ ディレクトリー内に作成します。
DEVICE=team0
DEVICETYPE=Team
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.11.1
PREFIX=24
TEAM_CONFIG='{"runner": {"name": "activebackup"}, "link_watch": {"name": "ethtool"}}'
これでチームへのインターフェースが作成されます。つまり、これがマスターになります。
team0 のメンバーとなるポートを作成するには、以下のようなファイルを /etc/sysconfig/network-scripts/ ディレクトリー内に作成します。
DEVICE=eth1
HWADDR=D4:85:64:01:46:9E
DEVICETYPE=TeamPort
ONBOOT=yes
TEAM_MASTER=team0
TEAM_PORT_CONFIG='{"prio": 100}'
必要に応じてポートインターフェースを同様に追加します。追加する各ポート (ネットワークデバイス) に応じて、DEVICE と HWADDR のフィールドを変更します。ポートの優先度が prio で指定されない場合はデフォルトで 0 となり、-32,767 から +32,767 までの範囲の値 (プラスとマイナスの両方) を受け付けます。
HWADDR ディレクティブを使用してハードウェアまたは MAC アドレスを指定すると、デバイス命名手順に影響が出ます。これは11章ネットワークデバイス命名における一貫性で説明しています。
ネットワークチームを有効にするには、root で以下のコマンドを実行します。
~]# ifup team0
ネットワークチームを表示するには、以下のコマンドを実行します。
~]$ ip link show

8.10.4. iputils を使用したネットワークチームへのポートの追加

ip ユーティリティーを使ってポート em1 をネットワークチーム team0 に追加するには、root で以下のコマンドを実行します。
~]# ip link set dev em1 down
~]# ip link set dev em1 master team0
必要に応じてさらにポートを追加します。チームドライバーが自動的にポートをアップにします。

8.10.5. teamnl を使用したチームのポートの一覧表示

teamnl ユーティリティーを使ってネットワークチーム内のポートを一覧表示するには、root で以下のコマンドを実行します。
~]# teamnl team0 ports
em2: up 100 fullduplex
em1: up 100 fullduplex

8.10.6. teamnl を使用したチームのオプション設定

teamnl ユーティリティーを使って現在利用可能なオプションすべてを一覧表示するには、root で以下のコマンドを実行します。
~]# teamnl team0 options
チームがアクティブバックアップモードを使用するように設定するには、root で以下のコマンドを実行します。
~]# teamnl team0 setoption mode activebackup

8.10.7. iputils を使用したネットワークチームへのアドレス追加

ip ユーティリティーを使ってアドレスをチーム team0 に追加するには、root で以下のコマンドを実行します。
~]# ip addr add 192.168.252.2/24 dev team0

8.10.8. iputils を使用したネットワークチームへのインターフェースの有効化

ip ユーティリティーを使ってネットワークチーム team0 へのインターフェースをアクティブ化または有効にするには、root で以下のコマンドを実行します。
~]# ip link set team0 up

8.10.9. teamnl を使用したチームのアクティブポートオプション表示

teamnl ユーティリティーを使ってネットワークチーム内の activeport オプションを一覧表示するには、root で以下のコマンドを実行します。
~]# teamnl team0 getoption activeport
0

8.10.10. teamnl を使用したチームのアクティブポートオプション設定

teamnl ユーティリティーを使ってネットワークチーム内の activeport オプションを設定するには、root で以下のコマンドを実行します。
~]# teamnl team0 setoption activeport 5
チームポートオプションの変更を確認するには、root で以下のコマンドを実行します。
~]# teamnl team0 getoption activeport
5

8.11. teamdctl を使用した teamd の制御

実行中の teamd のインスタンスに統計値や設定情報をクエリーする、または変更を加えるには、制御ツール teamdctl を使用します。
チーム team0 の現在のステータスを表示するには、root で以下のコマンドを実行します。
~]# teamdctl team0 state view
さらに詳細な出力を表示するには、以下のコマンドを実行します。
~]# teamdctl team0 state view -v
team0 の完全な状態のダンプを JSON 形式 (マシン処理に便利) で表示するには、以下のコマンドを実行します。
~]# teamdctl team0 state dump
team0 の設定ダンプを JSON 形式で表示するには、以下のコマンドを実行します。
~]# teamdctl team0 config dump
チーム team0 の一部であるポート em1 の設定を表示するには、以下のコマンドを実行します。
~]# teamdctl team0 port config dump em1

8.11.1. ネットワークチームへのポートの追加

ポート em1 をネットワークチーム team0 に追加するには、root で以下のコマンドを実行します。
~]# teamdctl team0 port add em1

重要

teamdctl を直接使用してポートをスレーブとして設定する場合は、スレーブポートは down に設定する必要があります。そうでない場合には teamdctl team0 port add em1 コマンドは失敗してしまいます。

8.11.2. ネットワークチームからのポートの削除

ポート em1 をネットワークチーム team0 から削除するには、root で以下のコマンドを実行します。
~]# teamdctl team0 port remove em1

8.11.3. ネットワークチーム内のポートへの設定適用

ネットワークチーム team0 内のポート em1 に JSON 形式の設定を適用するには、root で以下の形式のコマンドを実行します。
~]# teamdctl team0 port config update em1 JSON-config-string
ここでの JSON-config-string は、JSON 形式での文字列による設定になります。これにより、提供された JSON 形式の文字列を使用しているポートの設定が更新されます。ポートを設定する有効な JSON 文字列の例は、以下のとおりです。
{
  "prio": -10,
  "sticky": true
}
JSON 設定文字列を単一引用符で囲み、改行は省略します。
古い設定は上書きされ、省略されたオプションはデフォルト値にリセットされることに注意してください。他のチームデーモンの制御ツールコマンド例については、teamdctl(8) man ページを参照してください。

8.11.4. ネットワークチーム内のポート設定表示

ネットワークチーム team0 内のポート em1 の設定をコピーするには、root で以下のコマンドを実行します。
~]# teamdctl team0 port config dump em1
これでポート設定が JSON 形式で標準出力にダンプされます。

8.12. 冗長性についてネットワーク構成チーミングの確認

ネットワークの冗長性は、特定のシステムの障害を防止または回復するために、バックアップ目的でデバイスが使用される場合のプロセスです。次の手順では、冗長性でチーミングのネットワーク構成を確認する方法を説明します。
手順
  1. チームインターフェースから、宛先の IP を ping します。以下のようなコマンドを実行します。
    ~]# ping -I team0 DSTADDR
  2. どのインターフェースが アクティブ モードになっているかを表示します。
    ~]#  teamdctl team0 state
    setup:
      runner: activebackup
    ports:
      eth1
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
            down count: 0
      eth2
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
            down count: 0
    runner:
      active port: eth1
    eth1 は、アクティブ なインターフェースです。
  3. アクティブ なスレーブインターフェースを down に設定します。
    ~]# ip link set eth1 down
  4. バックアップ インターフェースが起動しているかどうかを確認します。
    ~]#  teamdctl team0 state
    setup:
     runner: activebackup
    ports:
     eth1
       link watches:
         link summary: down
         instance[link_watch_0]:
           name: ethtool
           link: down
           down count: 1
     eth2
       link watches:
         link summary: up
         instance[link_watch_0]:
           name: ethtool
           link: up
           down count: 0
    runner:
     active port: eth2
    eth2 は、アクティブ なインターフェースです。
  5. チームインターフェースから、宛先の IP を ping できるかどうかを確認します。
    ~]# ping -I team0 DSTADDR

8.13. teamd ランナーの設定

ランナーとは、デーモンのインスタンスが作成される際に、チームデーモンにコンパイルされるコードのユニットです。teamd ランナーについては、「ネットワークチーミングデーモンおよび「ランナー」について」を参照してください。

8.13.1. ブロードキャストランナーの設定

ブロードキャストランナーを設定するには、root でエディターを使用して、以下をチームの JSON 形式設定ファイルに追加します。
{
 "device": "team0",
 "runner": {"name": "broadcast"},
 "ports": {"em1": {}, "em2": {}}
}
詳細情報は、man ページの teamd.conf(5) を参照してください。

8.13.2. ランダムランナーの設定

ランダムランナーは、ラウンドロビンランナーと同様の動作をします。
ランダムランナーを設定するには、root でエディターを使用して、以下をチームの JSON 形式設定ファイルに追加します。
{
 "device": "team0",
 "runner": {"name": "random"},
 "ports": {"em1": {}, "em2": {}}
}
詳細情報は、man ページの teamd.conf(5) を参照してください。

8.13.3. ラウンドロビンランナーの設定

ラウンドロビンランナーを設定するには、root でエディターを使用して、以下をチームの JSON 形式設定ファイルに追加します。
{
 "device": "team0",
 "runner": {"name": "roundrobin"},
 "ports": {"em1": {}, "em2": {}}
}
これが、ラウンドロビンの非常に基本的な設定になります。
詳細情報は、man ページの teamd.conf(5) を参照してください。

8.13.4. アクティブバックアップランナーの設定

アクティブバックアップランナーは、リンク監視すべてを使用してチーム内のリンクのステータスを判断できます。以下のいずれかの例を JSON 形式の設定ファイルに追加できます。
{
   "device": "team0",
   "runner": {
      "name": "activebackup"
   },
   "link_watch": {
      "name": "ethtool"
   },
   "ports": {
      "em1": {
         "prio": -10,
         "sticky": true
      },
      "em2": {
         "prio": 100
      }
   }
}
上の設定例では、ethtool のアクティブバックアップランナーをリンク監視として使用します。ポート em2 の優先度が高くなります。sticky フラグにより、em1 がアクティブになると、リンクが有効な間はずっと、このポートはアクティブのままになります。
{
   "device": "team0",
   "runner": {
      "name": "activebackup"
   },
   "link_watch": {
      "name": "ethtool"
   },
   "ports": {
      "em1": {
         "prio": -10,
         "sticky": true,
         "queue_id": 4
      },
      "em2": {
         "prio": 100
      }
   }
}
上の設定例では、queue ID 4 が追加されます。ethtool のアクティブバックアップランナーをリンク監視として使用します。ポート em2 の優先度が高くなりますが、sticky フラグにより、em1 がアクティブになると、リンクが有効な間はずっと、このポートはアクティブのままになります。
ethtool をリンク監視として使用するアクティブバックアップランナーを設定し、遅延を適用するには、root でエディターを使用して、以下をチームの JSON 形式設定ファイルに追加します。
{
   "device": "team0",
   "runner": {
      "name": "activebackup"
   },
   "link_watch": {
      "name": "ethtool",
      "delay_up": 2500,
      "delay_down": 1000
   },
   "ports": {
      "em1": {
         "prio": -10,
         "sticky": true
      },
      "em2": {
         "prio": 100
      }
   }
}
上の設定例では、ethtool のアクティブバックアップランナーをリンク監視として使用します。ポート em2 の優先度が高くなります。sticky フラグにより、em1 がアクティブになると、リンクが有効な間はずっと、このポートはアクティブのままになります。リンク変更はランナーに即座に反映されませんが、遅延は適用されます。
詳細情報は、man ページの teamd.conf(5) を参照してください。

8.13.5. 負荷分散ランナーの設定

このランナーは、アクティブとパッシブという 2 つのタイプの負荷分散に使用できます。アクティブモードでは、最近のトラフィックの統計値を使用して、トラフィックをできるだけ均一に共有することで、持続的なトラフィックの再分散が図られます。パッシブモードでは、トラフィックのストリームが利用可能なリンクにランダムに分配されます。この方法では処理オーバーヘッドが低くなることから、速度面で有利になります。トラフィックのボリュームが大きいアプリケーションでは、トラフィックは通常、利用可能なリンク間でランダムに分配される複数のストリームで構成されるため、この方法が好まれます。この方法により、teamd が介入することなく負荷共有が実施されます。
パッシブ送信 (Tx) 負荷分散機能向けに負荷分散ランナーを設定するには、root でエディターを使用して、以下をチームの JSON 形式設定ファイルに追加します。
{
 "device": "team0",
 "runner": {
   "name": "loadbalance",
   "tx_hash": ["eth", "ipv4", "ipv6"]
 },
 "ports": {"em1": {}, "em2": {}}
}
ハッシュベースのパッシブ送信 (Tx) 負荷分散の設定
アクティブ送信 (Tx) 負荷分散機能向けに負荷分散ランナーを設定するには、root でエディターを使用して、以下をチームの JSON 形式設定ファイルに追加します。
{
   "device": "team0",
   "runner": {
     "name": "loadbalance",
     "tx_hash": ["eth", "ipv4", "ipv6"],
     "tx_balancer": {
       "name": "basic"
     }
   },
   "ports": {"em1": {}, "em2": {}}
}
基本的ロードバランサーを使用したアクティブ送信 (Tx) 負荷分散の設定
詳細情報は、man ページの teamd.conf(5) を参照してください。

8.13.6. LACP (802.3ad) ランナーの設定

ethtool をリンク監視として使用する LACP ランナーを設定するには、root でエディターを使用して、以下をチームの JSON 形式設定ファイルに追加します。
{
   "device": "team0",
   "runner": {
       "name": "lacp",
       "active": true,
       "fast_rate": true,
       "tx_hash": ["eth", "ipv4", "ipv6"]
   },
     "link_watch": {"name": "ethtool"},
     "ports": {"em1": {}, "em2": {}}
}
接続先が link aggregation control protocol (LACP) に対応している場合の接続の設定になります。LACP ランナーは ethtool を使用してリンクのステータスを監視します。ethtool だけが、リンク監視に使用できます。たとえば arp_ping の場合、リンクがアップにならないためです。この理由は、リンクが最初に確立される必要があり、その後でのみ、ARP を含むパケットが送信可能となるためです。ethtool は、リンク層を個別に監視するため、リンクが確立されていないために認識されないという事態を防ぎます。
このランナーでは、負荷分散ランナーを使用した場合と同様の方法でアクティブ負荷分散が可能になります。アクティブ送信 (Tx) 負荷分散を有効にするには、以下のセクションを追加します。
"tx_balancer": {
       "name": "basic"
}
詳細情報は、man ページの teamd.conf(5) を参照してください。

8.13.8. ポート選択上書きの設定

フレームを送信する物理的なポートは、通常、チームドライバーのカーネル部分が選択するもので、ユーザーまたはシステム管理者とは関係がありません。出力ポートは、選択されたチームモード (teamd ランナー) のポリシーを使用して選択されます。ただし場合によっては、送信トラフィックの特定クラスを、特定の物理的インターフェースに向けて、やや複雑なポリシーを実装することが役に立つこともあります。デフォルトでは、チームドライバーはマルチキューを認識し、ドライバーが初期化されると 16 のキューが作成されます。キューの数を増減する必要がある場合は、Netlink 属性 tx_queues を使用して、チームドライバーのインスタンス作成中にこの値を変更できます。
ポートのキュー ID は、以下のようにポート設定オプション queue_id で設定できます。
{
  "queue_id": 3
}
これらのキュー ID を tc ユーティリティーと合わせて使うとマルチキューのキュー規範を設定でき、特定のポートデバイス上で特定のトラフィックが送信されるようにフィルターをかけることができます。たとえば、上記の設定を使用して 192.168.1.100 にバインドされたトラフィックすべてが出力デバイスとしてチームの eth1 を使用するように強制するには、以下の形式のコマンドを root で実行します。
~]# tc qdisc add dev team0 handle 1 root multiq
~]# tc filter add dev team0 protocol ip parent 1: prio 1 u32 match ip dst \
  192.168.1.100 action skbedit queue_mapping 3
トラフィックを特定ポートにバインドするためにランナー選択論理を上書きするこのメカニズムは、すべてランナーに使用できます。

8.13.9. BPF ベースの Tx ポートセレクターの設定

負荷分散および LACP ランナーは、パケットのハッシュを使ってネットワークトラフィックのフローを分類します。ハッシュの計算メカニズムは、Berkeley Packet Filter (BPF) コードに基づいています。BPF コードは、送信パケットのポリシー判断の作成ではなく、ハッシュ生成のために使用されます。ハッシュの長さは 8 ビットで、256 バリアントになります。つまり、多くの異なる ソケットバッファー (SKB) は同じハッシュを持つことが可能で、このため同一リンクでトラフィックを渡すことになります。短いハッシュを使うと、複数のリンクに負荷を分散する目的でトラフィックを異なるストリームにすばやく分類できます。静的モードでは、トラフィックをどのポートに送信するかを判断するためだけにハッシュが使用されます。アクティブモードでは、ランナーは継続的にハッシュを異なるポートに割り当て、完全な負荷分散を試みます。
パケット Tx ハッシュの計算には、以下の断片化されたタイプまたは文字列が使用できます。
  • eth: ソースおよび宛先 MAC アドレスを使用。
  • vlan: VLAN ID を使用。
  • ipv4 - ソースおよび宛先 IPv4 アドレスを使用。
  • ipv6 - ソースおよび宛先 IPv6 アドレスを使用。
  • ip: IPv4IPv6 のソースおよび宛先アドレスを使用。
  • l3: IPv4IPv6 のソースおよび宛先アドレスを使用。
  • tcp - ソースおよび宛先 TCP ポートを使用。
  • udp - ソースおよび宛先 UDP ポートを使用。
  • sctp - ソースおよび宛先 SCTP ポートを使用。
  • l4: TCPUDP および SCTP のソースおよび宛先ポートを使用。
これらの文字列は、以下の形式で負荷分散ランナーに行を追加して使用できます。
"tx_hash": ["eth", "ipv4", "ipv6"]
例については、「負荷分散ランナーの設定」を参照してください。

8.14. GUI を使用したネットワークチームの作成

8.14.1. チーム接続の確立

nm-connection-editor を使って、NetworkManager に 2 つ以上の有線もしくは InfiniBand 接続からチームを作成するよう指示できます。接続が最初にチーミングされている必要はありません。チームを設定するプロセスの一部として設定することが可能です。この設定プロセスを完了するには、利用可能なインターフェースの MAC アドレスが必要です。

手順8.1 nm-connection-editor を使用して新規チーム接続を追加する

新規チーム接続を追加するには、以下のステップに従います。
  1. ターミナルで nm-connection-editor と入力します。
    ~]$ nm-connection-editor
  2. 追加 ボタンをクリックします。接続の種類の選択 ウィンドウが表示されます。チーム を選択して 作成 をクリックします。チーム接続 1 の編集 ウィンドウが表示されます。
    NetworkManager グラフィカルユーザーインターフェースの追加メニュー

    図8.6 NetworkManager グラフィカルユーザーインターフェースの追加メニュー

  3. Team タブで 追加 をクリックし、Team 接続で使用するインターフェースのタイプを選択します。作成 ボタンをクリックします。ポートタイプを選択するダイアログが表示されるのは、最初のポートを作成する時のみです。その後は、すべてのポートに同じタイプが自動的に使われます。
  4. team0 スレーブ 1 の編集 ウィンドウが表示されます。
    NetworkManager グラフィカルユーザーインターフェースのスレーブ接続追加

    図8.7 NetworkManager グラフィカルユーザーインターフェースのスレーブ接続追加

  5. カスタムのポート設定を適用する場合は、Team ポート タブをクリックして JSON 設定文字列を入力するか、ファイルからインポートします。
  6. 保存 ボタンをクリックします。
  7. チーミングされたポート名が Team 接続 ウィンドウに表示されます。さらにポート接続を追加するには、追加 ボタンをクリックしてします。
  8. 設定を確認してから 保存 ボタンをクリックします。
  9. チーム固有の設定は、「チームタブの設定」を参照してください。

手順8.2 既存のチーム接続を編集する

既存のチーム接続を編集するには以下の手順に従います。
  1. ターミナルで nm-connection-editor と入力します。
    ~]$ nm-connection-editor
  2. 編集する接続を選択して、編集 ボタンをクリックします。
  3. 全般 タブを選択します。
  4. 編集 ダイアログの 全般 タブにある 5 つの設定は、ほとんどの接続の種類で共通のものです。
    • Connection name - 分かりやすい名前でネットワーク接続名を入力します。この名前は、Network ウィンドウメニューの接続名一覧に表示されます。
    • Connection priority for auto-activation - 接続が自動接続に設定されている場合は、番号がアクティブになります (デフォルトでは 0)。番号が大きくなれば、優先順位が高くなります。
    • Automatically connect to this network when it is available - このチェックボックスを選択すると、NetworkManager が利用可能なときにこの接続に自動接続します。詳細は「control-center を使用した既存の接続の編集」を参照してください。
    • All users may connect to this network - このチェックボックスを選択すると、システムですべてのユーザーが利用できる接続が作成されます。この設定を変更するには root 権限が必要になる場合があります。詳細は「GUI を使用したシステム全体およびプライベート接続プロファイルの管理」を参照してください。
    • この接続を使用したときは自動的に VPN に接続する - このボックスを選択すると、この接続が利用可能な時に NetworkManager が自動で選択した VPN に接続します。ドロップダウンメニューから VPN を選択します。
    • ファイアウォールゾーン - ドロップダウンメニューからファイアウォールゾーンを選択します。ファイアウォールゾーンに関する詳細情報は、『Red Hat Enterprise Linux 7 セキュリティーガイド』を参照してください。
  5. チーム固有の設定は、「チームタブの設定」を参照してください。

新規 (または修正した) 接続を保存して他の設定を行う

チーム接続の編集が終わったら、保存 ボタンをクリックしてカスタマイズした設定を保存します。
そして、以下のいずれかの設定をします。

8.14.1.1. チームタブの設定

すでに新規チーム接続が追加されている場合は、カスタムの JSON 設定文字列をテキストボックスに入力するか、設定ファイルをインポートできます。保存 をクリックすると、JSON 設定がチームインターフェースに適用されます。
JSON 文字列の例については、「teamd ランナーの設定」を参照してください。
新規チームの追加方法は手順8.1「nm-connection-editor を使用して新規チーム接続を追加する」を参照してください。

注記

Red Hat Customer Portal Labs は、環境とデプロイメントの目標に基づいて、ネットワークチームを自動的に生成する Network Teaming Helper を提供します。Network Teaming Helper を使用すると、有効かつ推奨される設定を簡単に生成できます。

8.15. 関連資料

インストールされているドキュメント

  • teamd(8) man ページ - teamd サービスについて説明しています。
  • teamdctl(8) man ページ - teamd 制御ツールについて説明しています。
  • teamd.conf(5) man ページ: teamd 設定ファイルについて説明しています。
  • teamnl(8) man ページ - teamd Netlink ライブラリーについて説明しています。
  • bond2team(1) man ページ: ボンディングオプションをチームに変換するツールについて説明しています。

オンラインのドキュメント

http://www.w3schools.com/js/js_json_syntax.asp
JSON 構文についての説明です。

第9章 ネットワークブリッジングの設定

ネットワークブリッジは、ネットワーク間のトラフィックを MAC アドレスに基づいて転送するリンク層デバイスです。転送の決定は、MAC アドレスのテーブルに基づいて行われ、このテーブルはネットワークトラフィックをリッスンして、どのホストがどのネットワーク接続しているかをネットワークブリッジが学習することで構築されます。Linux ホスト内では、ソフトウェアブリッジを使ってハードウェアをエミュレートできます。たとえば、仮想化アプリケーション内で NIC を 1 つ以上の仮想 NIC と共有するなどです。
アドホック または インフラストラクチャー モードで稼働している Wi-Fi ネットワーク上では、ブリッジは確立できないことに注意してください。IEEE 802.11 標準が、通信時間の効率性のために Wi-Fi で 3 アドレスフレームの使用を指定するためです。

9.1. テキスト形式のユーザーインターフェース nmtui によるブリッジングの設定

テキスト形式のユーザーインターフェースツール nmtui を使用すると、ターミナルのウィンドウでブリッジングを設定できます。このツールを起動するには、以下のコマンドを実行します。
~]$ nmtui
テキスト形式のインターフェースが表示されます。無効なコマンドの場合は、使用法に関するメッセージが出力されます。
移動するには矢印キーを使用するか、Tab を押して次に進むか Shift+Tab を押して前に戻ります。Enter を押してオプションを選びます。Space バーは、チェックボックスのステータスを切り替えます。
  1. メニューから 接続の編集 を選択します。追加 を選択すると 新規の接続 画面が開きます。
    NetworkManager テキスト形式のユーザーインターフェースのブリッジ接続追加メニュー

    図9.1 NetworkManager テキスト形式のユーザーインターフェースのブリッジ接続追加メニュー

  2. ブリッジ を選択すると、接続の編集 画面が開きます。
  3. ブリッジにスレーブインターフェースを追加するには 追加 を選択して 新規の接続 画面を開きます。接続の種類を選んだら、作成 ボタンを選択して、ブリッジの 接続の編集 画面を開きます。
    NetworkManager テキスト形式ユーザーインターフェースで新規ブリッジスレーブを設定するメニュー

    図9.2 NetworkManager テキスト形式ユーザーインターフェースで新規ブリッジスレーブを設定するメニュー

  4. デバイス セクションに、必要なスレーブのデバイス名、または MAC アドレスを入力します。必要であれば、イーサネット ラベルの右側にある 表示する を選択して、ブリッジの MAC アドレスとして使用するクローンの MAC アドレスを入力します。OK ボタンを選択します。

    注記

    MAC アドレスなしでデバイスを指定すると、接続の編集 ウィンドウがリロードされる際に デバイス セクションは自動的に設定されます。ただしこれは、デバイスが正常に発見された場合のみです。
    NetworkManager テキスト形式ユーザーインターフェースでブリッジスレーブ接続を設定するメニュー

    図9.3 NetworkManager テキスト形式ユーザーインターフェースでブリッジスレーブ接続を設定するメニュー

  5. スレーブ セクションにブリッジのスレーブ名が表示されます。さらにスレーブ接続を追加する場合は、上記のステップを繰り返します。
  6. 設定を確認してから、OK ボタンを選択します。
    NetworkManager テキスト形式ユーザーインターフェースでブリッジを設定するメニュー

    図9.4 NetworkManager テキスト形式ユーザーインターフェースでブリッジを設定するメニュー

ブリッジ用語の定義は、「ブリッジタブを設定する」を参照してください。
nmtui のインストール方法は「nmtui を使用した IP ネットワークの設定」を参照してください。

9.2. NetworkManager のコマンドラインツール nmcli の使用

bridge-br0 という名前のブリッジを作成するには、root で以下のコマンドを実行します。
~]# nmcli con add type bridge ifname br0
Connection 'bridge-br0' (6ad5bba6-98a0-4f20-839d-c997ba7668ad) successfully added.
インターフェース名が指定されない場合は、デフォルトの bridgebridge-1bridge-2 といった名前が付けられます。
接続を表示するには、以下のコマンドを実行します。
~]$ nmcli con show
NAME        UUID                                  TYPE            DEVICE
bridge-br0  79cf6a3e-0310-4a78-b759-bda1cc3eef8d  bridge          br0
eth0        4d5c449a-a6c5-451c-8206-3c9a4ec88bca  802-3-ethernet  eth0
デフォルトでは、スパニングツリープロトコル (STP) が有効になっています。使用される値は、IEEE 802.1D-1998 標準からのものです。このブリッジでの STP を無効にするには、root で以下のコマンドを実行します。
~]# nmcli con modify bridge-br0 bridge.stp no
このブリッジで再度 802.1D STP を有効にするには、root で以下のコマンドを実行します。
~]# nmcli con modify bridge-br0 bridge.stp yes
802.1D STP のデフォルトのブリッジ優先度は 32768 です。root ブリッジ選択では、少ない値が選ばれます。たとえば、優先度 32768 (デフォルト) よりも 28672 のブリッジが root ブリッジに選ばれます。デフォルト値以外の値のブリッジを作成するには、以下のコマンドを実行します。
~]$ nmcli con add type bridge ifname br5 stp yes priority 28672
Connection 'bridge-br5' (86b83ad3-b466-4795-aeb6-4a66eb1856c7) successfully added.
0 から 65535 までの値が使用できます。
既存ブリッジのブリッジ優先度をデフォルト値以外の値に変更するには、以下の形式のコマンドを実行します。
~]$ nmcli connection modify bridge-br5 bridge.priority 36864
0 から 65535 までの値が使用できます。
範囲が 01:80:C2:00:00:00 から 01:80:C2:00:00:0F の転送グループアドレスへのブリッジ接続を設定するには、group-forward-mask プロパティーを変更します。このプロパティーは、16 ビットのマスクです。各ビットは、転送する必要がある上記の範囲内のグループアドレスに対応します。以下に例を示します。
~]$ nmcli connection modify bridge-br5 bridge.group-forward-mask 8

重要

group-forward-mask プロパティーでは、0 ビット、1 ビット、2 ビットを 1 に設定することはできません。このアドレスは、スパニングツリープロトコル (STP)、リンクアグリゲーション制御プロトコル (LACP)、およびイーサネット MAC ポーズフレームに使用されるためです。
ブリッジの設定を表示するには、以下のコマンドを実行します。
~]$ nmcli -f bridge con show bridge-br0
802.1D STP のその他のオプションは、man ページの nmcli(1) のブリッジセクションに記載されています。
たとえば、インターフェース eth1bridge-br0 に追加、またはスレーブ化するには、以下のコマンドを実行します。
~]$ nmcli con add type ethernet ifname eth1 master bridge-br0
Connection 'bridge-slave-eth1' (70ffae80-7428-4d9c-8cbd-2e35de72476e) successfully added.
ブリッジへの既存の接続をスレーブ化するには、以下の手順に従ってください。
  1. そのマスターと、スレーブタイプのプロパティーを変更します。たとえば、vlan100 という名前の既存の VLAN 接続をスレーブにするには、次のコマンドを実行します。
    ~]$ nmcli connection modify vlan100 master bridge-br0 slave-type bridge
  2. 接続を再度アクティブにして、変更を適用します。
    ~]$ nmcli connection up vlan100
インタラクティブモードを使用して値を変更するには、以下のコマンドを実行します。
~]$ nmcli connection edit bridge-br0
これで nmcli プロンプトが表示されます。
nmcli> set bridge.priority 4096
nmcli> save
Connection 'bridge-br0' (79cf6a3e-0310-4a78-b759-bda1cc3eef8d) successfully saved.
nmcli> quit
nmcli の概要は、「nmcli を使用する IP ネットワークの設定」を参照してください。

9.3. コマンドラインインターフェース (CLI) の使用

9.3.1. ブリッジングカーネルモジュールがインストールされているかの確認

Red Hat Enterprise Linux 7 では、ブリッジングモジュールはデフォルトで読み込まれています。必要な場合は、root で以下のコマンドを実行して、モジュールを読み込みます。
~]# modprobe --first-time bridge
modprobe: ERROR: could not insert 'bridge': Module already in kernel
モジュールについての情報を表示するには、以下のコマンドを実行します。
~]$ modinfo bridge
コマンドオプションについては、man ページの modprobe(8) を参照してください。

9.3.2. ネットワークブリッジの作成

ネットワークブリッジを作成するには、/etc/sysconfig/network-scripts/ ディレクトリーに ifcfg-brN という名前のファイルを作成し、N をそのインターフェースの番号 0 などに置き換えます。
ファイルのコンテンツは、イーサネットインターフェースなどブリッジされるインターフェースがどのようなタイプでも類似したものになります。相違点は、以下のとおりです。
  • DEVICE ディレクティブはインターフェース名を brN の形式で引数として与えられ、この N はインターフェースの番号に置き換えられます。
  • TYPE ディレクティブには、引数 Bridge が与えられます。このディレクティブは、デバイスタイプと、引数が大文字/小文字を区別するかを決定します。
  • ブリッジインターフェース設定ファイルには IP アドレスが与えられますが、物理インターフェース設定ファイルには MAC アドレスのみとします。(下記参照)
  • 追加のディレクティブ DELAY=0 が加えられ、ブリッジがトラフィックを監視し、ホストの位置を学習し、フィルタリング機能の基になる MAC アドレステーブルを構築する間に、ブリッジが待機することを回避します。ルーティングループが可能でない場合は、デフォルトの 15 秒遅延は不要です。

例9.1 ifcfg-br0 インターフェース設定ファイルの例

以下の例では、静的 IP アドレスを使ったブリッジインターフェースの設定ファイルを示しています。
DEVICE=br0
TYPE=Bridge
IPADDR=192.168.1.1
PREFIX=24
BOOTPROTO=none
ONBOOT=yes
DELAY=0
ブリッジを完成するには、別のインターフェースを作成するか既存のインターフェースを修正して、これをブリッジインターフェースに向けます。

例9.2 ifcfg-ethX インターフェース設定ファイルの例

以下の例は、イーサネットインターフェース設定ファイルをブリッジインターフェースに向けたものです。/etc/sysconfig/network-scripts/ifcfg-ethX の物理インターフェースを設定します。ここでの X は、特定のインターフェースに対応する一意の番号です。
DEVICE=ethX
TYPE=Ethernet
HWADDR=AA:BB:CC:DD:EE:FF
BOOTPROTO=none
ONBOOT=yes
BRIDGE=br0
オプションで、NAME ディレクティブを使って名前を指定することもできます。名前が指定されない場合は、NetworkManager プラグインである ifcfg-rh が、Type Interfaceという形式で接続プロファイルの名前を作成します。この例では、ブリッジが Bridge br0 と命名されます。別の方法では、NAME=bridge-br0ifcfg-br0 ファイルに追加されると、接続プロファイル名は bridge-br0 になります。

注記

DEVICE ディレクティブでは、インターフェース名はデバイスタイプを決定するわけではないので、ほぼいかなる名前でも使用できます。TYPE=Ethernet は、絶対に必要なわけではありません。TYPE ディレクティブが設定されていない場合、(名前が明確に異なるインターフェース設定ファイルと合致していなければ) そのデバイスはイーサネットデバイスとして扱われます。
ディレクティブでは、大文字と小文字は区別されます。
HWADDR ディレクティブを使用してハードウェアまたは MAC アドレスを指定すると、デバイス命名手順に影響が出ます。これは11章ネットワークデバイス命名における一貫性で説明しています。

警告

リモートホスト上でブリッジ設定をしていて、そのホストへの接続に設定中の物理 NIC を使用している場合、この先に進む前に接続が切断された場合の影響を検討してください。サービスを再起動する際には接続が失われ、エラーが発生すると接続を再確立することができない場合があります。コンソールもしくは帯域外のアクセスが推奨されます。
新規または最近設定したインターフェースを有効にするには、root で以下の形式のコマンドを実行します。
ifup device
このコマンドは NetworkManager が稼働中かどうかを検出し、nmcli con load UUID を呼び出した後に nmcli con up UUID を呼び出します。
もしくは、すべてのインターフェースをリロードします。root で以下のコマンドを実行します。
~]# systemctl restart network
このコマンドはネットワークサービスを停止してから再度、これを開始します。その後、ONBOOT=yes となっている ifcfg ファイルで ifup を呼び出します。

注記

デフォルトでは NetworkManager は、インターフェースが次回にアップになるまで ifcfg ファイルへの変更を認識せず、変更前の設定データの使用を継続します。これは NetworkManager.conf ファイルの monitor-connection-files オプションで設定します。詳細情報は、NetworkManager.conf(5) man ページを参照してください。

9.3.3. ボンドを使ったネットワークブリッジ

ボンディングされた 2 つ以上のイーサネットインターフェースで形成されたネットワークブリッジの例を示します。仮想化環境では、この用例も一般的です。ボンディングされたインターフェースの設定ファイルに詳しくない場合は、「チャンネルボンディングインターフェースの作成」を参照してください。
ボンディングする 2 つ以上のイーサネットインターフェースの設定ファイルを、以下のように作成または編集します。
DEVICE=ethX
TYPE=Ethernet
SLAVE=yes
MASTER=bond0
BOOTPROTO=none
HWADDR=AA:BB:CC:DD:EE:FF

注記

インターフェース名には ethX が使われることが多いですが、ほぼどんな名前を使用して構いません。
インターフェース設定ファイル /etc/sysconfig/network-scripts/ifcfg-bond0 を以下のように作成もしくは編集します。
DEVICE=bond0
ONBOOT=yes
BONDING_OPTS='mode=1 miimon=100'
BRIDGE=brbond0
ボンディングモジュールの設定に関する指示およびアドバイスとボンディングパラメーターの一覧については、「チャンネルボンディングの使用」を参照してください。
インターフェース設定ファイル /etc/sysconfig/network-scripts/ifcfg-brbond0 を以下のように作成もしくは編集します。
DEVICE=brbond0
ONBOOT=yes
TYPE=Bridge
IPADDR=192.168.1.1
PREFIX=24
これで MASTER=bond0 ディレクティブのある 2 つ以上のインターフェース設定ファイルができました。これらのファイルは、DEVICE=bond0 ディレクティブを含む /etc/sysconfig/network-scripts/ifcfg-bond0 という名前の設定ファイルに向けられています。この ifcfg-bond0 は、/etc/sysconfig/network-scripts/ifcfg-brbond0 設定ファイルに向けられています。これには IP アドレスが含まれ、ホスト内の仮想ネットワークへのインターフェースとして動作します。
新規または最近設定したインターフェースを有効にするには、root で以下の形式のコマンドを実行します。
ifup device
このコマンドは NetworkManager が稼働中かどうかを検出し、nmcli con load UUID を呼び出した後に nmcli con up UUID を呼び出します。
もしくは、すべてのインターフェースをリロードします。root で以下のコマンドを実行します。
~]# systemctl restart network
このコマンドはネットワークサービスを停止してから再度、これを開始します。その後、ONBOOT=yes となっている ifcfg ファイルで ifup を呼び出します。

注記

デフォルトでは NetworkManager は、インターフェースが次回にアップになるまで ifcfg ファイルへの変更を認識せず、変更前の設定データの使用を継続します。これは NetworkManager.conf ファイルの monitor-connection-files オプションで設定します。詳細情報は、NetworkManager.conf(5) man ページを参照してください。

9.4. GUI を使ったネットワークブリッジングの設定

ブリッジインターフェースを開始する際に、NetworkManager は少なくとも 1 つのポートが転送状態に入るまでは、DHCPIPv6 といったネットワーク依存の IP 設定を開始しません。スレーブやポートが接続されたり、パケット転送を開始する前に、静的 IP アドレス指定の開始が許可されます。

9.4.1. GUI を使用したブリッジ接続の確立

手順9.1 nm-connection-editor を使用して新規ブリッジ接続の追加

新規ブリッジ接続を作成するには、以下のステップに従います。
  1. ターミナルで nm-connection-editor と入力します。
    ~]$ nm-connection-editor
  2. 追加 ボタンをクリックします。接続の種類の選択 ウィンドウが表示されます。ブリッジ を選択して 作成 をクリックします。ブリッジ接続 1 の編集 ウィンドウが表示されます。
    ブリッジ接続 1 の編集

    図9.5 ブリッジ接続 1 の編集

  3. 手順9.3「ブリッジにスレーブインターフェースを追加する」を参照して、スレーブデバイスを追加します。

手順9.2 既存のブリッジ接続を編集する

  1. ターミナルで nm-connection-editor と入力します。
    ~]$ nm-connection-editor
  2. 編集する ブリッジ 接続を選択します。
  3. 編集 ボタンをクリックします。

接続名、自動接続の動作、可用性の設定

編集 ダイアログの 全般 タブにある 5 つの設定は、すべての接続の種類で共通のものです。
  • Connection name - ネットワーク接続の分かりやすい名前をします。この名前は、Network ウィンドウメニューの接続名一覧に表示されます。
  • Automatically connect to this network when it is available - このチェックボックスを選択すると、NetworkManager が利用可能なときにこの接続に自動接続します。詳細は「control-center を使用した既存の接続の編集」を参照してください。
  • All users may connect to this network - このチェックボックスを選択すると、システムですべてのユーザーが利用できる接続が作成されます。この設定を変更するには root 権限が必要になる場合があります。詳細は「GUI を使用したシステム全体およびプライベート接続プロファイルの管理」を参照してください。
  • この接続を使用したときは自動的に VPN に接続する - このボックスを選択すると、この接続が利用可能な時に NetworkManager が自動で選択した VPN に接続します。ドロップダウンメニューから VPN を選択します。
  • ファイアウォールゾーン - ドロップダウンメニューからファイアウォールゾーンを選択します。ファイアウォールゾーンに関する詳細情報は、『Red Hat Enterprise Linux 7 セキュリティーガイド』を参照してください。

9.4.1.1. ブリッジタブを設定する

インターフェース名
ブリッジへのインターフェース名。
ブリッジ接続
1 つ以上のスレーブインターフェース。
エージング時間
MAC アドレスが MAC アドレス転送データベースに保持される時間 (秒単位)。
IGMP スヌーピングのを有効にします。
必要に応じて、チェックボックスをオンにして、デバイスで IGMP スヌーピングを有効にします。
STP (スパニングツリープロトコル) を有効化
必要に応じてこのチェックボックスを選択し、STP を有効にします。
優先度
ブリッジの優先度。優先度の一番低いブリッジが root ブリッジに選ばれます。
転送遅延
転送状態に入るまでのリスニングと状態確認の両方に費やされる秒数。デフォルトは 15 秒です。
Hello タイム
ブリッジプロトコルデータ単位 (BPDU) で設定情報を送信する間隔 (秒単位)。
最大エージ
BPDU カラの設定情報を保存する最大秒数。この値は Hello タイムを 2 倍したものに 1 を加えたものになりますが、転送遅延を 2 倍したものから 1 を引いたものよりも少なくなる必要があります。
グループ転送マスク
このプロパティーは、グループアドレスの転送を許可するグループアドレスのマスクです。ほとんどの場合、01:80:C2:00:00:00 から 01:80:C2:00:00:0F への範囲のグループアドレスは、ブリッジデバイスにより転送されません。このプロパティーは、16 ビットのマスクで、それぞれ上記の範囲内のグループアドレスに対応しており、転送する必要があります。グループ転送マスク プロパティーでは、012 のいずれのビットも 1 に設定できません。これらは、スパニングツリープロトコル (STP)、リンクアグリゲーション制御プロトコル (LACP)、およびイーサネット MAC ポーズフレームに使用されるためです。

手順9.3 ブリッジにスレーブインターフェースを追加する

  1. ブリッジにポートを追加するには、ブリッジ接続 1 の編集 ウィンドウで ブリッジ タブを選択します。必要な場合は、手順9.2「既存のブリッジ接続を編集する」の手順に従ってこのウィンドウを開きます。
  2. 追加 ボタンをクリックして 接続の種類の選択 メニューを表示します。
  3. リストから作成する接続の種類を選択します。作成 をクリックすると、選択した接続の種類に合わせたウィンドウが開きます。
    NetworkManager グラフィカルユーザーインターフェースのブリッジ接続追加

    図9.6 NetworkManager グラフィカルユーザーインターフェースのブリッジ接続追加

  4. ブリッジポート タブを選択します。必要に応じて 優先度経路のコスト を設定します。ブリッジポートの STP 優先度は Linux カーネルで制限されていることに注意してください。通常は 0 から 255 までが設定できますが、Linux で利用可能なのは 0 から 63 までです。このケースでのデフォルト値は 32 です。
    NetworkManager グラフィカルユーザーインターフェースでのブリッジポートタブ

    図9.7 NetworkManager グラフィカルユーザーインターフェースでのブリッジポートタブ

  5. 必要な場合は ヘアピンモード のチェックボックスを選択し、外部処理用にフレームの転送を有効にします。これは、仮想イーサネットポートアグリゲーター (VEPA) モードとも呼ばれます。
そして、以下のいずれかの設定をします。
新規 (または修正した) 接続を保存して他の設定を行う
新しいブリッジ接続の編集が終わったら、保存 ボタンをクリックして、カスタマイズした設定を保存します。編集中に該当プロファイルが使用されていた場合は、接続を切断してから再接続し、NetworkManager が変更を適用するようにします。プロファイルがオフだった場合は、これをオンにするか、ネットワーク接続アイコンメニューで選択します。新規の接続、または変更した接続の使用方法は、control-center GUI を使用したネットワーク接続」を参照してください。
既存の接続をさらに設定をするには、ネットワーク接続 ウィンドウ内でその接続を選択し、オプション をクリックして 編集 ダイアログに戻ります。
そして、以下のいずれかの設定をします。
保存が完了すると、ブリッジはスレーブとともにネットワーク設定ツール画面に表示されます。
NetworkManager グラフィカルユーザーインターフェースでのブリッジ

図9.8 NetworkManager グラフィカルユーザーインターフェースでのブリッジ

9.5. iproute を使用したイーサネットブリッジの設定

bridge-utils の代わりに、iproute パッケージを使用できます。このパッケージを使用すると、prioritycoststate などのブリッジポートオプションを設定できます。
ip ユーティリティーを使用して、ブリッジデバイスでインターフェース eth0 をスレーブするポートオプションを設定するには、root で以下のコマンドを実行します。
~]# ip link set eth0 type bridge_slave option
ip ユーティリティーを使用して利用可能なオプションを選択するには、root で以下のコマンドを実行します。
~]# ip link help bridge_slave
      Usage: ... bridge_slave [ state STATE ] [ priority PRIO ] [cost COST ]
                          [ guard {on | off} ]
                          [ hairpin {on | off} ]
                          [ fastleave {on | off} ]
                          [ root_block {on | off} ]
                          [ learning {on | off} ]
                          [ flood {on | off} ]
ポートオプションの詳細は、man ページの ip-link(8) を参照してください。

9.6. 関連資料

  • nmcli(1) の man ページ - NetworkManager のコマンドラインツールを説明しています。
  • nmcli-examples(5) の man ページ - nmcli コマンドの例を提供しています。
  • nm-settings(5) の man ページ - NetworkManager 接続の設定およびパラメーターを説明しています。
  • ip-link(8) の man ページ - ブリッジポートオプションの説明

第10章 802.1Q VLAN タグの設定

VLAN を作成するには、親インターフェース と呼ばれるインターフェースの上に別のインターフェースを作成します。VLAN インターフェースは、パケットがインターフェースを通過する際に VLAN ID でタグ付けし、返信パケットの場合はタグを外します。VLAN インターフェースは他のインターフェースと同様に設定できます。親インターフェースはイーサネットインターフェースである必要はありません。802.1Q VLAN タグインターフェースは、ブリッジ、ボンド、およびチームインターフェースの上に作成できますが、以下の点に注意してください。
  • ボンド上に VLAN を作成した場合は、ボンドにスレーブがあり、VLAN インターフェースをアクティブにする前にそれらがアクティブになっていることが重要です。スレーブのないボンドに VLAN インターフェースを追加しても機能しません。
  • VLAN スレーブはボンド上で fail_over_mac=follow オプションを使って設定できません。これは、VLAN の仮想デバイスが MAC アドレスを変更して親の新 MAC アドレスに合致させることができないためです。この場合、トラフィックは間違ったソースの MAC アドレスで送信されます。
  • VLAN のタグ付けがされたパケットをネットワークスイッチ経由で送信するには、スイッチを適切に設定する必要があります。たとえば、複数の VLAN からタグ付けされたパケットを受け付けるには、Cisco スイッチ上のポートは 1 つの VLAN に割り当てられているか、トランクポートになるように設定されている必要があります。一部ベンダーのスイッチでは、トランクポートが ネイティブ VLAN のタグ付けされていないフレームを処理することが許されます。一部のデバイスでは、ネイティブ VLAN を有効または無効にできますが、他のデバイスでは、デフォルトでは無効になっています。この相違が原因となり、異なる 2 つのスイッチ間で ネイティブ VLAN の誤設定が生じ、セキュリティーリスクが発生する可能があります。以下にその例を示します。
    あるスイッチは ネイティブ VLAN 1 を使用し、他のスイッチは ネイティブ VLAN 10 を使用するとします。タグが挿入されずにフレームの通過が許可されると、攻撃者は VLAN 間をジャンプできます。この一般的なネットワーク侵入方法は、VLAN ホッピング とも呼ばれています。
    セキュリティーリスクを最小限に抑えるためには、インターフェースを以下のように設定します。
    スイッチ
    • 必要でない限り、トランクポートを無効にする。
    • トランクポートが必要な場合は、タグ付けされていないフレームが許可されないように ネイティブ VLAN を無効にする。
    Red Hat Enterprise Linux サーバー
    • nftables または ebtables ユーティリティーを使用して、着信フレームのフィルタリングでタグ付けされていないフレームをドロップする。
  • 古いネットワークインターフェースカードやループバックインターフェース、Wimax カードや InfiniBand デバイスのなかには、VLAN 非対応 といって、VLAN をサポートできないものもあります。これは通常、これらのデバイスがタグ付けされたパケットに関連する VLAN ヘッダーや大きい MTU サイズに対応できないためです。

注記

Red Hat では、VLAN 上へのボンディング設定をサポートしていません。詳細については、Red Hat ナレッジベースの記事Whether configuring bond on top of VLAN as slave interfaces is a valid configuration?を参照してください。

10.1. VLAN インターフェース設定方式の選択

10.2. テキスト形式のユーザーインターフェース nmtui を使った 802.1Q VLAN タグの設定

テキスト形式のユーザーインターフェースツール nmtui を使用すると、ターミナルのウィンドウで 802.1Q VLAN を設定できます。このツールを起動するには、以下のコマンドを実行します。
~]$ nmtui
テキスト形式のインターフェースが表示されます。無効なコマンドの場合は、使用法に関するメッセージが出力されます。
移動するには矢印キーを使用するか、Tab を押して次に進むか Shift+Tab を押して前に戻ります。Enter を押してオプションを選びます。Space バーは、チェックボックスのステータスを切り替えます。
メニューから 接続の編集 を選択します。追加 を選択すると 新規の接続 画面が開きます。
NetworkManager テキスト形式のユーザーインターフェースの VLAN 接続追加メニュー

図10.1 NetworkManager テキスト形式のユーザーインターフェースの VLAN 接続追加メニュー

VLAN を選択すると、接続の編集 画面が開きます。画面のプロンプトに従って設定を完了します。
NetworkManager テキスト形式ユーザーインターフェースで VLAN 接続を設定するメニュー

図10.2 NetworkManager テキスト形式ユーザーインターフェースで VLAN 接続を設定するメニュー

VLAN 用語の定義は、「VLAN タブの設定」を参照してください。
nmtui のインストール方法は、「nmtui を使用した IP ネットワークの設定」を参照してください。

10.3. コマンドラインツール nmcli を使った 802.1Q VLAN タグの設定

システム上で利用可能なインターフェースを表示するには、以下のコマンドを実行します。
~]$ nmcli con show
NAME         UUID                                  TYPE            DEVICE
System eth1  9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04  802-3-ethernet  eth1
System eth0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0
出力の NAME フィールドは常に接続 ID を表すことに留意してください。これはインターフェース名と同じように見えますが、異なるものです。nmcli connection コマンドでは ID を使用して接続を特定できます。firewalld のような他のアプリケーションでは、デバイス名を使用します。
イーサネットインターフェース eth0 上で VLAN インターフェース VLAN10 および ID 10 の 802.1Q VLAN インターフェースを作成するには、以下のコマンドを実行します。
~]$ nmcli con add type vlan ifname VLAN10 dev eth0 id 10
Connection 'vlan-VLAN10' (37750b4a-8ef5-40e6-be9b-4fb21a4b6d17) successfully added.
VLAN インターフェースに con-name を指定しなかったため、名前がインターフェース名の前に種類を追加したものとなっていることに留意してください。あるいは、以下のように con-name オプションを使って名前を指定することもできます。
~]$ nmcli con add type vlan con-name VLAN12 dev eth0 id 12
Connection 'VLAN12' (b796c16a-9f5f-441c-835c-f594d40e6533) successfully added.

VLAN インターフェースにアドレスを割り当てる

この nmcli コマンドを使って、他のインターフェースと同様に静的および動的インターフェースアドレスを割り当てることができます。
たとえば、静的 IPv4 アドレスおよびゲートウェイの VLANインターフェースを作成するコマンドは、以下のようになります。
~]$ nmcli con add type vlan con-name VLAN20 dev eth0 id 20 ip4 10.10.10.10/24 \
gw4 10.10.10.254
動的アドレスを割り当てる VLAN インターフェースを作成するには、以下のコマンドを実行します。
~]$ nmcli con add type vlan con-name VLAN30 dev eth0 id 30
nmcli コマンドを使ったインスタンス設定例については、「nmcli を使用したネットワーク接続」を参照してください。
作成した VLAN インターフェースを表示するには、以下のコマンドを実行します。
~]$ nmcli con show
NAME         UUID                                  TYPE            DEVICE
VLAN12       4129a37d-4feb-4be5-ac17-14a193821755  vlan            eth0.12
System eth1  9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04  802-3-ethernet  eth1
System eth0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0
vlan-VLAN10  1be91581-11c2-461a-b40d-893d42fed4f4  vlan            VLAN10
新規に設定した接続の詳細情報を表示するには、以下のコマンドを実行します。
~]$ nmcli -p con show VLAN12
===============================================================================
                      Connection profile details (VLAN12)
===============================================================================
connection.id:                          VLAN12
connection.uuid:                        4129a37d-4feb-4be5-ac17-14a193821755
connection.interface-name:              --
connection.type:                        vlan
connection.autoconnect:                 yes
-------------------------------------------------------------------------------
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          yes
802-3-ethernet.mac-address:             --
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.mac-address-blacklist:
802-3-ethernet.mtu:                     auto
vlan.interface-name:                    --
vlan.parent:                            eth0
vlan.id:                                12
vlan.flags:                             0 (NONE)
vlan.ingress-priority-map:
vlan.egress-priority-map:
-------------------------------------------------------------------------------
===============================================================================
      Activate connection details (4129a37d-4feb-4be5-ac17-14a193821755)
===============================================================================
GENERAL.NAME:                           VLAN12
GENERAL.UUID:                           4129a37d-4feb-4be5-ac17-14a193821755
GENERAL.DEVICES:                        eth0.12
GENERAL.STATE:                          activating[出力は省略されています]
VLAN コマンドの他のオプションは、nmcli(1) man ページの VLAN セクションに記載されています。man ページでは、VLAN が作成されるデバイスは、parent device と呼ばれています。上記の例では、デバイスはインターフェース名である eth0 で指定されており、これは接続の UUID または MAC アドレスで指定することもできます。
イーサネットインターフェース eth1 上で、イングレス優先度マッピングのインターフェース名 VLAN1 および ID 13 の 802.1Q VLAN インターフェースプロファイルを作成するには、以下のコマンドを実行します。
~]$ nmcli con add type vlan con-name VLAN1 dev eth2 id 13 ingress "2:3,3:5"
上記で作成された VLAN に関連するすべてのパラメーターを表示するには、以下のコマンドを実行します。
~]$ nmcli connection show vlan-VLAN10
MTU を変更するには、以下のコマンドを実行します。
~]$ nmcli connection modify vlan-VLAN10 802.mtu 1496
MTU 設定は、ネットワーク層パケットの最大サイズを決定します。リンク層フレームが送信可能なペイロードの最大サイズは、ネットワーク層 MTU を制限します。通常のイーサネットフレームの場合、1500 バイトの MTU になります。VLAN 設定の際には、802.1Q タグを受け入れるためにリンク層ヘッダーのサイズが 4 バイト拡大されるので、MTU を変更する必要はありません。
本ガイド執筆時点では、connection.interface-namevlan.interface-name は、同一である必要があります (設定されている場合)。このため、nmcli のインタラクティブモードを使って同時に変更する必要が あります。VLAN 接続名を変更するには、以下のコマンドを実行します。
~]$ nmcli con edit vlan-VLAN10
nmcli> set vlan.interface-name superVLAN
nmcli> set connection.interface-name superVLAN
nmcli> save
nmcli> quit
nmcli ユーティリティーを使うと、802.1Q コードの作動方法を変更する ioctl フラグの設定および削除ができます。以下の VLAN フラグが NetworkManager でサポートされています。
  • 0x01 - 出力パケットヘッダーを並び替えます。
  • 0x02 - GVRP プロトコルを使用します。
  • 0x04 - インターフェースとそのマスターのバインディングを外します。
VLAN の状態は、親もしくはマスターインターフェース (VLAN が作成されているインターフェースもしくはデバイス) に同期されます。親インターフェースがdownの管理状態に設定されていると、関連するすべての VLAN もダウンに設定され、ルートもすべてルーティングテーブルからフラッシュされます。フラグ 0x04 は、loose binding モードを有効にします。このモードでは、作動状態のみが親から関連 VLAN に受け継がれ、VLAN デバイスの状態は変更されません。
VLAN フラグを設定するには、以下のコマンドを実行します。
~]$ nmcli connection modify vlan-VLAN10 vlan.flags 1
nmcli の概要は、「nmcli を使用する IP ネットワークの設定」を参照してください。

10.4. コマンドラインを使用した 802.1Q VLAN タグの設定

Red Hat Enterprise Linux 7 では、8021q モジュールはデフォルトで読み込まれています。必要な場合は、root で以下のコマンドを実行して、モジュールを読み込みます。
~]# modprobe --first-time 8021q
modprobe: ERROR: could not insert '8021q': Module already in kernel
モジュールについての情報を表示するには、以下のコマンドを実行します。
~]$ modinfo 8021q
コマンドオプションは、man ページの modprobe(8) を参照してください。

10.4.1. ifcfg ファイルを使用した 802.1q VLAN タグの設定

  1. /etc/sysconfig/network-scripts/ifcfg-ethX の親インターフェースを以下のように設定します。X は特定のインターフェースに対応する一意の番号です。
    DEVICE=ethX
    TYPE=Ethernet
    BOOTPROTO=none
    ONBOOT=yes
  2. /etc/sysconfig/network-scripts/ ディレクトリーで VLAN インターフェースを設定します。設定ファイル名は、親インターフェースにピリオド . と VLAN ID 番号を加えたものにします。たとえば、VLAN ID が 192 で親インターフェースが eth0 なら、設定ファイル名は ifcfg-eth0.192 となります。
    DEVICE=ethX.192
    BOOTPROTO=none
    ONBOOT=yes
    IPADDR=192.168.1.1
    PREFIX=24
    NETWORK=192.168.1.0
    VLAN=yes
    たとえば、VLAN ID 193 で同一インターフェースの eth0 上に 2 つ目の VLAN を設定する必要がある場合は、VLAN 設定詳細で eth0.193 という名前とした新規ファイルを追加します。
  3. 変更を反映させるには、ネットワークサービスを再起動します。root で以下のコマンドを実行します。
    ~]# systemctl restart network

10.4.2. ip コマンドを使用した 802.1Q VLAN タグの設定

イーサネットインターフェース eth0 上で、名前が VLAN8 および ID 8 の 802.1Q VLAN インターフェースを作成するには、root で以下のコマンドを実行します。
~]# ip link add link eth0 name eth0.8 type vlan id 8
VLAN を表示するには、以下のコマンドを実行します。
~]$ ip -d link show eth0.8
4: eth0.8@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
     link/ether 52:54:00:ce:5f:6c brd ff:ff:ff:ff:ff:ff promiscuity 0
     vlan protocol 802.1Q id 8 <REORDER_HDR>
ip ユーティリティーは、VLAN ID が 0x で始まっている場合は 16 進数として、0 で始まっている場合は 8 進数として読み取ることに注意してください。つまり、10 進数の値 22 の VLAN ID を割り当てるには、ゼロをつけないでください。
VLAN を削除するには、root で以下のコマンドを実行します。
~]# ip link delete eth0.8
複数の VLAN に属する複数のインターフェースを使用するには、物理インターフェース eth0 に、適切な VLAN ID を持つローカルの eth0.1eth0.2 を作成します。
~]# ip link add link eth0 name eth0.1 type vlan id 1
    ip link set dev eth0.1 up
~]# ip link add link eth0 name eth0.2 type vlan id 2
    ip link set dev eth0.2 up
物理デバイスでネットワークスニファーを実行すると、eth0 に VLAN デバイスが設定されていなくても、物理デバイスに到達するタグ付きフレームをキャプチャーできます。以下に例を示します。
tcpdump -nnei eth0 -vvv

注記

ip コマンドを使って作成された VLAN インターフェースは、システムが終了したり再起動すると失われます。システム再起動後も維持できるように VLAN インターフェースを設定するには、ifcfg ファイルを使用します。「ifcfg ファイルを使用した 802.1q VLAN タグの設定」を参照してください。

10.5. GUI を使用した 802.1Q VLAN タグの設定

10.5.1. VLAN 接続の確立

nm-connection-editor を使用して、既存のインターフェースを親インターフェースとして使い VLAN を作成できます。VLAN デバイスが自動的に作成されるのは、親インターフェースが自動的に接続するよう設定されている場合のみであることに注意してください。

手順10.1 nm-connection-editor を使用して新規 VLAN 接続を追加する

  1. ターミナルで nm-connection-editor と入力します。
    ~]$ nm-connection-editor
  2. 追加 ボタンをクリックします。接続の種類の選択 ウィンドウが表示されます。VLAN を選択して 作成 をクリックします。VLAN 接続 1 の編集 ウィンドウが表示されます。
  3. VLAN タブで、VLAN 接続に使用する親インターフェースをドロップダウンリストから選びます。
  4. VLAN ID を入力します。
  5. VLAN インターフェース名を入力します。これは、作成される VLAN インターフェースの名前です。たとえば、eth0.1vlan2 などです。(通常、この名前は親インターフェース名に.と VLAN ID を加えたものか、vlanと VLAN ID を加えたものになります。)
  6. 設定を確認してから 保存 ボタンをクリックします。
  7. VLAN 固有の設定を編集するには、「VLAN タブの設定」を参照してください。
nm-connection-editor を使用して新規 VLAN 接続を追加する

図10.3 nm-connection-editor を使用して新規 VLAN 接続を追加する

手順10.2 既存の VLAN 接続を編集する

既存の VLAN 接続を編集するには以下の手順に従います。
  1. ターミナルで nm-connection-editor と入力します。
    ~]$ nm-connection-editor
  2. 編集する接続を選択して、編集 ボタンをクリックします。
  3. 全般 タブを選択します。
  4. 接続名、自動接続の動作、および可用性のセッティングを設定します。
    編集 ダイアログ内の以下の 3 つの設定はすべての接続の種類に共通です。
    • 接続名: ネットワーク接続の名前を入力します。この名前は Network ウィンドウメニューの VLAN セクションにある接続名一覧に表示されます。
    • Automatically connect to this network when it is available - このチェックボックスを選択すると、NetworkManager が利用可能なときにこの接続に自動接続します。詳細は「control-center を使用した既存の接続の編集」を参照してください。
    • Available to all users - このチェックボックスを選択すると、システムですべてのユーザーが利用できる接続が作成されます。この設定を変更するには root 権限が必要になる場合があります。詳細は「GUI を使用したシステム全体およびプライベート接続プロファイルの管理」を参照してください。
  5. VLAN 固有の設定を編集するには、「VLAN タブの設定」を参照してください。

新規 (または修正した) 接続を保存して他の設定を行う

VLAN 接続の編集が終わったら、保存 ボタンをクリックしてカスタマイズした設定を保存します。
そして、以下のいずれかの設定をします。

10.5.1.1. VLAN タブの設定

新規の VLAN 接続を追加している場合は (手順は手順10.1「nm-connection-editor を使用して新規 VLAN 接続を追加する」を参照)、VLAN タブを編集して、親インターフェースと VLAN ID を設定できます。
親インターフェース
ドロップダウンリストから以前に設定したインターフェースを選択できます。
VLAN ID
VLAN ネットワークのトラフィックのタグ付けに使用する ID 番号。
VLAN インターフェース名
作成される VLAN インターフェースの名前。たとえば、eth0.1vlan2 など。
クローンした MAC アドレス
VLAN インターフェースの特定に使用する別の MAC アドレスをオプションで設定します。このアドレスを使って、この VLAN 上で送信されたパケットのソース MAC アドレスを変更できます。
MTU
VLAN 接続で送信されるパケットに使用する最大転送単位 (MTU) のサイズをオプションで設定します。

10.6. ip コマンドを使用したボンドおよびブリッジ上での VLAN の使用

ボンドおよびブリッジ上で VLAN を使用するには、以下の手順を実施します。
  1. root でボンドデバイスを追加します。
    # ip link add bond0 type bond
    # ip link set bond0 type bond miimon 100 mode active-backup
    # ip link set em1 down
    # ip link set em1 master bond0
    # ip link set em2 down
    # ip link set em2 master bond0
    # ip link set bond0 up
  2. ボンドデバイス上に VLAN を設定します。
    # ip link add link bond0 name bond0.2 type vlan id 2
    # ip link set bond0.2 up
  3. ブリッジデバイスを追加し、そこに VLAN をアタッチします。
    # ip link add br0 type bridge
    # ip link set bond0.2 master br0
    # ip link set br0 up

10.7. NetworkManager のコマンドラインツール nmcli の使用した、ボンドおよびブリッジの VLAN

ボンドおよびブリッジ上で VLAN を使用するには、以下の手順を実施します。
  1. ボンドデバイスを追加します。
    ~]$ nmcli connection add type bond con-name Bond0 ifname bond0 bond.options "mode=active-backup,miimon=100" ipv4.method disabled ipv6.method ignore
    この場合、ボンド接続は、VLAN の「下位インターフェース」としてのみ機能し、IP アドレスを取得しません。そのため、ipv4.method disabled パラメーターおよび ipv6.method ignore パラメーターがコマンドラインに追加されています。
  2. ボンドデバイスにスレーブを追加します。
    ~]$ nmcli connection add type ethernet con-name Slave1 ifname em1 master bond0 slave-type bond
    ~]$ nmcli connection add type ethernet con-name Slave2 ifname em2 master bond0 slave-type bond
  3. ブリッジデバイスを追加します。
    ~]$ nmcli connection add type bridge con-name Bridge0 ifname br0 ip4 192.0.2.1/24
  4. ブリッジデバイスにスレーブ化されたボンドに、VLAN インターフェースを追加します。
    ~]$ nmcli connection add type vlan con-name Vlan2 ifname bond0.2 dev bond0 id 2 master br0 slave-type bridge
  5. 作成した接続を表示します。
    ~]$ nmcli connection show
     NAME     UUID                                  TYPE            DEVICE
     Bond0    f05806fa-72c3-4803-8743-2377f0c10bed  bond            bond0
     Bridge0  22d3c0de-d79a-4779-80eb-10718c2bed61  bridge          br0
     Slave1   e59e13cb-d749-4df2-aee6-de3bfaec698c  802-3-ethernet  em1
     Slave2   25361a76-6b3c-4ae5-9073-005be5ab8b1c  802-3-ethernet  em2
     Vlan2    e2333426-eea4-4f5d-a589-336f032ec822  vlan            bond0.2

10.8. VLAN スイッチポートモードの設定

Red Hat Enterprise Linux マシンは、多くの場合はルーターとして使用され、ネットワークインターフェースで高度な VLAN 設定を可能にします。イーサネットインターフェースがスイッチに接続し、物理インターフェースで VLAN が実行している場合は、switchport mode を設定する必要があります。Red Hat Enterprise Linux サーバーまたはワークステーションは、通常は 1 つの VLAN にのみ接続されているため、スイッチポートモードアクセス とデフォルト設定が適しています。
特定のシナリオでは、複数のタグ付き VLAN が同じ物理リンク、つまり、スイッチと Red Hat Enterprise Linux マシンとの間のイーサネットを使用するため、両端で switchport mode trunk を設定する必要があります。
たとえば、Red Hat Enterprise Linux マシンをルーターとして使用する場合、マシンは、同じ物理イーサーネットを介して、ルーターの背後にあるさまざまな VLAN からスイッチに、タグ付きパケットを転送し、その VLAN 間の分離を維持する必要があります。
たとえば、「コマンドラインツール nmcli を使った 802.1Q VLAN タグの設定」 で説明されている設定では、Cisco の スイッチポートモードトランク を使用します。インターフェースに IP アドレスのみを設定する場合は、Cisco の スイッチポートモードアクセス を使用してください。

10.9. 関連資料

  • ip-link(8) の man ページ - ip ユーティリティーのネットワークデバイス設定コマンドが説明されています。
  • nmcli(1) の man ページ - NetworkManager のコマンドラインツールが説明されています。
  • nmcli-examples(5) の man ページ - nmcli コマンドの例を提供しています。
  • nm-settings(5) の man ページ - NetworkManager 接続の設定およびパラメーターが説明されています。
  • nm-settings-ifcfg-rh(5) の man ページ - /etc/sysconfig/network-scripts/ifcfg-* ファイルの ifcfg-rh 設定が説明されています。

第11章 ネットワークデバイス命名における一貫性

Red Hat Enterprise Linux では、ネットワークインターフェース用に一貫した予想可能なネットワークデバイスの命名方法を提供しています。この機能では、インターフェースの位置判定と区別が容易になるようにシステム上のネットワークインターフェース名を変更します。
従来の Linux のネットワークインターフェースには eth[0123…] などの数値が付けられました。しかし、これらの名前は必ずしもシャーシー上の実際のラベルと一致していません。複数のネットワークアダプターを持つ最近のサーバープラットフォームは、これらのインターフェースについて非断定的かつ非直感的な命名に遭遇する可能性があります。これは、マザーボードに組み込まれたネットワークアダプター (Lan-on-Motherboard または LOM) とアドイン (シングルおよびマルチのポート) アダプターの両方に影響します。
Red Hat Enterprise Linux では、udev が多くの異なる命名スキームをサポートしています。デフォルトでは、ファームウェア、トポロジー、および場所情報に基づいて固定名が割り当てられます。これには、名前が完全に自動的かつ予想可能であり、ハードウェアが追加もしくは削除されても (再列挙がなされず) 固定のままであり、またハードウェアが壊れた場合にシームレスに交代可能であるという利点があります。マイナス面は、従来使用されていた eth0wlan0 といった名前と比べて読みにくい場合があるという点です。たとえば、enp5s0 などの場合です。

警告

システムが ethX のような名前を使用することを許可してしまうので、一貫性のあるネットワークデバイス命名方法を無効にしないでください。ここで X は特定のインターフェースに対応する一意の数字ですが、起動プロセス中に別のネットワークインターフェース名になる場合があります。詳細は、「ネットワークデバイス命名におけるトラブルシューティング」を参照してください。

11.1. 命名スキームの序列

デフォルトでは、systemd が以下のポリシーを使用してサポート対象の命名スキームを適用し、インターフェースに命名します。
  • スキーム 1 - ファームウェアや BIOS がオンボードデバイスについて提供する索引番号を組み入れた名前 (例: eno1) は、ファームウェアや BIOS からの情報が適用可能で利用可能な場合は、これが適用されます。そうでない場合は、スキーム 2 にフォールバックします。
  • スキーム 2 - ファームウェアや BIOS が提供している PCI Express ホットプラグスロットの索引番号を組み込んだ名前 (例: ens1) は、ファームウェアや BIOS からの情報が適用可能で利用可能な場合は、これが適用されます。そうでない場合は、スキーム 3 にフォールバックします。
  • スキーム 3 - ハードウェアのコネクターの物理的場所を組み込んだ名前 (例: enp2s0) は、これが適用可能な場合は、適用されます。そうでない場合は、スキーム 5 にフォールバックします。
  • スキーム 4 - インターフェースの MAC アドレスを組み込んだ名前 (例: enx78e7d1ea46da) はデフォルトでは使用されませんが、ユーザーが選択すれば適用可能です。
  • スキーム 5: 従来型の予測不可能なカーネル命名スキーム (例: eth0) は、他のすべての方法が失敗した場合に使用されます。
上記のポリシーがデフォルトになります。システムで biosdevname が有効になっている場合、これが使用されます。Dell システム以外では、biosdevname を有効にするために biosdevname=1 をカーネルコマンドラインのパラメーターとして渡す必要があります。Dell システムでは、biosdevname がインストールされていれば、これがデフォルトで使用されます。カーネルデバイス名を変更する udev ルールをユーザーが追加している場合、このルールが優先されます。

11.2. デバイスの名前変更ステップについて

デバイス命名の詳細なステップは以下のとおりです。
  1. /usr/lib/udev/rules.d/60-net.rules 内のルールが、udev ヘルパーユーティリティーである /lib/udev/rename_device にすべての /etc/sysconfig/network-scripts/ifcfg-suffix ファイルを検索するよう指示します。インスタンスの MAC アドレスに合致する HWADDR のある ifcfg ファイルが見つかると、ifcfg ファイルの DEVICE ディレクティブで与えられている名前にインターフェースの名前を変更します。
  2. インターフェースの名前が上記のステップで変更されておらず、biosdevname がインストールされていて biosdevname=0 がブートコマンドライン上でカーネルコマンドとして与えられていない場合、/usr/lib/udev/rules.d/71-biosdevname.rules 内のルールが biosdevname にインターフェースの名前を命名ポリシーに従って変更するよう指示します。
  3. /lib/udev/rules.d/75-net-description.rules 内のルールが udev に、ネットワークインターフェースデバイスを調べて内部 udev デバイスのプロパティー値である ID_NET_NAME_ONBOARD、ID_NET_NAME_SLOT、ID_NET_NAME_PATH、ID_NET_NAME_MAC を満たすよう指示します。
  4. 上記のステップ 1 および 2 で名前が変更されておらず、カーネルパラメーター net.ifnames=0 が与えられていない場合、/usr/lib/udev/rules.d/80-net-name-slot.rules 内のルールが udev に、ID_NET_NAME_ONBOARD、ID_NET_NAME_SLOT、ID_NET_NAME_PATH の各優先度に従ってインターフェースの名前を変更するよう指示します。ひとつ目が設定されていない場合、リストの次にあるものが適用されます。いずれのものも設定されていない場合は、インターフェースの名前は変更されません。
ステップ 3 と 4 は、「命名スキームの序列」にある命名スキーム 1、2、3 とオプションでスキーム 4 を実行しています。ステップ 2 については、「biosdevname を使用した一貫性のあるネットワークデバイスの命名」でより詳細に説明しています。

11.3. 予想可能なネットワークインターフェースデバイスの命名について

名前には、インターフェースのタイプに応じた 2 文字の接頭辞が付けられます。
  1. en はイーサネット
  2. wl はワイヤレス LAN (WLAN)
  3. ww はワイヤレス広域ネットワーク (WWAN)
名前には、以下のタイプがあります。
o<index>
オンボードデバイスの索引番号
s<slot>[f<function>][d<dev_id>]
ホットプラグスロットの索引番号: 複数機能の PCI デバイスの名前にはすべて、[f<function>] 番号が含まれます。これには、機能 0 デバイスが含まれます。
x<MAC>
MAC アドレス
[P<domain>]p<bus>s<slot>[f<function>][d<dev_id>]
PCI の地理的な場所: PCI の地理的な場所では、値が 0 でない場合に限り、[P<domain>] が参照されます。以下に例を示します。
ID_NET_NAME_PATH=P1enp5s0
[P<domain>]p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>]
USB ポート番号のチェーン: USB デバイスの場合、ハブのポート番号の完全なチェーンで構成されます。名前が最大文字数の 15 を超えた場合は、エクスポートされません。チェーンに複数の USB デバイスがある場合は、USB 設定記述子のデフォルト値 (c1) および USB インターフェース記述子のデフォルト値 (i0) は無視されます。

11.4. System z 上の Linux で利用可能なネットワークデバイスの命名スキーム

System z 上の Linux インスタンス内のネットワークインターフェースに予測可能なデバイス名を作成するには、bus-ID 識別子を使用します。bus-ID は、s390 チャンネルサブシステム内でデバイスを特定します。bus ID は、Linux インスタンスのスコープ内でデバイスを特定します。CCW デバイスの場合、bus ID はデバイスのデバイス番号の始めに 0.n を付けたものになります。ここでの n は、サブチャンネル設定 IDになります。たとえば、0.1.0ab1 です。
デバイスタイプがイーサネットのネットワークインターフェースは、以下のように命名されます。
enccw0.0.1234
デバイスタイプが SLIP の CTC ネットワークデバイスは、以下のように命名されます。
slccw0.0.1234
利用可能なネットワークデバイスと、その bus-ID を表示するには、znetconf -c コマンドまたは lscss -a コマンドを使用します。

表11.1 System z 上の Linux のデバイス名タイプ

形式説明
enccwbus-IDデバイスタイプがイーサネット
slccwbus-IDデバイスタイプが SLIP の CTC ネットワークデバイス

11.5. VLAN インターフェースの命名スキーム

従来は、VLAN インターフェース名には interface-name.VLAN-ID という形式が使われていました。VLAN-ID の範囲は 0 から 4096 までで最大 4 文字となり、インターフェース全体の名前は最大 15 文字までです。インターフェース名の最大の長さはカーネルヘッダーで定義され、グローバルにすべてのアプリケーションに適用されます。
Red Hat Enterprise Linux 7 では、4 つの命名規則が VLAN インターフェース名でサポートされています。
VLAN に VLAN ID を追加
vlan という語に VLAN ID を追加します。例: vlan0005
VLAN にパディングなしの VLAN ID を追加
vlan という語に VLAN ID (先頭にゼロを付けない) を追加します。例: vlan5
デバイス名に VLAN ID を追加
親インターフェース名に VLAN ID を追加します。例: eth0.0005
デバイス名パディングなしの VLAN ID を追加
親インターフェース名に VLAN ID を追加 (先頭にゼロを付けない) します。例: eth0.5

11.6. biosdevname を使用した一貫性のあるネットワークデバイスの命名

biosdevname udev ヘルパーユーティリティーで実装されるこの機能は、組み込み型ネットワークインターフェース、PCI カードネットワークインターフェース、および仮想機能ネットワークインターフェースの名前をすべて、既存の eth[0123…] から 表11.2「biosdevname の命名規則」に記載の新たな命名規則に変更します。システムが Dell システムか、「機能の有効化および無効化」にあるように biosdevname が明示的に有効となっている場合を除き、優先されるのは systemd 命名スキームであることに注意してください。

表11.2 biosdevname の命名規則

デバイス旧式の名前新しい名前
組み込み型ネットワークインターフェース (LOM)eth[0123…]em[1234…][a]
PCI カードネットワークインターフェースeth[0123…]p<slot>p<ethernet port>[b]
仮想機能eth[0123…]p<slot>p<ethernet port>_<virtual interface>[c]
[a] 新しい数値は 1 から始まります。
[b] 例: p3p4
[c] 例: p3p4_1

11.6.1. システム要件

biosdevname プログラムはシステムの BIOS からの情報、特に SMBIOS 内に収納されている type 9 (システムスロット) フィールドと type 41 (オンボードデバイス拡張情報) フィールドからの情報を使用します。システムの BIOS に SMBIOS のバージョン 2.6 もしくはそれ以降がなければ、新しい命名規則は使用されません。ほとんどの旧型のハードウェアは、必要な SMBIOS バージョンとフィールド情報がある BIOS を欠いているため、この機能をサポートしていません。BIOS または SMBIOS バージョンの詳細については、ご使用のハードウェアの製造元にご連絡ください。
この機能を有効にするには、biosdevname パッケージがインストール済みである必要があります。これをインストールするには、root で以下のコマンドを実行します。
~]# yum install biosdevname

11.6.2. 機能の有効化および無効化

この機能を無効にするには、インストール中およびインストール後の両方で、以下のオプションをブートコマンドラインに渡します。
biosdevname=0
この機能を有効にするには、インストール中およびインストール後の両方で、以下のオプションをブートコマンドラインに渡します。
biosdevname=1
システムが最低要件を満たさない場合は、このオプションは無視され、システムは本章の始めに記載されている systemd 命名スキームを使用します。
biosdevname インストールオプションが指定されている場合、システムの有効期間中にブートオプションとして留まる必要があります。

11.7. 管理者向け注意点

多くのシステムカスタム化ファイルにはネットワークインターフェース名が含まれている場合があるため、システムで以前の規則から新しい規則に移行する場合は更新する必要があります。新しい命名規則を使用する場合は、カスタムの iptables ルール、スクリプト変更 irqbalance、およびその他の同様の設定ファイルでもネットワークインターフェース名を更新する必要があります。また、インストール用にこの変更を有効にすると、ksdevice パラメータ経由でデバイス名を使用する既存の kickstart ファイルの変更も必要になります。これらの kickstart ファイルは、ネットワークデバイスの MAC アドレスまたはネットワークデバイスの新しい名前を使用するために更新が必要になります。

注記

インターフェース名の最大の長さはカーネルヘッダーによって定義され、これにはグローバル制限があり、すべてのアプリケーションに影響します。

11.8. ネットワークデバイス名の選択に関する制御

デバイスの命名は、以下の方法で制御できます。
ネットワークインターフェースデバイスの特定
HWADDR ディレクティブを使って ifcfg ファイル内で MAC アドレスを設定すると、udev がこれを特定できるようになります。名前は DEVICE ディレクティブが提供する文字列から取られ、これは規則で ifcfg 接尾辞と同じになります。たとえば、ifcfg-eth0 となります。
biosdevname の有効化または無効化
biosdevname が提供する名前を使用します (biosdevname が名前を決定できる場合)。
systemd-udev 命名スキームの有効かまたは無効化
systemd-udev が提供する名前を使用します (systemd-udev が名前を決定できる場合)。

11.9. ネットワークデバイス命名における一貫性の無効化

一貫性のあるネットワークデバイス命名方法を無効にすることは、特定の状況以外では推奨されません。詳細は、11章ネットワークデバイス命名における一貫性および「ネットワークデバイス命名におけるトラブルシューティング」を参照してください。
一貫性のあるネットワークデバイスの命名を無効にするには、以下のいずれかを選択します。
  • デフォルトポリシー用の udev のルールファイルを「マスク化する」ことで、固定名の割り当てを無効にします。そのためには、/dev/null へのシンボリックリンクを作成します。これにより、予測不可能なカーネル名が使用されます。root で以下のコマンドを入力します。
    ~]# ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules
  • 独自の手動の命名スキームを作成します。たとえば、インターフェースを internet0dmz0、または lan0 と命名します。そのためには、独自の udev ルールファイルを作成し、デバイス用に NAME プロパティーを設定します。新しいファイルがデフォルトのポリシーファイルの上に来るようにします。たとえば、これを /etc/udev/rules.d/70-my-net-names.rules という名前にします。
  • 別の命名スキームを使用するようにデフォルトのポリシーファイルを変更します。たとえば、デフォルトで MAC アドレスをすべてのインターフェース名に使用するなどとします。root で以下のようにデフォルトのポリシーファイルをコピーします。
    ~]# cp /usr/lib/udev/rules.d/80-net-name-slot.rules /etc/udev/rules.d/80-net-name-slot.rules
    /etc/udev/rules.d/ ディレクトリーにあるこのファイルを必要に応じて変更します。
  • /etc/default/grub/ ファイルを開き、GRUB_CMDLINE_LINUX 変数を探します。

    注記

    GRUB_CMDLINE_LINUX は、カーネルコマンドラインに追加されるエントリーを含む変数です。ご自分のシステム設定によっては、すでに追加の設定が含まれている場合があります。
    net.ifnames=0 および biosdevname=0 の両方をカーネルパラメーターの値として、GRUB_CMDLINE_LINUX 変数に追加します。
      ~]# cat /etc/default/grub
        GRUB_TIMEOUT=5
        GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
        GRUB_DEFAULT=saved
        GRUB_DISABLE_SUBMENU=true
        GRUB_TERMINAL_OUTPUT="console"
        GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel_7/swap rd.luks.uuid=luks-cc387312-6da6-469a-8e49-b40cd58ad67a crashkernel=auto  vconsole.keymap=us vconsole.font=latarcyrheb-sun16 rd.lvm.lv=rhel_7/root rhgb quiet net.ifnames=0 biosdevname=0"
        GRUB_DISABLE_RECOVERY="true"
    grub2-mkconfig コマンドを実行して、/boot/grub2/grub.cfg/ ファイルを再構築します。
      ~]# grub2-mkconfig -o /boot/grub2/grub.cfg/

    注記

    UEFI を使用してシステムを起動した場合:
    ~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
    現在のデバイス名を表示します (例: eno1)。
    ~]# nmcli connection show
    NAME   UUID                                  TYPE            DEVICE
    Wired  63cba8b2-60f7-4317-bc80-949e800a23cb  802-3-ethernet  eno1
    デバイス名を eth0 に変更して、システムを再起動します。
    ~]# nmcli connection modify Wired connection.interface-name eth0
    ~]# reboot
    grub ブートローダーの設定ファイルに関する情報を更新および表示するには、grubby ユーティリティーが使用されます。詳細は、grubby(8) man ページを参照してください。GRUB 2 での作業に関する詳細情報は、Red Hat Enterprise Linux システム管理者のガイドを参照してください。

11.10. ネットワークデバイス命名におけるトラブルシューティング

「デバイスの名前変更ステップについて」にあるように、適用可能な場合は、予測可能なインターフェース名が各インターフェースに割り当てられます。udev が使用する名前を一覧表示するには、root で以下の形式のコマンドを実行します。
~]# udevadm info /sys/class/net/ifname | grep ID_NET_NAME
ここでの ifname は、以下のコマンドで一覧を表示されるインターフェースのいずれかになります。
~]$ ls /sys/class/net/
「デバイスの名前変更ステップについて」にあるルールに従って、udev が使用可能な名前のいずれかを適用します。ルールを以下に要約します。
  • /usr/lib/udev/rules.d/60-net.rules - from initscripts,
  • /usr/lib/udev/rules.d/71-biosdevname.rules - from biosdevname,
  • /usr/lib/udev/rules.d/80-net-name-slot.rules - from systemd
上記のルールファイルの一覧を見ると、インターフェースの命名が initscript もしくは biosdevname 経由で行われると、常に udev のネイティブ命名よりも優先されることが分かります。ただし、initscript による名前変更が行われない場合、または biosdevname が無効となっている場合にインターフェース名を変更するには、80-net-name-slot.rules/usr から /etc にコピーして、このファイルを適切に編集することになります。つまり、特定の順番で使用されるようにスキームをコメントアウトまたは配置します。

例11.1 カーネルネームスペースから命名されているインターフェース (eth[0,1,2...]) と udev が正常に名前を変更したインターフェースが混在している場合

スキームが混在しているのは、ハードウェアのなかにはカーネルが udev に提供する情報で使用可能なものがないため命名できないか、udev に提供された情報が非一意のデバイス ID などのように適切でない場合のことが考えられます。後者の方が可能性が高く、この場合の解決法は、ifcfg ファイルでカスタマイズ命名スキームを使用するか、80-net-name-slot.rules を編集して使用される udev スキームを変更します。

例11.2 /var/log/messages または systemd ジャーナルで、各インターフェースの名前変更が 2 回実行されている場合

命名スキームがあるシステムで、ifcfg ファイルでエンコードされているにも関わらず、initrd イメージを再生成していない場合は、この問題が発生する可能性があります。インターフェース名は、初期ブート時、initrd にある間に、 (biosdevnameudev、またはカーネルコマンドライン上の dracut パラメーター経由で) 割り当てられます。そして実際の rootfs に切り替わった後、2 回目の名前変更が行われ、60-net.rules を処理するため、udev が生成する /usr/lib/udev/rename_device バイナリーにより新規インターフェース名が決定します。このメッセージは無視しても問題ありません。

例11.3 ifcfg ファイル内の ethX 名の命名スキームが機能しない場合

Red Hat Enterprise Linux 7 では、非常に特殊な状況を除き、一貫性のある ethX 命名規則を適用することはできません。
udev ルールはインターフェースに特定の名前を設定するので、指定した名前がすでに他のインターフェースで使用されている場合、設定に失敗します。これには、/usr/lib/udev/rules.d/60-net.rules ファイルで提供される機能が含まれます。
起動時にカーネルがすべてのネットワークデバイスを把握する際には、ethX 命名規則が使われます。ethx 名は再起動ごとに変わるので、予測が不可能です。したがって、udev を使用してインターフェース名を ethX 名に変更しようとしたり、カーネルにより与えられる予測が不可能な ethx 名の順序を変えようとした場合には、処理に失敗します。
以下の状況では、ethX 名の使用が正常に機能します。
  • システムにネットワークインターフェースが 1 つしかない。
  • Red Hat Enterprise Linux 7 ゲスト仮想マシンの virtio NIC に使われた場合。『仮想化の導入および管理ガイド』の「KVM 準仮想化 (virtio) ドライバー」および「ネットワーク設定」の章を参照してください。

例11.4 net.ifnames=0 を設定した結果 ethX 名に一貫性がない場合

systemd による予測可能インターフェース命名 (net.ifnames) および biosdevname による命名スキームの両方が無効な場合、ネットワークインターフェースは初めにカーネルにより与えられた予測が不可能で一貫性が維持できない可能性のある ethX 名を使い続けます。
起動時にカーネルがすべてのネットワークデバイスを把握する際には、必ず ethX 命名規則が使われます。並列処理が行われるため、カーネルがすべてのインターフェースを把握する順番は、再起動ごとに変わる可能性があります。Red Hat Enterprise Linux では、systemd による予測可能なインターフェース命名スキームまたは biosdevname による命名スキームのどちらかを使って、カーネルにより与えられた予測が不可能な ethX インターフェースを、再起動後にも一貫性が維持できる予測可能な名前に変更します。
ネットワークアダプターの命名規則の詳細は、Red Hat カスタマーポータルでナレッジセンターサポートの記事「RHEL7 で net.ifnames=0 を設定しても安全ですか?」を参照してください。

11.11. 関連資料

インストールされているドキュメント

  • udev(7) man ページ - Linux の動的デバイス管理デーモン udevd を説明しています。
  • systemd(1) man ページ - systemd システムおよびサービスマネジャーを説明しています。
  • biosdevname(1) man ページ - BIOS 提供のデバイス名を獲得するユーティリティーについて説明しています。

オンラインのドキュメント

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

このパートでは、RDMA、InfiniBand、および InfiniBand 上での IP ネットワーク接続の設定を説明します。

第12章 InfiniBand および RDMA ネットワークの設定

12.1. InfiniBand および RDMA のテクノロジーについて

InfiniBand とは、2 つの全く異なることを指します。1 つ目は、InfiniBand ネットワーク用の物理的リンク層プロトコルです。2 つ目は、InfiniBand Verbs API と呼ばれる高レベルのプログラミング API です。InfiniBand Verbs API は、remote direct memory access (RDMA) テクノロジーの実装になります。
RDMA は、いずれのコンピューターのオペレーティングシステムを呼び出さずに、あるコンピューターのメモリーから、別のコンピューターのメモリーへの直接アクセスします。この技術により、CPU の使用量が低いまま、スループットが高く、レイテンシーが低いネットワークが可能になります。これは、並行のコンピューターのクラスターが大量にある場合に特に役に立ちます。
通常の IP データ送信では、マシン A 上のアプリケーション X が、マシン B 上のアプリケーション Y にデータを送信します。この送信時に、マシン B 上のカーネルが最初にデータを受信し、パケットヘッダーを解読し、データがアプリケーション Y に属することを確認し、アプリケーション Y を起動し、アプリケーション Y がカーネルへのシステムコールの読み込みを実行するのを待ちます。そして、カーネルは、カーネルにある内部メモリー領域から、アプリケーション Y が提供するバッファーに、手動でデータをコピーする必要があります。つまり、このプロセスでは、ほとんどのネットワークトラフィックは、システムのメインメモリーバスで、コピーが少なくとも 2 回 (ホストアダプターが DMA を使用して、カーネルが提供するメモリーバッファーにデータをコピーし、カーネルが、アプリケーションのメモリーバッファーにデータをコピーする) 行われます。また、このプロセスでは、コンピューターが、カーネルコンテキストとアプリケーション Y のコンテキストを切り替えるため、コンテキストを何度も切り替える必要があります。このため、ネットワークトラフィックが高速で流れている場合は、システムにかかる CPU 負荷が非常に高くなり、その他のタスクが遅くなる可能性があります。
RDMA 接続は、通常の IP 接続とは異なります。通信プロセスでのカーネルの介入が回避され、その過程でネットワーク接続の処理に通常必要な CPU のオーバーヘッドが大幅に削減するためです。RDMA プロトコルを使用すると、ネットワークからいつパケットが届くか、そのパケットをどのアプリケーションが受信すべきか、アプリケーションのメモリースペースのどこにそのパケットが送られるべきかを、マシン内のホストアダプターが判別できます。パケットをカーネルに送信して処理を行い、それからユーザーのアプリケーションメモリーにコピーする代わりに、パケットのコンテンツを直接アプリケーションのバッファーに配置すると、その他の介入は不要になります。ただし、これは、ほとんどの IP ネットワークアプリケーションの基礎となっている標準 Berkeley Sockets API を使うと実行できません。このため、独自の API である InfiniBand Verbs API を提供し、アプリケーションをこの API に移植した後に、RDMA テクノロジーを直接使用できるようになります。
Red Hat Enterprise Linux 7 は、InfiniBand ハードウェアおよび InfiniBand Verbs API の両方をサポートします。さらには、InfiniBand Verbs API を、InfiniBand 以外のハードウェアで使用できるようにする追加技術もあります。
  • Internet Wide Area RDMA Protocol (iWARP)
    iWARP は、インターネットプロトコル (IP) ネットワークでの効果的なデータ転送に対してリモートダイレクトメモリーアクセス (RDMA) を実装するコンピューターのネットワークプロトコルです。
  • RoCE (RDMA over Converged Ethernet) プロトコル (後に IBoE (InfiniBand over Ethernet) に名前が変更)
    RoCE は、イーサネットネットワークでリモートダイレクトメモリーアクセス (RDMA) を許可するネットワークプロトコルです。

前提条件

iWARP と RoCE の技術は、ともに通常の IP ネットワークリンク層を基盤技術としており、その設定の大半は3章IP ネットワークの設定で説明しています。ほとんどの場合、IP ネットワーク機能が適切に設定され、対象ハードウェアの適切なドライバーがインストールされていれば、RDMA 機能はすべて自動で現れます。カーネルドライバーは、常に Red Hat が提供する各カーネルに含まれていますが、マシンのインストール時に InfiniBand パッケージグループが選択されなかった場合は、ユーザー領域ドライバーを手動でインストールする必要があります。
Red Hat Enterprise Linux 7.4 以降、すべての RDMA ユーザー領域ドライバーは rdma-core パッケージに統合されました。サポートされる iWARP、RoCE、または InfiniBand ユーザー領域ドライバーをすべてインストールする場合は、root で以下のコマンドを実行します。
~]# yum install libibverbs
Priority Flow Control (PFC) および mlx4 ベースのカードを使用している場合は、/etc/modprobe.d/mlx4.conf を編集して、そのカードがプラグインしたイーサネットスイッチ上の no-drop サービスに設定するパケットの優先順位をドライバーに指示し、修正したファイルを追加するために initramfs を再構築します。新しい mlx5 ベースのカードは、スイッチと PFC 設定を自動ネゴシエートし、no-drop 優先度を通知するモジュールオプションは必要としません。
Mellanox カードを設定して、イーサネットモードでポートのいずれかまたは両方を使用するには、「Mellanox カードのイーサネット用の設定」を参照してください。
(InfiniBand インストールで通常はインストールされる RDMA パッケージに加えて) これらのドライバーパッケージがインストールされれば、ユーザーは通常の RDMA アプリケーションの大半を利用して、アダプターで RDMA プロトコル通信が行われていることをテスト、確認できます。ただし、Red Hat Enterprise Linux 7 に含まれているすべてのプログラムが適切に iWARP や RoCE/IBoE デバイスをサポートするわけではありません。これは特に、iWARP 上の接続確立プロトコルが実際の InfiniBand リンク層接続とは異なるためです。問題のプログラムが librdmacm 接続管理ライブラリーを使用している場合、iWARP と InfiniBand の違いは表示されずに処理され、プログラムは機能します。アプリケーションが独自の接続管理を実行しようとすると、iWARP を明確にサポートする必要があり、これが行われない場合は機能しません。

12.2. RoCE を使用したデータ転送

RoCE (RDMA over Converged Ethernet) は、イーサネットネットワークでリモートダイレクトメモリーアクセス (RDMA) を有効にするネットワークプロトコルです。RoCE には 2 つのバージョン (RoCE v1 および RoCE v2) があり、使用されるネットワークアダプターにより異なります。

RoCE v1
RoCE v1 プロトコルは、同じイーサネットブロードキャストドメインにある 2 つのホスト間の通信を可能にするイーサー型 0x8915 を持つイーサネットリンク層プロトコルになります。RoCE v1 は、ConnectX-3 ネットワークアダプターを使用する場合の RDMA Connection Manager (RDMA_CM) のデフォルトバージョンです。
RoCE v2
RoCE v2 プロトコルは、UDP over IPv4 または UDP over IPv6 プロトコルに存在します。UDP 宛先ポート番号の 4791 は、RoCE v2 に予約されています。Red Hat Enterprise Linux 7.5 以降、RoCE v2 は、ネットワークアダプター ConnectX-3 Pro、ConnectX-4、ConnectX-4 Lx、および ConnectX-5 を使用する場合は、RDMA_CM のデフォルトバージョンです。ハードウェアは、RoCE v1 および RoCE v2 をサポートします。
RDMA Connection Manager (RDMA_CM) は、データを転送するために、クライアントとサーバーとの間の信頼できる接続を設定するために使用されます。RDMA_CM は、接続を確立するために、RDMA トランスポートニュートラルインターフェースを提供します。通信は、特定の RDMA デバイスで行われ、データ転送はメッセージベースとなります。

前提条件

RDMA_CM セッションには、以下のいずれかが必要です。
  • クライアントおよびサーバーで、同じ RoCE モードをサポートします。
  • クライアントは RoCE v1 をサポートし、サーバーは RoCE v2 をサポートします。
クライアントが接続のモードを決定するため、次のような状況が考えられます。
成功した接続:
クライアントが、使用されるネットワークカードおよびドライバーに従って、RoCE v1 モードまたは RoCE v2 モードにある場合、対応するサーバーは同じバージョンを使用して接続を作成する必要があります。また、接続は、クライアントが RoCE v1 モードで、サーバーが RoCE v2 モードの場合に限り成功します。
失敗した接続:
クライアントが RoCE v2 にあり、対応するサーバーが RoCE v1 の場合は、接続は確立されません。この場合は、対応するサーバーのドライバーまたはネットワークアダプターを更新します。「RoCE を使用したデータ転送」を参照してください。

表12.1 RDMA_CM を使用する RoCE バージョンのデフォルト

クライアントサーバーデフォルト設定
RoCE v1RoCE v1接続
RoCE v1RoCE v2接続
RoCE v2RoCE v2接続
RoCE v2RoCE v1接続なし
クライアントの RoCE v2 と、サーバーの RoCE v1 は互換性がありません。この問題を解決するには、サーバーとクライアントで、RoCE v1 で通信することを強制します。これは、RoCE v2 がサポートするハードウェアが RoCE v1 を使用するように強制することを意味します。

手順12.1 ハードウェアがすでに Roce v2 で実行している場合にデフォルトの RoCE モードへの変更

  1. RoCE モードに設定するために、/sys/kernel/config/rdma_cm ディレクトリーに変更します。
    ~]# cd /sys/kernel/config/rdma_cm
  2. イーサネットネットワークデバイスで ibstat コマンドを実行すると、ステータスが表示されます。たとえば、mlx5_0 の場合は以下のようになります。
    ~]$ ibstat mlx5_0
        CA 'mlx5_0'
            CA type: MT4115
            Number of ports: 1
            Firmware version: 12.17.1010
            Hardware version: 0
            Node GUID: 0x248a0703004bf0a4
            System image GUID: 0x248a0703004bf0a4
            Port 1:
                State: Active
                Physical state: LinkUp
                Rate: 40
                Base lid: 0
                LMC: 0
                SM lid: 0
                Capability mask: 0x04010000
                Port GUID: 0x268a07fffe4bf0a4
                Link layer: Ethernet
  3. mlx5_0 デバイスにディレクトリーを作成します。
    ~]# mkdir mlx5_0
  4. ツリー形式で、default_roce_mode ファイルの RoCE モードを表示します。
    ~]# cd mlx5_0
    ~]$ tree
    └── ports
        └── 1
            ├── default_roce_mode
            └── default_roce_tos
    ~]$ cat /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode
        RoCE v2
  5. デフォルトの RoCE モードを変更します。
    ~]# echo "RoCE v1" > /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode
  6. 変更を表示します。
    ~]$ cat /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode
        RoCE v1

12.3. Soft-RoCE の設定

RoCE は、ハードウェアおよびソフトウェアに実装できます。Soft-RoCE は、RDMA トランスポートのソフトウェア実装です。

前提条件

Red Hat Enterprise Linux 7.4 以降、Soft-RoCE ドライバーはカーネルに統合されました。ユーザー領域のドライバーも rdma-core パッケージに統合されました。Soft-RoCE は RXE としても知られています。RXE を起動、停止、および設定するには、rxe_cfg スクリプトを使用します。rxe_cfg のオプションを表示するには、rxe_cfg help を実行します。

手順12.2 Soft-RoCE の設定

  1. root で以下のコマンドを実行して、RXE の現在の設定ステータスを表示します。
    ~]# rxe_cfg
      rdma_rxe module not loaded
      Name        Link  Driver   Speed   NMTU  IPv4_addr  RDEV  RMTU
      igb_1       yes   igb
      mlx4_1      no    mlx4_en
      mlx4_2      no    mlx4_en
  2. RXE カーネルモジュールを読み込み、RXE を起動するには、root で次のコマンドを実行します。
    ~]# rxe_cfg start
      Name        Link  Driver   Speed   NMTU  IPv4_addr  RDEV  RMTU
      igb_1       yes   igb
      mlx4_1      no    mlx4_en
      mlx4_2      no    mlx4_en
    必要に応じて、RXE カーネルモジュールが読み込まれていることを確認するには、以下を実行します。
    ~]# lsmod |grep rdma_rxe
      rdma_rxe              111129  0
      ip6_udp_tunnel         12755  1 rdma_rxe
      udp_tunnel             14423  1 rdma_rxe
      ib_core               236827  15 rdma_cm,ib_cm,iw_cm,rpcrdma,mlx4_ib,ib_srp,ib_ucm,ib_iser,ib_srpt,ib_umad,ib_uverbs,rdma_rxe,rdma_ucm,ib_ipoib,ib_isert
  3. イーサーネットインターフェースに新しい RXE デバイスを追加する前に、対応するインターフェースを開いて、有効な IP アドレスを割り当てます。新しい RXE デバイス (たとえば igb_1) を追加するには、以下のコマンドを実行します。
    ~]# rxe_cfg add igb_1
    ~]# rxe_cfg status
      Name        Link  Driver   Speed   NMTU  IPv4_addr  RDEV  RMTU
      igb_1       yes   igb                               rxe0  1024  (3)
      mlx4_1      no    mlx4_en
      mlx4_2      no    mlx4_en
    RDEV 列の rxe0 は、igb_1 デバイスで rxe が有効であることを示しています。
  4. RXE デバイスのステータスを確認するには、ibv_devices コマンドを使用します。
    ~]# ibv_devices
      device                 node GUID
      ------              ----------------
      mlx4_0              0002c90300b3cff0
      rxe0                a2369ffffe018294
    もしくは、詳細なステータスを表示するには、ibstat を実行します。
    ~]# ibstat rxe0
    CA 'rxe0'
        CA type:
        Number of ports: 1
        Firmware version:
        Hardware version:
        Node GUID: 0xa2369ffffe018294
        System image GUID: 0x0000000000000000
        Port 1:
            State: Active
            Physical state: LinkUp
            Rate: 2.5
            Base lid: 0
            LMC: 0
            SM lid: 0
            Capability mask: 0x00890000
            Port GUID: 0xa2369ffffe018294
            Link layer: Ethernet

RXE デバイスの削除

RXE デバイスを削除する場合は、以下のコマンドを実行します。
~]# rxe_cfg remove igb_1

RXE デバイスの接続性の確認

以下の例は、サーバーおよびクライアントで、RXE デバイスの接続を確認する方法を説明します。

例12.1 サーバーで RXE デバイスの接続性の確認

~]$ ibv_rc_pingpong -d rxe0 -g 0
  local address:  LID 0x0000, QPN 0x000012, PSN 0xe2965f, GID fe80::290:faff:fe29:486a
  remote address: LID 0x0000, QPN 0x000011, PSN 0x4bf206, GID fe80::290:faff:fe29:470a
8192000 bytes in 0.05 seconds = 1244.06 Mbit/sec
1000 iters in 0.05 seconds = 52.68 usec/iter

例12.2 クライアントで RXE デバイスの接続性の確認

~]$ ibv_rc_pingpong -d rxe0 -g 0 172.31.40.4
  local address:  LID 0x0000, QPN 0x000011, PSN 0x4bf206, GID fe80::290:faff:fe29:470a
  remote address: LID 0x0000, QPN 0x000012, PSN 0xe2965f, GID fe80::290:faff:fe29:486a
 8192000 bytes in 0.05 seconds = 1245.72 Mbit/sec
 1000 iters in 0.05 seconds = 52.61 usec/iter

12.5. Base RDMA サブシステムの設定

rdma サービスは自動で開始されます。InfiniBand でも iWARP でも RoCE/IBoE でも、RDMA 対応ハードウェアが検出されると、udevsystemdrdma サービスを開始するよう指示します。
~]# systemctl status rdma
● rdma.service - Initialize the iWARP/InfiniBand/RDMA stack in the kernel
   Loaded: loaded (/usr/lib/systemd/system/rdma.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: file:/etc/rdma/rdma.conf
ユーザーが rdma サービスを有効にする必要はありませんが、常時有効にしたい場合は、そうすることができます。これを行うには、root で以下のコマンドを入力します。
~]# systemctl enable rdma

12.5.1. rdma.conf ファイルの設定

rdma サービスは /etc/rdma/rdma.conf を読み込んで、管理者がデフォルトで読み込みたいカーネルレベルとユーザーレベルの RDMA プロトコルを判別します。このファイルを編集すると、様々なドライバーを有効、無効にできます。
以下のドライバーが有効、無効にできます。
  • IPoIB: IP ネットワークエミュレーション層で、InfiniBand ネットワークでの IP アプリケーションの実行を可能にします。
  • SRP: SCSI 要求プロトコルです。マシン上の SRP プロトコル経由でエクスポートされたリモートドライブまたはドライブアレイをまるでローカルのハードディスク上にあるかのようにマシンにマウントできるようになります。
  • SRPT: SRP プロトコルのターゲットモードもしくはサーバーモードです。これは、他のマシンにドライブもしくはドライブアレイをエクスポートするために必要なカーネルサポートを読み込みます。その他のマシンは、これらをまるでローカル上にあるかのようにマウントします。デバイスが実際にエクスポートされる前に、ターゲットモードのサポートの設定が必要になります。詳細は、targetd および targetcli パッケージの資料を参照してください。
  • ISER: Linux カーネルの iSCSI 層全般用の低レベルのドライバーで、iSCSI デバイスに InfiniBand ネットワークでのトランスポートを提供します。
  • RDS: Linux カーネル内の Reliable Datagram Service です。Red Hat Enterprise Linux 7 カーネル内では有効にされないため、読み込むことができません。

12.5.2. 70-persistent-ipoib.rules の使用

rdma パッケージは、/etc/udev.d/rules.d/70-persistent-ipoib.rules ファイルを提供します。この udev rules ファイルは、IPoIB デバイスを (ib0ib1 などの) デフォルト名からより記述的な名前に変更するために使用されます。デバイス名を変更するには、このファイルの編集が必要になります。まず、名前を変更する デバイスの GUID アドレスを見つけます。
~]$ ip link show ib0
8: ib0: >BROADCAST,MULTICAST,UP,LOWER_UP< mtu 65520 qdisc pfifo_fast state UP mode DEFAULT qlen 256
    link/infiniband 80:00:02:00:fe:80:00:00:00:00:00:00:f4:52:14:03:00:7b:cb:a1 brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
link/infiniband の直後には、IPoIB インターフェースの 20 バイトのハードウェアアドレスがあります。新規の名前作成に必要なのは、上記で太字表示となっている最後の 8 バイトのみです。ユーザーは好みに合わせて自由に命名スキームを作成できます。たとえば、mlx4 デバイスが ib0 サブネットファブリックに接続されている場合、mlx4_ib0 のような device_fabric 命名規則を使用します。唯一推奨されないのは、ib0ib1 といった標準名を使用することです。これらの名前は、カーネルが割り当てる自動的な名前と競合する場合があるからです。次に、rules ファイルにエントリーを追加します。既存の例を rules ファイルからコピーして、ATTR{address} エントリー内の 8 バイトを名前を変更するデバイスからの強調表示された 8 バイトで置き換えます。また、新規の名前を NAME フィールドに記入します。

12.5.3. ユーザーのメモリーロック制限解除

RDMA 通信では、コンピューター内の物理的メモリーを固定 (つまり、コンピューター全体で利用可能なメモリーが不足した場合に、カーネルはそのメモリーをページングファイルにスワップすることができない) する必要があります。メモリーの固定は通常、非常に限られた権限が必要となる操作です。root 以外のユーザーによる 大型 RDMA アプリケーションの実行を可能にするには、非 root ユーザーがシステムで固定を許されるメモリー量を増やす必要があります。これを行うには、/etc/security/limits.d/ ディレクトリー内に以下のようなコンテンツのファイルを追加します。
~]$ more /etc/security/limits.d/rdma.conf
# configuration for rdma tuning
*       soft    memlock         unlimited
*       hard    memlock         unlimited
# rdma tuning end

12.5.4. Mellanox カードのイーサネット用の設定

Mellanox の特定のハードウェアは、InfiniBand モードまたは Ethernet モードで実行できます。このようなカードのデフォルトは通常 InfiniBand です。カードを Ethernet モードに設定できます。モードの設定は、現在、ConnectX ファミリーハードウェア (mlx5 ドライバーまたは mlx4 ドライバーのいずれかを使用) でのみサポートされます。
Mellanox mlx5 カードを設定するには、mstflint パッケージの mstconfig プログラムを使用します。詳細は、Red Hat カスタマーポータルでナレッジベースの記事「Configuring Mellanox mlx5 cards in Red Hat Enterprise Linux 7」を参照してください。
Mellanox mlx4 カードを設定するには、「Configuring Mellanox mlx5 cards in Red Hat Enterprise Linux 7」で説明されているように、mstconfig を使用して、そのカードにポートの種類を設定します。mstconfig がお使いのカードをサポートしない場合は、/etc/rdma/mlx4.conf ファイルを編集し、そのファイルの手順に従って、RoCE/IBoE の使用に適したポートの種類を設定します。この場合も、initramfs を再構築して、更新したポート設定が initramfs にコピーされるようにする必要があります。
ポートタイプが設定されたら、1 つまたは両方の設定をイーサーネットに設定し、ポートタイプに設定するために mstconfig を使用しなかった場合は、ログに以下のようなメッセージが表示される場合があります。
mlx4_core 0000:05:00.0: Requested port type for port 1 is not supported on this HCA
これは正常なことで、操作に影響は出ません。ポートタイプを設定するスクリプトには、ドライバーがいつポート 2 を内部で要求されたタイプに切り替えたかを知るすべがありません。このため、スクリプトがポート 2 の切り替えを要求してから切り替え操作が完了するまでの間は、ポート 1 を異なるタイプに設定しようとしても拒否されます。スクリプトはコマンドが成功するか、ポートの切り替えが完了されないことを示すタイムアウトになるまで設定しようとします。

12.5.5. リモートの Linux SRP ターゲットへの接続

SCSI RDMA Protocol (SRP) は、システムが、別のシステムに接続されている SCSI デバイスにアクセスするために RDMA を使用できるようにするネットワークプロトコルです。SRP イニシエーターが、SRP ターゲット側で SRP ターゲットに接続するようにするには、そのイニシエーターで使用するホストチャンネルアダプター (HCA) ポートに、アクセスコントロールリスト (ACL) エントリーを追加する必要があります。
HCA ポートの ACL ID は固有ではありません。ACL IDは、HCA の GID 形式により異なります。同じドライバー (たとえば ib_qib) を使用する HCA では、GID の形式が同じである必要はありません。また、ACL ID は、接続要求を開始する方法により異なります。

リモートの Linux SRP ターゲットへの接続: 概要

  1. ターゲット側の準備:
    1. ストレージのバックエンドを作成します。たとえば、/dev/sdc1 パーティションを取得します。
      /> /backstores/block は vol1 /dev/sdc1 を作成します。
    2. SRP ターゲットを作成します。
      /> /srpt create 0xfe80000000000000001175000077dd7e
    3. ステップ A で作成したバックエンドに基づいた LUN を作成します。
      /> /srpt/ib.fe80000000000000001175000077dd7e/luns create /backstores/block/vol1
    4. リモートの SRP クライアントに Node ACL を作成します。
      /> /srpt/ib.fe80000000000000001175000077dd7e/acls create 0x7edd770000751100001175000077d708
      Node ACL は、srp_daemonibsrpdm で異なります。
  2. クライアントで、srp_daemon または ibsrpdm を使用して、SRP 接続を開始します。
    [root@initiator]# srp_daemon -e -n -i qib0 -p 1 -R 60 &
    [root@initiator]# ibsrpdm -c -d /dev/infiniband/umad0 > /sys/class/infiniband_srp/srp-qib0-1/add_target
  3. 任意です。lsscsidmesg などの複数のツールで、SRP 接続を検証することが推奨されます。

手順12.3 srp_daemon または ibsrpdm を使用して、リモートの Linux SRP ターゲットへの接続

  1. ターゲットで ibstat コマンドを実行して、State および Port GUID の値を確認します。HCA は Active ステータスになります。ACL ID は、ポート GUID に基づいています。
    [root@target]# ibstat
    CA 'qib0'
    	CA type: InfiniPath_QLE7342
    	Number of ports: 1
    	Firmware version:
    	Hardware version: 2
    	Node GUID: 0x001175000077dd7e
    	System image GUID: 0x001175000077dd7e
    	Port 1:
    		State: Active
    		Physical state: LinkUp
    		Rate: 40
    		Base lid: 1
    		LMC: 0
    		SM lid: 1
    		Capability mask: 0x0769086a
    		Port GUID: 0x001175000077dd7e
    		Link layer: InfiniBand
  2. SRP ターゲット ID を取得します。この ID は、HCA ポートの GUID に基づきます。SRP ターゲットのバックエンドとして、専用のディスクパーティションが必要です (/dev/sdc1 など)。次のコマンドは、デフォルトのプレフィックスを fe80 に置き換え、コロンを削除し、その残りの文字列に、新しいプレフィックスを追加します。
    [root@target]# ibstatus | grep '<default-gid>' | sed -e 's/<default-gid>://' -e 's/://g' | grep 001175000077dd7e
    fe80000000000000001175000077dd7e
  3. ブロックデバイスで LUN vol1 を作成する targetcli ツールを使用して、SRP ターゲットを作成し、LUN をエクスポートします。
    [root@target]# targetcli
    
    
    /> /backstores/block create vol1 /dev/sdc1
    Created block storage object vol1 using /dev/sdc1.
    /> /srpt create 0xfe80000000000000001175000077dd7e
    Created target ib.fe80000000000000001175000077dd7e.
    /> /srpt/ib.fe80000000000000001175000077dd7e/luns create /backstores/block/vol1
    Created LUN 0.
    /> ls /
    o- / ............................................................................. [...]
      o- backstores .................................................................. [...]
      | o- block ...................................................... [Storage Objects: 1]
      | | o- vol1 ............................... [/dev/sdc1 (77.8GiB) write-thru activated]
      | o- fileio ..................................................... [Storage Objects: 0]
      | o- pscsi ...................................................... [Storage Objects: 0]
      | o- ramdisk .................................................... [Storage Objects: 0]
      o- iscsi ................................................................ [Targets: 0]
      o- loopback ............................................................. [Targets: 0]
      o- srpt ................................................................. [Targets: 1]
        o- ib.fe80000000000000001175000077dd7e ............................... [no-gen-acls]
          o- acls ................................................................ [ACLs: 0]
          o- luns ................................................................ [LUNs: 1]
            o- lun0 ............................................... [block/vol1 (/dev/sdc1)]
    />
  4. イニシエーターで ibstat コマンドを実行して、ステータスが Active かどうかを確認して、ポートの GUID を決定します。
    [root@initiator]# ibstat
    CA 'qib0'
    	CA type: InfiniPath_QLE7342
    	Number of ports: 1
    	Firmware version:
    	Hardware version: 2
    	Node GUID: 0x001175000077d708
    	System image GUID: 0x001175000077d708
    	Port 1:
    		State: Active
    		Physical state: LinkUp
    		Rate: 40
    		Base lid: 2
    		LMC: 0
    		SM lid: 1
    		Capability mask: 0x07690868
    		Port GUID: 0x001175000077d708
    		Link layer: InfiniBand
  5. 以下のコマンドを使用して、リモートの SRP ターゲットに接続せずにスキャンします。ターゲットの GUID は、イニシエーターがリモートターゲットを検出したことを示します。ID 文字列は、リモートターゲットが Linux ソフトウェアターゲット (ib_srpt.ko) であることを示しています。
    [root@initiator]# srp_daemon -a -o
    IO Unit Info:
        port LID:        0001
        port GID:        fe80000000000000001175000077dd7e
        change ID:       0001
        max controllers: 0x10
    
        controller[  1]
            GUID:      001175000077dd7e
            vendor ID: 000011
            device ID: 007322
            IO class : 0100
            ID:        Linux SRP target
            service entries: 1
                service[  0]: 001175000077dd7e / SRP.T10:001175000077dd7e
  6. SRP 接続を確認するには、lsscsi コマンドを実行して SCSI デバイスの一覧を表示して、イニシエーターがターゲットに接続する前後の lsscsi 出力結果を比較します。
    [root@initiator]# lsscsi
    [0:0:10:0]   disk    IBM-ESXS ST9146803SS      B53C  /dev/sda
  7. イニシエーターポートに有効な ACL を設定せずに (これは失敗することが予想されます) リモートターゲットを接続するには、srp_daemon または ibsrpdm に以下のコマンドを使用します。
    [root@initiator]# srp_daemon -e -n -i qib0 -p 1 -R 60 &
    [1] 4184
    [root@initiator]# ibsrpdm -c -d /dev/infiniband/umad0 > /sys/class/infiniband_srp/srp-qib0-1/add_target
  8. dmesg の出力結果には、SRP 接続操作に失敗した理由が示されます。後続の手順で、ターゲットの dmesg コマンドを使用して、状況を明確にします。
    [root@initiator]# dmesg -c
    [ 1230.059652] scsi host5: ib_srp: REJ received
    [ 1230.059659] scsi host5: ib_srp: SRP LOGIN from fe80:0000:0000:0000:0011:7500:0077:d708 to fe80:0000:0000:0000:0011:7500:0077:dd7e REJECTED, reason 0x00010006
    [ 1230.073792] scsi host5: ib_srp: Connection 0/2 failed
    [ 1230.078848] scsi host5: ib_srp: Sending CM DREQ failed
  9. LOGIN に失敗したため、lsscsi コマンドの出力は前述のステップと同じになります。
    [root@initiator]# lsscsi
    [0:0:10:0]   disk    IBM-ESXS ST9146803SS      B53C  /dev/sda
  10. ターゲット (ib_srpt.ko) で dmesg を使用すると、LOGIN に失敗した理由を確認できます。また、出力結果には、srp_daemon が提供した、有効な ACL ID (0x7edd770000751100001175000077d708) が含まれます。
    [root@target]# dmesg
    [ 1200.303001] ib_srpt Received SRP_LOGIN_REQ with i_port_id 0x7edd770000751100:0x1175000077d708, t_port_id 0x1175000077dd7e:0x1175000077dd7e and it_iu_len 260 on port 1 (guid=0xfe80000000000000:0x1175000077dd7e)
    [ 1200.322207] ib_srpt Rejected login because no ACL has been configured yet for initiator 0x7edd770000751100001175000077d708.
  11. targetcli ツールを使用して、有効な ACL を追加します。
    [root@target]# targetcli
    targetcli shell version 2.1.fb41
    Copyright 2011-2013 by Datera, Inc and others.
    For help on commands, type 'help'.
    
    /> /srpt/ib.fe80000000000000001175000077dd7e/acls create 0x7edd770000751100001175000077d708
    Created Node ACL for ib.7edd770000751100001175000077d708
    Created mapped LUN 0.
  12. SRP LOGIN 操作を確認します。
    1. srp_daemon がログインを再試行できるようにするには 60 秒待ちます。
      [root@initiator]# sleep 60
    2. SRP LOGIN 操作を確認します。
      [root@initiator]# lsscsi
      [0:0:10:0]   disk    IBM-ESXS ST9146803SS      B53C  /dev/sda
      [7:0:0:0] disk LIO-ORG vol1 4.0 /dev/sdb
    3. SRP ターゲット検出のカーネルログに、以下を使用します。
      [root@initiator]# dmesg -c
      [ 1354.182072] scsi host7: SRP.T10:001175000077DD7E
      [ 1354.187258] scsi 7:0:0:0: Direct-Access     LIO-ORG  vol1             4.0  PQ: 0 ANSI: 5
      [ 1354.208688] scsi 7:0:0:0: alua: supports implicit and explicit TPGS
      [ 1354.215698] scsi 7:0:0:0: alua: port group 00 rel port 01
      [ 1354.221409] scsi 7:0:0:0: alua: port group 00 state A non-preferred supports TOlUSNA
      [ 1354.229147] scsi 7:0:0:0: alua: Attached
      [ 1354.233402] sd 7:0:0:0: Attached scsi generic sg1 type 0
      [ 1354.233694] sd 7:0:0:0: [sdb] 163258368 512-byte logical blocks: (83.5 GB/77.8 GiB)
      [ 1354.235127] sd 7:0:0:0: [sdb] Write Protect is off
      [ 1354.235128] sd 7:0:0:0: [sdb] Mode Sense: 43 00 00 08
      [ 1354.235550] sd 7:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
      [ 1354.255491] sd 7:0:0:0: [sdb] Attached SCSI disk
      [ 1354.265233] scsi host7: ib_srp: new target: id_ext 001175000077dd7e ioc_guid 001175000077dd7e pkey ffff service_id 001175000077dd7e sgid fe80:0000:0000:0000:0011:7500:0077:d708 dgid fe80:0000:0000:0000:0011:7500:0077:dd7e
      xyx

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

12.6.1. 必要性の判断

ほとんどの InfiniBand スイッチには、組み込み型サブネットマネジャーが備わっています。ただし、スイッチファームウェア内のものよりも最新のサブネットマネジャーが必要な場合、もしくはスイッチマネジャーが許可するよりも完全な制御が必要な場合は、Red Hat Enterprise Linux 7 には opensm サブネットマネジャーが含まれています。InfiniBand ネットワークが機能するには、そのネットワークにサブネットマネジャーが備わっている 必要があります。スイッチがないマシン 2 台で簡単なネットワークを構成し、カードが背中合わせに差し込まれている場合でも、カード上にリンクが現れるにはサブネットマネジャーが必要になります。サブネットマネジャーが複数あることもあり、その場合は 1 つがマスターとして動作し、その他はこのマスターが失敗した際にスレーブとして引き継ぐことになります。

12.6.2. opensm マスター設定ファイルの設定

opensm プログラムは、マスター設定ファイルを /etc/rdma/opensm.conf に保存します。ユーザーはこのファイルをいつでも編集でき、変更内容はアップグレードで維持されます。このファイル自体にも、オプションについての詳しい説明があります。ただし、GUID のバインドとそれと実行する PRIORITY という 2 つの最も一般的な編集については opensm.conf ファイルではなく /etc/sysconfig/opensm ファイルを編集することが強く推奨されます。ベースの /etc/rdma/opensm.conf ファイルが編集されない場合は、opensm パッケージのアップグレードに合わせてこのファイルもアップグレードされます。このファイルには新たなオプションが定期的に追加されるので、この方法だと現行の設定を最新のものに容易に維持できます。opensm.conf ファイルが変更された場合は、アップグレード時に新規オプションを編集済みのファイルにマージする必要性がでてきます。

12.6.3. opensm スタートアップオプションの設定

/etc/sysconfig/opensm ファイル内のオプションは、サブネットマネジャーが実際に開始される方法や開始されるサブネットマネジャーのコピー数を制御します。たとえば、各ポートが物理的に別個のネットワークに差し込まれているデュアルポートの InfiniBand カードは、各ポートで実行中のサブネットマネジャーのコピーを必要とします。opensm サブネットマネジャーが管理するのはアプリケーションのインスタンスにつき 1 つのサブネットのみで、管理する必要のある各サブネットで一度起動する必要があります。さらに、複数の opensm サーバーがある場合は、どのサーバーをマスターやスレーブにするかを管理する優先度を各サーバーで設定します。
/etc/sysconfig/opensm ファイルは、サブネットマネジャーの優先度を設定し、サブネットマネジャーがバインドされる GUID を制御する簡単な方法を提供するために使用されます。/etc/sysconfig/opensm ファイル自体にもオプションの詳細な説明があります。opensm のフェイルオーバーとマルチファブリック操作を有効にするには、このファイルの指示に従うだけで可能です。

12.6.4. P_Key 定義の作成

デフォルトでは、opensm.conf/etc/rdma/partitions.conf ファイルを検索してファブリックを作成するためのパーティション一覧を取得します。すべてのファブリックには 0x7fff サブネットを含める必要があり、すべてのスイッチとホストはそのファブリックに属している必要があります。これに加えて他のパーティションを作成することが可能で、すべてのスイッチやホストがこれらの新たなパーティションのメンバーである必要はありません。これにより管理者は、InfiniBand ファブリック上のイーサネットの VLAN に似たサブネットを作成できます。パーティションが 40 Gbps などの特定のスピードで定義されていて、ネットワーク上に 40 Gbps を実行できないホストがある場合、そのホストはスピードに合致できないので、パーミッションがあってもこのパーミッションに参加することはできません。このため、パーティションのスピードは、そのパーティションに参加を許可されているホストのなかで一番遅いものに設定することが推奨されます。ホストのいずれかのサブネット用により高速のパーティションが必要な場合は、高速パーティションを別個に作成します。
以下のパーティションファイルの場合、デフォルトの 0x7fff パーティションは 10 Gbps のスピードになり、0x0002 パーティションは 40 Gbps のスピードになります。
~]$ more /etc/rdma/partitions.conf
# 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;

12.6.5. opensm の有効化

opensm サービスはインストール時にはデフォルトで有効となっていないため、これを有効にする必要があります。root で以下のコマンドを実行します。
~]# systemctl enable opensm

12.7. 初期の InfiniBand RDMA 操作のテスト

注記

このセクションは InfiniBand デバイスにのみ適用されます。iWARP および RoCE/IBoE デバイスは IP ベースのデバイスなので、IPoIB の設定が完了しデバイスに IP アドレスが割り当てられてから、ユーザーは RDMA 操作のテストのセクションに進んでください。
rdma サービスが有効になり、(必要な場合) opensm サービスが有効にされ、適切なユーザースペースのライブラリーが特定ハードウェア用にインストールされると、ユーザースペースの rdma 操作が可能になります。libibverbs-utils パッケージの簡単なテストプログラムが、RDMA が適切に機能しているかどうかの判断に役立ちます。ibv_devices プログラムはどのデバイスがシステム内にあるかを表示し、ibv_devinfo コマンドで各デバイスの詳細情報が表示されます。例を示します。
~]$ ibv_devices
    device                 node GUID
    ------              ----------------
    mlx4_0              0002c903003178f0
    mlx4_1              f4521403007bcba0
~]$ ibv_devinfo -d mlx4_1
hca_id: mlx4_1
        transport:                      InfiniBand (0)
        fw_ver:                         2.30.8000
        node_guid:                      f452:1403:007b:cba0
        sys_image_guid:                 f452:1403:007b:cba3
        vendor_id:                      0x02c9
        vendor_part_id:                 4099
        hw_ver:                         0x0
        board_id:                       MT_1090120019
        phys_port_cnt:                  2
                port:   1
                        state:                  PORT_ACTIVE (4)
                        max_mtu:                4096 (5)
                        active_mtu:             2048 (4)
                        sm_lid:                 2
                        port_lid:               2
                        port_lmc:               0x01
                        link_layer:             InfiniBand

                port:   2
                        state:                  PORT_ACTIVE (4)
                        max_mtu:                4096 (5)
                        active_mtu:             4096 (5)
                        sm_lid:                 0
                        port_lid:               0
                        port_lmc:               0x00
                        link_layer:             Ethernet
~]$ ibstat mlx4_1
CA 'mlx4_1'
        CA type: MT4099
        Number of ports: 2
        Firmware version: 2.30.8000
        Hardware version: 0
        Node GUID: 0xf4521403007bcba0
        System image GUID: 0xf4521403007bcba3
        Port 1:
                State: Active
                Physical state: LinkUp
                Rate: 56
                Base lid: 2
                LMC: 1
                SM lid: 2
                Capability mask: 0x0251486a
                Port GUID: 0xf4521403007bcba1
                Link layer: InfiniBand
        Port 2:
                State: Active
                Physical state: LinkUp
                Rate: 40
                Base lid: 0
                LMC: 0
                SM lid: 0
                Capability mask: 0x04010000
                Port GUID: 0xf65214fffe7bcba2
                Link layer: Ethernet
ibv_devinfo および ibstat コマンドの出力はやや違ったものになり (ポート MTU が ibv_devinfo にはあるが ibstat 出力にはなし、またポート GUID が ibstat 出力にはあるが ibv_devinfo 出力にはなし、など) 名前も異なるものがいくつかあります (たとえば、ibstat 出力の Base local identifier (LID) は、ibv_devinfoport_lid と同じもの)。
infiniband-diags パッケージからの ibping など、簡単な ping プログラムを使用すると、RDMA の接続性をテストできます。ibping プログラムでは、クライアント-サーバーモデルが用いられます。1 つのマシン上で ibping サーバーを起動してから別のマシン上で ibping をクライアントとして稼働し、このクライアントに対して ibping サーバーに接続するよう命令します。ベースの RDMA 機能をテストするので、サーバーの指定には、IP アドレスではなく RDMA 固有のアドレス解決方法を使用する必要があります。
サーバーマシン上では、ユーザーは ibv_devinfo および ibstat のコマンドを使うと、テスト対象となるポートの port_lid (または Base lid) および Port GUID をプリントアウトできます (上記インターフェースの port 1 で port_lid/Base LID2、Port GUID が 0xf4521403007bcba1 と仮定する)。次に必要なオプションをつけて ibping を起動し、テスト対象のカードとポートをバインドするとともに、サーバーモードで ibping の指定を実行します。-? または --help オプションを ibping に渡すと、利用可能なオプションが表示されますが、このインスタンスでは -S または --Server オプションが必要です。特定のカードとポートをバインドするには、-C--Ca-P--Port が必要です。このインスタンスのポートはネットワークポート番号を表示せず、マルチポートカードを使用する際のカード上の物理的ポート番号を表示します。たとえば、マルチポートカードの 2 番目のポートを使用して RDMA への接続性をテストするには、ibping にカード上の port 2 にバインドするよう指示する必要があります。単一ポートカードを使用している場合、もしくはカード上の最初のポートをテストする場合は、このオプションは不要です。例を示します。
~]$ ibping -S -C mlx4_1 -P 1
それからクライアントマシンに切り替え、ibping を実行します。サーバーの ibping プログラムがバインドされているポートの port GUID、またはサーバーの ibping プログラムがバインドされているポートの ローカル識別子 (LID) をメモします。また、サーバーでバインドされているカードとポートと同じネットワークに、クライアントマシンのどのカードとポートが物理的に接続されているかをメモします。たとえば、サーバー上の最初のカードの 2 番目のポートにバインドされていて、そのポートが 2 番目の RDMA ファブリックに接続されている場合、クライアント上でその 2 番目のファブリックに接続する必要のあるカードとポートを指定します。これらが明らかになったら、クライアントとして ibping プログラムを実行し、サーバー上で収集された port LID または GUID を接続先のアドレスとして使用してサーバーに接続します。例を示します。
~]$ ibping -c 10000 -f -C mlx4_0 -P 1 -L 2
--- rdma-host.example.com.(none) (Lid 2) ibping statistics ---
10000 packets transmitted, 10000 received, 0% packet loss, time 816 ms
rtt min/avg/max = 0.032/0.081/0.446 ms
または
~]$ ibping -c 10000 -f -C mlx4_0 -P 1 -G 0xf4521403007bcba1 \
--- rdma-host.example.com.(none) (Lid 2) ibping statistics ---
10000 packets transmitted, 10000 received, 0% packet loss, time 769 ms
rtt min/avg/max = 0.027/0.076/0.278 ms
この出力は、エンドツーエンドの RDMA 通信がユーザースペースのアプリケーションで機能していることを証明しています。
以下のエラーが表示される場合もあります。
~]$ ibv_devinfo
libibverbs: Warning: no userspace device-specific driver found for /sys/class/infiniband_verbs/uverbs0
No IB devices found
このエラーは、必要なユーザースペースのライブラリーがインストールされていないことを示しています。管理者は「InfiniBand および RDMA に関連するソフトウェアパッケージ」に掲載されているユーザースペースのライブラリー (該当ハードウェアに適したもの) のいずれかをインストールする必要があります。ユーザーが間違ったアーキテクチャータイプ用のドライバーや libibverbs をインストールすると、稀にこのようなことが起こることもあります。たとえば、libibverbs のアーキテクチャーが x86_64 でインストールされた libmlx4 のタイプが i686 であった場合、このエラーが発生します。

注記

多くのサンプルアプリケーションでは、サーバーとクライアント間の通信を開く際に、LID ではなくホスト名もしくはアドレスの使用が好まれます。これらのアプリケーションでは、エンドツーエンドの RDMA 通信をテストする前に IPoIB をセットアップする必要があります。ibping アプリケーションは、アドレス指定形式として LID を受け付けるという点で、独特のものです。これにより、テストのシナリオから IPoIB アドレス指定の問題の可能性を排除して簡単なテストにすることができ、単純な RDMA 通信が機能しているかどうかという切り分けられた結果が得られます。

12.8. IPoIB の設定

12.8.1. IPoIB の役割について

「IP ネットワークと非 IP ネットワークの比較」で言及したように、ほとんどのネットワークは IP ネットワークですが、InfiniBand は違います。IPoIB の役割は、InfiniBand RDMA ネットワークの上に IP ネットワークエミュレーション層を提供することです。これにより、既存のアプリケーションが InfiniBand ネットワークで修正することなく実行できるようになります。しかし、これらのアプリケーションのパフォーマンスは、RDMA 通信をネイティブで使用するように作成されたアプリケーションの場合よりもかなり低いものになります。ほとんどのネットワークには最大級のパフォーマンスを必要とするアプリケーションと、低パフォーマンスを受け入れられるアプリケーションの 2 種類があります。後者は通常、RDMA 通信のような新しい通信方法を使用するように更新されないため、IPoIB はこれらのアプリケーション用に引き続き利用可能となっています。
iWARP および RoCE/IBoE のネットワークは実際には IP リンク層の上に RDMA 層のある IP ネットワークなので、IPoIB の必要はありません。このため、カーネルは iWARP や RoCE/IBoE RDMA デバイスの上に IPoIB デバイスを作成することは拒否します。

12.8.2. IPoIB 通信モードについて

IPoIB デバイスは、datagram または connected のモードで実行するよう設定できます。違いは、通信先のマシンで IPoIB 層が開こうとする queue pair のタイプです。datagram モードでは、信頼できない未接続の queue pair が開かれます。connected モードでは、信頼性のある接続済みの queue pair が開かれます。
datagram モードの使用時には、信頼性のない未接続の queue pair タイプが InfiniBand リンク層の MTU よりも大きいパケットを許可しません。IPoIB 層が、送信中の IP パケットに 4 バイトの IPoIB ヘッダーを追加します。このため、IPoIB MTU は InfiniBand リンク層の MTU より 4 バイト小さいものである必要があります。InfiniBand リンク層の MTU は通常 2048 バイトなので、datagram モードでの一般的な IPoIB デバイス MTU は 2044 バイトになります。
connected モード使用時には、信頼性のある接続済み queue pair タイプが InfiniBand リンク層 MTU よりも大きいメッセージを許可し、ホストアダプターが各末端でパケットのセグメント化と再構築を処理します。このため、connected モード時に InfiniBand アダプターが送信する IPoIB メッセージにはサイズ制限が課せられません。ただし、IP パケットには 16 ビットのサイズのフィールドしかないことから、最大バイト数は 65535 に制限されます。現実には、このサイズに適合しなくてはならない様々な TCP/IP ヘッダーも勘案する必要があるので、実際に許可される MTU はこれよりも小さくなります。このため、必要となる TCP ヘッダーすべてに十分なスペースを確保するために、connected モードでの IPoIB MTU は最大 65520 となります。
connected モードオプションでのパフォーマンスは通常高いものとなりますが、消費するカーネルメモリーも多くなります。ほとんどのシステムでは、メモリー消費量よりもパフォーマンスの方が重視されるため、より一般的に使用されるのは connected モードになります。
しかしシステムが connected モードで設定されていても、マルチキャストトラフィックは依然として datagram モードで送信する必要があり (InfiniBand スイッチとファブリックは connected モードではマルチキャストトラフィックを通過させることができません)、さらに connected モードで設定されていないホストとの通信時には datagram モードにフォールバックする必要があります。マルチキャストデータを送信するプログラムを実行する際は、これらのプログラムがインターフェース上で最大 MTU でマルチキャストデータの送信を試みるため、インターフェースを datagram 操作用に設定するか、マルチキャストアプリケーションが送信パケットサイズを datagram のパケットサイズに収まるように制限する必要があります。

12.8.3. IPoIB ハードウェアアドレスについて

IPoIB デバイスには、20 バイトのハードウェアアドレスがあります。非推奨の ifconfig ユーティリティーでは 20 バイトすべては読み取れないため、IPoIB デバイスの正しいハードウェアアドレスを見つけるために、これを使用しないでください。iproute パッケージの ip ユーティリティーは正常に機能します。
IPoIB ハードウェアアドレスの最初の 4 バイトは、フラグと queue pair 番号です。次の 8 バイトは、サブネットの接頭辞です。IPoIB デバイスは最初に作成される際に、デフォルトの 0xfe:80:00:00:00:00:00:00 というサブネット接頭辞が付けられます。このデバイスはサブネットマネージャーと連絡するまで、このデフォルトのサブネット接頭辞 (0xfe80000000000000) を使用し、その時点でサブネット接頭辞をサブネットマネージャーが設定したものに再設定します。最後の 8 バイトは、IPoIB デバイスの接続先となる InfiniBand ポートの GUID アドレスです。最初の 4 バイトと次の 8 バイトは時々変化するため、IPoIB インターフェースのハードウェアアドレスを指定する際には、これを使ったり適合対象としたりすることはありません。「70-persistent-ipoib.rules の使用」のセクションでは、udev ルールファイルの ATTR{address} フィールドの最初の 12 バイトを除外してアドレスを生成する方法を説明しています。こうすることで、デバイスの適合を確実にできます。IPoIB インターフェースを設定する場合は、設定ファイルの HWADDR フィールドに 20 バイトすべてを含めることができますが、適合に使用されるのは最後の 8 バイトのみで、これを使って設定ファイルで指定されたハードウェアを見つけます。ただし、TYPE=InfiniBand エントリーがデバイス設定ファイルで正しく記入されておらず、ifup-ib が IPoIB インターフェースを有効にする実際のスクリプトではない場合、設定で指定されたハードウェアをシステムが見つけられないというエラーが発生します。IPoIB インターフェースでは、設定ファイルの TYPE= フィールドは、InfiniBandinfiniband のどちらかである必要があります(エントリーは大文字と小文字を区別しますが、スクリプトはこれらの特定の表記を受け入れます)。

12.8.4. InfiniBand P_Key サブネットについて

InfiniBand ファブリックは、異なる P_Key サブネットを使うことで仮想サブネットに論理的にセグメント化できます。これは、イーサネットインターフェース上で VLAN を使用することに非常に似ています。すべてのスイッチとホストはデフォルトの P_Key サブネットのメンバーである必要がありますが、管理者は新たなサブネットを作成して、これらサブネットのメンバーをファブリック内のホストまたはスイッチのサブネットに限定できます。P_Key サブネットは、ホストがこれを使用する前にサブネットマネジャーで定義される必要があります。opensm サブネットマネジャーを使って P_Key サブネットを定義する方法については、「P_Key 定義の作成」を参照してください。IPoIB インターフェースの場合は、P_Key サブネットが作成されると、それらの P_Key サブネットのみを対象とした IPoIB 設定ファイルを追加で作成できます。各 IPoIB インターフェースはイーサネットデバイス上の VLAN インターフェースのように、同一リンクを共有するものの異なる P_Key の値を持つ IPoIB インターフェースとは完全に異なるファブリックにいるかのように動作します。
IPoIB P_Key インターフェースには特別な要件があります。すべての IPoIB P_Key の範囲は 0x0000 から 0x7fff で、0x8000 という高いビットは、P_Key のメンバーシップが部分的なものではなく完全なメンバーシップであることを示します。Linux カーネルの IPoIB ドライバーがサポートするのは P_Key サブネットの完全なメンバーシップのみなので、Linux が接続可能なサブネットでは常に高いビットの P_Key が設定されています。つまり、Linux コンピューターが P_Key 0x0002 に加わると、そのコンピューターの実際の P_Key 番号は 0x8002 となり、P_Key 0x0002 の完全なメンバーになったことを示します。このため、「P_Key 定義の作成」セクションの説明にあるように opensm partitions.conf ファイルで P_Key 定義を作成する際は、0x8000 以外で P_Key の値を指定する必要があります。ただし、Linux クライアント上で P_Key IPoIB インターフェースを定義する際には、ベースの P_Key の値に 0x8000 の値を追加します。

12.9. テキスト形式のユーザーインターフェース nmtui による InfiniBand の設定

テキスト形式のユーザーインターフェースツール nmtui を使うと、ターミナルのウィンドウで InfiniBand を設定できます。このツールを起動するには、以下のコマンドを実行します。
~]$ nmtui
テキスト形式のインターフェースが表示されます。無効なコマンドの場合は、使用法に関するメッセージが出力されます。
移動するには矢印キーを使用するか、Tab を押して次に進むか Shift+Tab を押して前に戻ります。Enter を押してオプションを選びます。Space バーは、チェックボックスのステータスを切り替えます。
メニューから 接続の編集 を選択します。追加 を選択すると 新規の接続 画面が開きます。
NetworkManager テキスト形式のユーザーインターフェースの InfiniBand 接続追加メニュー

図12.1 NetworkManager テキスト形式のユーザーインターフェースの InfiniBand 接続追加メニュー

InfiniBand を選択すると、接続の編集 画面が開きます。画面のプロンプトに従って設定を完了します。
NetworkManager テキスト形式ユーザーインターフェースで InfiniBand 接続を設定するメニュー

図12.2 NetworkManager テキスト形式ユーザーインターフェースで InfiniBand 接続を設定するメニュー

InfiniBand 用語の定義については、「InfiniBand タブの設定」を参照してください。
nmtui のインストール方法は「nmtui を使用した IP ネットワークの設定」を参照してください。

12.10. コマンドラインツール nmcli での IPoIB の設定

まず、デフォルトの IPoIB デバイスの名前変更が必要かどうかを判断します。必要な場合は、「70-persistent-ipoib.rules の使用」に記載の指示に従って、udev の名前変更ルールを使用してデバイスの名前を変更します。以下のように ib_ipoib カーネルモジュールを一旦削除してリロードすると、再起動せずに IPoIB インターフェースの名前変更ができます。
~]$ rmmod ib_ipoib
~]$ modprobe ib_ipoib
デバイスに必要な名前が付けられたら、nmcli ツールを使用して IPoIB インターフェースを作成します。以下に 2 とおりの方法を示します。

例12.3 2 つの別々のコマンドによる IPoIB の作成および修正

~]$ nmcli con add type infiniband con-name mlx4_ib0 ifname mlx4_ib0 transport-mode connected mtu 65520
Connection 'mlx4_ib0' (8029a0d7-8b05-49ff-a826-2a6d722025cc) successfully added.
~]$ nmcli con edit mlx4_ib0

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

Editing existing 'infiniband' connection: 'mlx4_ib0'

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

You may edit the following settings: connection, infiniband, ipv4, ipv6
nmcli> set infiniband.mac-address 80:00:02:00:fe:80:00:00:00:00:00:00:f4:52:14:03:00:7b:cb:a3
nmcli> save
Connection 'mlx4_ib3' (8029a0d7-8b05-49ff-a826-2a6d722025cc) successfully updated.
nmcli> quit
あるいは、以下のように nmcli c addnmcli c modify を 1 つのコマンドで実行できます。

例12.4 1 つのコマンドによる IPoIB の作成および修正

nmcli con add type infiniband con-name mlx4_ib0 ifname mlx4_ib0 transport-mode connected mtu 65520  infiniband.mac-address 80:00:02:00:fe:80:00:00:00:00:00:00:f4:52:14:03:00:7b:cb:a3
これで mlx4_ib0 という名前の IPoIB インターフェースが作成され、connected モードを使用するように設定されました。MTU は connected モードの最大値で、IPv4 および IPv6DHCP が使われます。IPoIB インターフェースをクラスタートラフィックに使用し、イーサネットインターフェースをクラスター以外の通信に使用する場合は、デフォルトルートと IPoIB インターフェース上のデフォルトネームサーバーの無効化が必要になる可能性があります。これは、以下のように実行できます。
~]$ nmcli con edit mlx4_ib0

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

Editing existing 'infiniband' connection: 'mlx4_ib0'

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

You may edit the following settings: connection, infiniband, ipv4, ipv6
nmcli> set ipv4.ignore-auto-dns yes
nmcli> set ipv4.ignore-auto-routes yes
nmcli> set ipv4.never-default true
nmcli> set ipv6.ignore-auto-dns yes
nmcli> set ipv6.ignore-auto-routes yes
nmcli> set ipv6.never-default true
nmcli> save
Connection 'mlx4_ib0' (8029a0d7-8b05-49ff-a826-2a6d722025cc) successfully updated.
nmcli> quit
P_Key インターフェースが必要な場合は、以下のように nmcli を使って作成します。
~]$ nmcli con add type infiniband con-name mlx4_ib0.8002 ifname mlx4_ib0.8002 parent mlx4_ib0 p-key 0x8002
Connection 'mlx4_ib0.8002' (4a9f5509-7bd9-4e89-87e9-77751a1c54b4) successfully added.
~]$ nmcli con modify mlx4_ib0.8002 infiniband.mtu 65520 infiniband.transport-mode connected ipv4.ignore-auto-dns yes ipv4.ignore-auto-routes yes ipv4.never-default true ipv6.ignore-auto-dns yes ipv6.ignore-auto-routes yes ipv6.never-default true

12.11. コマンドラインを使用した IPoIB の設定

まず、デフォルトの IPoIB デバイスの名前変更が必要かどうかを判断します。必要な場合は、「70-persistent-ipoib.rules の使用」に記載の指示に従って、udev の名前変更ルールを使用してデバイスの名前を変更します。以下のように ib_ipoib カーネルモジュールを一旦削除してリロードすると、再起動せずに IPoIB インターフェースの名前変更ができます。
~]$ rmmod ib_ipoib
~]$ modprobe ib_ipoib
デバイスに必要な名前が付けられたら、管理者は好みのエディターで ifcfg ファイルを作成し、デバイスを制御できます。静的 IPv4 アドレス指定の通常の IPoIB 設定ファイルは、以下のようになります。
~]$ more ifcfg-mlx4_ib0
DEVICE=mlx4_ib0
TYPE=InfiniBand
ONBOOT=yes
HWADDR=80:00:00:4c:fe:80:00:00:00:00:00:00:f4:52:14:03:00:7b:cb:a1
BOOTPROTO=none
IPADDR=172.31.0.254
PREFIX=24
NETWORK=172.31.0.0
BROADCAST=172.31.0.255
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
MTU=65520
CONNECTED_MODE=yes
NAME=mlx4_ib0
DEVICE フィールドは、udev の名前変更ルールで作成されたカスタム名に合致する必要があります。NAME エントリーはデバイス名に合致する必要はありません。GUI 接続エディターが起動していれば、NAME フィールドは現在使用している接続に使用されている名前になります。InfiniBand オプションが正常に処理されるには、TYPE フィールドは InfiniBand である必要があります。CONNECTED_MODE は yesno で、yes の場合は connected モードが使用され、no の場合は datagram モードが使用されます (「IPoIB 通信モードについて」を参照)。
P_Key インターフェースの場合、以下のような設定ファイルになります。
~]$ more ifcfg-mlx4_ib0.8002
DEVICE=mlx4_ib0.8002
PHYSDEV=mlx4_ib0
PKEY=yes
PKEY_ID=2
TYPE=InfiniBand
ONBOOT=yes
HWADDR=80:00:00:4c:fe:80:00:00:00:00:00:00:f4:52:14:03:00:7b:cb:a1
BOOTPROTO=none
IPADDR=172.31.2.254
PREFIX=24
NETWORK=172.31.2.0
BROADCAST=172.31.2.255
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
MTU=65520
CONNECTED_MODE=yes
NAME=mlx4_ib0.8002
すべての P_Key インターフェースファイルでは、PHYSDEV はディレクティブは必須となり、親デバイス名にする必要があります。PKEY ディレクティブは yes に、PKEY_ID はインターフェースの数 (0x8000 メンバーシップビットを追加したもの有りまたはなし) に設定する必要があります。ただし、デバイス名は、PKEY_ID を 4 桁の 16 進数で表したものに論理和を使用して 0x8000 メンバーシップビットを合わせたものにします。以下のようになります。
NAME=${PHYSDEV}.$((0x8000 | $PKEY_ID))
デフォルトでは、ファイル内の PKEY_ID は 10 進数として扱われ、16 進数に変換された後、論理和を用いて 0x8000 と合わされてデバイス用の適切な名前にします。ただしユーザーは、数字に標準 0x 接頭辞を追加して PKEY_ID を 16 進数で指定することもできます。

12.12. IPoIB 設定後の RDMA ネットワークテスト

IPoIB が設定されれば、IP アドレスを使用して RDMA デバイスの指定ができます。IP アドレスとホスト名を使用してマシンを指定することが一般的であるため、ほとんどの RDMA アプリケーションでは、接続するリモートマシンまたはローカルデバイスの指定にこの方法が優先されます。場合によっては、この方法が唯一の指定方法になります。
IPoIB 層の機能のテストには、標準 IP ネットワークテストツールを使って IPoIB デバイスの IP アドレスを提供できます。たとえば、IPoIB デバイスの IP アドレスの間で ping コマンドが機能させることができます。
Red Hat Enterprise Linux には qperfperftest という、2 つの異なる RDMA パフォーマンステストパッケージが含まれています。これらのうちのどちらかを使って RDMA ネットワークをさらにテストできます。
ただし、perftest パッケージの一部であるアプリケーション、または qperf アプリケーションを使用する場合は、アドレス解決に特別な注意があります。リモートホストは IP アドレスまたは IPoIB デバイスのホスト名を使用して指定されますが、テストアプリケーションは実際には異なる RDMA インターフェースを使って接続することが可能です。これは、ホスト名または IP アドレスを RDMA アドレスに変更するプロセスで、使用されるマシン 2 台の間で有効な RDMA アドレスのペアが許可されるためです。クライアントが複数の方法でサーバーに接続できる場合、プログラムは指定したパスに問題があれば、別のパスを選択することができます。たとえば、同じ InfiniBand サブネットに接続されているマシンにそれぞれ 2 つのポートがあり、各マシンの 2 つ目のポートに IP アドレスが提供された場合、プログラムは各マシンの 1 つ目のポートを有効な接続方法と判断し、それらを使用することになります。この場合、「初期の InfiniBand RDMA 操作のテスト」ibping で実行したように、どの perftest プログラムでもコマンドラインオプションを使ってどのカードとポートをバインドするかを指示することで、テストが必要な特定のポートで確実にテストを実行できます。qperf では、ポートへのバインディング方法は多少異なります。qperf プログラムは 1 台のマシン上でサーバーとして機能し、すべてのデバイス (RDMA 以外のデバイスを含む) をリッスンします。クライアントは、サーバーの有効な IP アドレスまたはホスト名を使って qperf に接続できます。qperf はまず、データ接続の開封を試み、クライアントのコマンドラインで提供された IP アドレスもしくはホスト名で要求されたテストを実行しますが、このアドレスに問題がある場合は、qperf はクライアントとサーバー間にあるいずれかの有効なパスでのテスト実行を試みます。このため、qperf が特定のリンク上でテストするには、qperf クライアントに -loc_id および -rem_id オプションを使用して特定リンク上でのテストを強制します。

12.13. GUI を使った IPoIB の設定

グラフィカルツールで InfiniBand 接続を設定するには、nm-connection-editor を使用します。

手順12.4 nm-connection-editor を使用して新規 InfiniBand 接続を追加する

  1. ターミナルで nm-connection-editor と入力します。
    ~]$ nm-connection-editor
  2. 追加 ボタンをクリックします。接続の種類の選択 ウィンドウが表示されます。InfiniBand を選択して 作成 をクリックします。InfiniBand 接続 1 の編集 ウィンドウが表示されます。
  3. InfiniBand タブで、InfiniBand 接続に使用するトランスポートモードをドロップダウンリストから選びます。
  4. InfiniBand MAC アドレスを入力します。
  5. 設定を確認してから 保存 ボタンをクリックします。
  6. 「InfiniBand タブの設定」を参照して、InfiniBand 固有のセッティングを編集します。

手順12.5 既存の InfiniBand 接続を編集する

既存の InfiniBand 接続を編集するには以下の手順に従います。
  1. ターミナルで nm-connection-editor と入力します。
    ~]$ nm-connection-editor
  2. 編集する接続を選択して、編集 ボタンをクリックします。
  3. 全般 タブを選択します。
  4. 接続名、自動接続の動作、および可用性のセッティングを設定します。
    編集 ダイアログの 全般 タブにある 5 つの設定は、すべての接続の種類で共通のものです。
    • Connection name - ネットワーク接続の分かりやすい名前をします。この名前は、Network ウィンドウメニューの接続名一覧に表示されます。
    • Automatically connect to this network when it is available - このチェックボックスを選択すると、NetworkManager が利用可能なときにこの接続に自動接続します。詳細は「control-center を使用した既存の接続の編集」を参照してください。
    • All users may connect to this network - このチェックボックスを選択すると、システムですべてのユーザーが利用できる接続が作成されます。この設定を変更するには root 権限が必要になる場合があります。詳細は「GUI を使用したシステム全体およびプライベート接続プロファイルの管理」を参照してください。
    • この接続を使用したときは自動的に VPN に接続する - このボックスを選択すると、この接続が利用可能な時に NetworkManager が自動で選択した VPN に接続します。ドロップダウンメニューから VPN を選択します。
    • ファイアウォールゾーン - ドロップダウンメニューからファイアウォールゾーンを選択します。ファイアウォールゾーンに関する詳細情報は、『Red Hat Enterprise Linux 7 セキュリティーガイド』を参照してください。
  5. 「InfiniBand タブの設定」を参照して、InfiniBand 固有のセッティングを編集します。

新規 (または修正した) 接続を保存して他の設定を行う

InfiniBand 接続の編集が終わったら、保存 ボタンをクリックしてカスタマイズした設定を保存します。
そして、以下のいずれかの設定をします。

12.13.1. InfiniBand タブの設定

新規の InfiniBand 接続をすでに追加している場合 (手順に関しては、手順12.4「nm-connection-editor を使用して新規 InfiniBand 接続を追加する」を参照)、InfiniBand タブを編集して、親インターフェースと InfiniBand ID を設定できます。
トランスポートモード
ドロップダウンリストから、Datagram または Connected モードを選択できます。他の IPoIB ネットワークで使用しているモードと同じものを選びます。
Device MAC アドレス
InfiniBand ネットワークのトラフィックで使用される InfiniBand 対応デバイスの MAC アドレスです。InfiniBand ハードウェアがインストールされていれば、このハードウェアのアドレスフィールドは事前に記入されます。
MTU
InfiniBand 接続で送信されるパケットに使用する最大転送単位 (MTU) のサイズをオプションで設定します。

12.14. 関連資料

インストールされているドキュメント

  • /usr/share/doc/initscripts-version/sysconfig.txt: 設定ファイルおよびそれらのディレクティブについて説明しています。

オンラインのドキュメント

https://www.kernel.org/doc/Documentation/infiniband/ipoib.txt
IPoIB ドライバーの説明で、関連する RFC の参照先も含まれています。

パート IV. サーバー

このパートでは、ネットワークで通常必要とされるサーバーの設定方法を説明します。

注記

Web ブラウザーを使用してサーバーを監視および管理する方法はRed Hat Enterprise Linux Cockpit の使用を参照してください。

第13章 DHCP サーバー

DHCP (Dynamic Host Configuration Protocol: 動的ホスト構成プロトコル) は、クライアントマシンに TCP/IP 情報を自動的に割り当てるネットワークプロトコルです。各 DHCP クライアントは、中央に配置された DHCP サーバーに接続します。DHCP サーバーは、クライアントのネットワーク設定情報 (IP アドレス、ゲートウェイ、DNS サーバーなど) を返します。

13.1. DHCP を使用する理由

DHCP は、クライアントネットワークインターフェースの自動設定に便利なものです。クライアントシステムの設定時に、IP アドレスやネットマスク、ゲートウェイ、DNS サーバーを指定する代わりに DHCP を選択できます。クライアントはこれらの情報を DHCP サーバーから取得します。多数のシステムの IP アドレスを変更する際にも DHCP は便利です。すべてのシステムを設定する代わりに、サーバーで新たな IP アドレスを 1 つの設定ファイルで編集できます。組織の DNS サーバーが変更される際は、DHCP クライアントではなく、DHCP サーバー上で変更が実施されます。ネットワークを再起動するかクライアントを再起動すれば、変更が反映されます。
機能している DHCP サーバーをネットワークに正常に接続していれば、ノートパソコンや他のモバイルコンピューターのユーザーはそれらのデバイスをあるオフィスから別のオフィスに移動して使用できます。
DNS および DHCP サーバー、またプロビジョニングアプリケーションの管理者は、組織内で使用するホスト名の形式について合意する必要があることに留意してください。ホスト名の形式については、「推奨される命名プラクティス」を参照してください。

13.2. DHCP サーバーの設定

dhcp パッケージには、Internet Systems Consortium (ISC) DHCP サーバーが含まれています。root でこのパッケージをインストールします。
~]# yum install dhcp
dhcp パッケージをインストールすると、/etc/dhcp/dhcpd.conf ファイルが作成されます。これは単なる空の設定ファイルです。root で以下のコマンドを実行します。
~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
サンプルの設定ファイルは、/usr/share/doc/dhcp-version;/dhcpd.conf.example にあります。/etc/dhcp/dhcpd.conf を設定するする際に、このファイルを使用してください。詳細は以下で説明します。
また、DHCP/var/lib/dhcpd/dhcpd.leases ファイルを使用してクライアントのリースデータベースを格納します。詳細は「リースデータベース」を参照してください。

13.2.1. 設定ファイル

DHCP サーバーを設定するには、最初にクライアントのネットワーク情報を保存している設定ファイルを作成します。このファイルを使用して、クライアントシステムに対するオプションを宣言します。
設定ファイルには追加のタブや空白行が含まれているため、簡単に書式を整えることができます。キーワードは大文字と小文字の区別がなく、行頭がハッシュ記号 (#) で始まる行はコメントとみなされます。
設定ファイルのステートメントには、次のような 2 つのタイプがあります。
  • パラメーター: タスクの実行方法、タスクを実行するかどうか、クライアントに送信するネットワーク設定のオプションを規定します。
  • 宣言 - ネットワークトポロジの記述、クライアントの記述、クライアントのアドレス指定、宣言グループへのパラメーターグループの適用を行います。
キーワードオプションから始まるパラメーターは、オプション と呼ばれます。オプションは、DHCP オプションを制御します。一方、パラメーターはオプションでない値を設定し、DHCP サーバーの動作を制御します。
中括弧 ({ }) で囲まれたセクションの前で宣言されたパラメーター (オプションを含む) は、グローバルパラメーターとみなされます。グローバルパラメーターは、これ以降のすべてのセクションに適用されます。

重要

設定ファイルが変更された場合、systemctl restart dhcpd コマンドを使って DHCP デーモンを再起動するまでは変更内容は反映されません。

注記

毎回 DHCP 設定ファイルを変更してサービスを再起動させる代わりに、omshell コマンドを使用すると、DHCP サーバーへの接続、クエリー、設定の変更をインタラクティブに行うことができます。omshell を使用すると、DHCP サーバーの実行中でも変更を行うことができます。omshell の詳細については、omshell の man ページを参照してください。
例13.1「サブネットの宣言」では、routerssubnet-maskdomain-searchdomain-name-servers、および time-offset の各オプションは、それらの下で宣言されている host ステートメントに使用されます。
機能するサブネットと、DHCP サーバーが接続するサブネットではすべて、subnet 宣言が 1 つ必要になります。これは DHCP デーモンにアドレスがそのサブネット上にあることを認識する方法を指示します。subnet 宣言は、そのサブネットに動的に割り当てるアドレスがない場合でも、各サブネットに必要となります。
この例では、サブネット内のすべての DHCP クライアントに対するグローバルオプションと range が宣言されています。クライアントには range 内の IP アドレスが割り当てられています。

例13.1 サブネットの宣言

subnet 192.168.1.0 netmask 255.255.255.0 {
        option routers                  192.168.1.254;
        option subnet-mask              255.255.255.0;
        option domain-search              "example.com";
        option domain-name-servers       192.168.1.1;
        option time-offset              -18000;     # Eastern Standard Time
	range 192.168.1.10 192.168.1.100;
}
サブネット内のシステムに動的 IP アドレスをリースする DHCP サーバーを設定するには、例13.2「Range パラメーター」の例の値を修正します。これにより、クライアントのデフォルトのリース時間、最大リース時間、ネットワークの設定値を宣言します。この例ではクライアントシステムに、range 192.168.1.10 から 192.168.1.100 までの IP アドレスを割り当てます。

例13.2 Range パラメーター

default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-search "example.com";
subnet 192.168.1.0 netmask 255.255.255.0 {
   range 192.168.1.10 192.168.1.100;
}
ネットワークインターフェースカードの MAC アドレスに基づいてクライアントに IP アドレスを割り当てるには、host 宣言内の hardware ethernet パラメーターを使用します。例13.3「DHCP を使用した静的 IP アドレス」の例では、host apex 宣言により、MAC アドレス 00:A0:78:8E:9E:AA のネットワークインターフェースカードが常に IP アドレス 192.168.1.4 を受け取るように指定されます。
オプションのパラメーターである host-name を使用すると、クライアントにホスト名を割り当てることができる点にも留意してください。

例13.3 DHCP を使用した静的 IP アドレス

host apex {
   option host-name "apex.example.com";
   hardware ethernet 00:A0:78:8E:9E:AA;
   fixed-address 192.168.1.4;
}
Red Hat Enterprise Linux 7 では、InfiniBand IPoIB インターフェースへの静的 IP アドレスの割り当てをサポートしています。ただし、これらのインターフェースには通常のハードウェアイーサネットアドレスがないため、IPoIB インターフェースに一意の ID を指定する別の方法を使用する必要があります。標準では、オプションの dhcp-client-identifier= コンストラクトを使用して、IPoIB インターフェースの dhcp-client-identifier フィールドを指定します。DHCP サーバーのホストコンストラクトは、最大でホストの 1 節あたりハードウェアイーサネット 1 つと dhcp-client-identifier エントリー 1 つをサポートします。ただし、固定アドレスエントリーは複数ある場合があり、DHCP サーバーは、DHCP リクエストを受信したネットワークに適切なアドレスに自動的に応答します。

例13.4 複数インターフェースにおける DHCP を使用した静的 IP アドレス

たとえば 2 つの InfiniBand インターフェースと各物理的インターフェース上に P_Key インターフェースがあり、イーサネット接続もある場合など、マシンの設定が複雑な場合は、以下の静的 IP コンストラクトを使用できます。
Host apex.0 {
    option host-name “apex.example.com”;
    hardware ethernet 00:A0:78:8E:9E:AA;
    option dhcp-client-identifier=ff:00:00:00:00:00:02:00:00:02:c9:00:00:02:c9:03:00:31:7b:11;
    fixed-address 172.31.0.50,172.31.2.50,172.31.1.50,172.31.3.50;
}

host apex.1 {
    option host-name “apex.example.com”;
    hardware ethernet 00:A0:78:8E:9E:AB;
    option dhcp-client-identifier=ff:00:00:00:00:00:02:00:00:02:c9:00:00:02:c9:03:00:31:7b:12;
    fixed-address 172.31.0.50,172.31.2.50,172.31.1.50,172.31.3.50;
}
デバイスに適切な dhcp-client-identifier を見つけるには、通常、接頭辞 ff:00:00:00:00:00:02:00:00:02:c9:00 を使用して、IPoIB インターフェースの最後の 8 バイトを追加します (これは、IPoIB インターフェースが接続されている InfiniBand ポートの 8 バイトの GUID と同じものです)。旧式のコントローラーのなかには、この接頭辞が適切でないものもあります。その場合、DHCP サーバーで tcpdump を使用し、着信 IPoIB DHCP リクエストを取得して、そこから適切な dhcp-client-identifier を収集することが推奨されます。例を示します。
]$ tcpdump -vv -i mlx4_ib0
tcpdump: listening on mlx4_ib0, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
23:42:44.131447 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
    0.0.0.0.bootpc > 255.255.255.255.bootps: [udp sum ok] BOOTP/DHCP, Request, length 300, htype 32, hlen 0, xid 0x975cb024, Flags [Broadcast] (0x8000)
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Discover
            Hostname Option 12, length 10: "rdma-qe-03"
            Parameter-Request Option 55, length 18:
              Subnet-Mask, BR, Time-Zone, Classless-Static-Route
              Domain-Name, Domain-Name-Server, Hostname, YD
              YS, NTP, MTU, Option 119
              Default-Gateway, Classless-Static-Route, Classless-Static-Route-Microsoft, Static-Route
              Option 252, NTP
            Client-ID Option 61, length 20: hardware-type 255, 00:00:00:00:00:02:00:00:02:c9:00:00:02:c9:02:00:21:ac:c1
上記のダンプでは、Client-ID フィールドが表示されています。hardware-type 255 は ID の最初の ff: に対応しており、ID の残りの部分は DHCP 設定ファイルに表記するそのままの形で引用されています。
同じ物理ネットワークを共有するすべてのサブネットは、例13.5「Shared-network 宣言」のように shared-network 宣言内で宣言される必要があります。shared-network 内でも囲まれた subnet 宣言の外にあるパラメーターは、グローバルパラメーターとみなされます。shared-network に割り当てる名前は、そのネットワークの記述的なタイトルにします。たとえば、テストラボ環境のサブネットの場合は、test-labというタイトルにします。

例13.5 Shared-network 宣言

shared-network name {
    option domain-search            "test.redhat.com";
    option domain-name-servers      ns1.redhat.com, ns2.redhat.com;
    option routers                  192.168.0.254;
    #more parameters for EXAMPLE shared-network
    subnet 192.168.1.0 netmask 255.255.252.0 {
        #parameters for subnet
        range 192.168.1.1 192.168.1.254;
    }
    subnet 192.168.2.0 netmask 255.255.252.0 {
        #parameters for subnet
        range 192.168.2.1 192.168.2.254;
    }
}
例13.6「Group 宣言」にあるように、group 宣言を使用すると、宣言のグループにグローバルパラメーターを適用できます。たとえば、共有ネットワーク、サブネット、ホストをグループ化できます。

例13.6 Group 宣言

group {
   option routers                  192.168.1.254;
   option subnet-mask              255.255.255.0;
   option domain-search              "example.com";
   option domain-name-servers       192.168.1.1;
   option time-offset              -18000;     # Eastern Standard Time
   host apex {
      option host-name "apex.example.com";
      hardware ethernet 00:A0:78:8E:9E:AA;
      fixed-address 192.168.1.4;
   }
   host raleigh {
      option host-name "raleigh.example.com";
      hardware ethernet 00:A1:DD:74:C3:F2;
      fixed-address 192.168.1.6;
   }
}

注記

提供されている設定ファイルのサンプルをベースとして使用し、それにカスタムの設定オプションを追加できます。このファイルを適切な場所にコピーするには、root で以下のコマンドを実行します。
~]# cp /usr/share/doc/dhcp-version_number/dhcpd.conf.example /etc/dhcp/dhcpd.conf
ここでの version_number は、DHCP バージョン番号になります。
オプションステートメントの全一覧とその機能については、dhcp-options(5) の man ページを参照してください。

13.2.2. リースデータベース

DHCP サーバーでは、/var/lib/dhcpd/dhcpd.leases ファイルが DHCP クライアントのリースデータベースを格納しています。このファイルは変更しないでください。最近割り当てられた各 IP アドレスの DHCP リース情報は、このリースデータベースに自動的に保存されます。この情報には、リース期間、IP アドレスの割り当て先、リースの開始日と終了日、リース取得に使用されるネットワークインターフェースカードの MAC アドレスが含まれます。
リースデータベースの時刻はすべて、現地時間でなく協定世界時 (UTC) を使用します。
リースデータベースは、サイズが大きくなり過ぎるのを避けるために適宜再作成されます。最初に、すべての既知のリースは一時的なリースデータベースに保存されます。dhcpd.leases ファイルの名前は dhcpd.leases~ に変更され、一時的なリースデータベースが dhcpd.leases に書き込まれます。
リースデータベースがバックアップファイルに名前変更された後、新規ファイルが書き込まれる前に、DHCPDHCP デーモンが強制終了されるか、システムがクラッシュする可能性があります。この場合、dhcpd.leases ファイルは存在しませんが、サービスを起動する必要があります。この際、新規のリースファイルを作成しないでください。作成すると、それまでのリースはすべて失われ、多くの問題が発生します。これを解決する方法は、dhcpd.leases~ バックアップファイルの名前を dhcpd.leases に変更して、デーモンを起動することです。

13.2.3. サーバーの起動と停止

重要

DHCP サーバーの初回起動時には、dhcpd.leases ファイルが存在しないと起動に失敗します。ファイルが存在しない場合、touch /var/lib/dhcpd/dhcpd.leases コマンドを使用してファイルを作成してください。このサーバーが DNS サーバーとして BIND も実行している場合、このステップは不要です。named サービスを開始すると、自動的に dhcpd.leases ファイルを確認するためです。
これまで稼働していたシステムで、新規のリースファイルを作成しないでください。作成すると、それまでのリースはすべて失われ、多くの問題が発生します。これを解決する方法は、dhcpd.leases~ バックアップファイルの名前を dhcpd.leases に変更して、デーモンを起動することです。
DHCP サービスを起動するには、以下のコマンドを実行します。
systemctl start dhcpd.service
DHCP サービスを停止するには、以下のコマンドを実行します。
systemctl stop dhcpd.service
デフォルトでは、DHCP サービスはブート時に起動しません。ブート時にデーモンが自動的に起動するように設定する方法については、Red Hat Enterprise Linux システム管理者のガイドを参照してください。
システムに複数のネットワークインターフェースが接続されており、DHCP サーバーがいずれか 1 つのインターフェースでのみ DHCP リクエストをリッスンするようにするには、DHCP サーバーがそのデバイス上でのみリッスンするように設定します。DHCP デーモンは、/etc/dhcp/dhcpd.conf ファイル内でサブネット宣言がなされているインターフェース上でのみ、リッスンします。
これは、ネットワークカードが 2 つあるファイアウォールマシンで役立ちます。1 つのネットワークカードを DHCP クライアントとして設定して、インターネットの IP アドレスを取得します。もう 1 つのネットワークカードは、ファイアウォールの背後にある内部ネットワークの DHCP サーバーとして使用できます。内部ネットワークに接続されたネットワークカードのみを指定すると、ユーザーはインターネット経由でデーモンに接続できないため、システムをよりセキュアにできます。
コマンドラインオプションを指定するには、rootdhcpd.service ファイルをコピーしてから編集します。例を示します。
~]# cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/
~]# vi /etc/systemd/system/dhcpd.service
[Service] セクションの下にある行を編集します。
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid your_interface_name(s)
その後に root でサービスを再起動します。
~]# systemctl --system daemon-reload
~]# systemctl restart dhcpd
/etc/systemd/system/dhcpd.service ファイルの [Service] セクションの下では、ExecStart=/usr/sbin/dhcpd にコマンドラインオプションを追加できます。使用可能なオプションには、以下のものがあります。
  • -p portnum: dhcpd がリッスンする UDP ポート番号を指定します。デフォルト値はポート 67 です。DHCP サーバーは、指定された UDP ポートよりも番号が 1 つ大きいポートにある DHCP クライアントに応答を送信します。たとえば、デフォルトのポート 67 を使用する場合、サーバーはポート 67 でリクエストをリッスンし、ポート 68 にあるクライアントに応答します。ポートが指定され、DHCP リレーエージェントが使用される場合、DHCP は DHCP リレーエージェントがリッスンするポートと同じポートを指定する必要があります。詳細は「DHCP リレーエージェント」を参照してください。
  • -f: フォアグラウンドプロセスとしてデーモンを実行します。これは主にデバッグ用に使用されます。
  • -d: 標準エラー記述子に DHCP サーバーデーモンを記録します。これは主にデバッグ用に使用されます。このオプションを指定しないと、ログは /var/log/messages に書き込まれます。
  • -cf filename: 設定ファイルの場所を指定します。デフォルトの場所は /etc/dhcp/dhcpd.conf です。
  • -lf filename: リースデータベースファイルの場所を指定します。リースデータベースファイルがすでに存在する場合、DHCP サーバーを起動する度に、同じファイルが使用されるようにすることが非常に重要です。このオプションは、実稼働環境以外のマシンでデバッグする目的にのみ使用することが強く推奨されます。デフォルトの場所は /var/lib/dhcpd/dhcpd.leases です。
  • -q - デーモンの起動時に著作権に関するメッセージ全体を表示しません。

13.3. DHCP リレーエージェント

DHCP リレーエージェント (dhcrelay) を使うと、DHCP サーバーがないサブネットから他のサブネットにある DHCP サーバーに DHCP および BOOTP リクエストのリレーができるようになります。
DHCP クライアントが情報を要求すると、DHCP リレーエージェントは起動時に、指定された DHCP サーバーの一覧に要求を転送します。DHCP サーバーが応答を返すと、その応答は元の要求を送信したネットワーク上でブロードキャストまたはユニキャストで送信されます。
IPv4 用の DHCP リレーエージェントである dhcrelay は、インターフェースが /etc/sysconfig/dhcrelay 内で INTERFACES ディレクティブを使って指定されている場合を除いて、DHCPv4 および BOOTP リクエストをリッスンします。これについては、「dhcrelay の DHCPv4 および BOOTP リレーエージェントとしての設定」を参照してください。IPv6 用の DHCP リレーエージェントである dhcrelay6 にはこのデフォルトの動作はないので、DHCPv6 リクエストをリッスンするインターフェースを指定する必要があります。これについては、「dhcrelay を DHCPv6 リレーエージェントとして設定」を参照してください。
dhcrelay は、DHCPv4 および BOOTP リレーエージェント (デフォルト) として実行するか、DHCPv6 リレーエージェント (-6 引数を使用) として実行できます。使用法に関するメッセージを表示するには、dhcrelay -h コマンドを実行します。

13.3.1. dhcrelay の DHCPv4 および BOOTP リレーエージェントとしての設定

dhcrelayDHCPv4 および BOOTP モードで実行するには、リクエストを転送するサーバーを指定します。rootdhcrelay.service ファイルをコピーして、編集します。
~]# cp /lib/systemd/system/dhcrelay.service /etc/systemd/system/
~]# vi /etc/systemd/system/dhcrelay.service
[Service] セクション下にある ExecStart オプションを編集し、サーバー IPv4 のアドレスを行末に追加します。例を示します。
ExecStart=/usr/sbin/dhcrelay -d --no-pid 192.168.1.1
DHCP リレーエージェントが DHCP リクエストをリッスンするインターフェースを指定するには、そのインターフェースを -i 引数をつけて ExecStart オプションに追加します (これがない場合は、すべてのインターフェースをリッスンすることになります)。例を示します。
ExecStart=/usr/sbin/dhcrelay -d --no-pid 192.168.1.1 -i em1
他のオプションについては、dhcrelay(8) man ページを参照してください。
変更を反映させるには、root でサービスを再起動します。
~]# systemctl --system daemon-reload
~]# systemctl restart dhcrelay

13.3.2. dhcrelay を DHCPv6 リレーエージェントとして設定

dhcrelayDHCPv6 モードで実行するには、-6 引数をつけて (クライアントまたは他のリレーエージェントからクエリーを受信する) 下方インターフェースと(クライアントおよび他のリレーエージェントからのクエリーの転送先となる) 上方インターフェースを指定します。rootdhcrelay.servicedhcrelay6.service にコピーして、編集します。
~]# cp /lib/systemd/system/dhcrelay.service /etc/systemd/system/dhcrelay6.service
~]# vi /etc/systemd/system/dhcrelay6.service
[Service] セクション下の ExecStart オプションを編集し、-6 引数をつけて下方インターフェース上方インターフェースを追加します。例を示します。
ExecStart=/usr/sbin/dhcrelay -d --no-pid -6 -l em1 -u em2
他のオプションについては、dhcrelay(8) man ページを参照してください。
変更を反映させるには、root でサービスを再起動します。
~]# systemctl --system daemon-reload
~]# systemctl restart dhcrelay6

13.4. マルチホーム DHCP サーバーの設定

マルチホーム DHCP サーバーは、複数のネットワーク、すなわち複数のサブネットとして機能します。以下のセクションにあげる例では、DHCP サーバーが複数のネットワークで機能するように設定する方法、リッスンするネットワークインターフェースを選択する方法、ネットワークを移動するシステム用にネットワーク設定を定義する方法について詳述しています。
変更を行う前に、既存の /etc/dhcp/dhcpd.conf ファイルのバックアップを作成してください。
DHCP デーモンは、/etc/dhcp/dhcpd.conf ファイル内でサブネット宣言されているインターフェースでのみリッスンします。
以下は、10.0.0.0/24 ネットワークの eth0172.16.0.0/24 ネットワークの eth1 という 2 つのネットワークインターフェースを持つサーバー用の基本的な /etc/dhcp/dhcpd.conf ファイルです。複数の subnet 宣言により、複数のネットワークに対して異なる設定を定義できます。
default-lease-time 600;
max-lease-time 7200;
subnet 10.0.0.0 netmask 255.255.255.0 {
	option subnet-mask 255.255.255.0;
	option routers 10.0.0.1;
	range 10.0.0.5 10.0.0.15;
}
subnet 172.16.0.0 netmask 255.255.255.0 {
	option subnet-mask 255.255.255.0;
	option routers 172.16.0.1;
	range 172.16.0.5 172.16.0.15;
}
subnet 10.0.0.0 netmask 255.255.255.0;
subnet 宣言は、DHCP サーバーが機能するすべてのネットワークで必要です。複数のサブネットには、複数の subnet 宣言が必要です。subnet 宣言の範囲内に DHCP サーバーのネットワークインターフェースがない場合は、DHCP サーバーはそのネットワークでは機能しません。
subnet 宣言が 1 つしかなく、かつそのサブネットの範囲内にネットワークインターフェースがない場合には、DHCP デーモンは起動に失敗し、以下のようなエラーが /var/log/messages に記録されます。
dhcpd: No subnet declaration for eth0 (0.0.0.0).
dhcpd: ** Ignoring requests on eth0.  If this is not what
dhcpd:    you want, please write a subnet declaration
dhcpd:    in your dhcpd.conf file for the network segment
dhcpd:    to which interface eth1 is attached. **
dhcpd:
dhcpd:
dhcpd: Not configured to listen on any interfaces!
option subnet-mask 255.255.255.0;
option subnet-mask オプションは、サブネットマスクを定義し、subnet 宣言内の netmask 値を上書きします。簡単なケースでは、サブネットとネットマスクの値は同じです。
option routers 10.0.0.1;
option routers オプションは、サブネット用のデフォルトゲートウェイを定義します。これは、システムが異なるサブネット上の内部ネットワーク、さらには外部ネットワークに届くために必要です。
range 10.0.0.5 10.0.0.15;
range オプションは、利用可能な IP アドレスのプールを指定します。指定された IP アドレスの範囲の中からアドレスがシステムに割り当てられます。
詳細情報は、dhcpd.conf(5) man ページを参照してください。

警告

DHCP サーバーが IP 範囲からの IP アドレスを別の物理 Ethernet セグメントにした場合に設定の間違いを回避するため、共有ネットワーク宣言にこれ以上サブネットを含めいないようにしてください。

13.4.1. ホストの設定

変更を行う前に、既存の /etc/sysconfig/dhcpd および /etc/dhcp/dhcpd.conf ファイルのバックアップを作成してください。
複数ネットワークに対する単一システムの設定

以下の /etc/dhcp/dhcpd.conf の例では、2 つのサブネットを作成し、接続するネットワークに応じて IP アドレスを同じシステム用に設定しています。

default-lease-time 600;
max-lease-time 7200;
subnet 10.0.0.0 netmask 255.255.255.0 {
	option subnet-mask 255.255.255.0;
	option routers 10.0.0.1;
	range 10.0.0.5 10.0.0.15;
}
subnet 172.16.0.0 netmask 255.255.255.0 {
	option subnet-mask 255.255.255.0;
	option routers 172.16.0.1;
	range 172.16.0.5 172.16.0.15;
}
host example0 {
	hardware ethernet 00:1A:6B:6A:2E:0B;
	fixed-address 10.0.0.20;
}
host example1 {
	hardware ethernet 00:1A:6B:6A:2E:0B;
	fixed-address 172.16.0.20;
}
host example0
host 宣言は、単一のシステム用に IP アドレスなどの特定のパラメーターを定義します。複数のホスト用に特定のパラメーターを設定するには、複数の host 宣言を使用します。
大半の DHCP クライアントは host 宣言内の名前を無視するため、他の host 宣言に対して一意である限りはどのような名前でも構いません。同じシステムを複数のネットワークに対して設定するには、各 host 宣言に異なる名前を使用します。異なる名前を使用しないと、DHCP デーモンは起動に失敗します。システムは host 宣言内の名前ではなく、hardware ethernet オプションで識別されます。
hardware ethernet 00:1A:6B:6A:2E:0B;
hardware ethernet オプションは、システムを識別します。アドレスを確認するには、ip link コマンドを実行します。
fixed-address 10.0.0.20;
fixed-address オプションは、hardware ethernet オプションで指定されたシステムに有効な IP アドレスを割り当てます。このアドレスは、range オプションで指定された IP アドレスプール外でなければなりません。
option ステートメントの最後にセミコロンがない場合、DHCP デーモンは起動に失敗し、以下のようなエラーが /var/log/messages に記録されます。
/etc/dhcp/dhcpd.conf line 20: semicolon expected.
dhcpd: }
dhcpd: ^
dhcpd: /etc/dhcp/dhcpd.conf line 38: unexpected end of file
dhcpd:
dhcpd: ^
dhcpd: Configuration file errors encountered -- exiting
複数のネットワークインターフェースを持つシステムの設定

以下の host 宣言は複数のネットワークインターフェースを持つ単一のシステムを設定するため、各インターフェースは同一の IP アドレスを受け取ります。両方のネットワークインターフェースが同じネットワークに同時に接続されている場合には、この設定は機能しません。

host interface0 {
	hardware ethernet 00:1a:6b:6a:2e:0b;
	fixed-address 10.0.0.18;
}
host interface1 {
	hardware ethernet 00:1A:6B:6A:27:3A;
	fixed-address 10.0.0.18;
}
この例では、interface0 が最初のネットワークインターフェースで、interface1 が 2 番目のインターフェースになります。異なる hardware ethernet オプションが各インターフェースを識別します。
このようなシステムを別のネットワークに接続するには、host 宣言をさらに追加します。ただし、以下の点に注意して下さい。
  • ホストが接続されるネットワーク用の有効な fixed-address を割り当てます。
  • host 宣言の名前は一意にします。
host 宣言で指定した名前が一意でない場合、DHCP デーモンは起動に失敗し、以下のようなエラーが /var/log/messages に記録されます。
dhcpd: /etc/dhcp/dhcpd.conf line 31: host interface0: already exists
dhcpd: }
dhcpd: ^
dhcpd: Configuration file errors encountered -- exiting
このエラーは、/etc/dhcp/dhcpd.conf に定義された host interface0 宣言が複数あるために生じたものです。

13.5. IPv6 の DHCP (DHCPv6)

ISC DHCP には、4.x リリース以降の DHCPv6 サーバー、クライアント、およびリレーエージェント機能に対する IPv6 (DHCPv6) のサポートが含まれています。エージェントは IPv4IPv6 の両方をサポートしていますが、一度に管理できるのは 1 つのプロトコルのみです。両方をサポートするには、IPv4IPv6 に対して別個に起動する必要があります。たとえば、DHCPv4DHCPv6 についてそれぞれの設定ファイルである /etc/dhcp/dhcpd.conf/etc/dhcp/dhcpd6.conf を編集して、以下のコマンドを実行します。
~]# systemctl start dhcpd
~]# systemctl start dhcpd6
DHCPv6 サーバーの設定ファイルは、/etc/dhcp/dhcpd6.conf にあります。
サーバー設定ファイルのサンプルは、/usr/share/doc/dhcp-version/dhcpd6.conf.example にあります。
以下は、シンプルな DHCPv6 サーバー設定ファイルの例です。
subnet6 2001:db8:0:1::/64 {
        range6 2001:db8:0:1::129 2001:db8:0:1::254;
        option dhcp6.name-servers fec0:0:0:1::1;
        option dhcp6.domain-search "domain.example";
}
ネットワークインターフェースカードの MAC アドレスで、fixed-address からクライアントに割り当てるには、hardware ethernet パラメーターを使用します。
host otherclient {
        hardware ethernet 01:00:80:a2:55:67;
        fixed-address6 3ffe:501:ffff:100::4321;
 }
IPv6 の shared-network および group の宣言の設定オプションは、IPV4 と同じです。詳細は 例13.5「Shared-network 宣言」 および 例13.6「Group 宣言」 に紹介されている例を参照してください。

13.6. IPv6 ルーター用 radvd デーモンの設定

ルーター広告デーモン (radvd) により、IPv6 の Stateless Autoconfiguration に必要なルーター広告メッセージが送信されます。これらの広告を元に、ユーザーはアドレス、設定、ルートを自動的に設定し、デフォルトのルーターを選択できます。radvd デーモンを設定するには、以下の手順を実施します。
  1. radvd デーモンをインストールします。
    ~]# sudo yum install radvd
  2. /etc/radvd.conf ファイルを設定します。以下に例を示します。
    interface eth0
    {
    AdvSendAdvert on;
    MinRtrAdvInterval 30;
    MaxRtrAdvInterval 100;
    prefix 2001:db8:1:0::/64
    {
    AdvOnLink on;
    AdvAutonomous on;
    AdvRouterAddr off;
    };
    
    };

    注記

    ルーター広告と共に、さらに DNS リゾルバーを通知する場合は、/etc/radvd.conf ファイルに RDNSS <ip> <ip> <ip> { }; オプションを追加します。サブネットに DHCPv6 サービスを設定するには、AdvManagedFlagon に設定します。この設定により、DHCPv6 サービスが利用可能な場合、クライアントはルーター広告により IPv6 アドレスを自動的に取得できます。DHCPv6 サービス設定の詳細については、「IPv6 の DHCP (DHCPv6)」を参照してください。
  3. radvd デーモンを有効にします。
    ~]# sudo systemctl enable radvd.service
  4. 今すぐ radvd デーモンを起動します。
    ~]# sudo systemctl start radvd.service
ルーター広告パッケージの内容および radvd デーモンにより送信された設定値を表示するには、radvdump コマンドを使用します。
~]# radvdump
Router advertisement from fe80::280:c8ff:feb9:cef9 (hoplimit 255)
        AdvCurHopLimit: 64
        AdvManagedFlag: off
        AdvOtherConfigFlag: off
        AdvHomeAgentFlag: off
        AdvReachableTime: 0
        AdvRetransTimer: 0
        Prefix 2002:0102:0304:f101::/64
                AdvValidLifetime: 30
                AdvPreferredLifetime: 20
                AdvOnLink: off
                AdvAutonomous: on
                AdvRouterAddr: on
        Prefix 2001:0db8:100:f101::/64
                AdvValidLifetime: 2592000
                AdvPreferredLifetime: 604800
                AdvOnLink: on
                AdvAutonomous: on
                AdvRouterAddr: on
        AdvSourceLLAddress: 00 80 12 34 56 78
radvd デーモンの詳細については、radvd(8)radvd.conf(5)radvdump(8) man ページを参照してください。

13.7. DHCPv6 と radvd の比較

IPv4 の動的ホスト設定は、主に DHCPv4 に適用されます。ただし、IPv6 では、以下のオプションを使用できます。
  • 手動
  • radvd デーモンの使用
  • DHCPv6 サーバーの使用

手動

手動アドレス指定はいつでも利用できます。IPv6 アドレスをシステムに割り当てるには、「nmcli を使用したネットワーク接続」「テキスト形式のユーザーインターフェース nmtui を使ったボンディングの設定」「ip コマンドを使用した IP ネットワークの設定」 で説明しているツールを使用できます。

radvd デーモンの使用

標準仕様に準拠した IPv6 ネットワークは、ルーター通知を提供する必要があるため、ルーター通知デーモン (radvd) を実行して IPv6 設定オプションを適用できます。ルーター通知は、実際に物理 LAN でローカルに使用できるプレフィックスに関するオンリンク情報を提供します。ルーター通知のほかに、手動 IPv6 設定、ルーター通知による自動 IPv6 設定、または動的ホスト構成プロトコル (DHCPv6) のいずれかを選択できます。radvd デーモンの設定方法は、「IPv6 ルーター用 radvd デーモンの設定」 を参照してください。

DHCPv6 サーバーの使用

アドレス管理を中央管理している場合は、DHCPv6 サーバーを設定できます。DHCPv6 の可用性は、ルーター通知パケットのフラグにより通知されます。

表13.1 DHCPv6 と radvd の比較

DHCPv6radvd
プライバシーを保護するために、ランダムなアドレスを保証します。デフォルトゲートウェイに関する情報を入力します。
クライアントに、さらなるネットワーク設定オプションを送信します。たとえば、ネットワークタイムプロトコル (NTP) サーバー、セッション開始プロトコル (SIP) サーバー、プレブート実行環境 (iPXE) 設定などです。 
MAC アドレスを IPv6 アドレスにマップします。 

注記

ネットワークを正しく設定するには、ルーター通知のみがデフォルトゲートウェイ