Red Hat Training
A Red Hat training course is available for RHEL 8
ネットワークの設定および管理
ネットワークインターフェイス、ファイアウォール、および高度なネットワーク機能の管理
概要
firewalld
サービス、nftables
フレームワーク、Express Data Path (XDP) などのパケットフィルタリングソフトウェア。
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
Red Hat ドキュメントへのフィードバック (英語のみ)
当社のドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
特定の文章に関するコメントの送信
- Multi-page HTML 形式でドキュメントを表示し、ページが完全にロードされてから右上隅に Feedback ボタンが表示されていることを確認します。
- カーソルを使用して、コメントを追加するテキスト部分を強調表示します。
- 強調表示されたテキストの近くに表示される Add Feedback ボタンをクリックします。
- フィードバックを追加し、Submit をクリックします。
Bugzilla からのフィードバック送信 (アカウントが必要)
- Bugzilla の Web サイトにログインします。
- Version メニューから正しいバージョンを選択します。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- Submit Bug をクリックします。
第1章 一貫性のあるネットワークインターフェイスデバイスの命名
Linux カーネルは、固定の接頭辞と、カーネルがネットワークデバイスを初期化するにつれて増加する番号を組み合わせて、ネットワークインターフェイスに名前を割り当てます。たとえば、eth0
は、起動時にプローブされる最初のデバイスを表します。システムに別のネットワークインターフェイスカードを追加すると、カーネルデバイス名の割り当てが固定されなくなります。したがって、システムの再起動後に、カーネルに別の名前を付けることができます。
この問題を解決するために、udev
デバイスマネージャーはさまざまな命名スキームをサポートしています。デフォルトでは、udev
は、ファームウェア、トポロジー、場所の情報に基づいて固定名を割り当てます。これには、次の利点があります。
- デバイス名は完全に予測可能です。
- ハードウェアを追加または削除しても、再列挙が行われないため、デバイス名は固定されたままになります。
- 不具合のあるハードウェアをシームレスに交換できます。
Red Hat は、一貫性のあるデバイス命名が無効になっているシステムをサポートしていません。詳細は、Is it safe to set net.ifnames=0? を参照してください。
1.1. ネットワークインターフェイスのデバイス命名階層
一貫したデバイスの命名が有効 (Red Hat Enterprise Linux のデフォルト) になると、udev
デバイスマネージャーは以下のスキームに基づいてデバイス名を生成します。
Scheme | 説明 | 例 |
---|---|---|
1 |
デバイス名には、ファームウェアまたは BIOS が提供するオンボードデバイスのインデックス番号が含まれます。この情報が利用できない、または該当しない場合は、 |
|
2 |
デバイス名には、ファームウェアまたは BIOS が提供する PCI Express (PCIe) ホットプラグインスロットのインデックス番号が含まれます。この情報が利用できない、または該当しない場合は、 |
|
3 |
デバイス名には、ハードウェアのコネクターの物理的な場所が含まれます。この情報が利用できない、または該当しない場合は、 |
|
4 | デバイス名には MAC アドレスが含まれます。Red Hat Enterprise Linux では、デフォルトではこのスキームが使用されません。管理者は、必要に応じて使用できます。 |
|
5 |
従来の、予測できないカーネル命名スキーム。 |
|
Red Hat Enterprise Linux では、デフォルトでは、/usr/lib/systemd/network/99-default.link
ファイルの NamePolicy
設定に基づいてデバイス名が選択されます。NamePolicy
の値の順序は重要です。Red Hat Enterprise Linux では、そのファイルで指定され、udev
が生成した最初のデバイス名が使用されます。
udev
ルールを手動で設定し、カーネルデバイス名を変更すると、このルールが優先されます。
1.2. ネットワークデバイスの名前変更の仕組み
デフォルトでは、Red Hat Enterprise Linux では一貫したデバイス命名が有効になっています。udev
デバイスマネージャーは、デバイスの名前を変更するさまざまなルールを処理します。udev
サービスは、これらのルールを以下の順序で処理します。
-
/usr/lib/udev/rules.d/60-net.rules
ファイルは、/lib/udev/rename_device
ヘルパーユーティリティーが、/etc/sysconfig/network-scripts/ifcfg-*
ファイルのHWADDR
パラメーターを検索することを定義します。変数に設定した値がインターフェイスの MAC アドレスに一致すると、ヘルパーユーティリティーは、インターフェイスの名前を、ファイルのDEVICE
パラメーターに設定した名前に変更します。 -
/usr/lib/udev/rules.d/71-biosdevname.rules
ファイルは、biosdevname
ユーティリティーが直前の手順で名前が変更されていない場合に、命名ポリシーに従ってインターフェイスの名前を変更することを定義します。 -
/usr/lib/udev/rules.d/75-net-description.rules
ファイルは、udev
がネットワークインターフェイスデバイスを検査し、udev
の内部変数のプロパティーが次の手順で処理されることを定義します。このプロパティーの一部は未定義である可能性があることに注意してください。 /usr/lib/udev/rules.d/80-net-setup-link.rules
ファイルはnet_setup_link
udev
のビルトインを呼び出し、ポリシーを適用します。以下は、/usr/lib/systemd/network/99-default.link
ファイルに保存されているデフォルトポリシーです。[Link] NamePolicy=kernel database onboard slot path MACAddressPolicy=persistent
このポリシーでは、カーネルが永続名を使用すると、
udev
がインターフェイスの名前を変更します。カーネルが永続名を使用しないと、udev
はインターフェイスを、udev
のハードウェアデータベースが提供する名前に変更します。このデータベースが利用できない場合、Red Hat Enterprise Linux は上記のメカニズムにフォールバックします。別の方法では、メディアアクセス制御 (MAC) アドレスベースのインターフェイス名に対して、このファイルの
NamePolicy
パラメーターをmac
に設定します。/usr/lib/udev/rules.d/80-net-setup-link.rules
ファイルは、udev
が、以下の順番でudev
内のパラメーターに基づいてインターフェイスの名前を変更することを定義します。-
ID_NET_NAME_ONBOARD
-
ID_NET_NAME_SLOT
-
ID_NET_NAME_PATH
あるパラメーターが設定されていないと、
udev
は次のパラメーターを使用します。パラメーターが設定されていないと、インターフェイスの名前が変更されません。-
手順 3 および 4 では、ネットワークインターフェイスのデバイス命名階層 で説明されている命名スキーム 1 から 4 を実装します。
関連情報
- インストール中にイーサネットインターフェイスの接頭辞のカスタマイズ
-
systemd.link(5)
man page
1.3. x86_64 プラットフォームで説明されている予想可能なネットワークインターフェイスのデバイス名
一貫性のあるネットワークデバイス名機能が有効になると、udev
デバイスマネージャーは異なる基準に基づいてデバイスの名前を作成します。インターフェイス名は、インターフェイスの種類に基づいて 2 文字の接頭辞で始まります。
-
en
はイーサネット -
wl
はワイヤレス LAN (WLAN) -
ww
はワイヤレス広域ネットワーク (WWAN)
さらに、udev
デバイスマネージャーが適用するスキーマに基づいて、上記の接頭辞のいずれかに、次のいずれかが追加されます。
-
o<on-board_index_number>
s<hot_plug_slot_index_number>[f<function>][d<device_id>]
すべての多機能 PCI デバイスには、関数
0
デバイスを含め、デバイス名に[f<function>]
番号がある点に注意してください。-
x<MAC_address>
[P<domain_number>]p<bus>s<slot>[f<function>][d<device_id>]
[P<domain_number>]
の部分は、PCI の地理的な場所を定義します。この部分は、ドメイン番号が0
でない場合にのみ設定されます。[P<domain_number>]p<bus>s<slot>[f<function>][u<usb_port>][…][c<config>][i<interface>]
USB デバイスの場合は、ハブのポート番号の完全なチェーンで設定されます。名前が最大 (15 文字) より長い場合、この名前はエクスポートされません。チェーンに複数の USB デバイスがある場合、
udev
は USB 設定記述子 (c1
) および USB インターフェイス記述子 (i0
) のデフォルト値を表示しません。
1.4. System z プラットフォームで予測可能なネットワークインターフェイスデバイス名
一貫性のあるネットワークデバイス名機能が有効になると、System z プラットフォームの udev
デバイスマネージャーにより、バス ID に基づいてデバイス名が作成されます。バス ID は、s390 チャンネルサブシステム内のデバイスを識別します。
CCW (Channel Command Word) デバイスの場合、バス ID は、先頭に 0.n
接頭辞が付いたデバイス番号です。ここで n
は、サブチャンネルのセット ID です。
イーサネットインターフェイスの名前は enccw0.0.1234
などになります。SLIP (Serial Line Internet Protocol) の CTC (Channel-to-Channel) ネットワークデバイスの名前は、slccw0.0.1234
などになります。
znetconf -c
コマンドまたは lscss -a
コマンドを使用して、利用可能なネットワークデバイスとそのバス ID を表示します。
Red Hat Enterprise Linux は、RDMA over Converged Ethernet (RoCE) Express PCI 機能の予測可能で永続的なインターフェイス名もサポートしています。ユーザー識別子 (UID) と機能識別子 (FID) の 2 つの識別子が、予測可能なインターフェイス名を提供します。システムで UID ベースの予測可能なインターフェイス名を取得するには、優先される命名スキームである UID の一意性を強制します。一意の UID が使用できない場合、RHEL は FID を使用して予測可能なインターフェイス名を設定します。
1.5. インストール中にイーサネットインターフェイスの接頭辞のカスタマイズ
Red Hat Enterprise Linux のインストール時に、イーサネットインターフェイス名の接頭辞をカスタマイズできます。
Red Hat は、デプロイ済みシステムで prefixdevname
ユーティリティーを使用した接頭辞のカスタマイズをサポートしていません。
RHEL のインストール後、udev
サービスは、イーサネットデバイスに <prefix>.<index>
という名前を付けます。たとえば、接頭辞 net
を選択すると、RHEL はイーサネットインターフェイスの名前を net0
、net1
などに設定します。
前提条件
設定する接頭辞は、以下の要件を満たします。
- ASCII 文字で設定される。
- 英数字の文字列である。
- 16 文字より短い。
-
eth
、eno
、ens
、およびem
など、ネットワークインターフェイスの命名に使用される他の周知の接頭辞と競合しない。
手順
- Red Hat Enterprise Linux インストールメディアを起動します。
ブートマネージャーで以下を実行します。
-
Install Red Hat Enterprise Linux <version>
のエントリーを選択し、Tab を押してエントリーを編集します。 -
net.ifnames.prefix=<prefix>
をカーネルオプションに追加します。 - Enter を押して、インストーラーを起動します。
-
- Red Hat Enterprise Linux をインストールします。
検証
インストール後、イーサネットインターフェイスを表示します。
# ip link show ... 2: net0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 00:53:00:c5:98:1c brd ff:ff:ff:ff:ff:ff 3: net1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 00:53:00:c2:39:9e brd ff:ff:ff:ff:ff:ff ...
1.6. udev ルールを使用したユーザー定義のネットワークインターフェイス名の割り当て
udev
デバイスマネージャーは、インターフェイス名をカスタマイズするための一連のルールをサポートしています。
手順
すべてのネットワークインターフェイスとその MAC アドレスを表示します。
# ip link list enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether b4:96:91:14:ae:58 brd ff:ff:ff:ff:ff:ff enp6s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether b4:96:91:14:ae:5a brd ff:ff:ff:ff:ff:ff enp4s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 00:90:fa:6a:7d:90 brd ff:ff:ff:ff:ff:ff
次のコンテンツでファイル
/etc/udev/rules.d/70-custom-ifnames.rules
を作成します。SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="b4:96:91:14:ae:58",ATTR{type}=="1",NAME="provider0" SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="b4:96:91:14:ae:5a",ATTR{type}=="1",NAME="provider1" SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="00:90:fa:6a:7d:90",ATTR{type}=="1",NAME="dmz"
これらのルールはネットワークインターフェイスの MAC アドレスと一致し、NAME プロパティーで指定された名前に変更します。これらの例では、ATTR{type} パラメーター値 1 は、インターフェイスがイーサネットタイプであることを定義しています。
検証
システムを再起動します。
# reboot
各 MAC アドレスのインターフェイス名が、ルールファイルの
NAME
パラメーターで設定した値と一致することを確認します。# ip link show provider0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether b4:96:91:14:ae:58 brd ff:ff:ff:ff:ff:ff altname enp6s0f0 provider1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether b4:96:91:14:ae:5a brd ff:ff:ff:ff:ff:ff altname enp6s0f1 dmz: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether 00:90:fa:6a:7d:90 brd ff:ff:ff:ff:ff:ff altname enp4s0f0
関連情報
-
udev(7)
man ページ -
udevadm(8)
man page -
/usr/src/kernels/<kernel_version>/include/uapi/linux/if_arp.h
は、kernel-doc
パッケージによって提供されます
1.7. systemd リンクファイルを使用したユーザー定義のネットワークインターフェイス名の割り当て
ネットワークインターフェイスの名前を provider0
に変更して、命名スキームを作成します。
手順
すべてのインターフェイス名とその MAC アドレスを表示します。
# ip link show enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether b4:96:91:14:ae:58 brd ff:ff:ff:ff:ff:ff enp6s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether b4:96:91:14:ae:5a brd ff:ff:ff:ff:ff:ff enp4s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 00:90:fa:6a:7d:90 brd ff:ff:ff:ff:ff:ff
MAC アドレス b4:96:91:14:ae:58 のインターフェイスに provider0 の名前を付けるには、次のコンテンツの /etc/systemd/network/70-custom-ifnames.link ファイルを作成します。
[Match] MACAddress=b4:96:91:14:ae:58 [Link] Name=provider0
このリンクファイルは MAC アドレスと一致し、ネットワークインターフェイスの名前を
Name
パラメーターで設定された名前に変更します。
検証
システムを再起動します。
# reboot
リンクファイルで指定した MAC アドレスを持つデバイスが
provider0
に割り当てられていることを確認します。# ip link show provider0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether b4:96:91:14:ae:58 brd ff:ff:ff:ff:ff:ff
関連情報
-
systemd.link(5)
man page
第2章 イーサネット接続の設定
Red Hat Enterprise Linux は、イーサネット接続を設定するためのさまざまなオプションを管理者に提供します。以下に例を示します。
-
nmcli
を使用して、コマンドラインで接続を設定します。 -
nmtui
を使用して、テキストベースのユーザーインターフェイスで接続を設定します。 - RHEL システムロールを使用して、1 つまたは複数のホストで接続の設定を自動化します。
-
GNOME Settings メニューまたは
nm-connection-editor
アプリケーションを使用して、グラフィカルインターフェイスで接続を設定します。 -
nmstatectl
を使用して、Nmstate API を介して接続を設定します。
Microsoft Azure クラウドで実行しているホストでイーサネット接続を手動で設定する場合は、cloud-init
サービスを無効にするか、クラウド環境から取得したネットワーク設定を無視するように設定します。それ以外の場合は、cloud-init
は、手動で設定したネットワーク設定を次回の再起動時に上書きされます。
2.1. nmcli を使用した静的イーサネット接続の設定
コマンドラインでイーサネット接続を設定するには、nmcli
ユーティリティーを使用します。
たとえば、以下の手順では、以下の設定で enp7s0
デバイスの NetworkManager 接続プロファイルを作成します。
-
静的 IPv4 アドレス: サブネットマスクが
/24
の192.0.2.1
-
静的 IPv6 アドレス -
2001:db8:1::1
(/64
サブネットマスクあり) -
IPv4 デフォルトゲートウェイ -
192.0.2.254
-
IPv6 デフォルトゲートウェイ -
2001:db8:1::fffe
-
IPv4 DNS サーバー -
192.0.2.200
-
IPv6 DNS サーバー -
2001:db8:1::ffbb
-
DNS 検索ドメイン -
example.com
前提条件
- サーバーに、物理または仮想のイーサネットデバイスが設定されている。
手順
Ethernet 接続の NetworkManager 接続プロファイルを新たに追加します。
# nmcli connection add con-name Example-Connection ifname enp7s0 type ethernet
以下の手順は、作成した
Example-Connection
接続プロファイルを変更します。IPv4 アドレスを設定します。
# nmcli connection modify Example-Connection ipv4.addresses 192.0.2.1/24
IPv6 アドレスを設定します。
# nmcli connection modify Example-Connection ipv6.addresses 2001:db8:1::1/64
IPv4 および IPv6 接続メソッドを
manual
に設定します。# nmcli connection modify Example-Connection ipv4.method manual # nmcli connection modify Example-Connection ipv6.method manual
IPv4 および IPv6 のデフォルトゲートウェイを設定します。
# nmcli connection modify Example-Connection ipv4.gateway 192.0.2.254 # nmcli connection modify Example-Connection ipv6.gateway 2001:db8:1::fffe
IPv4 および IPv6 DNS サーバーアドレスを設定します。
# nmcli connection modify Example-Connection ipv4.dns "192.0.2.200" # nmcli connection modify Example-Connection ipv6.dns "2001:db8:1::ffbb"
複数の DNS サーバーを設定するには、空白で区切って引用符で囲みます。
IPv4 および IPv6 接続の DNS 検索ドメインを設定します。
# nmcli connection modify Example-Connection ipv4.dns-search example.com # nmcli connection modify Example-Connection ipv6.dns-search example.com
接続プロファイルをアクティベートします。
# nmcli connection up Example-Connection Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/13)
検証手順
デバイスおよび接続の状態を表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet connected Example-Connection
ping
ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。# ping host_name_or_IP_address
トラブルシューティング
- ネットワークケーブルがホストとスイッチにプラグインされていることを確認します。
- リンク障害がこのホストだけに存在するか、同じスイッチに接続された他のホストにも存在するかを確認します。
- ネットワークケーブルとネットワークインターフェイスが予想どおりに機能していることを確認します。ハードウェア診断手順を実施して、不具合ケーブルとネットワークインターフェイスカードを置き換えます。
- ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager を起動するか再起動して、インメモリー接続を作成することで、デバイスの設定を反映します。詳細と、この問題を回避する方法は、NetworkManager duplicates a connection after restart of NetworkManager service を参照してください。
関連情報
-
man ページの
nm-settings(5)
-
man ページの
nmcli(1)
- 特定のプロファイルでのデフォルトゲートウェイの指定を防ぐための NetworkManager の設定
2.2. nmcli インタラクティブエディターを使用した静的イーサネット接続の設定
nmcli
ユーティリティーのインタラクティブモードを使用して、コマンドラインでイーサネット接続を設定できます。
たとえば、以下の手順では、以下の設定で enp7s0
デバイスの NetworkManager 接続プロファイルを作成します。
-
静的 IPv4 アドレス: サブネットマスクが
/24
の192.0.2.1
-
静的 IPv6 アドレス -
2001:db8:1::1
(/64
サブネットマスクあり) -
IPv4 デフォルトゲートウェイ -
192.0.2.254
-
IPv6 デフォルトゲートウェイ -
2001:db8:1::fffe
-
IPv4 DNS サーバー -
192.0.2.200
-
IPv6 DNS サーバー -
2001:db8:1::ffbb
-
DNS 検索ドメイン -
example.com
前提条件
- サーバーに、物理または仮想のイーサネットデバイスが設定されている。
手順
イーサネット接続に新しい NetworkManager 接続プロファイルを追加して、対話モードを開始するには、次のコマンドを実行します。
# nmcli connection edit type ethernet con-name Example-Connection
ネットワークインターフェイスを設定します。
nmcli>
set connection.interface-name enp7s0
IPv4 アドレスを設定します。
nmcli>
set ipv4.addresses 192.0.2.1/24
IPv6 アドレスを設定します。
nmcli>
set ipv6.addresses 2001:db8:1::1/64
IPv4 および IPv6 接続メソッドを
manual
に設定します。nmcli>
set ipv4.method manual
nmcli>set ipv6.method manual
IPv4 および IPv6 のデフォルトゲートウェイを設定します。
nmcli>
set ipv4.gateway 192.0.2.254
nmcli>set ipv6.gateway 2001:db8:1::fffe
IPv4 および IPv6 DNS サーバーアドレスを設定します。
nmcli>
set ipv4.dns 192.0.2.200
nmcli>set ipv6.dns 2001:db8:1::ffbb
複数の DNS サーバーを設定するには、空白で区切って引用符で囲みます。
IPv4 および IPv6 接続の DNS 検索ドメインを設定します。
nmcli>
set ipv4.dns-search example.com
nmcli>set ipv6.dns-search example.com
接続をアクティベートして保存します。
nmcli>
save persistent
Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection. Do you still want to save? (yes/no) [yes]yes
インタラクティブモードを終了します。
nmcli>
quit
検証手順
デバイスおよび接続の状態を表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet connected Example-Connection
ping
ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。# ping host_name_or_IP_address
トラブルシューティング
- ネットワークケーブルがホストとスイッチにプラグインされていることを確認します。
- リンク障害がこのホストだけに存在するか、同じスイッチに接続された他のホストにも存在するかを確認します。
- ネットワークケーブルとネットワークインターフェイスが予想どおりに機能していることを確認します。ハードウェア診断手順を実施して、不具合ケーブルとネットワークインターフェイスカードを置き換えます。
- ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager を起動するか再起動して、インメモリー接続を作成することで、デバイスの設定を反映します。詳細と、この問題を回避する方法は、NetworkManager duplicates a connection after restart of NetworkManager service を参照してください。
関連情報
-
man ページの
nm-settings(5)
-
man ページの
nmcli(1)
- 特定のプロファイルでのデフォルトゲートウェイの指定を防ぐための NetworkManager の設定
2.3. nmtui を使用した静的イーサネット接続の設定
nmtui
アプリケーションは、NetworkManager 用のテキストベースのユーザーインターフェイスを提供します。nmtui
を使用すると、グラフィカルインターフェイスを使用せずに、ホスト上で静的 IP アドレスを使用してイーサネット接続を設定できます。
nmtui
で 以下を行います。
- カーソルキーを使用してナビゲートします。
- ボタンを選択して Enter を押します。
- Space を使用して、チェックボックスを選択および選択解除します。
前提条件
- サーバーに、物理または仮想のイーサネットデバイスが設定されている。
手順
接続に使用するネットワークデバイス名がわからない場合は、使用可能なデバイスを表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet unavailable -- ...
nmtui
を開始します。# nmtui
-
Edit a connection
選択し、Enter を押します。 -
Add
ボタンを押します。 -
ネットワークタイプのリストから
Ethernet
を選択し、Enter を押します。 - オプション: 作成する NetworkManager プロファイルの名前を入力します。
-
Device
フィールドにネットワークデバイス名を入力します。 IPv4 configuration
およびIPv6 configuration
領域で IPv4 および IPv6 アドレス設定を構成します。-
Automatic
ボタンを押して、表示されたリストからManual
を選択します。 -
設定するプロトコルの横にある
Show
ボタンを押して、追加のフィールドを表示します。 Addresses
の横にあるAdd
ボタンを押して、IP アドレスとサブネットマスクを Classless Inter-Domain Routing (CIDR) 形式で入力します。サブネットマスクを指定しない場合、NetworkManager は IPv4 アドレスに
/32
サブネットマスクを設定し、IPv6 アドレスに/64
サブネットマスクを設定します。- デフォルトゲートウェイのアドレスを入力します。
-
DNS servers
の横にあるAdd
ボタンを押して、DNS サーバーのアドレスを入力します。 -
Search domains
の横にあるAdd
ボタンを押して、DNS 検索ドメインを入力します。
図2.1 静的 IP アドレス設定によるイーサネット接続の例
-
-
OK
ボタンを押して、新しい接続を作成し、自動的にアクティブにします。 -
Back
ボタンを押してメインメニューに戻ります。 -
Quit
を選択し、Enter キーを押してnmtui
アプリケーションを閉じます。
検証
デバイスおよび接続の状態を表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet connected Example-Connection
ping
ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。# ping host_name_or_IP_address
トラブルシューティング
- ネットワークケーブルがホストとスイッチにプラグインされていることを確認します。
- リンク障害がこのホストだけに存在するか、同じスイッチに接続された他のホストにも存在するかを確認します。
- ネットワークケーブルとネットワークインターフェイスが予想どおりに機能していることを確認します。ハードウェア診断手順を実施して、不具合ケーブルとネットワークインターフェイスカードを置き換えます。
- ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager を起動するか再起動して、インメモリー接続を作成することで、デバイスの設定を反映します。詳細と、この問題を回避する方法は、NetworkManager duplicates a connection after restart of NetworkManager service を参照してください。
2.4. nmstatectl を使用した静的イーサネット接続の設定
Nmstate API を使用してイーサネット接続を設定するには、nmstatectl
ユーティリティーを使用します。
たとえば、以下の手順では、以下の設定で enp7s0
デバイスの NetworkManager 接続プロファイルを作成します。
-
静的 IPv4 アドレス:
192.0.2.1
(サブネットマスクが/24
) -
静的 IPv6 アドレス:
2001:db8:1::1
(サブネットマスクが/64
) -
IPv4 デフォルトゲートウェイ -
192.0.2.254
-
IPv6 デフォルトゲートウェイ -
2001:db8:1::fffe
-
IPv4 DNS サーバー -
192.0.2.200
-
IPv6 DNS サーバー -
2001:db8:1::ffbb
-
DNS 検索ドメイン -
example.com
nmstatectl
ユーティリティーを使用すると、設定後にその設定結果が設定ファイルと同じになります。何らかの障害が発生した場合には、nmstatectl
は自動的に変更をロールバックし、システムが不正な状態のままにならないようにします。
手順では、YAML 形式でインターフェイス設定を定義します。または、JSON 形式で設定を指定することもできます。
前提条件
- サーバーに、物理または仮想のイーサネットデバイスが設定されている。
-
nmstate
パッケージがインストールされている。
手順
以下の内容を含む YAML ファイル (例:
~/create-ethernet-profile.yml
) を作成します。--- interfaces: - name: enp7s0 type: ethernet state: up ipv4: enabled: true address: - ip: 192.0.2.1 prefix-length: 24 dhcp: false ipv6: enabled: true address: - ip: 2001:db8:1::1 prefix-length: 64 autoconf: false dhcp: false routes: config: - destination: 0.0.0.0/0 next-hop-address: 192.0.2.254 next-hop-interface: enp7s0 - destination: ::/0 next-hop-address: 2001:db8:1::fffe next-hop-interface: enp7s0 dns-resolver: config: search: - example.com server: - 192.0.2.200 - 2001:db8:1::ffbb
設定をシステムに適用します。
# nmstatectl apply ~/create-ethernet-profile.yml
検証手順
デバイスおよび接続の状態を表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet connected enp7s0
接続プロファイルのすべての設定を表示します。
# nmcli connection show enp7s0 connection.id: enp7s0 connection.uuid: b6cdfa1c-e4ad-46e5-af8b-a75f06b79f76 connection.stable-id: -- connection.type: 802-3-ethernet connection.interface-name: enp7s0 ...
接続設定を YAML 形式で表示します。
# nmstatectl show enp7s0
関連情報
-
nmstatectl(8)
の man ページ -
/usr/share/doc/nmstate/examples/
directory
2.5. インターフェイス名で RHEL システムロールを使用した静的イーサネット接続の設定
network
RHEL System Role を使用して、イーサネット接続をリモートで設定できます。
たとえば、以下の手順では、以下の設定で enp7s0
デバイスの NetworkManager 接続プロファイルを作成します。
-
静的 IPv4 アドレス: サブネットマスクが
/24
の192.0.2.1
-
静的 IPv6 アドレス -
2001:db8:1::1
(/64
サブネットマスクあり) -
IPv4 デフォルトゲートウェイ -
192.0.2.254
-
IPv6 デフォルトゲートウェイ -
2001:db8:1::fffe
-
IPv4 DNS サーバー -
192.0.2.200
-
IPv6 DNS サーバー -
2001:db8:1::ffbb
-
DNS 検索ドメイン -
example.com
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理ノードを準備している
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo
権限があります。 - この Playbook を実行するホストまたはホストグループは、Ansible インベントリーファイルにリストされています。
- サーバーに、物理または仮想のイーサネットデバイスが設定されている。
- 管理ノードは、NetworkManager を使用してネットワークを設定します。
手順
~/ethernet-static-IP.yml
などの Playbook ファイルを次の内容で作成します。--- - name: Configure the network hosts: managed-node-01.example.com tasks: - name: Configure an Ethernet connection with static IP include_role: name: rhel-system-roles.network vars: network_connections: - name: enp7s0 interface_name: enp7s0 type: ethernet autoconnect: yes ip: address: - 192.0.2.1/24 - 2001:db8:1::1/64 gateway4: 192.0.2.254 gateway6: 2001:db8:1::fffe dns: - 192.0.2.200 - 2001:db8:1::ffbb dns_search: - example.com state: up
Playbook を実行します。
# ansible-playbook ~/ethernet-static-IP.yml
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.network/README.md
ファイル
2.6. デバイスパスで RHEL システムロールを使用した静的イーサネット接続の設定
network
RHEL System Role を使用して、イーサネット接続をリモートで設定できます。
デバイスパスは、次のコマンドで識別できます。
# udevadm info /sys/class/net/<device_name> | grep ID_PATH=
たとえば、以下の手順では、PCI ID 0000:00:0[1-3].0
式に一致するが、0000:00:02.0
は一致しないデバイスに対して、以下の設定で NetworkManager 接続プロファイルを作成します。
-
静的 IPv4 アドレス: サブネットマスクが
/24
の192.0.2.1
-
静的 IPv6 アドレス -
2001:db8:1::1
(/64
サブネットマスクあり) -
IPv4 デフォルトゲートウェイ -
192.0.2.254
-
IPv6 デフォルトゲートウェイ -
2001:db8:1::fffe
-
IPv4 DNS サーバー -
192.0.2.200
-
IPv6 DNS サーバー -
2001:db8:1::ffbb
-
DNS 検索ドメイン -
example.com
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理ノードを準備している
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo
権限があります。 - この Playbook を実行するホストまたはホストグループは、Ansible インベントリーファイルにリストされています。
- サーバーに、物理または仮想のイーサネットデバイスが設定されている。
- 管理ノードは、NetworkManager を使用してネットワークを設定します。
手順
~/ethernet-static-IP.yml
などの Playbook ファイルを次の内容で作成します。--- - name: Configure the network hosts: managed-node-01.example.com tasks: - name: Configure an Ethernet connection with dynamic IP include_role: name: rhel-system-roles.network vars: network_connections: - name: example match: path: - pci-0000:00:0[1-3].0 - &!pci-0000:00:02.0 type: ethernet autoconnect: yes ip: address: - 192.0.2.1/24 - 2001:db8:1::1/64 gateway4: 192.0.2.254 gateway6: 2001:db8:1::fffe dns: - 192.0.2.200 - 2001:db8:1::ffbb dns_search: - example.com state: up
この例の
match
パラメーターは、Ansible が PCI ID0000:00:0[1-3].0
に一致するデバイスに再生を適用するが、0000:00:02.0
には適用しないことを定義します。使用できる特殊な修飾子およびワイルドカードの詳細は、/usr/share/ansible/roles/rhel-system-roles.network/README.md
ファイルーのmatch
パラメーターの説明を参照してください。Playbook を実行します。
# ansible-playbook ~/ethernet-static-IP.yml
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.network/README.md
ファイル
2.7. nmcli で動的イーサネット接続の設定
コマンドラインでイーサネット接続を設定するには、nmcli
ユーティリティーを使用します。動的 IP アドレス設定との接続の場合、NetworkManager は、DHCP サーバーから接続の IP 設定を要求します。
前提条件
- サーバーに、物理または仮想のイーサネットデバイスが設定されている。
- DHCP サーバーをネットワークで使用できる。
手順
Ethernet 接続の NetworkManager 接続プロファイルを新たに追加します。
# nmcli connection add con-name Example-Connection ifname enp7s0 type ethernet
必要に応じて、
Example-Connection
プロファイルを使用するときに NetworkManager が DHCP サーバーに送信するホスト名を変更します。# nmcli connection modify Example-Connection ipv4.dhcp-hostname Example ipv6.dhcp-hostname Example
必要に応じて、
Example-Connection
プロファイルを使用するときに NetworkManager が IPv4 DHCP サーバーに送信するクライアント ID を変更します。# nmcli connection modify Example-Connection ipv4.dhcp-client-id client-ID
IPv6 には
dhcp-client-id
パラメーターがないことに注意してください。IPv6 の識別子を作成するには、dhclient
サービスを設定します。
検証手順
デバイスおよび接続の状態を表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet connected Example-Connection
ping
ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。# ping host_name_or_IP_address
トラブルシューティング
- ネットワークケーブルがホストとスイッチにプラグインされていることを確認します。
- リンク障害がこのホストだけに存在するか、同じスイッチに接続された他のホストにも存在するかを確認します。
- ネットワークケーブルとネットワークインターフェイスが予想どおりに機能していることを確認します。ハードウェア診断手順を実施して、不具合ケーブルとネットワークインターフェイスカードを置き換えます。
- ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager を起動するか再起動して、インメモリー接続を作成することで、デバイスの設定を反映します。詳細と、この問題を回避する方法は、NetworkManager duplicates a connection after restart of NetworkManager service を参照してください。
関連情報
-
dhclient(8)
の man ページ -
nm-settings(5)
-
man ページの
nmcli(1)
- 特定のプロファイルでのデフォルトゲートウェイの指定を防ぐための NetworkManager の設定
2.8. nmcli インタラクティブエディターで動的イーサネット接続の設定
nmcli
ユーティリティーのインタラクティブモードを使用して、コマンドラインでイーサネット接続を設定できます。動的 IP アドレス設定との接続の場合、NetworkManager は、DHCP サーバーから接続の IP 設定を要求します。
前提条件
- サーバーに、物理または仮想のイーサネットデバイスが設定されている。
- DHCP サーバーをネットワークで使用できる。
手順
イーサネット接続に新しい NetworkManager 接続プロファイルを追加して、対話モードを開始するには、次のコマンドを実行します。
# nmcli connection edit type ethernet con-name Example-Connection
ネットワークインターフェイスを設定します。
nmcli>
set connection.interface-name enp7s0
必要に応じて、
Example-Connection
プロファイルを使用するときに NetworkManager が DHCP サーバーに送信するホスト名を変更します。nmcli>
set ipv4.dhcp-hostname Example
nmcli>set ipv6.dhcp-hostname Example
必要に応じて、
Example-Connection
プロファイルを使用するときに NetworkManager が IPv4 DHCP サーバーに送信するクライアント ID を変更します。nmcli>
set ipv4.dhcp-client-id client-ID
IPv6 には
dhcp-client-id
パラメーターがないことに注意してください。IPv6 の識別子を作成するには、dhclient
サービスを設定します。接続をアクティベートして保存します。
nmcli>
save persistent
Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection. Do you still want to save? (yes/no) [yes]yes
インタラクティブモードを終了します。
nmcli>
quit
検証手順
デバイスおよび接続の状態を表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet connected Example-Connection
ping
ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。# ping host_name_or_IP_address
トラブルシューティング
- ネットワークケーブルがホストとスイッチにプラグインされていることを確認します。
- リンク障害がこのホストだけに存在するか、同じスイッチに接続された他のホストにも存在するかを確認します。
- ネットワークケーブルとネットワークインターフェイスが予想どおりに機能していることを確認します。ハードウェア診断手順を実施して、不具合ケーブルとネットワークインターフェイスカードを置き換えます。
- ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager を起動するか再起動して、インメモリー接続を作成することで、デバイスの設定を反映します。詳細と、この問題を回避する方法は、NetworkManager duplicates a connection after restart of NetworkManager service を参照してください。
関連情報
-
man ページの
nm-settings(5)
-
man ページの
nmcli(1)
- 特定のプロファイルでのデフォルトゲートウェイの指定を防ぐための NetworkManager の設定
2.9. nmtui で動的イーサネット接続の設定
nmtui
アプリケーションは、NetworkManager 用のテキストベースのユーザーインターフェイスを提供します。nmtui
を使用すると、グラフィカルインターフェイスを使用せずに、動的 IP アドレスを使用してイーサネット接続をホスト上で設定できます。
nmtui
で 以下を行います。
- カーソルキーを使用してナビゲートします。
- ボタンを選択して Enter を押します。
- Space を使用して、チェックボックスを選択および選択解除します。
前提条件
- サーバーに、物理または仮想のイーサネットデバイスが設定されている。
- DHCP サーバーをネットワークで使用できる。
手順
接続に使用するネットワークデバイス名がわからない場合は、使用可能なデバイスを表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet unavailable -- ...
nmtui
を開始します。# nmtui
-
Edit a connection
選択し、Enter を押します。 -
Add
ボタンを押します。 -
ネットワークタイプのリストから
Ethernet
を選択し、Enter を押します。 - オプション: 作成する NetworkManager プロファイルの名前を入力します。
-
Device
フィールドにネットワークデバイス名を入力します。 OK
ボタンを押して、新しい接続を作成し、自動的にアクティブにします。-
Back
ボタンを押してメインメニューに戻ります。 -
Quit
を選択し、Enter キーを押してnmtui
アプリケーションを閉じます。
検証
デバイスおよび接続の状態を表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet connected Example-Connection
ping
ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。# ping host_name_or_IP_address
トラブルシューティング
- ネットワークケーブルがホストとスイッチにプラグインされていることを確認します。
- リンク障害がこのホストだけに存在するか、同じスイッチに接続された他のホストにも存在するかを確認します。
- ネットワークケーブルとネットワークインターフェイスが予想どおりに機能していることを確認します。ハードウェア診断手順を実施して、不具合ケーブルとネットワークインターフェイスカードを置き換えます。
- ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager を起動するか再起動して、インメモリー接続を作成することで、デバイスの設定を反映します。詳細と、この問題を回避する方法は、NetworkManager duplicates a connection after restart of NetworkManager service を参照してください。
2.10. nmstatectl を使用した動的イーサネット接続の設定
Nmstate API を使用してイーサネット接続を設定するには、nmstatectl
ユーティリティーを使用します。動的 IP アドレス設定との接続の場合、NetworkManager は、DHCP サーバーから接続の IP 設定を要求します。
nmstatectl
ユーティリティーを使用すると、設定後にその設定結果が設定ファイルと同じになります。何らかの障害が発生した場合には、nmstatectl
は自動的に変更をロールバックし、システムが不正な状態のままにならないようにします。
手順では、YAML 形式でインターフェイス設定を定義します。または、JSON 形式で設定を指定することもできます。
前提条件
- サーバーに、物理または仮想のイーサネットデバイスが設定されている。
- DHCP サーバーをネットワークで使用できる。
-
nmstate
パッケージがインストールされている。
手順
以下の内容を含む YAML ファイル (例:
~/create-ethernet-profile.yml
) を作成します。--- interfaces: - name: enp7s0 type: ethernet state: up ipv4: enabled: true auto-dns: true auto-gateway: true auto-routes: true dhcp: true ipv6: enabled: true auto-dns: true auto-gateway: true auto-routes: true autoconf: true dhcp: true
設定をシステムに適用します。
# nmstatectl apply ~/create-ethernet-profile.yml
検証手順
デバイスおよび接続の状態を表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet connected enp7s0
接続プロファイルのすべての設定を表示します。
# nmcli connection show enp7s0 connection.id: enp7s0_ connection.uuid: b6cdfa1c-e4ad-46e5-af8b-a75f06b79f76 connection.stable-id: -- connection.type: 802-3-ethernet connection.interface-name: enp7s0 ...
接続設定を YAML 形式で表示します。
# nmstatectl show enp7s0
関連情報
-
nmstatectl(8)
の man ページ -
/usr/share/doc/nmstate/examples/
directory
2.11. インターフェイス名で RHEL システムロールを使用した動的イーサネット接続の設定
network
RHEL System Role を使用して、イーサネット接続をリモートで設定できます。動的 IP アドレス設定との接続の場合、NetworkManager は、DHCP サーバーから接続の IP 設定を要求します。
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理ノードを準備している
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo
権限があります。 - この Playbook を実行するホストまたはホストグループは、Ansible インベントリーファイルにリストされています。
- サーバーに、物理または仮想のイーサネットデバイスが設定されている。
- DHCP サーバーをネットワークで使用できる。
- 管理ノードは、NetworkManager を使用してネットワークを設定します。
手順
~/ethernet-dynamic-IP.yml
などの Playbook ファイルを次の内容で作成します。--- - name: Configure the network hosts: managed-node-01.example.com tasks: - name: Configure an Ethernet connection with dynamic IP include_role: name: rhel-system-roles.network vars: network_connections: - name: enp7s0 interface_name: enp7s0 type: ethernet autoconnect: yes ip: dhcp4: yes auto6: yes state: up
Playbook を実行します。
# ansible-playbook ~/ethernet-dynamic-IP.yml
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.network/README.md
ファイル
2.12. デバイスパスでの RHEL システムロールを使用した動的イーサネット接続の設定
network
RHEL System Role を使用して、イーサネット接続をリモートで設定できます。動的 IP アドレス設定との接続の場合、NetworkManager は、DHCP サーバーから接続の IP 設定を要求します。
デバイスパスは、次のコマンドで識別できます。
# udevadm info /sys/class/net/<device_name> | grep ID_PATH=
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理ノードを準備している
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo
権限があります。 - この Playbook を実行するホストまたはホストグループは、Ansible インベントリーファイルにリストされています。
- サーバーに、物理または仮想のイーサネットデバイスが設定されている。
- DHCP サーバーをネットワークで使用できる。
- 管理対象ホストは、NetworkManager を使用してネットワークを設定します。
手順
~/ethernet-dynamic-IP.yml
などの Playbook ファイルを次の内容で作成します。--- - name: Configure the network hosts: managed-node-01.example.com tasks: - name: Configure an Ethernet connection with dynamic IP include_role: name: rhel-system-roles.network vars: network_connections: - name: example match: path: - pci-0000:00:0[1-3].0 - &!pci-0000:00:02.0 type: ethernet autoconnect: yes ip: dhcp4: yes auto6: yes state: up
この例の
match
パラメーターは、Ansible が PCI ID0000:00:0[1-3].0
に一致するデバイスに再生を適用するが、0000:00:02.0
には適用しないことを定義します。使用できる特殊な修飾子およびワイルドカードの詳細は、/usr/share/ansible/roles/rhel-system-roles.network/README.md
ファイルーのmatch
パラメーターの説明を参照してください。Playbook を実行します。
# ansible-playbook ~/ethernet-dynamic-IP.yml
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.network/README.md
ファイル
2.13. control-center によるイーサネット接続の設定
イーサネット接続は、物理サーバーまたは仮想マシンで最も頻繁に使用される接続タイプになります。グラフィカルインターフェイスで Red Hat Enterprise Linux を使用する場合は、この接続タイプを GNOME control-center
で設定できます。
control-center
は、nm-connection-editor
アプリケーションまたは nmcli
ユーティリティーほど多くの設定オプションに対応していないことに注意してください。
前提条件
- サーバーに、物理または仮想のイーサネットデバイスが設定されている。
- GNOME がインストールされている。
手順
-
Super キーを押して
Settings
を入力し、Enter を押します。 -
左側のナビゲーションにある
Network
を選択します。 -
Wired
エントリーの横にある + ボタンをクリックして、新規プロファイルを作成します。 -
必要に応じて、
Identity
タブで接続の名前を設定します。 IPv4
タブで、IPv4 設定を設定します。たとえば、Manual
メソッドを選択し、静的な IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを設定します。IPv6
タブで、IPv6 設定を設定します。たとえば、Manual
メソッドを選択し、静的な IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを設定します。-
追加 ボタンをクリックして接続を保存します。GNOME の
control-center
は、接続を自動的にアクティブにします。
検証手順
デバイスおよび接続の状態を表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet connected Example-Connection
ping
ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。# ping host_name_or_IP_address
トラブルシューティングの手順
- ネットワークケーブルがホストとスイッチにプラグインされていることを確認します。
- リンク障害がこのホストだけに存在するか、同じスイッチに接続された他のホストにも存在するかを確認します。
- ネットワークケーブルとネットワークインターフェイスが予想どおりに機能していることを確認します。ハードウェア診断手順を実施して、不具合ケーブルとネットワークインターフェイスカードを置き換えます。
- ディスクの設定がデバイスの設定と一致しない場合は、NetworkManager を起動するか再起動して、インメモリー接続を作成することで、デバイスの設定を反映します。詳細と、この問題を回避する方法は、NetworkManager duplicates a connection after restart of NetworkManager service を参照してください。
2.14. nm-connection-editor を使用したイーサネット接続の設定
イーサネット接続は、物理サーバーまたは仮想サーバーで最も頻繁に使用される接続タイプになります。Red Hat Enterprise Linux をグラフィカルインターフェイスで使用する場合は、nm-connection-editor
アプリケーションを使用してこの接続タイプを設定できます。
前提条件
- サーバーに、物理または仮想のイーサネットデバイスが設定されている。
- GNOME がインストールされている。
手順
端末を開き、次のコマンドを入力します。
$ nm-connection-editor
- + ボタンをクリックして、新しい接続を追加します。
-
イーサネット
接続タイプを選択し、作成 をクリックします。 General
タブで、以下を行います。システムの起動時または
NetworkManager
サービスを再起動する際にこの接続を自動的に有効にするには、以下を行います。-
Connect automatically with priority
を選択します。 必要に応じて、
Connect automatically with priority
の横にある優先度の値を変更します。同じデバイスに複数の接続プロファイルが存在する場合は、NetworkManager はプロファイルを 1 つだけ有効にします。デフォルトでは、NetworkManager は、自動接続が有効になっている最後のプロファイルをアクティブにします。ただし、プロファイルに優先度の値を設定すると、NetworkManager は、最も優先度が高いプロファイルをアクティブにします。
-
-
プロファイルが、この接続プロファイルを作成したユーザーに対してのみ利用可能になる場合は、
All users may connect to this network
チェックボックスの選択を解除します。
-
イーサネット
タブで、デバイスを選択します。必要に応じて、イーサネット関連の設定をさらに選択します。 -
IPv4 Settings
タブで、IPv4 設定を設定します。たとえば、静的な IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを設定します。 -
IPv6 設定
タブで、IPv6 設定を設定します。たとえば、静的な IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを設定します。 - 接続を読み込みます。
-
nm-connection-editor
を閉じます。
検証手順
デバイスおよび接続の状態を表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet connected Example-Connection
ping
ユーティリティーを使用して、このホストがパケットを他のホストに送信できることを確認します。# ping host_name_or_IP_address
2.15. NetworkManager の DHCP クライアントの変更
デフォルトでは、NetworkManager は内部 DHCP クライアントを使用します。ただし、ビルトインクライアントが提供しない機能を備えた DHCP クライアントが必要な場合は、代わりに dhclient
を使用するように NetworkManager を設定できます。
RHEL は dhcpcd
を提供しないため、NetworkManager はこのクライアントを使用できないことに注意してください。
手順
次のコンテンツで
/etc/NetworkManager/conf.d/dhcp-client.conf
ファイルを作成します。[main] dhcp=dhclient
dhcp
パラメーターをinternal
(デフォルト) またはdhclient
に設定できます。dhcp
パラメーターをdhclient
に設定した場合は、dhcp-client
パッケージをインストールします。# yum install dhcp-client
NetworkManager を再起動します。
# systemctl restart NetworkManager
再起動すると、すべてのネットワーク接続が一時的に中断されることに注意してください。
検証
/var/log/messages
ログファイルで、次のようなエントリーを検索します。Apr 26 09:54:19 server NetworkManager[27748]: <info> [1650959659.8483] dhcp-init: Using DHCP client 'dhclient'
このログエントリーは、NetworkManager が DHCP クライアントとして
dhclient
を使用していることを確認します。
関連情報
-
NetworkManager.conf(5)
man ページ
2.16. NetworkManager 接続の DHCP 動作の設定
DHCP (Dynamic Host Configuration Protocol) クライアントは、クライアントがネットワークに接続するたびに、動的 IP アドレスと対応する設定情報を DHCP サーバーに要求します。
DHCP サーバーから IP アドレスを取得するように接続を設定すると、NetworkManager は DHCP サーバーから IP アドレスを要求します。デフォルトでは、クライアントはこのリクエストが完了するまで 45 秒待機します。dhcp クライアントは、DHCP
接続が開始する際に、DHCP
サーバーに IP アドレスを要求します。
前提条件
- DHCP を使用する接続がホストに設定されている。
手順
ipv4.dhcp-timeout
およびipv6.dhcp-timeout
プロパティーを設定します。たとえば、両方のオプションを30
秒に設定するには、次のコマンドを実行します。# nmcli connection modify connection_name ipv4.dhcp-timeout 30 ipv6.dhcp-timeout 30
パラメーターを
infinity
に設定すると、成功するまで NetworkManager が IP アドレスのリクエストおよび更新を停止しないようにします。必要に応じて、タイムアウト前に NetworkManager が IPv4 アドレスを受信しない場合にこの動作を設定します。
# nmcli connection modify connection_name ipv4.may-fail value
ipv4.may-fail
オプションを以下のように設定します。はい
、接続の状態は IPv6 設定により異なります。- IPv6 設定が有効になり、成功すると、NetworkManager は IPv6 接続をアクティブにし、IPv4 接続のアクティブ化を試みなくなります。
- IPv6 設定が無効であるか、または設定されていないと、接続は失敗します。
いいえ
、接続は非アクティブになります。この場合は、以下のようになります。-
接続の
autoconnect
プロパティーが有効になっている場合、NetworkManager は、autoconnect-retries
プロパティーに設定された回数だけ、接続のアクティベーションを再試行します。デフォルト値は4
です。 - それでも接続が DHCP アドレスを取得できないと、自動アクティベーションは失敗します。5 分後に自動接続プロセスが再開され、DHCP サーバーから IP アドレスを取得するようになりました。
-
接続の
必要に応じて、タイムアウト前に NetworkManager が IPv6 アドレスを受信しない場合にこの動作を設定します。
# nmcli connection modify connection_name ipv6.may-fail value
関連情報
-
man ページの
nm-settings(5)
2.17. インターフェイス名による単一の接続プロファイルを使用した複数のイーサネットインターフェイスの設定
ほとんどの場合、1 つの接続プロファイルには 1 つのネットワークデバイスの設定が含まれています。ただし、接続プロファイルでインターフェイス名を設定する場合、NetworkManager はワイルドカードもサポートします。ホストが動的 IP アドレス割り当てを使用してイーサネットネットワーク間をローミングする場合、この機能を使用して、複数のイーサネットインターフェイスに使用できる単一の接続プロファイルを作成できます。
前提条件
- サーバーの設定には、物理または仮想のイーサネットデバイスが複数存在します。
- DHCP サーバーをネットワークで使用できる。
- ホストに接続プロファイルが存在しません。
手順
enp
で始まるすべてのインターフェイス名に適用される接続プロファイルを追加します。# nmcli connection add con-name Example connection.multi-connect multiple match.interface-name enp* type ethernet
検証手順
単一接続プロファイルのすべての設定を表示します。
# nmcli connection show Example connection.id: Example ... connection.multi-connect: 3 (multiple) match.interface-name:
enp*
...3
は、接続プロファイルで同時にアクティブなインターフェイスの数を示し、接続プロファイルのネットワークインターフェイスの数ではありません。接続プロファイルは、match.interface-name
パラメーターのパターンに一致するすべてのデバイスを使用するため、接続プロファイルには同じ Universally Unique Identifier (UUID) があります。接続のステータスを表示します。
# nmcli connection show NAME UUID TYPE DEVICE ... Example 6f22402e-c0cc-49cf-b702-eaf0cd5ea7d1 ethernet enp7s0 Example 6f22402e-c0cc-49cf-b702-eaf0cd5ea7d1 ethernet enp8s0 Example 6f22402e-c0cc-49cf-b702-eaf0cd5ea7d1 ethernet enp9s0
関連情報
-
man ページの
nmcli(1)
-
man ページの
nm-settings(5)
2.18. PCI ID を使用した複数のイーサネットインターフェイスの単一接続プロファイルの設定
PCI ID は、システムに接続されているデバイスの一意の識別子です。接続プロファイルは、PCI ID のリストに基づいてインターフェイスを照合することにより、複数のデバイスを追加します。この手順を使用して、複数のデバイス PCI ID を単一の接続プロファイルに接続できます。
前提条件
- サーバーの設定には、物理または仮想のイーサネットデバイスが複数存在します。
- DHCP サーバーをネットワークで使用できる。
- ホストに接続プロファイルが存在しません。
手順
デバイスパスを特定します。たとえば、
enp
で始まるすべてのインターフェイスのデバイスパスを表示するには、次のように入力します。# udevadm info /sys/class/net/enp* | grep ID_PATH= ... E: ID_PATH=pci-0000:07:00.0 E: ID_PATH=pci-0000:08:00.0
0000:00:0[7-8].0
式に一致するすべての PC IID に適用される接続プロファイルを追加します。# nmcli connection add type ethernet connection.multi-connect multiple match.path "pci-0000:07:00.0 pci-0000:08:00.0" con-name Example
検証手順
接続のステータスを表示します。
# nmcli connection show NAME UUID TYPE DEVICE Example 9cee0958-512f-4203-9d3d-b57af1d88466 ethernet enp7s0 Example 9cee0958-512f-4203-9d3d-b57af1d88466 ethernet enp8s0 ...
接続プロファイルのすべての設定を表示するには、次のコマンドを実行します。
# nmcli connection show Example connection.id: Example ... connection.multi-connect: 3 (multiple) match.path: pci-0000:07:00.0,pci-0000:08:00.0 ...
この接続プロファイルは、
match.path
パラメーターのパターンに一致する PCI ID を持つすべてのデバイスを使用するため、接続プロファイルには同じ Universally Unique Identifier (UUID) があります。
関連情報
-
man ページの
nmcli(1)
-
man ページの
nm-settings(5)
第3章 wifi 接続の管理
RHEL には、wifi ネットワークを設定して接続するための複数のユーティリティーとアプリケーションが用意されています。次に例を示します。
-
nmcli
ユーティリティー - GNOME システムメニュー
-
GNOME 設定
アプリケーション -
nm-connection-editor
アプリケーション
3.1. サポートされている wifi セキュリティータイプ
wifi ネットワークがサポートするセキュリティータイプに応じて、多かれ少なかれ安全にデータを送信できます。
暗号化を使用しない、または安全でない WEP または WPA 標準のみをサポートする wifi ネットワークには接続しないでください。
RHEL 8 は、次の Wi-Fi セキュリティータイプをサポートしています。
-
None
: 暗号化は無効になり、ネットワーク経由でプレーンテキスト形式でデータが転送されます。 -
Enhanced Open
: opportunistic wireless encryption (OWE) を使用すると、デバイスは一意のペアワイズマスターキー (PMK) をネゴシエートして、認証なしでワイヤレスネットワークの接続を暗号化します。 -
WEP 40/128 ビットキー (16 進数または ASCII)
: このモードの Wired Equivalent Privacy (WEP) プロトコルは、16 進数または ASCII 形式の事前共有キーのみを使用します。WEP は推奨されておらず、RHEL 9.1 で削除されます。 -
WEP 128 ビットパスフレーズ
。このモードの WEP プロトコルは、パスフレーズの MD5 ハッシュを使用して WEP キーを取得します。WEP は推奨されておらず、RHEL 9.1 で削除されます。 -
動的 WEP (802.1x)
: 802.1X と EAP の組み合わせで、動的キーを使用する WEP プロトコルを使用します。WEP は推奨されておらず、RHEL 9.1 で削除されます。 -
LEAP
: Cisco が開発した Lightweight Extensible Authentication Protocol は、拡張認証プロトコル (EAP) の独自バージョンです。 -
WPA & WPA2 Personal
: パーソナルモードでは、Wi-Fi Protected Access (WPA) および Wi-Fi Protected Access 2 (WPA2) 認証方法で事前共有キーが使用されます。 -
WPA & WPA2 Personal
: エンタープライズモードでは、WPA と WPA2 は EAP フレームワークを使用し、リモート認証ダイヤルインユーザーサービス (RADIUS) サーバーに対してユーザーを認証します。 -
WPA3 Personal
: Wi-Fi Protected Access 3 (WPA3) Personal は、辞書攻撃を防ぐために pre-shared keys (PSK) の代わりに simultaneous authentication of equals (SAE) を使用します。WPA3 では、Perfect Forward Secrecy (PFS) が使用されます。
3.2. nmcli コマンドを使用して、WPA2 または WPA3 Personal で保護された wifi ネットワークに接続する
nmcli
ユーティリティーを使用して、wifi ネットワークに接続できます。初めてネットワークに接続しようとすると、ユーティリティーは NetworkManager 接続プロファイルを自動的に作成します。ネットワークに静的 IP アドレスなどの追加設定が必要な場合は、プロファイルが自動的に作成された後にプロファイルを変更できます。
前提条件
- ホストに wifi デバイスがインストールされている。
- ハードウェアスイッチがある場合は、wifi デバイスが有効になっている。
手順
NetworkManager で wifi 無線が無効になっている場合は、この機能を有効にします。
# nmcli radio wifi on
オプション: 利用可能な Wi-Fi ネットワークを表示します。
# nmcli device wifi list IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY 00:53:00:2F:3B:08 Office Infra 44 270 Mbit/s 57 ▂▄▆_ WPA2 WPA3 00:53:00:15:03:BF -- Infra 1 130 Mbit/s 48 ▂▄__ WPA2 WPA3
サービスセット識別子 (
SSID
) 列には、ネットワークの名前が含まれています。列に--
が表示されている場合、このネットワークのアクセスポイントは SSID をブロードキャストしていません。wifi ネットワークに接続します。
# nmcli device wifi connect Office --ask Password: wifi-password
対話的に入力するのではなく、コマンドでパスワードを設定する場合は、コマンドで
--ask
の代わりにpassword wifi-password
オプションを使用します。# nmcli device wifi connect Office wifi-password
ネットワークが静的 IP アドレスを必要とする場合、NetworkManager はこの時点で接続のアクティブ化に失敗することに注意してください。後の手順で IP アドレスを設定できます。
ネットワークに静的 IP アドレスが必要な場合:
IPv4 アドレス設定を設定します。次に例を示します。
# nmcli connection modify Office ipv4.method manual ipv4.addresses 192.0.2.1/24 ipv4.gateway 192.0.2.254 ipv4.dns 192.0.2.200 ipv4.dns-search example.com
IPv6 アドレス設定を設定します。次に例を示します。
# nmcli connection modify Office ipv6.method manual ipv6.addresses 2001:db8:1::1/64 ipv6.gateway 2001:db8:1::fffe ipv6.dns 2001:db8:1::ffbb ipv6.dns-search example.com
接続を再度有効にします。
# nmcli connection up Office
検証
アクティブな接続を表示します。
# nmcli connection show --active NAME ID TYPE DEVICE Office 2501eb7e-7b16-4dc6-97ef-7cc460139a58 wifi wlp0s20f3
作成した wifi 接続が出力にリストされている場合、その接続はアクティブです。
ホスト名または IP アドレスに ping を実行します。
# ping -c 3 example.com
関連情報
-
nm-settings-nmcli(5)
man page
3.3. nmtui を使用した Wi-Fi 接続の設定
nmtui
アプリケーションは、NetworkManager 用のテキストベースのユーザーインターフェイスを提供します。nmtui
を使用して Wi-Fi ネットワークに接続できます。
nmtui
で 以下を行います。
- カーソルキーを使用してナビゲートします。
- ボタンを選択して Enter を押します。
- Space を使用して、チェックボックスを選択および選択解除します。
手順
接続に使用するネットワークデバイス名がわからない場合は、使用可能なデバイスを表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION wlp2s0 wifi unavailable -- ...
nmtui
を開始します。# nmtui
-
Edit a connection
選択し、Enter を押します。 -
Add
ボタンを押します。 -
ネットワークタイプのリストから
Wi-Fi
を選択し、Enter を押します。 - オプション: 作成する NetworkManager プロファイルの名前を入力します。
-
Device
フィールドにネットワークデバイス名を入力します。 -
Wi-Fi ネットワークの名前である Service Set Identifier (SSID) を
SSID
フィールドに入力します。 -
Mode
フィールドはデフォルトのClient
のままにします。 Security
フィールドを選択して Enter を押し、リストからネットワークの認証タイプを設定します。選択した認証タイプに応じて、
nmtui
は異なるフィールドを表示します。- 認証タイプ関連のフィールドに入力します。
Wi-Fi ネットワークに静的 IP アドレスが必要な場合:
-
プロトコルの横にある
Automatic
ボタンを押し、表示されたリストからManual
を選択します。 -
設定するプロトコルの横にある
Show
ボタンを押して、追加のフィールドを表示し、それらに入力します。
-
プロトコルの横にある
OK
ボタンを押して、新しい接続を作成し、自動的にアクティブにします。-
Back
ボタンを押してメインメニューに戻ります。 -
Quit
を選択し、Enter キーを押してnmtui
アプリケーションを閉じます。
検証
アクティブな接続を表示します。
# nmcli connection show --active NAME ID TYPE DEVICE Office 2501eb7e-7b16-4dc6-97ef-7cc460139a58 wifi wlp0s20f3
作成した wifi 接続が出力にリストされている場合、その接続はアクティブです。
ホスト名または IP アドレスに ping を実行します。
# ping -c 3 example.com
3.4. GNOME システムメニューを使用して wifi ネットワークに接続する
GNOME システムメニューを使用して、wifi ネットワークに接続できます。初めてネットワークに接続するとき、GNOME は NetworkManager 接続プロファイルを作成します。接続プロファイルを自動的に接続しないように設定した場合、GNOME システムメニューを用いて、既存の NetworkManager 接続プロファイルを使用して wifi ネットワークに手動で接続することもできます。
GNOME システムメニューを使用して初めて wifi ネットワークへの接続を確立する場合、一定の制限があります。たとえば、IP アドレス設定を構成することはできません。この場合、最初に接続を設定します。
前提条件
- ホストに wifi デバイスがインストールされている。
- ハードウェアスイッチがある場合は、wifi デバイスが有効になっている。
手順
- トップバーの右側にあるシステムメニューを開きます。
-
Wi-Fi Not Connected
エントリーを展開します。 Select Network
をクリックします。- 接続する wifi ネットワークを選択します。
-
Connect
をクリックします。 -
このネットワークに初めて接続する場合は、ネットワークのパスワードを入力し、
Connect
をクリックします。
検証
トップバーの右側にあるシステムメニューを開き、wifi ネットワークが接続されていることを確認します。
ネットワークがリストに表示されていれば、接続されています。
ホスト名または IP アドレスに ping を実行します。
# ping -c 3 example.com
3.5. GNOME 設定アプリケーションを使用して wifi ネットワークに接続する
gnome-control-center
という名前の GNOME settings
アプリケーションを使用して、wifi ネットワークに接続し、接続を設定できます。初めてネットワークに接続するとき、GNOME は NetworkManager 接続プロファイルを作成します。
GNOME settings
では、RHEL がサポートするすべての wifi ネットワークセキュリティータイプの wifi 接続を設定できます。
前提条件
- ホストに wifi デバイスがインストールされている。
- ハードウェアスイッチがある場合は、wifi デバイスが有効になっている。
手順
-
Super キーを押し、
Wi-Fi
と入力して Enter を押します。 - 接続したい wifi ネットワークの名前をクリックします。
-
ネットワークのパスワードを入力し、
Connect
をクリックします。 静的 IP アドレスや WPA2 パーソナル以外のセキュリティータイプなど、ネットワークに追加の設定が必要な場合:
- ネットワーク名の横にある歯車のアイコンをクリックします。
オプション:
Details
タブでネットワークプロファイルを設定して、自動的に接続しないようにします。この機能を無効にした場合は、
GNOME settings
や GNOME システムメニューなどを使用して、常に手動でネットワークに接続する必要があります。-
IPv4
タブで IPv4 設定を設定し、IPv6
タブで IPv6 設定を設定します。 Security
タブで、ネットワークの認証 (WPA3 Personal
など) を選択し、パスワードを入力します。選択したセキュリティーに応じて、アプリケーションは追加のフィールドを表示します。それに応じてそれらを埋めます。詳しくは wifi ネットワークの管理者におたずねください。
-
Apply
をクリックします。
検証
トップバーの右側にあるシステムメニューを開き、wifi ネットワークが接続されていることを確認します。
ネットワークがリストに表示されていれば、接続されています。
ホスト名または IP アドレスに ping を実行します。
# ping -c 3 example.com
3.6. nm-connection-editor による wifi 接続の設定
nm-connection-editor
アプリケーションを使用して、ワイヤレスネットワークの接続プロファイルを作成できます。このアプリケーションでは、RHEL がサポートするすべての wifi ネットワーク認証タイプを設定できます。
デフォルトでは、NetworkManager は接続プロファイルの自動接続機能を有効にし、保存されたネットワークが利用可能な場合は自動的に接続します。
前提条件
- ホストに wifi デバイスがインストールされている。
- ハードウェアスイッチがある場合は、wifi デバイスが有効になっている。
手順
端末を開き、次のコマンドを入力します。
# nm-connection-editor
- + ボタンをクリックして、新しい接続を追加します。
-
Wi-Fi
接続タイプを選択し、Create をクリックします。 - オプション: 接続プロファイルの名前を設定します。
オプション:
General
タブでネットワークプロファイルを設定して、自動的に接続しないようにします。この機能を無効にした場合は、
GNOME settings
や GNOME システムメニューなどを使用して、常に手動でネットワークに接続する必要があります。-
Wi-Fi
タブで、SSID
フィールドにサービスセット識別子 (SSID) を入力します。 Wi-Fi Security
タブで、ネットワークの認証タイプ (WPA3 Personal
など) を選択し、パスワードを入力します。選択したセキュリティーに応じて、アプリケーションは追加のフィールドを表示します。それに応じてそれらを埋めます。詳しくは wifi ネットワークの管理者におたずねください。
-
IPv4
タブで IPv4 設定を設定し、IPv6
タブで IPv6 設定を設定します。 -
Save
をクリックします。 -
Network Connections
ウィンドウを閉じます。
検証
トップバーの右側にあるシステムメニューを開き、wifi ネットワークが接続されていることを確認します。
ネットワークがリストに表示されていれば、接続されています。
ホスト名または IP アドレスに ping を実行します。
# ping -c 3 example.com
3.7. RHEL System Roles を使用した 802.1X ネットワーク認証による wifi 接続の設定
RHEL System Roles を使用すると、wifi 接続の作成を自動化できます。たとえば、Ansible Playbook を使用して、wlp1s0
インターフェイスのワイヤレス接続プロファイルをリモートで追加できます。作成されたプロファイルは、802.1X 標準を使用して、wifi ネットワークに対してクライアントを認証します。Playbook は、DHCP を使用するように接続プロファイルを設定します。静的 IP 設定を設定するには、それに応じて IP
ディクショナリーのパラメーターを調整します。
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理ノードを準備している
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo
権限があります。 - この Playbook を実行するホストまたはホストグループは、Ansible インベントリーファイルにリストされています。
- ネットワークは 802.1X ネットワーク認証をサポートしている。
-
マネージドノードに
wpa_supplicant
パッケージをインストールしました。 - DHCP は、マネージドノードのネットワークで使用できます。
TLS 認証に必要な以下のファイルがコントロールノードにある。
-
クライアントキーは、
/srv/data/client.key
ファイルに保存されます。 -
クライアント証明書は
/srv/data/client.crt
ファイルに保存されます。 -
CA 証明書は
/srv/data/ca.crt
ファイルに保存されます。
-
クライアントキーは、
手順
~/enable-802.1x.yml
などの Playbook ファイルを次の内容で作成します。--- - name: Configure a wifi connection with 802.1X authentication hosts: "managed-node-01.example.com" tasks: - name: Copy client key for 802.1X authentication copy: src: "/srv/data/client.key" dest: "/etc/pki/tls/private/client.key" mode: 0400 - name: Copy client certificate for 802.1X authentication copy: src: "/srv/data/client.crt" dest: "/etc/pki/tls/certs/client.crt" - name: Copy CA certificate for 802.1X authentication copy: src: "/srv/data/ca.crt" dest: "/etc/pki/ca-trust/source/anchors/ca.crt" - block: - import_role: name: linux-system-roles.network vars: network_connections: - name: Configure the Example-wifi profile interface_name: wlp1s0 state: up type: wireless autoconnect: yes ip: dhcp4: true auto6: true wireless: ssid: "Example-wifi" key_mgmt: "wpa-eap" ieee802_1x: identity: "user_name" eap: tls private_key: "/etc/pki/tls/client.key" private_key_password: "password" private_key_password_flags: none client_cert: "/etc/pki/tls/client.pem" ca_cert: "/etc/pki/tls/cacert.pem" domain_suffix_match: "example.com"
Playbook を実行します。
# ansible-playbook ~/enable-802.1x.yml
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.network/README.md
ファイル
3.8. nmcli を使用した、既存の wifi 接続での 802.1X ネットワーク認証の設定
nmcli
ユーティリティーを使用して、クライアントがネットワークに対して自己認証するように設定できます。たとえば、wlp1s0
という名前の既存の NetworkManager wifi 接続プロファイルで、MSCHAPv2 (Microsoft Challenge-Handshake Authentication Protocol version 2) を使用する PEAP (Protected Extensible Authentication Protocol) 認証を設定します。
前提条件
- ネットワークには 802.1X ネットワーク認証が必要です。
- wifi 接続プロファイルが NetworkManager に存在し、有効な IP 設定があります。
-
クライアントがオーセンティケーターの証明書を検証する必要がある場合は、認証局 (CA) 証明書を
/etc/pki/ca-trust/source/anchors/
ディレクトリーに保存する必要があります。 -
wpa_supplicant
パッケージがインストールされている。
手順
wifi セキュリティーモードを
wpa-eap
に設定し、Extensible Authentication Protocol (EAP) をpeap
に設定し、内部認証プロトコルをmschapv2
に設定し、ユーザー名を設定します。# nmcli connection modify wlp1s0 wireless-security.key-mgmt wpa-eap 802-1x.eap peap 802-1x.phase2-auth mschapv2 802-1x.identity user_name
1 つのコマンドで
wireless-security.key-mgmt
パラメーター、802-1x.eap
パラメーター、802-1x.phase2-auth
パラメーター、および802-1x.identity
パラメーターを設定する必要があります。必要に応じて、パスワードを設定に保存します。
# nmcli connection modify wlp1s0 802-1x.password password
重要デフォルトでは、NetworkManager は、パスワードを、
/etc/sysconfig/network-scripts/keys-connection_name
ファイルにクリアテキストで保存します。これは、root
ユーザーのみが読み取れるようにします。ただし、設定ファイルのクリアテキストパスワードはセキュリティーリスクとなる可能性があります。セキュリティーを強化するには、
802-1x.password-flags
パラメーターを0x1
に設定します。この設定では、GNOME デスクトップ環境またはnm-applet
が実行中のサーバーで、NetworkManager がこれらのサービスからパスワードを取得します。その他の場合は、NetworkManager によりパスワードの入力が求められます。クライアントがオーセンティケーターの証明書を検証する必要がある場合は、接続プロファイルの
802-1x.ca-cert
パラメーターを CA 証明書のパスに設定します。# nmcli connection modify wlp1s0 802-1x.ca-cert /etc/pki/ca-trust/source/anchors/ca.crt
注記セキュリティー上の理由から、Red Hat はオーセンティケーターの証明書を使用して、クライアントがオーセンティケーターの ID を検証できるようにすることを推奨します。
接続プロファイルをアクティベートします。
# nmcli connection up wlp1s0
検証手順
- ネットワーク認証が必要なネットワーク上のリソースにアクセスします。
関連情報
- wifi 接続の管理
-
man ページの
nm-settings(5)
-
man ページの
nmcli(1)
3.9. ワイヤレス規制ドメインの手動設定
RHEL では、udev
ルールが setregdomain
ユーティリティーを実行してワイヤレス規制ドメインを設定します。次に、ユーティリティーはこの情報をカーネルに提供します。
デフォルトでは、setregdomain
は国コードを自動的に決定しようとします。これが失敗する場合は、ワイヤレス規制ドメインの設定が間違っている可能性があります。この問題を回避するには、国コードを手動で設定します。
規制ドメインを手動で設定すると、自動検出が無効になります。そのため、後で別の国でコンピューターを使用すると、以前に設定された設定が正しくなくなる可能性があります。この場合、/etc/sysconfig/regdomain
ファイルを削除して自動検出に戻すか、以下の手順を使用して規制ドメイン設定を手動で再度更新します。
手順
オプション: 現在の規制ドメイン設定を表示します。
# iw reg get global country US: DFS-FCC ...
次の内容で
/etc/sysconfig/regdomain
ファイルを作成します。COUNTRY=<country_code>
COUNTRY
変数を ISO 3166-1 alpha2 国コード (ドイツの場合はDE
、アメリカ合衆国の場合はUS
など) に設定します。規制ドメインを設定します。
# setregdomain
検証
規制ドメインの設定を表示します。
# iw reg get global country DE: DFS-ETSI ...
関連情報
-
man ページの
setregdomain(1)
-
man ページの
iw(8)
-
man ページの
regulatory.bin(5)
- ISO 3166 国コード
第4章 Wi-Fi アクセスポイントとしての RHEL の設定
Wi-Fi デバイスを備えたホストでは、NetworkManager を使用して、このホストをアクセスポイントとして設定できます。その後、ワイヤレスクライアントはアクセスポイントを使用して、RHEL ホストまたはネットワーク内のサービスに接続できます。
アクセスポイントを設定すると、NetworkManager は自動的に以下を行います。
-
クライアントに DHCP および DNS サービスを提供するように
dnsmasq
サービスを設定します - IP 転送を有効にします
-
nftables
ファイアウォールルールを追加して、wifi デバイスからのトラフィックをマスカレードし、IP 転送を設定します
4.1. Wi-Fi デバイスがアクセスポイントモードをサポートしているかどうかの識別
Wi-Fi デバイスをアクセスポイントとして使用するには、デバイスがこの機能をサポートしている必要があります。nmcli
ユーティリティーを使用して、ハードウェアがアクセスポイントモードをサポートしているかどうかを確認できます。
前提条件
- ホストに wifi デバイスがインストールされている。
手順
Wi-Fi デバイスを一覧表示して、アクセスポイントを提供するデバイスを特定します。
# nmcli device status | grep wifi wlp0s20f3 wifi disconnected --
デバイスがアクセスポイントモードをサポートしていることを確認します。
# nmcli -f WIFI-PROPERTIES.AP device show wlp0s20f3 WIFI-PROPERTIES.AP: yes
4.2. RHEL を WPA2 または WPA3 パーソナルアクセスポイントとして設定する方法
Wi-Fi Protected Access 2 (WPA2) および Wi-Fi Protected Access 3 (WPA3) Personal は、ワイヤレスネットワークでセキュアな認証方法を提供します。ユーザーは、事前共有キー (PSK) を使用してアクセスポイントに接続できます。
前提条件
- Wi-Fi デバイスが、アクセスポイントモードでの実行をサポートしている
- Wi-Fi デバイスは使用していない
- ホストがインターネットにアクセスできる
手順
dnsmasq
およびNetworkManager-wifi
パッケージをインストールします。# yum install dnsmasq NetworkManager-wifi
NetworkManager は
dnsmasq
サービスを使用して、アクセスポイントのクライアントに DHCP および DNS サービスを提供します。アクセスポイントの初期設定を作成します。
# nmcli device wifi hotspot ifname wlp0s20f3 con-name Example-Hotspot ssid Example-Hotspot password "password"
このコマンドは、WPA2 および WPA3 Personal 認証を提供する
wlp0s20f3
デバイス上のアクセスポイントの接続プロファイルを作成します。ワイヤレスネットワークの名前である Service Set Identifier (SSID) はExample-Hotspot
で、事前共有キーのpassword
を使用します。オプション: WPA3 のみをサポートするようにアクセスポイントを設定します。
# nmcli connection modify Example-Hotspot 802-11-wireless-security.key-mgmt sae
デフォルトでは、NetworkManager は wifi デバイスに IP アドレス
10.42.0.1
を使用し、残りの10.42.0.0/24
サブネットからの IP アドレスをクライアントに割り当てます。別のサブネットと IP アドレスを設定するには、次のように入力します。# nmcli connection modify Example-Hotspot ipv4.addresses 192.0.2.254/24
設定した IP アドレス (この場合は
192.0.2.254
) は、NetworkManager が wifi デバイスに割り当てるものです。クライアントは、この IP アドレスをデフォルトゲートウェイおよび DNS サーバーとして使用します。接続プロファイルをアクティベートします。
# nmcli connection up Example-Hotspot
検証
サーバーの場合:
NetworkManager が
dnsmasq
サービスを開始し、そのサービスがポート 67 (DHCP) および 53 (DNS) でリッスンしていることを確認します。# ss -tulpn | egrep ":53|:67" udp UNCONN 0 0 10.42.0.1:53 0.0.0.0:* users:(("dnsmasq",pid=55905,fd=6)) udp UNCONN 0 0 0.0.0.0:67 0.0.0.0:* users:(("dnsmasq",pid=55905,fd=4)) tcp LISTEN 0 32 10.42.0.1:53 0.0.0.0:* users:(("dnsmasq",pid=55905,fd=7))
nftables
ルールセットを表示して、NetworkManager が10.42.0.0/24
サブネットからのトラフィックの転送とマスカレードを有効にしていることを確認します。# nft list ruleset table ip nm-shared-wlp0s20f3 { chain nat_postrouting { type nat hook postrouting priority srcnat; policy accept; ip saddr 10.42.0.0/24 ip daddr != 10.42.0.0/24 masquerade } chain filter_forward { type filter hook forward priority filter; policy accept; ip daddr 10.42.0.0/24 oifname "wlp0s20f3" ct state { established, related } accept ip saddr 10.42.0.0/24 iifname "wlp0s20f3" accept iifname "wlp0s20f3" oifname "wlp0s20f3" accept iifname "wlp0s20f3" reject oifname "wlp0s20f3" reject } }
Wi-Fi アダプターを備えたクライアントの場合:
利用可能なネットワークのリストを表示します。
# nmcli device wifi IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY 00:53:00:88:29:04 Example-Hotspot Infra 11 130 Mbit/s 62 ▂▄▆_ WPA3 ...
-
Example-Hotspot
ワイヤレスネットワークに接続します。Managing Wi-Fi connections を参照してください。 リモートネットワークまたはインターネット上のホストに ping を実行し、接続が機能していることを確認します。
# ping -c 3 www.redhat.com
関連情報
- Wi-Fi デバイスがアクセスポイントモードをサポートしているかどうかの識別
-
man ページの
nm-settings(5)
第5章 VLAN タグの設定
仮想ローカルエリアネットワーク (VLAN) は、物理ネットワーク内の論理ネットワークです。VLAN インターフェイスは、インターフェイスを通過する際に VLAN ID でパケットをタグ付けし、返信パケットのタグを削除します。VLAN インターフェイスを、イーサネット、ボンド、チーム、ブリッジデバイスなどの別のインターフェイスに作成します。これらのインターフェイスは parent interface
と呼ばれます。
Red Hat Enterprise Linux は、VLAN デバイスを設定するためのさまざまなオプションを管理者に提供します。以下に例を示します。
-
nmcli
を使用し、コマンドラインを使用して VLAN のタグ付けを設定します。 - RHEL Web コンソールを使用し、Web ブラウザーを使用して VLAN のタグ付けを設定します。
-
nmtui
を使用し、テキストベースのユーザーインターフェイスで VLAN のタグ付けを設定します。 -
nm-connection-editor
アプリケーションを使用して、グラフィカルインターフェイスで接続を設定します。 -
nmstatectl
を使用して、Nmstate API を介して接続を設定します。 - RHEL システムロールを使用して、1 つまたは複数のホストで VLAN 設定を自動化します。
5.1. nmcli コマンドによる VLAN タグ付けの設定
nmcli
ユーティリティーを使用して、コマンドラインで仮想ローカルエリアネットワーク (VLAN) のタグ付けを設定できます。
前提条件
- 仮想 VLAN インターフェイスに対する親として使用するインターフェイスが VLAN タグに対応している。
ボンドインターフェイスに VLAN を設定する場合は、以下のようになります。
- ボンディングのポートが起動している。
-
ボンドが、
fail_over_mac=follow
オプションで設定されていない。VLAN 仮想デバイスは、親の新規 MAC アドレスに一致する MAC アドレスを変更できません。このような場合、トラフィックは間違ったソースの MAC アドレスで送信されます。 -
ボンドは通常、DHCP サーバーまたは IPv6 自動設定から IP アドレスを取得することは想定されていません。ボンディングの作成時に
ipv4.method=disable
オプションおよびipv6.method=ignore
オプションを設定してこれを確認します。そうしないと、DHCP または IPv6 の自動設定がしばらくして失敗した場合に、インターフェイスがダウンする可能性があります。
- ホストが接続するスイッチは、VLAN タグに対応するように設定されています。詳細は、スイッチのドキュメントを参照してください。
手順
ネットワークインターフェイスを表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp1s0 ethernet disconnected enp1s0 bridge0 bridge connected bridge0 bond0 bond connected bond0 ...
VLAN インターフェイスを作成します。たとえば、VLAN インターフェイス
vlan10
を作成し、enp1s0
を親インターフェイスとして使用し、VLAN ID10
のタグパケットを作成するには、次のコマンドを実行します。# nmcli connection add type vlan con-name vlan10 ifname vlan10 vlan.parent enp1s0 vlan.id 10
VLAN は、
0
から4094
の範囲内に存在する必要があります。デフォルトでは、VLAN 接続は、親インターフェイスから最大伝送単位 (MTU) を継承します。必要に応じて、別の MTU 値を設定します。
# nmcli connection modify vlan10 ethernet.mtu 2000
VLAN デバイスの IP 設定を設定します。この VLAN デバイスを他のデバイスのポートとして使用する場合は、この手順を省略します。
IPv4 設定を設定します。たとえば、静的 IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを
vlan10
接続に設定するには、次のコマンドを実行します。# nmcli connection modify vlan10 ipv4.addresses '192.0.2.1/24' # nmcli connection modify vlan10 ipv4.gateway '192.0.2.254' # nmcli connection modify vlan10 ipv4.dns '192.0.2.253' # nmcli connection modify vlan10 ipv4.method manual
IPv6 設定を設定します。たとえば、静的 IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを
vlan10
接続に設定するには、次のコマンドを実行します。# nmcli connection modify vlan10 ipv6.addresses '2001:db8:1::1/32' # nmcli connection modify vlan10 ipv6.gateway '2001:db8:1::fffe' # nmcli connection modify vlan10 ipv6.dns '2001:db8:1::fffd' # nmcli connection modify vlan10 ipv6.method manual
接続をアクティベートします。
# nmcli connection up vlan10
検証手順
設定を確認します。
# ip -d addr show vlan10 4: vlan10@enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 52:54:00:72:2f:6e brd ff:ff:ff:ff:ff:ff promiscuity 0 vlan protocol 802.1Q id 10 <REORDER_HDR> numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute vlan10 valid_lft forever preferred_lft forever inet6 2001:db8:1::1/32 scope global noprefixroute valid_lft forever preferred_lft forever inet6 fe80::8dd7:9030:6f8e:89e6/64 scope link noprefixroute valid_lft forever preferred_lft forever
関連情報
- 特定のプロファイルでのデフォルトゲートウェイの指定を防ぐための NetworkManager の設定
-
man ページの
nm-settings(5)
5.2. RHEL Web コンソールを使用した VLAN タギングの設定
Web ブラウザーベースのインターフェイスを使用してネットワーク設定を管理する場合は、RHEL Web コンソールを使用して VLAN タグ付けを設定します。
前提条件
- 仮想 VLAN インターフェイスに対する親として使用するインターフェイスが VLAN タグに対応している。
ボンドインターフェイスに VLAN を設定する場合は、以下のようになります。
- ボンディングのポートが起動している。
-
ボンドが、
fail_over_mac=follow
オプションで設定されていない。VLAN 仮想デバイスは、親の新規 MAC アドレスに一致する MAC アドレスを変更できません。このような場合、トラフィックは間違ったソースの MAC アドレスで送信されます。 - ボンドは通常、DHCP サーバーまたは IPv6 自動設定から IP アドレスを取得することは想定されていません。結合を作成する IPv4 および IPv6 プロトコルを無効にして、これを確認します。そうしないと、DHCP または IPv6 の自動設定がしばらくして失敗した場合に、インターフェイスがダウンする可能性があります。
- ホストが接続するスイッチは、VLAN タグに対応するように設定されています。詳細は、スイッチのドキュメントを参照してください。
手順
-
画面左側のナビゲーションで
Networking
タブを選択します。 -
Interfaces
セクションで Add VLAN をクリックします。 - 親デバイスを選択します。
- VLAN ID を入力します。
VLAN デバイスの名前を入力するか、自動生成された名前のままにします。
- Apply をクリックします。
デフォルトでは、VLAN デバイスは動的 IP アドレスを使用します。静的 IP アドレスを設定する場合:
-
Interfaces
セクションで VLAN デバイスの名前をクリックします。 -
設定するプロトコルの横にある
Edit
をクリックします。 -
Addresses
の横にあるManual
を選択し、IP アドレス、接頭辞、およびデフォルトゲートウェイを入力します。 -
DNS
セクションで + ボタンをクリックし、DNS サーバーの IP アドレスを入力します。複数の DNS サーバーを設定するには、この手順を繰り返します。 -
DNS search domains
セクションで、+ ボタンをクリックし、検索ドメインを入力します。 インターフェイスにスタティックルートが必要な場合は、
Routes
セクションで設定します。- Apply をクリックします。
-
検証
画面左側のナビゲーションで
Networking
タブを選択し、インターフェイスに着信および発信トラフィックがあるかどうかを確認します。
5.3. nmtui を使用した VLAN タグ付けの設定
nmtui
アプリケーションは、NetworkManager 用のテキストベースのユーザーインターフェイスを提供します。nmtui
を使用して、グラフィカルインターフェイスを使用せずにホスト上で VLAN タグ付けを設定できます。
nmtui
で 以下を行います。
- カーソルキーを使用してナビゲートします。
- ボタンを選択して Enter を押します。
- Space を使用して、チェックボックスを選択および選択解除します。
前提条件
- 仮想 VLAN インターフェイスに対する親として使用するインターフェイスが VLAN タグに対応している。
ボンドインターフェイスに VLAN を設定する場合は、以下のようになります。
- ボンディングのポートが起動している。
-
ボンドが、
fail_over_mac=follow
オプションで設定されていない。VLAN 仮想デバイスは、親の新規 MAC アドレスに一致する MAC アドレスを変更できません。このような場合、トラフィックは間違ったソースの MAC アドレスで送信されます。 -
ボンドは通常、DHCP サーバーまたは IPv6 自動設定から IP アドレスを取得することは想定されていません。ボンディングの作成時に
ipv4.method=disable
オプションおよびipv6.method=ignore
オプションを設定してこれを確認します。そうしないと、DHCP または IPv6 の自動設定がしばらくして失敗した場合に、インターフェイスがダウンする可能性があります。
- ホストが接続するスイッチは、VLAN タグに対応するように設定されています。詳細は、スイッチのドキュメントを参照してください。
手順
VLAN タグ付けを設定するネットワークデバイス名がわからない場合は、使用可能なデバイスを表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp1s0 ethernet unavailable -- ...
nmtui
を開始します。# nmtui
-
Edit a connection
選択し、Enter を押します。 -
Add
ボタンを押します。 -
ネットワークタイプのリストから
VLAN
を選択し、Enter を押します。 - オプション: 作成する NetworkManager プロファイルの名前を入力します。
-
作成する VLAN デバイス名を
Device
フィールドに入力します。 -
VLAN タグ付けを設定するデバイスの名前を
Parent
フィールドに入力します。 -
VLAN ID を入力します。ID は
0
から4094
の範囲内である必要があります。 環境に応じて、
IPv4 configuration
およびIPv6 configuration
領域に IP アドレス設定を設定します。このためには、Automatic
ボタンを押して、次を選択します。-
この VLAN デバイスが IP アドレスを必要としない場合、または他のデバイスのポートとして使用する場合は、
Disabled
にします。 -
DHCP サーバーが IP アドレスを VLAN デバイスに動的に割り当てる場合は、
Automatic
にします。 ネットワークで静的 IP アドレス設定が必要な場合は
Manual
。この場合、さらにフィールドに入力する必要があります。-
設定するプロトコルの横にある
Show
ボタンを押して、追加のフィールドを表示します。 Addresses
の横にあるAdd
ボタンを押して、IP アドレスとサブネットマスクを Classless Inter-Domain Routing (CIDR) 形式で入力します。サブネットマスクを指定しない場合、NetworkManager は IPv4 アドレスに
/32
サブネットマスクを設定し、IPv6 アドレスに/64
サブネットマスクを設定します。- デフォルトゲートウェイのアドレスを入力します。
-
DNS servers
の横にあるAdd
ボタンを押して、DNS サーバーのアドレスを入力します。 -
Search domains
の横にあるAdd
ボタンを押して、DNS 検索ドメインを入力します。
-
設定するプロトコルの横にある
図5.1 静的 IP アドレス設定による VLAN 接続例
-
この VLAN デバイスが IP アドレスを必要としない場合、または他のデバイスのポートとして使用する場合は、
-
OK
ボタンを押して、新しい接続を作成し、自動的にアクティブにします。 -
Back
ボタンを押してメインメニューに戻ります。 -
Quit
を選択し、Enter キーを押してnmtui
アプリケーションを閉じます。
検証
設定を確認します。
# ip -d addr show vlan10 4: vlan10@enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 52:54:00:72:2f:6e brd ff:ff:ff:ff:ff:ff promiscuity 0 vlan protocol 802.1Q id 10 <REORDER_HDR> numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute vlan10 valid_lft forever preferred_lft forever inet6 2001:db8:1::1/32 scope global noprefixroute valid_lft forever preferred_lft forever inet6 fe80::8dd7:9030:6f8e:89e6/64 scope link noprefixroute valid_lft forever preferred_lft forever
5.4. nm-connection-editor による VLAN タグの設定
nm-connection-editor
アプリケーションを使用して、グラフィカルインターフェイスで仮想ローカルエリアネットワーク (VLAN) のタグ付けを設定できます。
前提条件
- 仮想 VLAN インターフェイスに対する親として使用するインターフェイスが VLAN タグに対応している。
ボンドインターフェイスに VLAN を設定する場合は、以下のようになります。
- ボンディングのポートが起動している。
-
ボンドが、
fail_over_mac=follow
オプションで設定されていない。VLAN 仮想デバイスは、親の新規 MAC アドレスに一致する MAC アドレスを変更できません。このような場合、トラフィックは間違ったソースの MAC アドレスで送信されます。
- ホストが接続するスイッチは、VLAN タグに対応するように設定されています。詳細は、スイッチのドキュメントを参照してください。
手順
端末を開き、
nm-connection-editor
と入力します。$
nm-connection-editor
- + ボタンをクリックして、新しい接続を追加します。
-
VLAN
接続タイプを選択し、作成 をクリックします。 VLAN
タブで、以下を行います。- 親インターフェイスを選択します。
-
VLAN id を選択します。VLAN は、
0
から4094
の範囲内に存在する必要があります。 - デフォルトでは、VLAN 接続は、親インターフェイスから最大伝送単位 (MTU) を継承します。必要に応じて、別の MTU 値を設定します。
必要に応じて、VLAN インターフェイスの名前および VLAN 固有のオプションを設定します。
VLAN デバイスの IP 設定を設定します。この VLAN デバイスを他のデバイスのポートとして使用する場合は、この手順を省略します。
-
IPv4 Settings
タブで、IPv4 設定を設定します。たとえば、静的な IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを設定します。 -
IPv6 設定
タブで、IPv6 設定を設定します。たとえば、静的な IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、および DNS サーバーを設定します。
-
- 保存 をクリックして VLAN 接続を保存します。
-
nm-connection-editor
を閉じます。
検証手順
設定を確認します。
# ip -d addr show vlan10 4: vlan10@enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 52:54:00:d5:e0:fb brd ff:ff:ff:ff:ff:ff promiscuity 0 vlan protocol 802.1Q id 10 <REORDER_HDR> numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute vlan10 valid_lft forever preferred_lft forever inet6 2001:db8:1::1/32 scope global noprefixroute valid_lft forever preferred_lft forever inet6 fe80::8dd7:9030:6f8e:89e6/64 scope link noprefixroute valid_lft forever preferred_lft forever
5.5. nmstatectl を使用した VLAN タグ付けの設定
nmstatectl
ユーティリティーを使用して、仮想ローカルエリアネットワーク (VLAN) のタグ付けを設定できます。この例では、イーサネット接続を使用する ID 10 の VLAN を設定します。子デバイスの VLAN 接続には、IP、デフォルトゲートウェイ、および DNS の設定が含まれます。
環境に応じて、YAML ファイルを適宜調整します。たとえば、VLAN でブリッジやボンディングデバイスを使用する場合は、VLAN で使用するポートの base-iface
属性と type
属性を変更します。
前提条件
- 物理または仮想のイーサネットデバイスをサーバーにインストールし、VLAN でイーサネットデバイスをポートとして使用する。
-
nmstate
パッケージがインストールされている。
手順
以下の内容を含む YAML ファイル (例:
~/create-vlan.yml
) を作成します。--- interfaces: - name: vlan10 type: vlan state: up ipv4: enabled: true address: - ip: 192.0.2.1 prefix-length: 24 dhcp: false ipv6: enabled: true address: - ip: 2001:db8:1::1 prefix-length: 64 autoconf: false dhcp: false vlan: base-iface: enp1s0 id: 10 - name: enp1s0 type: ethernet state: up routes: config: - destination: 0.0.0.0/0 next-hop-address: 192.0.2.254 next-hop-interface: vlan10 - destination: ::/0 next-hop-address: 2001:db8:1::fffe next-hop-interface: vlan10 dns-resolver: config: search: - example.com server: - 192.0.2.200 - 2001:db8:1::ffbb
設定をシステムに適用します。
# nmstatectl apply ~/create-vlan.yml
検証手順
デバイスおよび接続の状態を表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION vlan10 vlan connected vlan10
接続プロファイルのすべての設定を表示します。
# nmcli connection show vlan10 connection.id: vlan10 connection.uuid: 1722970f-788e-4f81-bd7d-a86bf21c9df5 connection.stable-id: -- connection.type: vlan connection.interface-name: vlan10 ...
接続設定を YAML 形式で表示します。
# nmstatectl show vlan0
関連情報
-
nmstatectl(8)
の man ページ -
/usr/share/doc/nmstate/examples/
directory
5.6. RHEL システムロールを使用した VLAN タギングの設定
network
RHEL システムロールを使用して、VLAN タギングを設定できます。この例では、イーサネット接続と、このイーサネット接続の上に ID 10
の VLAN を追加します。子デバイスの VLAN 接続には、IP、デフォルトゲートウェイ、および DNS の設定が含まれます。
環境に応じて、プレイを適宜調整します。以下に例を示します。
-
ボンディングなどの他の接続でポートとして VLAN を使用する場合は、
ip
属性を省略し、子設定で IP 設定を行います。 -
VLAN でチーム、ブリッジ、またはボンディングデバイスを使用するには、
interface_name
と VLAN で使用するポートのtype
属性を調整します。
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理ノードを準備している
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo
権限があります。 - この Playbook を実行するホストまたはホストグループは、Ansible インベントリーファイルにリストされています。
手順
~/vlan-ethernet.yml
などの Playbook ファイルを次の内容で作成します。--- - name: Configure the network hosts: managed-node-01.example.com tasks: - name: Configure a VLAN that uses an Ethernet connection include_role: name: rhel-system-roles.network vars: network_connections: # Add an Ethernet profile for the underlying device of the VLAN - name: enp1s0 type: ethernet interface_name: enp1s0 autoconnect: yes state: up ip: dhcp4: no auto6: no # Define the VLAN profile - name: enp1s0.10 type: vlan ip: address: - "192.0.2.1/24" - "2001:db8:1::1/64" gateway4: 192.0.2.254 gateway6: 2001:db8:1::fffe dns: - 192.0.2.200 - 2001:db8:1::ffbb dns_search: - example.com vlan_id: 10 parent: enp1s0 state: up
VLAN プロファイルの
parent
属性は、enp1s0
デバイス上で動作する VLAN を設定します。Playbook を実行します。
# ansible-playbook ~/vlan-ethernet.yml
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.network/README.md
ファイル
5.7. 関連情報
第6章 VXLAN を使用した仮想マシンの仮想レイヤー 2 ドメインの作成
仮想拡張可能な LAN (VXLAN) は、UDP プロトコルを使用して IP ネットワーク経由でレイヤー 2 トラフィックをトンネルするネットワークプロトコルです。たとえば、別のホストで実行している特定の仮想マシンは、VXLAN トンネルを介して通信できます。ホストは、世界中の異なるサブネットやデータセンターに存在できます。仮想マシンの視点からは、同じ VXLAN 内のその他の仮想マシンは、同じレイヤー 2 ドメイン内にあります。

この例では、RHEL-host-A と RHEL-host-B は、ブリッジである br0
を使用して、VXLAN 名が vxlan10
である各ホストの仮想マシンの仮想ネットワークを接続します。この設定により、VXLAN は仮想マシンには表示されなくなり、仮想マシンに特別な設定は必要ありません。その後、別の仮想マシンを同じ仮想ネットワークに接続すると、仮想マシンは自動的に同じ仮想レイヤー 2 ドメインのメンバーになります。
通常のレイヤー 2 トラフィックと同様、VXLAN のデータは暗号化されません。セキュリティー上の理由から、VPN 経由で VXLAN を使用するか、その他のタイプの暗号化接続を使用します。
6.1. VXLAN の利点
仮想拡張可能 LAN (VXLAN) の主な利点は、以下のとおりです。
- VXLAN は 24 ビット ID を使用します。そのため、最大 16,777,216 の分離されたネットワークを作成できます。たとえば、仮想 LAN (VLAN) は 4,096 の分離されたネットワークのみをサポートします。
- VXLAN は IP プロトコルを使用します。これにより、トラフィックをルーティングし、仮想的に実行するシステムを、同じレイヤー 2 ドメイン内の異なるネットワークと場所に置くことができます。
- ほとんどのトンネルプロトコルとは異なり、VXLAN はポイントツーポイントネットワークだけではありません。VXLAN は、他のエンドポイントの IP アドレスを動的に学習するか、静的に設定された転送エントリーを使用できます。
- 特定のネットワークカードは、UDP トンネル関連のオフロード機能に対応します。
関連情報
-
kernel-doc
パッケージにより提供されている/usr/share/doc/kernel-doc-<kernel_version>/Documentation/networking/vxlan.rst
6.2. ホストでのイーサネットインターフェイスの設定
RHEL 仮想マシンホストをイーサネットに接続するには、ネットワーク接続プロファイルを作成し、IP 設定を設定して、プロファイルをアクティブにします。
両方の RHEL ホストでこの手順を実行し、IP アドレス設定を調整します。
前提条件
- ホストがイーサネットに接続されている。
手順
NetworkManager に新しいイーサネット接続プロファイルを追加します。
# nmcli connection add con-name Example ifname enp1s0 type ethernet
IPv4 を設定します。
# nmcli connection modify Example ipv4.addresses 198.51.100.2/24 ipv4.method manual ipv4.gateway 198.51.100.254 ipv4.dns 198.51.100.200 ipv4.dns-search example.com
ネットワークが DHCP を使用する場合は、この手順をスキップします。
Example
コネクションをアクティブにします。# nmcli connection up Example
検証
デバイスおよび接続の状態を表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp1s0 ethernet connected Example
リモートネットワークでホストに ping を実行して、IP 設定を確認します。
# ping RHEL-host-B.example.com
そのホストでネットワークを設定する前に、その他の仮想マシンホストに ping を実行することはできないことに注意してください。
関連情報
-
man ページの
nm-settings(5)
6.3. VXLAN が接続されたネットワークブリッジの作成
仮想拡張可能な LAN (VXLAN) を仮想マシンに表示しないようにするには、ホストでブリッジを作成し、VXLAN をブリッジに割り当てます。NetworkManager を使用して、ブリッジと VXLAN の両方を作成します。仮想マシンのトラフィックアクセスポイント (TAP) デバイス (通常はホスト上の vnet*
) をブリッジに追加することはありません。libvirtd
は、仮想マシンの起動時に動的に追加します。
両方の RHEL ホストでこの手順を実行し、必要に応じて IP アドレスを調整します。
手順
ブリッジ
br0
を作成します。# nmcli connection add type bridge con-name br0 ifname br0 ipv4.method disabled ipv6.method disabled
このコマンドは、ブリッジデバイスに IPv4 アドレスおよび IPv6 アドレスを設定しません。これは、このブリッジがレイヤー 2 で機能するためです。
VXLAN インターフェイスを作成し、
br0
に割り当てます。# nmcli connection add type vxlan slave-type bridge con-name br0-vxlan10 ifname vxlan10 id 10 local 198.51.100.2 remote 203.0.113.1 master br0
このコマンドは、次の設定を使用します。
-
id 10
: VXLAN ID を設定します。 -
local 198.51.100.2
: 送信パケットの送信元 IP アドレスを設定します。 -
remote 203.0.113.1
: VXLAN デバイスフォワーディングデータベースで宛先リンク層アドレスが不明な場合に、送信パケットで使用するユニキャストまたはマルチキャストの IP アドレスを設定します。 -
master br0
: この VXLAN 接続を、br0
接続のポートとして作成するように設定します。 -
ipv4.method disabled
およびipv6.method disabled
: ブリッジで IPv4 および IPv6 を無効にします。
初期設定では、NetworkManager は
8472
を宛先ポートとして使用します。宛先ポートが異なる場合は、追加で、destination-port <port_number>
オプションをコマンドに渡します。-
br0
接続プロファイルを有効にします。# nmcli connection up br0
ローカルファイアウォールで、着信 UDP 接続用にポート
8472
を開くには、次のコマンドを実行します。# firewall-cmd --permanent --add-port=8472/udp # firewall-cmd --reload
検証
転送テーブルを表示します。
# bridge fdb show dev vxlan10 2a:53:bd:d5:b3:0a master br0 permanent 00:00:00:00:00:00 dst 203.0.113.1 self permanent ...
関連情報
-
man ページの
nm-settings(5)
6.4. 既存のブリッジを使用した libvirt での仮想ネットワークの作成
仮想マシンが、接続した仮想拡張可能 LAN (VXLAN) で br0
ブリッジを使用できるようにするには、最初に、このブリッジを使用する libvirtd
サービスに仮想ネットワークを追加します。
前提条件
-
libvirt
をインストールしている。 -
libvirtd
を起動して有効にしている。 -
RHEL 上の VXLAN で
br0
デバイスーを設定している。
手順
以下の内容で
~/vxlan10-bridge.xml
を作成します。<network> <name>vxlan10-bridge</name> <forward mode="bridge" /> <bridge name="br0" /> </network>
~/vxlan10-bridge.xml
を使用して、libvirt
に新しい仮想ネットワークを作成します。# virsh net-define ~/vxlan10-bridge.xml
~/vxlan10-bridge.xml
を削除します。# rm ~/vxlan10-bridge.xml
vxlan10-bridge
仮想ネットワークを起動します。# virsh net-start vxlan10-bridge
libvirtd
の起動時に自動的に起動するようにvxlan10-bridge
仮想ネットワークを設定します。# virsh net-autostart vxlan10-bridge
検証
仮想ネットワークの一覧を表示します。
# virsh net-list Name State Autostart Persistent ---------------------------------------------------- vxlan10-bridge active yes yes ...
関連情報
-
virsh(1)
man ページ
6.5. VXLAN を使用するように仮想マシンの設定
ホストで、接続されている仮想拡張 LAN (VXLAN) でブリッジデバイスを使用するように仮想マシンを設定するには、vxlan10-bridge
仮想ネットワークを使用する新しい仮想マシンを作成するか、このネットワークを使用する既存の仮想マシンの設定を更新します。
RHEL ホストでこの手順を実行します。
前提条件
-
libvirtd
でvxlan10-bridge
仮想ネットワークを設定している。
手順
新しい仮想マシンを作成し、
vxlan10-bridge
ネットワークを使用するように設定するには、仮想マシンの作成時に、--network network:vxlan10-bridge
オプションをvirt-install
に渡します。# virt-install ... --network network:vxlan10-bridge
既存の仮想マシンのネットワーク設定を変更するには、次のコマンドを実行します。
仮想マシンのネットワークインターフェイスを、
vxlan10-bridge
仮想ネットワークに接続します。# virt-xml VM_name --edit --network network=vxlan10-bridge
仮想マシンをシャットダウンして、再起動します。
# virsh shutdown VM_name # virsh start VM_name
検証
ホストの仮想マシンの仮想ネットワークインターフェイスを表示します。
# virsh domiflist VM_name Interface Type Source Model MAC ------------------------------------------------------------------- vnet1 bridge vxlan10-bridge virtio 52:54:00:c5:98:1c
vxlan10-bridge
ブリッジに接続されているインターフェイスを表示します。# ip link show master vxlan10-bridge 18: vxlan10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UNKNOWN mode DEFAULT group default qlen 1000 link/ether 2a:53:bd:d5:b3:0a brd ff:ff:ff:ff:ff:ff 19: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UNKNOWN mode DEFAULT group default qlen 1000 link/ether 52:54:00:c5:98:1c brd ff:ff:ff:ff:ff:ff
libvirtd
は、ブリッジの設定を動的に更新することに注意してください。vxlan10-bridge
ネットワークを使用する仮想マシンを起動すると、ホストの対応するvnet*
デバイスがブリッジのポートとして表示されます。アドレス解決プロトコル (ARP) 要求を使用して、仮想マシンが同じ VXLAN にあるかどうかを確認します。
- 同じ VXLAN で、2 つ以上の仮想マシンを起動します。
仮想マシンから別の仮想マシンに ARP 要求を送信します。
# arping -c 1 192.0.2.2 ARPING 192.0.2.2 from 192.0.2.1 enp1s0 Unicast reply from 192.0.2.2 [52:54:00:c5:98:1c] 1.450ms Sent 1 probe(s) (0 broadcast(s)) Received 1 response(s) (0 request(s), 0 broadcast(s))
コマンドが応答を示す場合、仮想マシンは同じレイヤー 2 ドメイン、およびこの場合は同じ VXLAN にあります。
arping
ユーティリティーを使用するには、iputils
をインストールします。
関連情報
-
virt-install(1)
man ページ -
virt-xml(1)
man ページ -
virsh(1)
man ページ -
arping(8)
man ページ
第7章 ネットワークブリッジの設定
ネットワークブリッジは、MAC アドレスのテーブルに基づいてネットワーク間のトラフィックを転送するリンク層デバイスです。ブリッジは、ネットワークトラフィックをリッスンし、どのホストが各ネットワークに接続しているかを把握して、MAC アドレステーブルを構築します。たとえば、Red Hat Enterprise Linux ホストのソフトウェアブリッジを使用して、ハードウェアブリッジまたは仮想環境をエミュレートし、仮想マシンをホストと同じネットワークに統合できます。
ブリッジには、ブリッジが接続する必要がある各ネットワークにネットワークデバイスが必要です。ブリッジを設定する場合には、ブリッジは コントローラー
と呼ばれ、ポート
を使用するデバイスです。
以下のように、さまざまなタイプのデバイスにブリッジを作成できます。
- 物理および仮想イーサネットデバイス
- ネットワークボンド
- ネットワークチーム
- VLAN デバイス
Wi-Fi で効率的に使用するために、Wi-Fi で 3-address フレームの使用を指定する IEEE 802.11 規格により、Ad-Hoc モードまたは Infrastructure モードで稼働している Wi-Fi ネットワークにはブリッジを設定できません。
7.1. nmcli コマンドによるネットワークブリッジの設定
コマンドラインでネットワークブリッジを設定するには、nmcli
ユーティリティーを使用します。
前提条件
- サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
- ブリッジのポートとしてイーサネットデバイスを使用するには、物理または仮想のイーサネットデバイスをサーバーにインストールする必要があります。
ブリッジのポートにチーム、ボンディング、または VLAN デバイスを使用するには、ブリッジの作成時にこれらのデバイスを作成するか、次の説明に従って事前にデバイスを作成することができます。
手順
ブリッジインターフェイスを作成します。
# nmcli connection add type bridge con-name bridge0 ifname bridge0
このコマンドにより
bridge0
という名前のブリッジが作成されます。以下を入力します。ネットワークインターフェイスを表示し、ブリッジに追加するインターフェイスの名前を書き留めます。
# nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet disconnected -- enp8s0 ethernet disconnected -- bond0 bond connected bond0 bond1 bond connected bond1 ...
この例では、以下のように設定されています。
-
enp7s0
およびenp8s0
は設定されません。これらのデバイスをポートとして使用するには、次のステップに接続プロファイルを追加します。 -
bond0
およびbond1
には既存の接続プロファイルがあります。これらのデバイスをポートとして使用するには、次の手順でプロファイルを変更します。
-
インターフェイスをブリッジに割り当てます。
ブリッジに割り当てるインターフェイスが設定されていない場合は、それらのブリッジに新しい接続プロファイルを作成します。
# nmcli connection add type ethernet slave-type bridge con-name bridge0-port1 ifname enp7s0 master bridge0 # nmcli connection add type ethernet slave-type bridge con-name bridge0-port2 ifname enp8s0 master bridge0
これらのコマンドにより、
enp7s0
およびenp8s0
のプロファイルが作成され、それらをbridge0
接続に追加します。既存の接続プロファイルをブリッジに割り当てるには、以下の接続の
master
パラメーターをbridge0
に設定します。# nmcli connection modify bond0 master bridge0 # nmcli connection modify bond1 master bridge0
これらのコマンドは、
bond0
およびbond1
という名前の既存の接続プロファイルをbridge0
接続に割り当てます。
ブリッジの IP 設定を設定します。このブリッジを他のデバイスのポートとして使用する場合は、この手順を省略します。
IPv4 設定を設定します。たとえば、
bridge0
接続の静的 IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および DNS 検索ドメインを設定するには、次のコマンドを実行します。# nmcli connection modify bridge0 ipv4.addresses '192.0.2.1/24' # nmcli connection modify bridge0 ipv4.gateway '192.0.2.254' # nmcli connection modify bridge0 ipv4.dns '192.0.2.253' # nmcli connection modify bridge0 ipv4.dns-search 'example.com' # nmcli connection modify bridge0 ipv4.method manual
IPv6 設定を設定します。たとえば、
bridge0
接続の静的 IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定するには、次のコマンドを実行します。# nmcli connection modify bridge0 ipv6.addresses '2001:db8:1::1/64' # nmcli connection modify bridge0 ipv6.gateway '2001:db8:1::fffe' # nmcli connection modify bridge0 ipv6.dns '2001:db8:1::fffd' # nmcli connection modify bridge0 ipv6.dns-search 'example.com' # nmcli connection modify bridge0 ipv6.method manual
必要に応じて、ブリッジのその他のプロパティーを設定します。たとえば、
bridge0
の STP (Spanning Tree Protocol) の優先度を16384
に設定するには、次のコマンドを実行します。# nmcli connection modify bridge0 bridge.priority '16384'
デフォルトでは STP が有効になっています。
接続をアクティベートします。
# nmcli connection up bridge0
ポートが接続されており、
CONNECTION
コラムがポートの接続名を表示していることを確認します。# nmcli device DEVICE TYPE STATE CONNECTION ... enp7s0 ethernet connected bridge0-port1 enp8s0 ethernet connected bridge0-port2
接続のいずれかのポートをアクティブにすると、NetworkManager はブリッジもアクティブにしますが、他のポートはアクティブにしません。ブリッジが有効な場合には、Red Hat Enterprise Linux がすべてのポートを自動的に有効にするように設定できます。
ブリッジ接続の
connection.autoconnect-slaves
パラメーターを有効にします。# nmcli connection modify bridge0 connection.autoconnect-slaves 1
ブリッジを再度アクティブにします。
# nmcli connection up bridge0
検証手順
ip
ユーティリティーを使用して、特定のブリッジのポートであるイーサネットデバイスのリンクステータスを表示します。# ip link show master bridge0 3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:62:61:0e brd ff:ff:ff:ff:ff:ff 4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:9e:f1:ce brd ff:ff:ff:ff:ff:ff
bridge
ユーティリティーを使用して、任意のブリッジデバイスのポートであるイーサネットデバイスの状態を表示します。# bridge link show 3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state forwarding priority 32 cost 100 4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state listening priority 32 cost 100 5: enp9s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge1 state forwarding priority 32 cost 100 6: enp11s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge1 state blocking priority 32 cost 100 ...
特定のイーサネットデバイスのステータスを表示するには、
bridge link show dev ethernet_device_name
コマンドを使用します。
関連情報
- 特定のプロファイルでのデフォルトゲートウェイの指定を防ぐための NetworkManager の設定
-
man ページの
nm-settings(5)
-
man ページの
bridge(8)
- NetworkManager duplicates a connection after restart of NetworkManager service
- VLAN 情報を使用してブリッジを設定するには ?
7.2. RHEL Web コンソールを使用したネットワークブリッジの設定
Web ブラウザーベースのインターフェイスを使用してネットワーク設定を管理する場合は、RHEL Web コンソールを使用してネットワークブリッジを設定します。
前提条件
- サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
- ブリッジのポートとしてイーサネットデバイスを使用するには、物理または仮想のイーサネットデバイスをサーバーにインストールする必要があります。
ブリッジのポートにチーム、ボンディング、または VLAN デバイスを使用するには、ブリッジの作成時にこれらのデバイスを作成するか、次の説明に従って事前にデバイスを作成することができます。
手順
-
画面左側のナビゲーションで
Networking
タブを選択します。 -
Interfaces
セクションで Add bridge をクリックします。 - 作成するブリッジデバイスの名前を入力します。
- ブリッジのポートにするインターフェイスを選択します。
オプション:
Spanning tree protocol (STP)
機能を有効にして、ブリッジループとブロードキャスト放射を回避します。- Apply をクリックします。
デフォルトでは、ブリッジは動的 IP アドレスを使用します。静的 IP アドレスを設定する場合:
-
Interfaces
セクションでブリッジの名前をクリックします。 -
設定するプロトコルの横にある
Edit
をクリックします。 -
Addresses
の横にあるManual
を選択し、IP アドレス、接頭辞、およびデフォルトゲートウェイを入力します。 -
DNS
セクションで + ボタンをクリックし、DNS サーバーの IP アドレスを入力します。複数の DNS サーバーを設定するには、この手順を繰り返します。 -
DNS search domains
セクションで、+ ボタンをクリックし、検索ドメインを入力します。 インターフェイスにスタティックルートが必要な場合は、
Routes
セクションで設定します。- Apply をクリックします。
-
検証
画面左側のナビゲーションで
Networking
タブを選択し、インターフェイスに着信および発信トラフィックがあるかどうかを確認します。
7.3. nmtui を使用したネットワークブリッジの設定
nmtui
アプリケーションは、NetworkManager 用のテキストベースのユーザーインターフェイスを提供します。nmtui
を使用して、グラフィカルインターフェイスを使用せずにホスト上でネットワークブリッジを設定できます。
nmtui
で 以下を行います。
- カーソルキーを使用してナビゲートします。
- ボタンを選択して Enter を押します。
- Space を使用して、チェックボックスを選択および選択解除します。
前提条件
- サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
- ブリッジのポートとしてイーサネットデバイスを使用するには、物理または仮想のイーサネットデバイスをサーバーにインストールする必要があります。
手順
ネットワークブリッジを設定するネットワークデバイス名がわからない場合は、使用可能なデバイスを表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet unavailable -- enp8s0 ethernet unavailable -- ...
nmtui
を開始します。# nmtui
-
Edit a connection
選択し、Enter を押します。 -
Add
ボタンを押します。 -
ネットワークタイプのリストから
Bridge
を選択し、Enter を押します。 - オプション: 作成する NetworkManager プロファイルの名前を入力します。
-
作成するブリッジデバイス名を
Device
フィールドに入力します。 作成するブリッジにポートを追加します。
-
Slaves
リストの横にあるAdd
ボタンを押します。 -
ブリッジにポートとして追加するインターフェイスのタイプ (例:
Ethernet
) を選択します。 - オプション: このブリッジポート用に作成する NetworkManager プロファイルの名前を入力します。
-
ポートのデバイス名を
Device
フィールドに入力します。 OK
ボタンを押して、ブリッジ設定のウィンドウに戻ります。図7.1 イーサネットデバイスをポートとしてブリッジに追加する
- ブリッジにさらにポートを追加するには、これらの手順を繰り返します。
-
環境に応じて、
IPv4 configuration
およびIPv6 configuration
領域に IP アドレス設定を設定します。このためには、Automatic
ボタンを押して、次を選択します。-
ブリッジが IP アドレスを必要としない場合は
Disabled
にします。 -
DHCP サーバーが IP アドレスをブリッジに動的に割り当てる場合は、
Automatic
にします。 ネットワークで静的 IP アドレス設定が必要な場合は
Manual
。この場合、さらにフィールドに入力する必要があります。-
設定するプロトコルの横にある
Show
ボタンを押して、追加のフィールドを表示します。 Addresses
の横にあるAdd
ボタンを押して、IP アドレスとサブネットマスクを Classless Inter-Domain Routing (CIDR) 形式で入力します。サブネットマスクを指定しない場合、NetworkManager は IPv4 アドレスに
/32
サブネットマスクを設定し、IPv6 アドレスに/64
サブネットマスクを設定します。- デフォルトゲートウェイのアドレスを入力します。
-
DNS servers
の横にあるAdd
ボタンを押して、DNS サーバーのアドレスを入力します。 -
Search domains
の横にあるAdd
ボタンを押して、DNS 検索ドメインを入力します。
-
設定するプロトコルの横にある
図7.2 IP アドレス設定なしのブリッジ接続例
-
ブリッジが IP アドレスを必要としない場合は
-
OK
ボタンを押して、新しい接続を作成し、自動的にアクティブにします。 -
Back
ボタンを押してメインメニューに戻ります。 -
Quit
を選択し、Enter キーを押してnmtui
アプリケーションを閉じます。
検証
ip
ユーティリティーを使用して、特定のブリッジのポートであるイーサネットデバイスのリンクステータスを表示します。# ip link show master bridge0 3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:62:61:0e brd ff:ff:ff:ff:ff:ff 4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:9e:f1:ce brd ff:ff:ff:ff:ff:ff
bridge
ユーティリティーを使用して、任意のブリッジデバイスのポートであるイーサネットデバイスの状態を表示します。# bridge link show 3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state forwarding priority 32 cost 100 4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state listening priority 32 cost 100 ...
特定のイーサネットデバイスのステータスを表示するには、
bridge link show dev ethernet_device_name
コマンドを使用します。
7.4. nm-connection-editor によるネットワークブリッジの設定
グラフィカルインターフェイスで Red Hat Enterprise Linux を使用する場合は、nm-connection-editor
アプリケーションを使用してネットワークブリッジを設定できます。
nm-connection-editor
は、新しいポートだけをブリッジに追加できることに注意してください。既存の接続プロファイルをポートとして使用するには、nmcli コマンドを使用したネットワークブリッジの設定 の説明に従って、nmcli
ユーティリティーを使用してブリッジを作成します。
前提条件
- サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
- ブリッジのポートとしてイーサネットデバイスを使用するには、物理または仮想のイーサネットデバイスをサーバーにインストールする必要があります。
- ブリッジのポートとしてチーム、ボンディング、または VLAN デバイスを使用するには、これらのデバイスがまだ設定されていないことを確認してください。
手順
端末を開き、
nm-connection-editor
と入力します。$
nm-connection-editor
- + ボタンをクリックして、新しい接続を追加します。
-
接続タイプ
Bridge
を選択し、作成 をクリックします。 Bridge
タブで以下を行います。-
必要に応じて、
Interface name
フィールドにブリッジインターフェイスの名前を設定します。 追加 ボタンをクリックして、ネットワークインターフェイスの新しい接続プロファイルを作成し、プロファイルをポートとしてブリッジに追加します。
-
インターフェイスの接続タイプを選択します。たとえば、有線接続に
Ethernet
を選択します。 - 必要に応じて、ポートデバイスの接続名を設定します。
-
イーサネットデバイスの接続プロファイルを作成する場合は、
Ethernet
タブを開き、Device
フィールドで選択し、ポートとしてブリッジに追加するネットワークインターフェイスを選択します。別のデバイスタイプを選択した場合は、それに応じて設定します。 - 保存 をクリックします。
-
インターフェイスの接続タイプを選択します。たとえば、有線接続に
ブリッジに追加する各インターフェイスに、直前の手順を繰り返します。
-
必要に応じて、
- 必要に応じて、スパニングツリープロトコル (STP) オプションなどの追加のブリッジ設定を行います。
ブリッジの IP 設定を設定します。このブリッジを他のデバイスのポートとして使用する場合は、この手順を省略します。
IPv4 Settings
タブで、IPv4 設定を設定します。たとえば、静的な IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定します。IPv6 設定
タブで、IPv6 設定を設定します。たとえば、静的な IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定します。
- ブリッジ接続を保存します。
-
nm-connection-editor
を閉じます。
検証手順
ip
ユーティリティーを使用して、特定のブリッジのポートであるイーサネットデバイスのリンクステータスを表示します。# ip link show master bridge0 3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:62:61:0e brd ff:ff:ff:ff:ff:ff 4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:9e:f1:ce brd ff:ff:ff:ff:ff:ff
bridge
ユーティリティーを使用して、任意のブリッジデバイスのポートであるイーサネットデバイスの状態を表示します。# bridge link show 3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state forwarding priority 32 cost 100 4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state listening priority 32 cost 100 5: enp9s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge1 state forwarding priority 32 cost 100 6: enp11s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge1 state blocking priority 32 cost 100 ...
特定のイーサネットデバイスのステータスを表示するには、
bridge link show dev ethernet_device_name
コマンドを使用します。
7.5. nmstatectl を使用したネットワークブリッジの設定
Nmstate API を使用してネットワークブリッジを設定するには、nmstatectl
ユーティリティーを使用します。
たとえば、以下の手順では、次の設定で NetworkManager にブリッジを作成します。
-
ブリッジのネットワークインターフェイス:
enp1s0
およびenp7s0
- スパニングツリープロトコル (STP): 有効化
-
静的 IPv4 アドレス:
192.0.2.1
(サブネットマスクが/24
) -
静的 IPv6 アドレス:
2001:db8:1::1
(サブネットマスクが/64
) -
IPv4 デフォルトゲートウェイ:
192.0.2.254
-
IPv6 デフォルトゲートウェイ:
2001:db8:1::fffe
-
IPv4 DNS サーバー:
192.0.2.200
-
IPv6 DNS サーバー:
2001:db8:1::ffbb
-
DNS 検索ドメイン:
example.com
前提条件
- サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
- 物理または仮想のイーサネットデバイスをサーバーにインストールし、ブリッジでイーサネットデバイスをポートとして使用する。
-
ポート
一覧でインターフェイス名を設定し、対応するインターフェイスを定義して、ブリッジのポートとしてチーム、ボンディング、または VLAN デバイスを使用する。 -
nmstate
パッケージがインストールされている。
手順
以下の内容を含む YAML ファイル (例:
~/create-bridge.yml
) を作成します。--- interfaces: - name: bridge0 type: linux-bridge state: up ipv4: enabled: true address: - ip: 192.0.2.1 prefix-length: 24 dhcp: false ipv6: enabled: true address: - ip: 2001:db8:1::1 prefix-length: 64 autoconf: false dhcp: false bridge: options: stp: enabled: true port: - name: enp1s0 - name: enp7s0 - name: enp1s0 type: ethernet state: up - name: enp7s0 type: ethernet state: up routes: config: - destination: 0.0.0.0/0 next-hop-address: 192.0.2.254 next-hop-interface: bridge0 - destination: ::/0 next-hop-address: 2001:db8:1::fffe next-hop-interface: bridge0 dns-resolver: config: search: - example.com server: - 192.0.2.200 - 2001:db8:1::ffbb
設定をシステムに適用します。
# nmstatectl apply ~/create-bridge.yml
検証手順
デバイスおよび接続の状態を表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION bridge0 bridge connected bridge0
接続プロファイルのすべての設定を表示します。
# nmcli connection show bridge0 connection.id: bridge0 connection.uuid: e2cc9206-75a2-4622-89cf-1252926060a9 connection.stable-id: -- connection.type: bridge connection.interface-name: bridge0 ...
接続設定を YAML 形式で表示します。
# nmstatectl show bridge0
関連情報
-
nmstatectl(8)
の man ページ -
/usr/share/doc/nmstate/examples/
directory - VLAN 情報を使用してブリッジを設定するには ?
7.6. RHEL システムロールを使用したネットワークブリッジの設定
network
RHEL システムロールを使用して、Linux ブリッジを設定できます。たとえば、2 つのイーサネットデバイスを使用するネットワークブリッジを設定し、IPv4 アドレスおよび IPv6 アドレス、デフォルトゲートウェイ、および DNS 設定を設定します。
Linux ブリッジのポートではなく、ブリッジに IP 設定を指定します。
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理ノードを準備している
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo
権限があります。 - この Playbook を実行するホストまたはホストグループは、Ansible インベントリーファイルにリストされています。
- サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
手順
~/bridge-ethernet.yml
などの Playbook ファイルを次の内容で作成します。--- - name: Configure the network hosts: managed-node-01.example.com tasks: - name: Configure a network bridge that uses two Ethernet ports include_role: name: rhel-system-roles.network vars: network_connections: # Define the bridge profile - name: bridge0 type: bridge interface_name: bridge0 ip: address: - "192.0.2.1/24" - "2001:db8:1::1/64" gateway4: 192.0.2.254 gateway6: 2001:db8:1::fffe dns: - 192.0.2.200 - 2001:db8:1::ffbb dns_search: - example.com state: up # Add an Ethernet profile to the bridge - name: bridge0-port1 interface_name: enp7s0 type: ethernet controller: bridge0 port_type: bridge state: up # Add a second Ethernet profile to the bridge - name: bridge0-port2 interface_name: enp8s0 type: ethernet controller: bridge0 port_type: bridge state: up
Playbook を実行します。
# ansible-playbook ~/bridge-ethernet.yml
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.network/README.md
ファイル
第8章 ネットワークチーミングの設定
ネットワークチームは、物理ネットワークインターフェイスと仮想ネットワークインターフェイスを組み合わせるか集約して、より高いスループットまたは冗長性を備えた論理インターフェイスを提供する方法です。ネットワークチームでは、小さなカーネルモジュールとユーザー空間サービスの両方が操作を処理します。イーサネットデバイスや VLAN など、さまざまなタイプのデバイスでネットワークチームを作成できます。
Red Hat Enterprise Linux は、チームデバイスを設定するためのさまざまなオプションを管理者に提供します。以下に例を示します。
-
nmcli
を使用し、コマンドラインを使用してチーム接続を設定します。 - RHEL Web コンソールを使用し、Web ブラウザーを使用してチーム接続を設定します。
-
nm-connection-editor
アプリケーションを使用して、グラフィカルインターフェイスでチーム接続を設定します。
Red Hat Enterprise Linux 9 では、ネットワークチーミングが非推奨になりました。サーバーを将来バージョンの RHEL にアップグレードする予定がある場合は、代替手段としてカーネルボンディングドライバーの使用を検討してください。詳細は、Configuring network bonding を参照してください。
8.1. ネットワークチーミングの理解
ネットワークチーミングとは、ネットワークインターフェイスを統合または集約し、より高いスループットまたは冗長性のある論理インターフェイスを提供する機能です。
ネットワークチーミングでは、カーネルドライバーを使用してパケットフローの高速処理や、他のタスク用のユーザー空間ライブラリーおよびサービスを実装します。これにより、ネットワークチーミングは、負荷分散および冗長性の要件に対して、簡単に拡張可能でスケーラブルなソリューションとなります。
特定のネットワークチーミング機能 (例: フェイルオーバーメカニズム) は、ネットワークスイッチのないダイレクトケーブル接続に対応していません。詳細は、ボンディングは、クロスオーバーケーブルを使用したダイレクトコレクションをサポートしますか ? を参照してください。
8.2. コントローラーおよびポートインターフェイスのデフォルト動作の理解
NetworkManager
サービスを使用してチームまたはボンディングのポートインターフェイスを管理またはトラブルシューティングする場合は、以下のデフォルトの動作を考慮してください。
- コントローラーインターフェイスを起動しても、ポートインターフェイスは自動的に起動しない。
- ポートインターフェイスを起動すると、コントローラーインターフェイスは毎回、起動する。
- コントローラーインターフェイスを停止すると、ポートインターフェイスも停止する。
- ポートのないコントローラーは、静的 IP 接続を開始できる。
- コントローラーにポートがない場合は、DHCP 接続の開始時にポートを待つ。
- DHCP 接続でポートを待機中のコントローラーは、キャリアを伴うポートの追加時に完了する。
- DHCP 接続でポートを待機中のコントローラーは、キャリアを伴わないポートを追加する時に待機を継続する。
8.3. ネットワークチーミングとボンディング機能の比較
ネットワークチームおよびネットワークボンディングでサポートされている機能について説明します。
機能 | ネットワークボンド | ネットワークチーム |
---|---|---|
ブロードキャストの Tx ポリシー | はい | はい |
ラウンドロビンの Tx ポリシー | はい | はい |
アクティブバックアップの Tx ポリシー | はい | はい |
LACP (802.3ad) への対応 | あり (アクティブのみ) | はい |
ハッシュベースの Tx ポリシー | はい | はい |
ユーザーによるハッシュ機能の設定 | いいえ | はい |
Tx 負荷分散への対応 (TLB) | はい | はい |
LACP ハッシュポートの選択 | はい | はい |
LACP 対応の負荷分散 | いいえ | はい |
Ethtool リンク監視 | はい | はい |
ARP リンク監視 | はい | はい |
NS/NA (IPv6) リンク監視 | いいえ | はい |
ポートのアップ/ダウンの遅延 | はい | はい |
ポートの優先度および持続性 (スティッキネス) (プライマリーのオプション強化) | いいえ | はい |
ポートごとに個別のリンク監視の設定 | いいえ | はい |
複数のリンク監視の設定 | 限定的 | はい |
ロックなしの Tx/Rx パス | なし (rwlock) | あり (RCU) |
VLAN への対応 | はい | はい |
ユーザー空間のランタイム制御 | 限定的 | はい |
ユーザー空間での論理 | いいえ | はい |
拡張性 | 困難 | 容易 |
モジュラー設計 | いいえ | はい |
パフォーマンスのオーバーヘッド | 低 | 非常に低い |
D-Bus インターフェイス | いいえ | はい |
複数デバイスのスタッキング | はい | はい |
LLDP を使用したゼロ設定 | いいえ | (計画中) |
NetworkManager への対応 | はい | はい |
8.4. teamd サービス、ランナー、およびリンク監視の理解
チームサービス teamd
は、チームドライバーのインスタンスを制御します。このドライバーのインスタンスは、ハードウェアデバイスドライバーのインスタンスを追加して、ネットワークインターフェイスのチームを形成します。チームドライバーは、ネットワークインターフェイス (team0
など) をカーネルに提示します。
teamd
サービスは、チーミングのすべてのメソッドに共通のロジックを実装します。この関数は、ラウンドロビンなどの異なる負荷分散とバックアップメソッドに一意で、ランナー
と呼ばれる別のコードのユニットにより実装されます。管理者は、JSON (JavaScript Object Notation) 形式でランナーを指定します。インスタンスの作成時に、JSON コードが teamd
のインスタンスにコンパイルされます。または、NetworkManager
を使用する場合は、team.runner
パラメーターにランナーを設定でき、対応する JSON コードを NetworkManager
が自動的に作成します。
以下のランナーが利用できます。
-
broadcast
- すべてのポートでデータを送信します。 -
roundrobin
- 次に、すべてのポートでデータを送信します。 -
activebackup
- 1 つのポートにデータを送信します。もう 1 つのポートはバックアップとして維持されます。 -
loadbalance
- アクティブな Tx 負荷分散と Berkeley Packet Filter (BPF) ベースの Tx ポートセレクターを持つすべてのポートでデータを送信します。 -
random
- 無作為に選択されたポートでデータを送信します。 -
lacp
- 802.3ad リンクアグリゲーション制御プロトコル (LACP) を実装します。
teamd
サービスはリンク監視を使用して、下位デバイスの状態を監視します。さらに、以下のリンク監視が利用可能です。
-
ethtool
-libteam
ライブラリーは、ethtool
ユーティリティーを使用してリンク状態の変更を監視します。これはデフォルトのリンク監視です。 -
arp_ping
-libteam
ライブラリーは、arp_ping
ユーティリティーでアドレス解決プロトコル (ARP) を使用して、遠端のハードウェアアドレスの存在を監視します。 -
nsna_ping
- IPv6 接続では、libteam
ライブラリーが IPv6 neighbor Discovery プロトコルの Neighbor Advertisement 機能と Neighbor Solicitation 機能を使用して、近くのインターフェイスの存在を監視します。
各ランナーは、lacp
を除くリンク監視を使用できます。このランナーは、ethtool
リンク監視のみを使用できます。
8.5. nmcli コマンドによるネットワークチームの設定
コマンドラインでネットワークチームを設定するには、nmcli
ユーティリティーを使用します。
Red Hat Enterprise Linux 9 では、ネットワークチーミングが非推奨になりました。サーバーを将来バージョンの RHEL にアップグレードする予定がある場合は、代替手段としてカーネルボンディングドライバーの使用を検討してください。詳細は、Configuring network bonding を参照してください。
前提条件
-
teamd
およびNetworkManager-team
パッケージがインストールされている。 - サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
- チームのポートとしてイーサネットデバイスを使用するには、物理または仮想のイーサネットデバイスがサーバーにインストールされ、スイッチに接続されている必要があります。
チームのポートにボンディング、ブリッジ、または VLAN デバイスを使用するには、チームの作成時にこれらのデバイスを作成するか、次の説明に従って事前にデバイスを作成することができます。
手順
チームインターフェイスを作成します。
# nmcli connection add type team con-name team0 ifname team0 team.runner activebackup
このコマンドは、
activebackup
ランナーを使用するteam0
という名前のネットワークチームを作成します。必要に応じて、リンク監視を設定します。たとえば、
team0
接続プロファイルでethtool
リンク監視を設定するには、次のコマンドを実行します。# nmcli connection modify team0 team.link-watchers "name=ethtool"
リンク監視は、さまざまなパラメーターに対応します。リンク監視にパラメーターを設定するには、
name
プロパティーでスペースで区切って指定します。name プロパティーは引用符で囲む必要があることに注意してください。たとえば、ethtool
リンク監視を使用し、delay-up
パラメーターを2500
ミリ秒 (2.5 秒) で設定するには、次のコマンドを実行します。# nmcli connection modify team0 team.link-watchers "name=ethtool delay-up=2500"
複数のリンク監視および各リンク監視を、特定のパラメーターで設定するには、リンク監視をコンマで区切る必要があります。以下の例では、
delay-up
パラメーターでethtool
リンク監視を設定します。arp_ping
リンク監視は、source-host
パラメーターおよびtarget-host
パラメーターで設定します。# nmcli connection modify team0 team.link-watchers "name=ethtool delay-up=2, name=arp_ping source-host=192.0.2.1 target-host=192.0.2.2"
ネットワークインターフェイスを表示し、次のステップでチームに追加するインターフェイスの名前を書き留めておきます。
# nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet disconnected -- enp8s0 ethernet disconnected -- bond0 bond connected bond0 bond1 bond connected bond1 ...
この例では、以下のように設定されています。
-
enp7s0
およびenp8s0
は設定されません。これらのデバイスをポートとして使用するには、次のステップに接続プロファイルを追加します。いずれの接続にも割り当てられていないチームのイーサネットインターフェイスのみを使用できる点に注意してください。 -
bond0
およびbond1
には既存の接続プロファイルがあります。これらのデバイスをポートとして使用するには、次の手順でプロファイルを変更します。
-
ポートインターフェイスをチームに割り当てます。
チームに割り当てるインターフェイスが設定されていない場合は、それらの接続プロファイルを新たに作成します。
# nmcli connection add type ethernet slave-type team con-name team0-port1 ifname enp7s0 master team0 # nmcli connection add type ethernet slave-type team con-name team0-port2 ifname enp8s0 master team0
.これらのコマンドは、
enp7s0
およびenp8s0
にプロファイルを作成し、team0
接続に追加します。既存の接続プロファイルをチームに割り当てるには、以下の接続の
master
パラメーターをteam0
に設定します。# nmcli connection modify bond0 master team0 # nmcli connection modify bond1 master team0
これらのコマンドは、
bond0
およびbond1
という名前の既存の接続プロファイルをteam0
接続に割り当てます。
チームの IP 設定を設定します。このチームを他のデバイスのポートとして使用する場合は、この手順を省略します。
IPv4 設定を設定します。たとえば、
team0
接続の静的 IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および DNS 検索ドメインを設定するには、次のコマンドを実行します。# nmcli connection modify team0 ipv4.addresses '192.0.2.1/24' # nmcli connection modify team0 ipv4.gateway '192.0.2.254' # nmcli connection modify team0 ipv4.dns '192.0.2.253' # nmcli connection modify team0 ipv4.dns-search 'example.com' # nmcli connection modify team0 ipv4.method manual
IPv6 設定を設定します。たとえば、
team0
接続の静的 IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定するには、次のコマンドを実行します。# nmcli connection modify team0 ipv6.addresses '2001:db8:1::1/64' # nmcli connection modify team0 ipv6.gateway '2001:db8:1::fffe' # nmcli connection modify team0 ipv6.dns '2001:db8:1::fffd' # nmcli connection modify team0 ipv6.dns-search 'example.com' # nmcli connection modify team0 ipv6.method manual
接続をアクティベートします。
# nmcli connection up team0
検証手順
チームのステータスを表示します。
# teamdctl team0 state setup: runner: activebackup ports: enp7s0 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0 enp8s0 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0 runner: active port: enp7s0
この例では、両方のポートが起動しています。
関連情報
- 特定のプロファイルでのデフォルトゲートウェイの指定を防ぐための NetworkManager の設定
- teamd サービス、ランナー、およびリンク監視の理解
-
man ページの
nm-settings(5)
-
man ページの
teamd.conf(5)
8.6. RHEL Web コンソールを使用したネットワークチームの設定
Web ブラウザーベースのインターフェイスを使用してネットワーク設定を管理する場合は、RHEL Web コンソールを使用してネットワークチームを設定します。
Red Hat Enterprise Linux 9 では、ネットワークチーミングが非推奨になりました。サーバーを将来バージョンの RHEL にアップグレードする予定がある場合は、代替手段としてカーネルボンディングドライバーの使用を検討してください。詳細は、Configuring network bonding を参照してください。
前提条件
-
teamd
およびNetworkManager-team
パッケージがインストールされている。 - サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
- チームのポートとしてイーサネットデバイスを使用するには、物理または仮想のイーサネットデバイスがサーバーにインストールされ、スイッチに接続されている必要があります。
ボンド、ブリッジ、または VLAN デバイスをチームのポートとして使用するには、次の説明に従って事前に作成します。
手順
-
画面左側のナビゲーションで
Networking
タブを選択します。 -
Interfaces
セクションで Add team をクリックします。 - 作成するチームデバイスの名前を入力します。
- チームのポートにするインターフェイスを選択します。
チームのランナーを選択します。
Load balancing
または802.3ad LACP
を選択すると、Web コンソールに追加のフィールドBalancer
が表示されます。リンクウォッチャーを設定します。
-
Ethtool
を選択した場合は、さらに、リンクアップおよびリンクダウンの遅延を設定します。 -
ARP ping
またはNSNA ping
を選択し、さらに ping の間隔と ping ターゲットを設定します。
-
- Apply をクリックします。
デフォルトでは、チームは動的 IP アドレスを使用します。静的 IP アドレスを設定する場合:
-
Interfaces
セクションでチームの名前をクリックします。 -
設定するプロトコルの横にある
Edit
をクリックします。 -
Addresses
の横にあるManual
を選択し、IP アドレス、接頭辞、およびデフォルトゲートウェイを入力します。 -
DNS
セクションで + ボタンをクリックし、DNS サーバーの IP アドレスを入力します。複数の DNS サーバーを設定するには、この手順を繰り返します。 -
DNS search domains
セクションで、+ ボタンをクリックし、検索ドメインを入力します。 インターフェイスにスタティックルートが必要な場合は、
Routes
セクションで設定します。- Apply をクリックします。
-
検証
画面左側のナビゲーションで
Networking
タブを選択し、インターフェイスに着信および発信トラフィックがあるかどうかを確認します。チームのステータスを表示します。
# teamdctl team0 state setup: runner: activebackup ports: enp7s0 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0 enp8s0 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0 runner: active port: enp7s0
この例では、両方のポートが起動しています。
関連情報
8.7. nm-connection-editor によるネットワークチームの設定
グラフィカルインターフェイスで Red Hat Enterprise Linux を使用する場合は、nm-connection-editor
アプリケーションを使用してネットワークチームを設定できます。
nm-connection-editor
は、新しいポートだけをチームに追加できることに注意してください。既存の接続プロファイルをポートとして使用するには、nmcli コマンドを使用したネットワークチームの設定 の説明に従って、nmcli
ユーティリティーを使用してチームを作成します。
Red Hat Enterprise Linux 9 では、ネットワークチーミングが非推奨になりました。サーバーを将来バージョンの RHEL にアップグレードする予定がある場合は、代替手段としてカーネルボンディングドライバーの使用を検討してください。詳細は、Configuring network bonding を参照してください。
前提条件
-
teamd
およびNetworkManager-team
パッケージがインストールされている。 - サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
- 物理または仮想のイーサネットデバイスをサーバーにインストールし、チームのポートとしてイーサネットデバイスを使用する。
- チーム、ボンディング、または VLAN デバイスをチームのポートとして使用するには、これらのデバイスがまだ設定されていないことを確認してください。
手順
端末を開き、
nm-connection-editor
と入力します。$
nm-connection-editor
- + ボタンをクリックして、新しい接続を追加します。
-
接続タイプ
Team
を選択し、作成 をクリックします。 Team
タブで以下を行います。-
必要に応じて、
Interface name
フィールドにチームインターフェイスの名前を設定します。 Add ボタンをクリックして、ネットワークインターフェイスの新しい接続プロファイルを追加し、プロファイルをポートとしてチームに追加します。
-
インターフェイスの接続タイプを選択します。たとえば、有線接続に
Ethernet
を選択します。 - 必要に応じて、ポートの接続名を設定します。
-
イーサネットデバイスの接続プロファイルを作成する場合は、
Ethernet
タブを開き、Device
フィールドでポートとしてチームに追加するネットワークインターフェイスを選択します。別のデバイスタイプを選択した場合は、それに応じて設定します。いずれの接続にも割り当てられていないチームのイーサネットインターフェイスのみを使用できる点に注意してください。 - 保存 をクリックします。
-
インターフェイスの接続タイプを選択します。たとえば、有線接続に
チームに追加する各インターフェイスに直前の手順を繰り返します。
Advanced ボタンをクリックして、チーム接続に高度なオプションを設定します。
-
Runner
タブで、ランナーを選択します。 -
Link Watcher
タブで、リンク監視とそのオプションを設定します。 - OK をクリックします。
-
-
必要に応じて、
チームの IP 設定を設定します。このチームを他のデバイスのポートとして使用する場合は、この手順を省略します。
-
IPv4 Settings
タブで、IPv4 設定を設定します。たとえば、静的な IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定します。 -
IPv6 設定
タブで、IPv6 設定を設定します。たとえば、静的な IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定します。
-
- チーム接続を保存します。
-
nm-connection-editor
を閉じます。
検証手順
チームのステータスを表示します。
# teamdctl team0 state setup: runner: activebackup ports: enp7s0 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0 enp8s0 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0 runner: active port: enp7s0
第9章 ネットワークボンディングの設定
ネットワークボンディングは、物理ネットワークインターフェイスと仮想ネットワークインターフェイスを組み合わせるか集約して、より高いスループットまたは冗長性を備えた論理インターフェイスを提供する方法です。ボンディングでは、カーネルがすべての操作を排他的に処理します。イーサネットデバイスや VLAN など、さまざまなタイプのデバイスでネットワークボンディングを作成できます。
Red Hat Enterprise Linux は、チームデバイスを設定するためのさまざまなオプションを管理者に提供します。以下に例を示します。
-
nmcli
を使用し、コマンドラインを使用してボンディング接続を設定します。 - RHEL Web コンソールを使用し、Web ブラウザーを使用してボンディング接続を設定します。
-
nmtui
を使用して、テキストベースのユーザーインターフェイスでボンディング接続を設定します。 -
nm-connection-editor
アプリケーションを使用して、グラフィカルインターフェイスでボンディング接続を設定します。 -
nmstatectl
を使用して、Nmstate API を介してボンディング接続を設定します。 - RHEL システムロールを使用して、1 つまたは複数のホストで ボンディング設定を自動化します。
9.1. ネットワークボンディングについて
ネットワークボンディングは、スループットや冗長性が高い論理インターフェイスを提供するために、ネットワークインターフェイスを結合または集約する方法です。
active-backup
、balance-tlb
、および balance-alb
の各モードは、ネットワークスイッチの特定の設定を必要としません。しかし、その他のボンディングモードでは、スイッチがリンクを集約するように設定する必要があります。たとえば、Cisco スイッチでは、モード 0、2、および 3 の EtherChannel
が必要です。ただし、モード 4 の場合は、LACP (Link Aggregation Control Protocol) と EtherChannel
が必要です。
詳細は、スイッチおよび Linux Ethernet Bonding Driver HOWTO のドキュメントを参照してください。
特定のネットワークボンディング機能 (例: fail-over メカニズム) は、ネットワークスイッチなしでのダイレクトケーブル接続に対応していません。詳細は、ボンディングは、クロスオーバーケーブルを使用したダイレクトコレクションをサポートしますか ? を参照してください。を参照してください。
9.2. コントローラーおよびポートインターフェイスのデフォルト動作の理解
NetworkManager
サービスを使用してチームまたはボンディングのポートインターフェイスを管理またはトラブルシューティングする場合は、以下のデフォルトの動作を考慮してください。
- コントローラーインターフェイスを起動しても、ポートインターフェイスは自動的に起動しない。
- ポートインターフェイスを起動すると、コントローラーインターフェイスは毎回、起動する。
- コントローラーインターフェイスを停止すると、ポートインターフェイスも停止する。
- ポートのないコントローラーは、静的 IP 接続を開始できる。
- コントローラーにポートがない場合は、DHCP 接続の開始時にポートを待つ。
- DHCP 接続でポートを待機中のコントローラーは、キャリアを伴うポートの追加時に完了する。
- DHCP 接続でポートを待機中のコントローラーは、キャリアを伴わないポートを追加する時に待機を継続する。
9.3. ネットワークチーミングとボンディング機能の比較
ネットワークチームおよびネットワークボンディングでサポートされている機能について説明します。
機能 | ネットワークボンド | ネットワークチーム |
---|---|---|
ブロードキャストの Tx ポリシー | はい | はい |
ラウンドロビンの Tx ポリシー | はい | はい |
アクティブバックアップの Tx ポリシー | はい | はい |
LACP (802.3ad) への対応 | あり (アクティブのみ) | はい |
ハッシュベースの Tx ポリシー | はい | はい |
ユーザーによるハッシュ機能の設定 | いいえ | はい |
Tx 負荷分散への対応 (TLB) | はい | はい |
LACP ハッシュポートの選択 | はい | はい |
LACP 対応の負荷分散 | いいえ | はい |
Ethtool リンク監視 | はい | はい |
ARP リンク監視 | はい | はい |
NS/NA (IPv6) リンク監視 | いいえ | はい |
ポートのアップ/ダウンの遅延 | はい | はい |
ポートの優先度および持続性 (スティッキネス) (プライマリーのオプション強化) | いいえ | はい |
ポートごとに個別のリンク監視の設定 | いいえ | はい |
複数のリンク監視の設定 | 限定的 | はい |
ロックなしの Tx/Rx パス | なし (rwlock) | あり (RCU) |
VLAN への対応 | はい | はい |
ユーザー空間のランタイム制御 | 限定的 | はい |
ユーザー空間での論理 | いいえ | はい |
拡張性 | 困難 | 容易 |
モジュラー設計 | いいえ | はい |
パフォーマンスのオーバーヘッド | 低 | 非常に低い |
D-Bus インターフェイス | いいえ | はい |
複数デバイスのスタッキング | はい | はい |
LLDP を使用したゼロ設定 | いいえ | (計画中) |
NetworkManager への対応 | はい | はい |
9.4. ボンディングモードに依存するアップストリームのスイッチ設定
ボンディングモードに応じて、以下の設定をアップストリームスイッチに適用します。
ボンディングモード | スイッチの設定 |
---|---|
| (LACP がネゴシエートされたものではなく) 静的な Etherchannel を有効にする必要があります。 |
| 自動ポートが必要です。 |
| (LACP がネゴシエートされたものではなく) 静的な Etherchannel を有効にする必要があります。 |
| (LACP がネゴシエートされたものではなく) 静的な Etherchannel を有効にする必要があります。 |
| LACP がネゴシエートされた Etherchannel が有効になっている必要があります。 |
| 自動ポートが必要です。 |
| 自動ポートが必要です。 |
スイッチの設定は、スイッチのドキュメントを参照してください。
9.5. nmcli コマンドによるネットワークボンディングの設定
コマンドラインでネットワークボンディングを設定するには、nmcli
ユーティリティーを使用します。
前提条件
- サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
- ボンディングのポートとしてイーサネットデバイスを使用するには、物理または仮想のイーサネットデバイスがサーバーにインストールされている。
ボンディングのポートにチーム、ブリッジ、または VLAN デバイスを使用するには、ボンディングの作成時にこれらのデバイスを作成するか、次の説明に従って事前にデバイスを作成することができます。
手順
ボンドインターフェイスを作成します。
# nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup"
このコマンドは、
active-backup
モードを使用するbond0
という名前のボンディングを作成します。Media Independent Interface (MII) 監視間隔も設定する場合は、
miimon=interval
オプションをbond.options
プロパティーに追加します。たとえば、同じコマンドで、さらに MII 監視間隔を1000
ミリ秒 (1 秒) に設定するには、次のコマンドを入力します。# nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup,miimon=1000"
ネットワークインターフェイスを表示して、ボンドに追加する予定のインターフェイス名を書き留めます。
# nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet disconnected -- enp8s0 ethernet disconnected -- bridge0 bridge connected bridge0 bridge1 bridge connected bridge1 ...
この例では、以下のように設定されています。
-
enp7s0
およびenp8s0
は設定されません。これらのデバイスをポートとして使用するには、次のステップに接続プロファイルを追加します。 -
bridge0
およびbridge1
には既存の接続プロファイルがあります。これらのデバイスをポートとして使用するには、次の手順でプロファイルを変更します。
-
インターフェイスをボンディングに割り当てます。
ボンディングに割り当てるインターフェイスが設定されていない場合は、インターフェイス用に新しい接続プロファイルを作成します。
# nmcli connection add type ethernet slave-type bond con-name bond0-port1 ifname enp7s0 master bond0 # nmcli connection add type ethernet slave-type bond con-name bond0-port2 ifname enp8s0 master bond0
これらのコマンドは、
enp7s0
およびenp8s0
のプロファイルを作成し、bond0
接続に追加します。既存の接続プロファイルをボンディングに割り当てるには、以下の接続の
master
パラメーターをbond0
に設定します。# nmcli connection modify bridge0 master bond0 # nmcli connection modify bridge1 master bond0
これらのコマンドは、
bridge0
およびbridge1
という名前の既存の接続プロファイルをbond0
接続に割り当てます。
ボンディングの IP 設定を設定します。このボンディングを他のデバイスのポートとして使用する場合は、この手順を省略します。
IPv4 設定を設定します。たとえば、
bond0
接続の静的 IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および DNS 検索ドメインを設定するには、次のコマンドを実行します。# nmcli connection modify bond0 ipv4.addresses '192.0.2.1/24' # nmcli connection modify bond0 ipv4.gateway '192.0.2.254' # nmcli connection modify bond0 ipv4.dns '192.0.2.253' # nmcli connection modify bond0 ipv4.dns-search 'example.com' # nmcli connection modify bond0 ipv4.method manual
IPv6 設定を設定します。たとえば、
bond0
接続の静的 IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および DNS 検索ドメインを設定するには、次のコマンドを実行します。# nmcli connection modify bond0 ipv6.addresses '2001:db8:1::1/64' # nmcli connection modify bond0 ipv6.gateway '2001:db8:1::fffe' # nmcli connection modify bond0 ipv6.dns '2001:db8:1::fffd' # nmcli connection modify bond0 ipv6.dns-search 'example.com' # nmcli connection modify bond0 ipv6.method manual
接続をアクティベートします。
# nmcli connection up bond0
ポートが接続されており、
CONNECTION
コラムがポートの接続名を表示していることを確認します。# nmcli device DEVICE TYPE STATE CONNECTION ... enp7s0 ethernet connected bond0-port1 enp8s0 ethernet connected bond0-port2
接続のいずれかのポートをアクティブにすると、NetworkManager はボンディングもアクティブにしますが、他のポートはアクティブにしません。ボンディングが有効な場合に、Red Hat Enterprise Linux がすべてのポートを自動的に有効にするように設定できます。
ボンディングの接続で
connection.autoconnect-slaves
パラメーターを有効にします。# nmcli connection modify bond0 connection.autoconnect-slaves 1
ブリッジを再度アクティブにします。
# nmcli connection up bond0
検証手順
ホストからネットワークケーブルを一時的に削除します。
ソフトウェアユーティリティーを使用して、リンク障害イベントを適切にテストする方法がないことに注意してください。
nmcli
などの接続を非アクティブにするツールでは、ポート設定の変更を処理するボンディングドライバーの機能のみが表示され、実際のリンク障害イベントは表示されません。ボンドのステータスを表示します。
# cat /proc/net/bonding/bond0
9.6. RHEL Web コンソールを使用したネットワーク結合の設定
Web ブラウザーベースのインターフェイスを使用してネットワーク設定を管理する場合は、RHEL Web コンソールを使用してネットワークボンディングを設定します。
前提条件
- RHEL Web コンソールにログインしています。
- サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
- ボンディングのメンバーとしてイーサネットデバイスを使用するには、物理または仮想のイーサネットデバイスがサーバーにインストールされている。
チーム、ブリッジ、または VLAN デバイスを結合のメンバーとして使用するには、次の説明に従って事前に作成します。
手順
-
画面左側のナビゲーションで
Networking
タブを選択します。 -
Interfaces
セクションで Add bond をクリックします。 - 作成するボンドデバイスの名前を入力します。
- 結合のメンバーにするインターフェイスを選択します。
結合のモードを選択します。
Active backup
を選択すると、Web コンソールに追加フィールドPrimary
が表示され、優先するアクティブデバイスを選択できます。-
リンクモニターリング監視モードを設定します。たとえば、
Adaptive load balancing
モードを使用する場合は、ARP
に設定します。 オプション: モニター間隔、リンクアップ遅延、およびリンクダウン遅延の設定を調整します。通常、トラブルシューティングの目的でのみデフォルトを変更します。
- Apply をクリックします。
デフォルトでは、ボンドは動的 IP アドレスを使用します。静的 IP アドレスを設定する場合:
-
Interfaces
セクションでボンドの名前をクリックします。 -
設定するプロトコルの横にある
Edit
をクリックします。 -
Addresses
の横にあるManual
を選択し、IP アドレス、接頭辞、およびデフォルトゲートウェイを入力します。 -
DNS
セクションで + ボタンをクリックし、DNS サーバーの IP アドレスを入力します。複数の DNS サーバーを設定するには、この手順を繰り返します。 -
DNS search domains
セクションで、+ ボタンをクリックし、検索ドメインを入力します。 インターフェイスにスタティックルートが必要な場合は、
Routes
セクションで設定します。- Apply をクリックします。
-
検証
画面左側のナビゲーションで
Networking
タブを選択し、インターフェイスに着信および発信トラフィックがあるかどうかを確認します。ホストからネットワークケーブルを一時的に削除します。
ソフトウェアユーティリティーを使用して、リンク障害イベントを適切にテストする方法がないことに注意してください。Web コンソールなどの接続を非アクティブ化するツールは、実際のリンク障害イベントではなく、メンバー設定の変更を処理するボンディングドライバーの機能のみを示します。
ボンドのステータスを表示します。
# cat /proc/net/bonding/bond0
9.7. nmtui を使用したネットワークボンドの設定
nmtui
アプリケーションは、NetworkManager 用のテキストベースのユーザーインターフェイスを提供します。nmtui
を使用して、グラフィカルインターフェイスを使用せずにホスト上でネットワークボンドを設定できます。
nmtui
で 以下を行います。
- カーソルキーを使用してナビゲートします。
- ボタンを選択して Enter を押します。
- Space を使用して、チェックボックスを選択および選択解除します。
前提条件
- サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
- ボンディングのポートとしてイーサネットデバイスを使用するには、物理または仮想のイーサネットデバイスがサーバーにインストールされている。
手順
ネットワークボンドを設定するネットワークデバイス名がわからない場合は、使用可能なデバイスを表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet unavailable -- enp8s0 ethernet unavailable -- ...
nmtui
を開始します。# nmtui
-
Edit a connection
選択し、Enter を押します。 -
Add
ボタンを押します。 -
ネットワークタイプのリストから
Bond
を選択し、Enter を押します。 - オプション: 作成する NetworkManager プロファイルの名前を入力します。
-
作成するボンドデバイス名を
Device
フィールドに入力します。 作成するボンドにポートを追加します。
-
Slaves
リストの横にあるAdd
ボタンを押します。 -
ボンドにポートとして追加するインターフェイスのタイプ (例:
Ethernet
) を選択します。 - オプション: このボンドポート用に作成する NetworkManager プロファイルの名前を入力します。
-
ポートのデバイス名を
Device
フィールドに入力します。 OK
ボタンを押して、ボンド設定のウィンドウに戻ります。図9.1 イーサネットデバイスをポートとしてボンドに追加する
- ボンドにさらにポートを追加するには、これらの手順を繰り返します。
-
-
ボンディングモードを設定します。設定した値に応じて、
nmtui
は、選択したモードに関連する設定の追加フィールドを表示します。 環境に応じて、
IPv4 configuration
およびIPv6 configuration
領域に IP アドレス設定を設定します。このためには、Automatic
ボタンを押して、次を選択します。-
ボンドが IP アドレスを必要としない場合は
Disabled
にします。 -
DHCP サーバーが IP アドレスをボンドに動的に割り当てる場合は、
Automatic
にします。 ネットワークで静的 IP アドレス設定が必要な場合は
Manual
。この場合、さらにフィールドに入力する必要があります。-
設定するプロトコルの横にある
Show
ボタンを押して、追加のフィールドを表示します。 Addresses
の横にあるAdd
ボタンを押して、IP アドレスとサブネットマスクを Classless Inter-Domain Routing (CIDR) 形式で入力します。サブネットマスクを指定しない場合、NetworkManager は IPv4 アドレスに
/32
サブネットマスクを設定し、IPv6 アドレスに/64
サブネットマスクを設定します。- デフォルトゲートウェイのアドレスを入力します。
-
DNS servers
の横にあるAdd
ボタンを押して、DNS サーバーのアドレスを入力します。 -
Search domains
の横にあるAdd
ボタンを押して、DNS 検索ドメインを入力します。
-
設定するプロトコルの横にある
図9.2 静的 IP アドレス設定によるボンド接続例
-
ボンドが IP アドレスを必要としない場合は
-
OK
ボタンを押して、新しい接続を作成し、自動的にアクティブにします。 -
Back
ボタンを押してメインメニューに戻ります。 -
Quit
を選択し、Enter キーを押してnmtui
アプリケーションを閉じます。
検証
ホストからネットワークケーブルを一時的に削除します。
ソフトウェアユーティリティーを使用して、リンク障害イベントを適切にテストする方法がないことに注意してください。
nmcli
などの接続を非アクティブにするツールでは、ポート設定の変更を処理するボンディングドライバーの機能のみが表示され、実際のリンク障害イベントは表示されません。ボンドのステータスを表示します。
# cat /proc/net/bonding/bond0
9.8. nm-connection-editor によるネットワークボンディングの設定
グラフィカルインターフェイスで Red Hat Enterprise Linux を使用する場合は、nm-connection-editor
アプリケーションを使用してネットワークボンディングを設定できます。
nm-connection-editor
は、新しいポートだけをボンドに追加できることに注意してください。既存の接続プロファイルをポートとして使用するには、nmcli コマンドを使用したネットワークボンディングの設定 の説明に従って、nmcli
ユーティリティーを使用してボンディングを作成します。
前提条件
- サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
- ボンディングのポートとしてイーサネットデバイスを使用するには、物理または仮想のイーサネットデバイスがサーバーにインストールされている。
- ボンディングのポートとしてチーム、ボンディング、または VLAN デバイスを使用するには、これらのデバイスがまだ設定されていないことを確認してください。
手順
端末を開き、
nm-connection-editor
と入力します。$
nm-connection-editor
- + ボタンをクリックして、新しい接続を追加します。
-
接続タイプ
Bond
を選択し、作成 をクリックします。 Bond
タブで、以下を行います。-
必要に応じて、
Interface name
フィールドにボンドインターフェイスの名前を設定します。 追加 ボタンをクリックして、ネットワークインターフェイスをポートとしてボンドに追加します。
-
インターフェイスの接続タイプを選択します。たとえば、有線接続に
Ethernet
を選択します。 - 必要に応じて、ポートの接続名を設定します。
-
イーサネットデバイスの接続プロファイルを作成する場合は、
Ethernet
タブを開き、Device
フィールドでポートとしてボンディングに追加するネットワークインターフェイスを選択します。別のデバイスタイプを選択した場合は、それに応じて設定します。イーサネットインターフェイスは、設定されていないボンディングでのみ使用できることに注意してください。 - 保存 をクリックします。
-
インターフェイスの接続タイプを選択します。たとえば、有線接続に
ボンディングに追加する各インターフェイスで直前の手順を繰り返します。
- 必要に応じて、Media Independent Interface (MII) の監視間隔などの他のオプションを設定します。
-
必要に応じて、
ボンディングの IP 設定を設定します。このボンディングを他のデバイスのポートとして使用する場合は、この手順を省略します。
IPv4 Settings
タブで、IPv4 設定を設定します。たとえば、静的な IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定します。IPv6 設定
タブで、IPv6 設定を設定します。たとえば、静的な IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、DNS 検索ドメインを設定します。
- 保存 をクリックして、ボンド接続を保存します。
-
nm-connection-editor
を閉じます。
検証手順
ホストからネットワークケーブルを一時的に削除します。
ソフトウェアユーティリティーを使用して、リンク障害イベントを適切にテストする方法がないことに注意してください。
nmcli
などの接続を非アクティブにするツールでは、ポート設定の変更を処理するボンディングドライバーの機能のみが表示され、実際のリンク障害イベントは表示されません。ボンドのステータスを表示します。
# cat /proc/net/bonding/bond0
9.9. nmstatectl を使用したネットワークボンディングの設定
Nmstate API を使用してネットワークボンディングを設定するには、nmstatectl
ユーティリティーを使用します。
たとえば、以下の手順では、以下の設定で NetworkManager にボンディングを作成します。
-
ボンドのネットワークインターフェイス:
enp1s0
およびenp7s0
-
モード:
active-backup
-
静的 IPv4 アドレス: サブネットマスクが
/24
の192.0.2.1
-
静的 IPv6 アドレス:
2001:db8:1::1
(/64
サブネットマスクあり) -
IPv4 デフォルトゲートウェイ:
192.0.2.254
-
IPv6 デフォルトゲートウェイ:
2001:db8:1::fffe
-
IPv4 DNS サーバー:
192.0.2.200
-
IPv6 DNS サーバー:
2001:db8:1::ffbb
-
DNS 検索ドメイン:
example.com
前提条件
- サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
- 物理または仮想のイーサネットデバイスをサーバーにインストールしてボンディングでポートとしてイーサネットデバイスを使用する。
-
ポート
一覧でインターフェイス名を設定し、対応するインターフェイスを定義して、ボンディングのポートとしてチーム、ブリッジ、または VLAN デバイスを使用する。 -
nmstate
パッケージがインストールされている。
手順
以下の内容を含む YAML ファイルを作成します (例:
~/create-bond.yml
)。--- interfaces: - name: bond0 type: bond state: up ipv4: enabled: true address: - ip: 192.0.2.1 prefix-length: 24 dhcp: false ipv6: enabled: true address: - ip: 2001:db8:1::1 prefix-length: 64 autoconf: false dhcp: false link-aggregation: mode: active-backup port: - enp1s0 - enp7s0 - name: enp1s0 type: ethernet state: up - name: enp7s0 type: ethernet state: up routes: config: - destination: 0.0.0.0/0 next-hop-address: 192.0.2.254 next-hop-interface: bond0 - destination: ::/0 next-hop-address: 2001:db8:1::fffe next-hop-interface: bond0 dns-resolver: config: search: - example.com server: - 192.0.2.200 - 2001:db8:1::ffbb
設定をシステムに適用します。
# nmstatectl apply ~/create-bond.yml
検証手順
デバイスおよび接続の状態を表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION bond0 bond connected bond0
接続プロファイルのすべての設定を表示します。
# nmcli connection show bond0 connection.id: bond0 connection.uuid: 79cbc3bd-302e-4b1f-ad89-f12533b818ee connection.stable-id: -- connection.type: bond connection.interface-name: bond0 ...
接続設定を YAML 形式で表示します。
# nmstatectl show bond0
関連情報
-
nmstatectl(8)
の man ページ -
/usr/share/doc/nmstate/examples/
directory
9.10. RHEL システムロールを使用したネットワークボンディングの設定
network
の RHEL システムロールを使用して、Linux ボンディングを設定できます。たとえば、2 つのイーサネットデバイスを使用する active-backup モードでネットワークボンディングを設定し、IPv4 アドレスおよび IPv6 アドレス、デフォルトゲートウェイ、および DNS 設定を設定します。
Linux ボンディングのポートではなく、ボンディングに IP 設定を設定します。
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理ノードを準備している
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo
権限があります。 - この Playbook を実行するホストまたはホストグループは、Ansible インベントリーファイルにリストされています。
- サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
手順
~/bond-ethernet.yml
などの Playbook ファイルを次の内容で作成します。--- - name: Configure the network hosts: managed-node-01.example.com tasks: name: Configure a network bond that uses two Ethernet ports - include_role: name: rhel-system-roles.network vars: network_connections: # Define the bond profile - name: bond0 type: bond interface_name: bond0 ip: address: - "192.0.2.1/24" - "2001:db8:1::1/64" gateway4: 192.0.2.254 gateway6: 2001:db8:1::fffe dns: - 192.0.2.200 - 2001:db8:1::ffbb dns_search: - example.com bond: mode: active-backup state: up # Add an Ethernet profile to the bond - name: bond0-port1 interface_name: enp7s0 type: ethernet controller: bond0 state: up # Add a second Ethernet profile to the bond - name: bond0-port2 interface_name: enp8s0 type: ethernet controller: bond0 state: up
Playbook を実行します。
# ansible-playbook ~/bond-ethernet.yml
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.network/README.md
ファイル
9.11. VPN を中断せずにイーサネットとワイヤレス接続間の切り替えを可能にするネットワークボンディングの作成
ワークステーションを会社のネットワークに接続する RHEL ユーザーは、通常、リモートリソースにアクセスするのに VPN を使用します。ただし、イーサネット接続と Wi-Fi 接続間のワークステーションスイッチ (たとえば、イーサネット接続のあるドッキングステーションからノート PC を解放した場合など) は、VPN 接続が中断されます。この問題を回避するには、active-backup
モードでイーサネット接続および Wi-Fi 接続を使用するネットワークボンディングを作成します。
前提条件
- ホストに、イーサネットデバイスと Wi-Fi デバイスが含まれている。
イーサネットおよび Wi-Fi NetworkManager 接続プロファイルが作成され、両方の接続が独立して機能します。
この手順では、以下の接続プロファイルを使用して
bond0
という名前のネットワークボンディングを作成します。-
enp11s0u1
イーサネットデバイスに関連付けられたDocking_station
-
wlp1s0
Wi-Fi デバイスに関連付けられたWi-Fi
-
手順
active-backup
モードでボンドインターフェイスを作成します。# nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup"
このコマンドは、インターフェイスおよび接続プロファイル
bond0
の両方に名前を付けます。ボンディングの IPv4 設定を設定します。
- ネットワークの DHCP サーバーが IPv4 アドレスをホストに割り当てる場合は、何もする必要はありません。
ローカルネットワークに静的 IPv4 アドレスが必要な場合は、アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および DNS 検索ドメインを
bond0
接続に設定します。# nmcli connection modify bond0 ipv4.addresses '192.0.2.1/24' # nmcli connection modify bond0 ipv4.gateway '192.0.2.254' # nmcli connection modify bond0 ipv4.dns '192.0.2.253' # nmcli connection modify bond0 ipv4.dns-search 'example.com' # nmcli connection modify bond0 ipv4.method manual
ボンディングの IPv6 設定を設定します。
- ネットワークのルーターまたは DHCP サーバーが IPv6 アドレスをホストに割り当てる場合、アクションは必要ありません。
ローカルネットワークに静的 IPv6 アドレスが必要な場合は、アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および DNS 検索ドメインを
bond0
接続に設定します。# nmcli connection modify bond0 ipv6.addresses '2001:db8:1::1/64' # nmcli connection modify bond0 ipv6.gateway '2001:db8:1::fffe' # nmcli connection modify bond0 ipv6.dns '2001:db8:1::fffd' # nmcli connection modify bond0 ipv6.dns-search 'example.com' # nmcli connection modify bond0 ipv6.method manual
接続プロファイルを表示します。
# nmcli connection show NAME UUID TYPE DEVICE Docking_station 256dd073-fecc-339d-91ae-9834a00407f9 ethernet enp11s0u1 Wi-Fi 1f1531c7-8737-4c60-91af-2d21164417e8 wifi wlp1s0 ...
次のステップでは、接続プロファイルとイーサネットデバイス名が必要です。
イーサネット接続の接続プロファイルをボンドに割り当てます。
# nmcli connection modify Docking_station master bond0
Wi-Fi 接続の接続プロファイルをボンディングに割り当てます。
# nmcli connection modify Wi-Fi master bond0
Wi-Fi ネットワークが MAC フィルターリングを使用して、許可リストの MAC アドレスのみがネットワークにアクセスできるようにするには、NetworkManager がアクティブなポートの MAC アドレスをボンドに動的に割り当てるように設定します。
# nmcli connection modify bond0 +bond.options fail_over_mac=1
この設定では、イーサネットデバイスと Wi-Fi デバイスの両方の MAC アドレスの代わりに、Wi-Fi デバイスの MAC アドレスのみを許可リストに設定する必要があります。
イーサネット接続に関連付けられたデバイスを、ボンドのプライマリーデバイスとして設定します。
# nmcli con modify bond0 +bond.options "primary=enp11s0u1"
この設定では、ボンディングが利用可能な場合は、イーサネット接続を常に使用します。
bond0
デバイスがアクティブになると、NetworkManager がポートを自動的にアクティブになるように設定します。# nmcli connection modify bond0 connection.autoconnect-slaves 1
bond0
接続をアクティベートします。# nmcli connection up bond0
検証手順
現在アクティブなデバイス、ボンドおよびそのポートのステータスを表示します。
# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active) Primary Slave: enp11s0u1 (primary_reselect always) Currently Active Slave: enp11s0u1 MII Status: up MII Polling Interval (ms): 1 Up Delay (ms): 0 Down Delay (ms): 0 Peer Notification Delay (ms): 0 Slave Interface: enp11s0u1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:53:00:59:da:b7 Slave queue ID: 0 Slave Interface: wlp1s0 MII Status: up Speed: Unknown Duplex: Unknown Link Failure Count: 2 Permanent HW addr: 00:53:00:b3:22:ba Slave queue ID: 0
9.12. 異なるネットワークボンディングモード
Linux ボンディングドライバーは、リンクアグリゲーションを提供します。ボンディングは、複数のネットワークインターフェイスを並行して集約して、単一の論理結合インターフェイスを提供するプロセスです。ボンディングされたインターフェイスのアクションは、モードとも呼ばれるボンディングポリシーによって異なります。さまざまなモードが、ロードバランシングサービスまたはホットスタンバイサービスのいずれかを提供します。
次のモードがあります。
- Balance-rr (モード 0)
Balance-rr
は、使用可能な最初のポートから最後のポートへとパケットを順次送信するラウンドロビンアルゴリズムを使用します。このモードは、ロードバランシングとフォールトトレランスを提供します。このモードでは、EtherChannel または同様ポートのグループ化とも呼ばれるポートアグリゲーショングループのスイッチ設定が必要です。EtherChannel は、複数の物理イーサネットリンクを 1 つの論理イーサネットリンクにグループ化するポートリンクアグリゲーションテクノロジーです。
このモードの欠点は、負荷の高いワークロードや、TCP スループットと順序付けられたパケット配信が不可欠な場合には適していないことです。
- Active-backup (Mode 1)
Active-backup
は、結合内でアクティブなポートが 1 つだけであることを決定するポリシーを使用します。このモードはフォールトトレランスを提供し、スイッチ設定は必要ありません。アクティブポートに障害が発生すると、代替ポートがアクティブになります。ボンディングは、Gratuitous Address Resolution Protocol (ARP) 応答をネットワークに送信します。Gratuitous ARP は、ARP フレームの受信者に転送テーブルの更新を強制します。
Active-backup
モードは、Gratuitous ARP を送信して、ホストの接続を維持するための新しいパスを通知します。primary
オプションは、ボンディングインターフェイスの優先ポートを定義します。- Balance-xor (Mode 2)
Balance-xor
は、選択された送信ハッシュポリシーを使用してパケットを送信します。このモードは、ロードバランシングとフォールトトレランスを提供し、Etherchannel または同様のポートグループをセットアップするためのスイッチ設定を必要とします。パケット送信を変更して送信のバランスを取るために、このモードでは
xmit_hash_policy
オプションを使用します。インターフェイス上のトラフィックの送信元または宛先に応じて、インターフェイスには追加の負荷分散設定が必要です。xmit_hash_policy bonding parameter の説明を参照してください。- Broadcast (Mode 3)
Broadcast
は、すべてのインターフェイスですべてのパケットを送信するポリシーを使用します。このモードは、フォールトトレランスを提供し、EthercChannel または同様のポートグループをセットアップするためのスイッチ設定を必要とします。このモードの欠点は、負荷の高いワークロードや、TCP スループットと順序付けられたパケット配信が不可欠な場合には適していないことです。
- 802.3ad (Mode 4)
802.3ad
は、同じ名前の IEEE 標準の動的リンクアグリゲーションポリシーを使用します。このモードはフォールトトレランスを提供します。このモードでは、Link Aggregation Control Protocol (LACP) ポートグループを設定するためのスイッチ設定が必要です。このモードは、同じ速度とデュプレックス設定を共有するアグリゲーショングループを作成し、アクティブなアグリゲーターのすべてのポートを利用します。インターフェイス上のトラフィックの送信元または宛先に応じて、モードには追加の負荷分散設定が必要です。
デフォルトでは、発信トラフィックのポート選択は送信ハッシュポリシーに依存します。送信ハッシュポリシーの
xmit_hash_policy
オプションを使用して、ポートの選択を変更し、送信を分散します。802.3ad
とBalance-xor
の違いはコンプライアンスです。802.3ad
ポリシーは、ポートアグリゲーショングループ間で LACP をネゴシエートします。xmit_hash_policy bonding parameter の説明を参照してください。- Balance-tlb (Mode 5)
Balance-tlb
は、送信負荷分散ポリシーを使用します。このモードは、フォールトトレランスと負荷分散を提供し、スイッチサポートを必要としないチャネルボンディングを確立します。アクティブポートは着信トラフィックを受信します。アクティブポートに障害が発生した場合、別のポートが障害ポートの MAC アドレスを引き継ぎます。発信トラフィックを処理するインターフェイスを決定するには、次のいずれかのモードを使用します。
-
値が
0
: ハッシュ分散ポリシーを使用して、負荷分散なしでトラフィックを配分します 値が
1
: 負荷分散を使用してトラフィックを各ポートに配分しますボンディングオプション
tlb_dynamic_lb=0
を使用すると、このボンディングモードはxmit_hash_policy
ボンディングオプションを使用して送信を分散します。primary
オプションは、ボンディングインターフェイスの優先ポートを定義します。
xmit_hash_policy bonding parameter の説明を参照してください。
-
値が
- Balance-alb (Mode 6)
Balance-alb
は、適応負荷分散ポリシーを使用します。このモードは、フォールトトレランスとロードバランシングを提供し、特別なスイッチサポートを必要としません。このモードには、IPv4 および IPv6 トラフィックのバランス - 送信ロードバランシング (
balance-tlb
) と受信ロードバランシングが含まれます。ボンディングは、ローカルシステムから送信された ARP 応答を傍受し、ボンディング内のポートの 1 つの送信元ハードウェアアドレスを上書きします。ARP ネゴシエーションは、受信負荷分散を管理します。したがって、異なるポートは、サーバーに対して異なるハードウェアアドレスを使用します。primary
オプションは、ボンディングインターフェイスの優先ポートを定義します。ボンディングオプションtlb_dynamic_lb=0
を使用すると、このボンディングモードはxmit_hash_policy
ボンディングオプションを使用して送信を分散します。xmit_hash_policy bonding parameter の説明を参照してください。
関連情報
-
/usr/share/doc/kernel-doc-<version>/Documentation/networking/bonding.rst
(kernel-doc
パッケージで提供) -
/usr/share/doc/kernel-doc-<version>/Documentation/networking/bonding.txt
(kernel-doc
パッケージで提供) - Which bonding modes work when used with a bridge that virtual machine guests or containers connect to?
- How are the values for different policies in "xmit_hash_policy" bonding parameter calculated?
9.13. xmit_hash_policy ボンディングパラメーター
xmit_hash_policy
負荷分散パラメーターは、balance-xor
、802.3ad
、balance-alb
、および balance-tlb
モードでのノード選択の送信ハッシュポリシーを選択します。tlb_dynamic_lb parameter is 0
の場合、モード 5 および 6 にのみ適用されます。このパラメーターで使用できる値は、layer2
、layer2+3
、layer3+4
、encap2+3
、encap3+4
、および vlan+srcmac
です。
詳細については、次の表を参照してください。
ポリシー層またはネットワーク層 | Layer2 | Layer2+3 | Layer3+4 | encap2+3 | encap3+4 | VLAN+srcmac |
用途 | 送信元および宛先の MAC アドレスとイーサネットプロトコルタイプの XOR | 送信元および宛先の MAC アドレスと IP アドレスの XOR | 送信元および宛先のポートと IP アドレスの XOR |
サポートされているトンネル内の送信元と宛先の MAC アドレスと IP アドレスの XOR (仮想拡張 LAN (VXLAN) など)。このモードは、 |
サポートされているトンネル内の送信元ポートと宛先ポートおよび IP アドレスの XOR (VXLAN など)。このモードは、 | VLAN ID、送信元 MAC ベンダー、送信元 MAC デバイスの XOR |
トラフィックの配置 | 基盤となる同一ネットワークインターフェイス上にある特定のネットワークピアに向かうすべてのトラフィック | 基盤となる同一ネットワークインターフェイス上の特定の IP アドレスに向かうすべてのトラフィック | 基盤となる同一ネットワークインターフェイス上の特定の IP アドレスとポートに向かうすべてのトラフィック | |||
プライマリーの選択 | このシステムと、同じブロードキャスト doma0in 内の他の複数システムとの間でネットワークトラフィックが発生している場合 | このシステムと他の複数システム間のネットワークトラフィックがデフォルトゲートウェイを通過する場合 | このシステムと別のシステムの間のネットワークトラフィックが同じ IP アドレスを使用しているが、複数のポートを通過する場合 | カプセル化されたトラフィックが、ソースシステムと、複数の IP アドレスを使用する他の複数システムとの間に発生している場合 | カプセル化されたトラフィックが、ソースシステムと、複数のポート番号を使用する他のシステムとの間で発生している場合 | ボンディングが複数のコンテナーまたは仮想マシン (VM) からのネットワークトラフィックを伝送し、それらの MAC アドレスをブリッジネットワークなどの外部ネットワークに直接公開し、モード 2 またはモード 4 のスイッチを設定できない場合 |
セカンダリーの選択 | ネットワークトラフィックの大部分が、このシステムとデフォルトゲートウェイの背後にある複数の他のシステムとの間で発生する場合 | ネットワークトラフィックの大部分がこのシステムと別のシステムとの間で発生する場合 | ||||
有効 | 802.3ad | 802.3ad | 802.3ad 以外 | |||
デフォルトポリシー | 設定されていない場合、これがデフォルトポリシー |
非 IP トラフィックの場合、式は |
非 IP トラフィックの場合、式は |
第10章 VPN 接続の設定
仮想プライベートネットワーク (VPN) は、インターネット経由でローカルネットワークに接続する方法です。Libreswan
が提供する IPsec
は、VPN を作成するのに推奨される方法です。Libreswan
は、VPN のユーザー空間 IPsec
実装です。VPN は、インターネットなどの中間ネットワークにトンネルを設定して、LAN と別のリモート LAN との間の通信を可能にします。セキュリティー上の理由から、VPN トンネルは常に認証と暗号化を使用します。暗号化操作では、Libreswan
は NSS
ライブラリーを使用します。
10.1. control-center による VPN 接続の確立
グラフィカルインターフェイスで Red Hat Enterprise Linux を使用する場合は、この VPN 接続を GNOME control-center
で設定できます。
前提条件
-
NetworkManager-libreswan-gnome
パッケージがインストールされている。
手順
-
Super キーを押して
Settings
と入力し、Enter を押してcontrol-center
アプリケーションを開きます。 -
左側の
Network
エントリーを選択します。 - + アイコンをクリックします。
-
VPN
を選択します。 Identity
メニューエントリーを選択して、基本的な設定オプションを表示します。一般
Gateway
- リモート VPN ゲートウェイの名前またはIP
アドレスです。認証
Type
-
IKEv2 (証明書)
- クライアントは、証明書により認証されます。これはより安全です (デフォルト)。 IKEv1(XAUTH)
: クライアントは、ユーザー名とパスワード、または事前共有キー (PSK) で認証されます。Advanced
セクションでは、以下の設定が可能です。図10.1 VPN 接続の詳細なオプション
警告gnome-control-center
アプリケーションを使用して IPsec ベースの VPN 接続を設定すると、Advanced
ダイアログには設定が表示されますが、変更することはできません。したがって、詳細な IPsec オプションを変更できません。nm-connection-editor
ツールまたはnmcli
ツールを使用して、詳細なプロパティーの設定を実行します。識別
Domain
- 必要な場合は、ドメイン名を入力します。セキュリティー
-
Phase1 Algorithms
- Libreswan パラメーターike
に対応します。暗号化チャンネルの認証および設定に使用するアルゴリズムを入力します。 Phase2 Algorithms
- Libreswan パラメーターesp
に対応します。IPsec
ネゴシエーションに使用するアルゴリズムを入力します。Disable PFS
フィールドで PFS (Perfect Forward Secrecy) を無効にし、PFS に対応していない古いサーバーとの互換性があることを確認します。-
Phase1 Lifetime
- Libreswan パラメーターikelifetime
に対応します。このパラメーターは、トラフィックの暗号化に使用される鍵がどのぐらい有効であるかどうかを示します。 Phase2 Lifetime
- Libreswan パラメーターsalifetime
に対応します。このパラメーターは、接続の特定インスタンスが最後に終了するまでの時間を指定します。セキュリティー上の理由から、暗号化キーは定期的に変更する必要があります。
Remote network
- Libreswan パラメーターrightsubnet
に対応します。このパラメーターは、VPN から到達できる宛先のプライベートリモートネットワークです。絞り込むことのできる
narrowing
フィールドを確認します。これは IKEv2 ネゴシエーションの場合にのみ有効であることに注意してください。-
Enable fragmentation
- Libreswan パラメーターの断片化
に対応します。IKE 断片化を許可するかどうかを指定します。有効な値は、yes
(デフォルト) またはno
です。 -
Enable Mobike
- Libreswan パラメーターmobike
に対応します。最初から接続を再起動しなくても、接続がエンドポイントを移行することを Mobility and Multihoming Protocol (MOBIKE, RFC 4555) が許可するかどうかを設定します。これは、有線、無線、またはモバイルデータの接続の切り替えを行うモバイルデバイスで使用されます。値は、no
(デフォルト) またはyes
です。
-
IPv4 メニューエントリーを選択します。
IPv4 Method
-
Automatic (DHCP)
- 接続しているネットワークが動的IP
アドレスの割り当てにDHCP
サーバーを使用する場合は、このオプションを選択します。 -
Link-Local Only
- 接続しているネットワークにDHCP
サーバーがなく、IP
アドレスを手動で割り当てない場合は、このオプションを選択します。接頭辞169.254/16
付きのランダムなアドレスが、RFC 3927 に従って割り当てられます。 -
Manual
-IP
アドレスを手動で割り当てる場合は、このオプションを選択します。 Disable
- この接続ではIPv4
は無効です。DNS
DNS
セクションでは、Automatic
がON
になっているときに、これをOFF
に切り替えて、使用する DNS サーバーの IP アドレスを入力します。IP アドレスはコンマで区切ります。Routes
Routes
セクションでは、Automatic
がON
になっている場合は、DHCP からのルートが使用されますが、他の静的ルートを追加することもできることに注意してください。OFF
の場合は、静的ルートだけが使用されます。-
Address
- リモートネットワークまたはホストのIP
アドレスを入力します。 -
Netmask
- 上に入力したIP
アドレスのネットマスクまたは接頭辞長。 -
Gateway
- 上に入力したリモートネットワーク、またはホストにつながるゲートウェイのIP
アドレス。 Metric
- このルートに付与する優先値であるネットワークコスト。数値が低い方が優先されます。Use this connection only for resources on its network (この接続はネットワーク上のリソースのためだけに使用)
このチェックボックスを選択すると、この接続はデフォルトルートになりません。このオプションを選択すると、この接続で自動的に学習したルートを使用することが明確なトラフィックか、手動で入力したトラフィックのみがこの接続を経由します。
-
VPN
接続のIPv6
設定を設定するには、IPv6 メニューエントリーを選択します。IPv6 Method
-
Automatic
-IPv6
ステートレスアドレス自動設定 (SLAAC) を使用して、ハードウェアのアドレスとルーター通知 (RA) に基づくステートレスの自動設定を作成するには、このオプションを選択します。 -
Automatic, DHCP only
- RA を使用せず、直接DHCPv6
に情報を要求してステートフルな設定を作成する場合は、このオプションを選択します。 -
Link-Local Only
- 接続しているネットワークにDHCP
サーバーがなく、IP
アドレスを手動で割り当てない場合は、このオプションを選択します。接頭辞FE80::0
付きのランダムなアドレスが、RFC 4862 に従って割り当てられます。 -
Manual
-IP
アドレスを手動で割り当てる場合は、このオプションを選択します。 Disable
- この接続ではIPv6
は無効です。DNS
、Routes
、Use this connection only for resources on its network
が、一般的なIPv4
設定となることに注意してください。
-
-
VPN
接続の編集が終了したら、追加 ボタンをクリックして設定をカスタマイズするか、適用 ボタンをクリックして、既存の接続に保存します。 -
プロファイルを
ON
に切り替え、VPN
接続をアクティブにします。
関連情報
-
nm-settings-libreswan(5)
10.2. nm-connection-editor による VPN 接続の設定
Red Hat Enterprise Linux をグラフィカルインターフェイスで使用する場合は、nm-connection-editor
アプリケーションを使用して VPN 接続を設定できます。
前提条件
-
NetworkManager-libreswan-gnome
パッケージがインストールされている。 インターネット鍵交換バージョン 2 (IKEv2) 接続を設定する場合は、以下のようになります。
- 証明書が、IPsec ネットワークセキュリティーサービス (NSS) データベースにインポートされている。
- NSS データベースの証明書のニックネームが知られている。
手順
端末を開き、次のコマンドを入力します。
$ nm-connection-editor
- + ボタンをクリックして、新しい接続を追加します。
-
IPsec ベースの VPN
接続タイプを選択し、作成 をクリックします。 VPN
タブで、以下を行います。Gateway
フィールドに VPN ゲートウェイのホスト名または IP アドレスを入力し、認証タイプを選択します。認証タイプに応じて、異なる追加情報を入力する必要があります。-
IKEv2 (Certifiate)
は、証明書を使用してクライアントを認証します。これは、より安全です。この設定には、IPsec NSS データベースの証明書のニックネームが必要です。 IKEv1 (XAUTH)
は、ユーザー名とパスワード (事前共有鍵) を使用してユーザーを認証します。この設定は、以下の値を入力する必要があります。- ユーザー名
- Password
- グループ名
- シークレット
-
リモートサーバーが IKE 交換のローカル識別子を指定する場合は、
Remote ID
フィールドに正確な文字列を入力します。リモートサーバーで Libreswan を実行すると、この値はサーバーのleftid
パラメーターに設定されます。必要に応じて、詳細 ボタンをクリックして、追加設定を設定します。以下の設定を設定できます。
識別
-
ドメイン
- 必要な場合は、ドメイン名を入力します。
-
セキュリティー
-
Phase1 アルゴリズム
は、Libreswan パラメーターike
に対応します。暗号化チャンネルの認証および設定に使用するアルゴリズムを入力します。 Phase2 アルゴリズム
は、Libreswan パラメーターesp
に対応します。IPsec
ネゴシエーションに使用するアルゴリズムを入力します。Disable PFS
フィールドで PFS (Perfect Forward Secrecy) を無効にし、PFS に対応していない古いサーバーとの互換性があることを確認します。-
Phase1 ライフタイム
は、Libreswan パラメーターikelifetime
に対応します。このパラメーターは、トラフィックの暗号化に使用される鍵が有効である期間を定義します。 -
Phase2 ライフタイム
は、Libreswan パラメーターsalifetime
に対応します。このパラメーターは、セキュリティー関連が有効である期間を定義します。
-
接続性
リモートネットワーク
は、Libreswan パラメーターrightsubnet
に対応し、VPN から到達できる宛先のプライベートリモートネットワークです。絞り込むことのできる
narrowing
フィールドを確認します。これは IKEv2 ネゴシエーションの場合にのみ有効であることに注意してください。-
フラグメンテーションの有効化
は、Libreswan パラメーターの断片化
に対応します。IKE 断片化を許可するかどうかを指定します。有効な値は、yes
(デフォルト) またはno
です。 -
Mobike の有効化
は、Libreswan パラメーターmobike
に対応します。パラメーターは、最初から接続を再起動しなくても、接続がエンドポイントを移行するようにするため、MOBIKE (Mobility and Multihoming Protocol) (RFC 4555) を許可するかどうかを定義します。これは、有線、無線、またはモバイルデータの接続の切り替えを行うモバイルデバイスで使用されます。値は、no
(デフォルト) またはyes
です。
IPv4 設定
タブで、IP 割り当て方法を選択し、必要に応じて、追加の静的アドレス、DNS サーバー、検索ドメイン、ルートを設定します。- 接続を読み込みます。
-
nm-connection-editor
を閉じます。
+ ボタンをクリックして新しい接続を追加する場合は、NetworkManager により、その接続用の新しい設定が作成され、既存の接続の編集に使用するのと同じダイアログが表示されます。このダイアログの違いは、既存の接続プロファイルに Details メニューエントリーがあることです。
関連情報
-
nm-settings-libreswan(5)
の man ページ
10.3. IPsec 接続を高速化するために、ESP ハードウェアオフロードの自動検出と使用を設定
Encapsulating Security Payload (ESP) をハードウェアにオフロードすると、Ethernet で IPsec 接続が加速します。デフォルトでは、Libreswan は、ハードウェアがこの機能に対応しているかどうかを検出するため、ESP ハードウェアのオフロードを有効にします。機能が無効になっているか、明示的に有効になっている場合は、自動検出に戻すことができます。
前提条件
- ネットワークカードは、ESP ハードウェアオフロードに対応します。
- ネットワークドライバーは、ESP ハードウェアのオフロードに対応します。
- IPsec 接続が設定され、動作する。
手順
-
ESP ハードウェアオフロードサポートの自動検出を使用する接続の
/etc/ipsec.d/
ディレクトリーにある Libreswan 設定ファイルを編集します。 -
接続の設定で
nic-offload
パラメーターが設定されていないことを確認します。 nic-offload
を削除した場合は、ipsec
を再起動します。#
systemctl restart ipsec
検証
ネットワークカードが ESP ハードウェアオフロードサポートに対応している場合は、以下の手順に従って結果を検証します。
IPsec 接続が使用するイーサネットデバイスの
tx_ipsec
カウンターおよびrx_ipsec
カウンターを表示します。#
ethtool -S enp1s0 | egrep "_ipsec"
tx_ipsec: 10 rx_ipsec: 10IPsec トンネルを介してトラフィックを送信します。たとえば、リモート IP アドレスに ping します。
#
ping -c 5 remote_ip_address
イーサネットデバイスの
tx_ipsec
カウンターおよびrx_ipsec
カウンターを再度表示します。#
ethtool -S enp1s0 | egrep "_ipsec"
tx_ipsec: 15 rx_ipsec: 15カウンターの値が増えると、ESP ハードウェアオフロードが動作します。
関連情報
10.4. IPsec 接続を加速化するためにボンディングでの ESP ハードウェアオフロードの設定
Encapsulating Security Payload (ESP) をハードウェアにオフロードすると、IPsec 接続が加速します。フェイルオーバーの理由でネットワークボンディングを使用する場合、ESP ハードウェアオフロードを設定する要件と手順は、通常のイーサーネットデバイスを使用する要件と手順とは異なります。たとえば、このシナリオでは、ボンディングでオフロードサポートを有効にし、カーネルはボンディングのポートに設定を適用します。
前提条件
- ボンディングのすべてのネットワークカードが、ESP ハードウェアオフロードをサポートしている。
-
ネットワークドライバーが、ボンドデバイスで ESP ハードウェアオフロードに対応している。RHEL では、
ixgbe
ドライバーのみがこの機能をサポートしています。 - ボンディングが設定されており動作する。
-
ボンディングで
active-backup
モードを使用している。ボンディングドライバーは、この機能の他のモードはサポートしていません。 - IPsec 接続が設定され、動作する。
手順
ネットワークボンディングで ESP ハードウェアオフロードのサポートを有効にします。
# nmcli connection modify bond0 ethtool.feature-esp-hw-offload on
このコマンドにより、
bond0
接続での ESP ハードウェアオフロードのサポートが有効になります。bond0
接続を再度アクティブにします。# nmcli connection up bond0
ESP ハードウェアオフロードに使用すべき接続の
/etc/ipsec.d/
ディレクトリーにある Libreswan 設定ファイルを編集し、nic-offload=yes
ステートメントを接続エントリーに追加します。conn example ... nic-offload=yes
ipsec
サービスを再起動します。# systemctl restart ipsec
検証
ボンディングのアクティブなポートを表示します。
# grep "Currently Active Slave" /proc/net/bonding/bond0 Currently Active Slave: enp1s0
アクティブなポートの
tx_ipsec
カウンターおよびrx_ipsec
カウンターを表示します。# ethtool -S enp1s0 | egrep "_ipsec" tx_ipsec: 10 rx_ipsec: 10
IPsec トンネルを介してトラフィックを送信します。たとえば、リモート IP アドレスに ping します。
# ping -c 5 remote_ip_address
アクティブなポートの
tx_ipsec
カウンターおよびrx_ipsec
カウンターを再度表示します。# ethtool -S enp1s0 | egrep "_ipsec" tx_ipsec: 15 rx_ipsec: 15
カウンターの値が増えると、ESP ハードウェアオフロードが動作します。
関連情報
- ネットワークボンディングの設定
- ネットワークのセキュリティー保護ドキュメントの Configuring a VPN with IPsec セクション
第11章 IP トンネルの設定
VPN と同様に、IP トンネルは、インターネットなどの 3 つ目のネットワーク上で 2 つのネットワークを直接接続します。ただし、すべてのトンネルプロトコルが暗号化に対応しているわけではありません。
トンネルを確立する両方のネットワークのルーターには、最低でも 2 つのインターフェイスが必要です。
- ローカルネットワークに接続されているインターフェイス 1 つ
- トンネルが確立されたネットワークに接続されたインターフェイス 1 つ。
トンネルを確立するには、リモートサブネットから IP アドレスを使用して、両方のルーターに仮想インターフェイスを作成します。
NetworkManager は、以下の IP トンネルに対応します。
- GRE (Generic Routing Encapsulation)
- IP6GRE (Generic Routing Encapsulation over IPv6)
- GRETAP (Generic Routing Encapsulation Terminal Access Point)
- IP6GRETAP (Generic Routing Encapsulation Terminal Access Point over IPv6)
- IPIP (IPv4 over IPv4)
- IPIP6 (IPv4 over IPv6)
- IP6IP6 (IPv6 over IPv6)
- SIT (Simple Internet Transition)
このトンネルは、タイプに応じて、OSI (Open Systems Interconnection) モデルのレイヤー 2 または 3 で動作します。
11.1. nmcli を使用して IPIP トンネルを設定して、IPv4 パケットの IPv4 トラフィックをカプセル化します。
IPIP (IP over IP) トンネルは OSI レイヤー 3 で動作し、RFC 2003 で説明されているように IPv4 パケットの IPv4 トラフィックをカプセル化します。
IPIP トンネルを介して送信されるデータは暗号化されません。セキュリティー上の理由から、すでに暗号化されたデータにはトンネルを使用してください (HTTPS などの他のプロトコル)。
IPIP トンネルはユニキャストパケットのみをサポートすることに注意してください。マルチキャストをサポートする IPv4 トンネルが必要な場合は、nmcli を使用した GRE トンネルを設定して IPv4 パケット内のレイヤー 3 トラフィックをカプセル化 を参照します。
たとえば、以下の図に示すように、2 つの RHEL ルーター間で IPIP トンネルを作成し、インターネット経由で 2 つの内部サブネットに接続します。

前提条件
- 各 RHEL ルーターには、ローカルサブネットに接続されているネットワークインターフェイスがあります。
- 各 RHEL ルーターには、インターネットに接続しているネットワークインターフェイスがあります。
- トンネル経由で送信するトラフィックは IPv4 ユニキャストです。
手順
ネットワーク A の RHEL ルーターで、次のコマンドを実行します。
tun0
という名前の IPIP トンネルインターフェイスを作成します。# nmcli connection add type ip-tunnel ip-tunnel.mode ipip con-name tun0 ifname tun0 remote 198.51.100.5 local 203.0.113.10
remote
パラメーターおよびlocal
パラメーターは、リモートルーターおよびローカルルーターのパブリック IP アドレスを設定します。IPv4 アドレスを
tun0
デバイスに設定します。# nmcli connection modify tun0 ipv4.addresses '10.0.1.1/30'
トンネルには、2 つの使用可能な IP アドレスを持つ
/30
サブネットで十分であることに注意してください。IPv 4 設定を使用するように手動で
tun0
接続を設定します。# nmcli connection modify tun0 ipv4.method manual
トラフィックを
172.16.0.0/24
ネットワークにルーティングする静的ルートをルーター B のトンネル IP に追加します。# nmcli connection modify tun0 +ipv4.routes "172.16.0.0/24 10.0.1.2"
tun0
接続を有効にします。# nmcli connection up tun0
パケット転送を有効にします。
# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf
ネットワーク B の RHEL ルーターで、次のコマンドを実行します。
tun0
という名前の IPIP トンネルインターフェイスを作成します。# nmcli connection add type ip-tunnel ip-tunnel.mode ipip con-name tun0 ifname tun0 remote 203.0.113.10 local 198.51.100.5
remote
パラメーターおよびlocal
パラメーターは、リモートルーターおよびローカルルーターのパブリック IP アドレスを設定します。IPv4 アドレスを
tun0
デバイスに設定します。# nmcli connection modify tun0 ipv4.addresses '10.0.1.2/30'
IPv 4 設定を使用するように手動で
tun0
接続を設定します。# nmcli connection modify tun0 ipv4.method manual
トラフィックを
192.0.2.0/24
ネットワークにルーティングする静的ルートをルーター A のトンネル IP に追加します。# nmcli connection modify tun0 +ipv4.routes "192.0.2.0/24 10.0.1.1"
tun0
接続を有効にします。# nmcli connection up tun0
パケット転送を有効にします。
# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf
検証手順
各 RHEL ルーターから、他のルーターの内部インターフェイスの IP アドレスに ping します。
ルーター A で
172.16.0.1
に ping します。# ping 172.16.0.1
ルーター B で
192.0.2.1
に ping します。# ping 192.0.2.1
関連情報
-
man ページの
nmcli(1)
-
man ページの
nm-settings(5)
11.2. nmcli を使用して GRE トンネルを設定して、IPv4 パケット内のレイヤー 3 トラフィックをカプセル化
Generic Routing Encapsulation (GRE) トンネルは、RFC 2784 で説明されているように、IPv4 パケットでレイヤー 3 トラフィックをカプセル化します。GRE トンネルは、有効なイーサネットタイプで任意のレイヤー 3 プロトコルをカプセル化できます。
GRE トンネルを介して送信されるデータは暗号化されません。セキュリティー上の理由から、すでに暗号化されたデータにはトンネルを使用してください (HTTPS などの他のプロトコル)。
たとえば、以下の図に示すように、2 つの RHEL ルーター間で GRE トンネルを作成し、インターネット経由で 2 つの内部サブネットに接続します。

gre0
デバイス名は予約されています。デバイスに gre1
または別の名前を使用します。
前提条件
- 各 RHEL ルーターには、ローカルサブネットに接続されているネットワークインターフェイスがあります。
- 各 RHEL ルーターには、インターネットに接続しているネットワークインターフェイスがあります。
手順
ネットワーク A の RHEL ルーターで、次のコマンドを実行します。
gre1
という名前の GRE トンネルインターフェイスを作成します。# nmcli connection add type ip-tunnel ip-tunnel.mode gre con-name gre1 ifname gre1 remote 198.51.100.5 local 203.0.113.10
remote
パラメーターおよびlocal
パラメーターは、リモートルーターおよびローカルルーターのパブリック IP アドレスを設定します。IPv4 アドレスを
gre1
デバイスに設定します。# nmcli connection modify gre1 ipv4.addresses '10.0.1.1/30'
トンネルには、2 つの使用可能な IP アドレスを持つ
/30
サブネットで十分であることに注意してください。手動の IPv 4 設定を使用するように
gre1
接続を設定します。# nmcli connection modify gre1 ipv4.method manual
トラフィックを
172.16.0.0/24
ネットワークにルーティングする静的ルートをルーター B のトンネル IP に追加します。# nmcli connection modify gre1 +ipv4.routes "172.16.0.0/24 10.0.1.2"
gre1
コネクションを有効にします。# nmcli connection up gre1
パケット転送を有効にします。
# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf
ネットワーク B の RHEL ルーターで、次のコマンドを実行します。
gre1
という名前の GRE トンネルインターフェイスを作成します。# nmcli connection add type ip-tunnel ip-tunnel.mode gre con-name gre1 ifname gre1 remote 203.0.113.10 local 198.51.100.5
remote
パラメーターおよびlocal
パラメーターは、リモートルーターおよびローカルルーターのパブリック IP アドレスを設定します。IPv4 アドレスを
gre1
デバイスに設定します。# nmcli connection modify gre1 ipv4.addresses '10.0.1.2/30'
手動の IPv 4 設定を使用するように
gre1
接続を設定します。# nmcli connection modify gre1 ipv4.method manual
トラフィックを
192.0.2.0/24
ネットワークにルーティングする静的ルートをルーター A のトンネル IP に追加します。# nmcli connection modify gre1 +ipv4.routes "192.0.2.0/24 10.0.1.1"
gre1
コネクションを有効にします。# nmcli connection up gre1
パケット転送を有効にします。
# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf
検証手順
各 RHEL ルーターから、他のルーターの内部インターフェイスの IP アドレスに ping します。
ルーター A で
172.16.0.1
に ping します。# ping 172.16.0.1
ルーター B で
192.0.2.1
に ping します。# ping 192.0.2.1
関連情報
-
man ページの
nmcli(1)
-
man ページの
nm-settings(5)
11.3. IPv4 でイーサネットフレームを転送するための GRETAP トンネルの設定
GRETAP (Generic Routing Encapsulation Terminal Access Point) トンネルは OSI レベル 2 で動作し、RFC 2784 で説明されているように IPv4 パケットのイーサネットトラフィックをカプセル化します。
GRETAP トンネルを介して送信されるデータは暗号化されません。セキュリティー上の理由から、VPN または別の暗号化された接続にトンネルを確立します。
たとえば、以下の図に示すように、2 つの RHEL ルーター間で GRETAP トンネルを作成し、ブリッジを使用して 2 つのネットワークに接続します。

gretap0
デバイス名が予約されています。デバイスに gretap1
または別の名前を使用します。
前提条件
- 各 RHEL ルーターには、ローカルネットワークに接続されたネットワークインターフェイスがあり、IP 設定は割り当てられません。
- 各 RHEL ルーターには、インターネットに接続しているネットワークインターフェイスがあります。
手順
ネットワーク A の RHEL ルーターで、次のコマンドを実行します。
bridge0
という名前のブリッジインターフェイスを作成します。# nmcli connection add type bridge con-name bridge0 ifname bridge0
ブリッジの IP 設定を設定します。
# nmcli connection modify bridge0 ipv4.addresses '192.0.2.1/24' # nmcli connection modify bridge0 ipv4.method manual
ローカルネットワークに接続されたインターフェイス用の新しい接続プロファイルをブリッジに追加します。
# nmcli connection add type ethernet slave-type bridge con-name bridge0-port1 ifname enp1s0 master bridge0
GRETAP トンネルインターフェイスの新しい接続プロファイルをブリッジに追加します。
# nmcli connection add type ip-tunnel ip-tunnel.mode gretap slave-type bridge con-name bridge0-port2 ifname gretap1 remote 198.51.100.5 local 203.0.113.10 master bridge0
remote
パラメーターおよびlocal
パラメーターは、リモートルーターおよびローカルルーターのパブリック IP アドレスを設定します。必要に応じて、STP (Spanning Tree Protocol) を無効にする必要がない場合は、これを無効にします。
# nmcli connection modify bridge0 bridge.stp no
デフォルトでは、STP は有効になり、接続を使用する前に遅延が生じます。
bridge0
接続がアクティベートするように、ブリッジのポートが自動的にアクティブになるようにします。# nmcli connection modify bridge0 connection.autoconnect-slaves 1
bridge0
接続をアクティブにします。# nmcli connection up bridge0
ネットワーク B の RHEL ルーターで、次のコマンドを実行します。
bridge0
という名前のブリッジインターフェイスを作成します。# nmcli connection add type bridge con-name bridge0 ifname bridge0
ブリッジの IP 設定を設定します。
# nmcli connection modify bridge0 ipv4.addresses '192.0.2.2/24' # nmcli connection modify bridge0 ipv4.method manual
ローカルネットワークに接続されたインターフェイス用の新しい接続プロファイルをブリッジに追加します。
# nmcli connection add type ethernet slave-type bridge con-name bridge0-port1 ifname enp1s0 master bridge0
GRETAP トンネルインターフェイスの新しい接続プロファイルをブリッジに追加します。
# nmcli connection add type ip-tunnel ip-tunnel.mode gretap slave-type bridge con-name bridge0-port2 ifname gretap1 remote 203.0.113.10 local 198.51.100.5 master bridge0
remote
パラメーターおよびlocal
パラメーターは、リモートルーターおよびローカルルーターのパブリック IP アドレスを設定します。必要に応じて、STP (Spanning Tree Protocol) を無効にする必要がない場合は、これを無効にします。
# nmcli connection modify bridge0 bridge.stp no
bridge0
接続がアクティベートするように、ブリッジのポートが自動的にアクティブになるようにします。# nmcli connection modify bridge0 connection.autoconnect-slaves 1
bridge0
接続をアクティブにします。# nmcli connection up bridge0
検証手順
両方のルーターで、
enp1s0
接続およびgretap1
接続が接続され、CONNECTION
列にポートの接続名が表示されていることを確認します。# nmcli device nmcli device DEVICE TYPE STATE CONNECTION ... bridge0 bridge connected bridge0 enp1s0 ethernet connected bridge0-port1 gretap1 iptunnel connected bridge0-port2
各 RHEL ルーターから、他のルーターの内部インターフェイスの IP アドレスに ping します。
ルーター A で
192.0.2.2
に ping します。# ping 192.0.2.2
ルーター B で
192.0.2.1
に ping します。# ping 192.0.2.1
関連情報
-
man ページの
nmcli(1)
-
man ページの
nm-settings(5)
11.4. 関連情報
-
man ページの
ip-link(8)
第12章 ホスト名の変更
システムのホスト名は、システム自体の名前になります。RHEL のインストール時に名前を設定し、後で変更できます。
12.1. nmcli を使用したホスト名の変更
nmcli
ユーティリティーを使用して、システムのホスト名を更新できます。その他のユーティリティーは、静的または永続的なホスト名などの別の用語を使用する可能性があることに注意してください。
手順
オプション: 現在のホスト名設定を表示します。
# nmcli general hostname old-hostname.example.com
新しいホスト名を設定します。
# nmcli general hostname new-hostname.example.com
NetworkManager は、
systemd-hostnamed
を自動的に再起動して、新しい名前をアクティブにします。ただし、ホストを再起動しない場合は、以下の手動アクションが必要になる場合があります。サービスの起動時にホスト名のみを読み取るすべてのサービスを再起動します。
# systemctl restart service_name
- 変更を反映するには、アクティブなシェルユーザーを再ログインする必要があります。
検証
ホスト名を表示します。
# nmcli general hostname new-hostname.example.com
12.2. hostnamectl を使用したホスト名の変更
hostnamectl
ユーティリティーを使用してホスト名を更新できます。デフォルトでは、このユーティリティーは以下のホスト名タイプを設定します。
-
静的ホスト名:
/etc/hostname
ファイルに保存されます。通常、サービスはこの名前をホスト名として使用します。 -
Pretty hostname:
Proxy server in data center A
などの説明的な名前。 - 一時的なホスト名: 通常ネットワーク設定から受信されるフォールバック値。
手順
オプション: 現在のホスト名設定を表示します。
# hostnamectl status --static old-hostname.example.com
新しいホスト名を設定します。
# hostnamectl set-hostname new-hostname.example.com
このコマンドは、static、pretty、および transient のホスト名を新しい値に設定します。特定のタイプのみを設定するには、
--static
オプション、--pretty
オプション、または--transient
オプションをコマンドに渡します。hostnamectl
ユーティリティーは、systemd-hostnamed
を自動的に再起動して、新しい名前をアクティブにします。ただし、ホストを再起動しない場合は、以下の手動アクションが必要になる場合があります。サービスの起動時にホスト名のみを読み取るすべてのサービスを再起動します。
# systemctl restart service_name
- 変更を反映するには、アクティブなシェルユーザーを再ログインする必要があります。
検証
ホスト名を表示します。
# hostnamectl status --static new-hostname.example.com
関連情報
-
hostnamectl(1)
-
systemd-hostnamed.service(8)
第13章 RHEL における従来のネットワークスクリプトのサポート
デフォルトでは、RHEL は NetworkManager を使用してネットワーク接続を設定および管理し、/usr/sbin/ifup
スクリプトおよび /usr/sbin/ifdown
スクリプトは NetworkManager を使用して /etc/sysconfig/network-scripts/
ディレクトリー内の ifcfg
ファイルを処理します。
レガシースクリプトは RHEL 8 で非推奨となり、RHEL の今後のメジャーバージョンで削除されます。以前のバージョンから RHEL 8 にアップグレードしたため、レガシーネットワークスクリプトを使用する場合は、設定を NetworkManager に移行することが推奨されます。
13.1. レガシーネットワークスクリプトのインストール
NetworkManager を使用せずにネットワーク設定を処理する非推奨のネットワークスクリプトが必要な場合は、それをインストールできます。この場合、/usr/sbin/ifup
スクリプトおよび /usr/sbin/ifdown
スクリプトは、ネットワーク設定を管理する非推奨のシェルスクリプトにリンクされます。
手順
network-scripts
パッケージをインストールします。# yum install network-scripts
第14章 ポートミラーリング
ネットワーク管理者は、ポートミラーリングを使用して、あるネットワークデバイスから別のネットワークデバイスに通信中の受信および送信トラフィックを複製できます。管理者は、ポートミラーリングを使用してネットワークトラフィックを監視し、ネットワークデータを収集します。
- ネットワークの問題のデバッグしてネットワークフローを調整する
- ネットワークトラフィックを調べて分析し、ネットワークの問題をトラブルシュートする
- 侵入を検出する
14.1. nmcli を使用したネットワークインターフェイスのミラーリング
NetworkManager を使用してポートのミラーリングを設定できます。以下の手順では、トラフィック制御 (tc
) ルールおよびフィルターを enp1s0
ネットワークインターフェイスに追加することで、enp1s0
から enp7s0
にネットワークトラフィックをミラーリングします。
前提条件
- ネットワークトラフィックをミラーリングするネットワークインターフェイス。
手順
ネットワークトラフィックをミラーリングするネットワーク接続プロファイルを追加します。
# nmcli connection add type ethernet ifname enp1s0 con-name enp1s0 autoconnect no
10:
handle で egress (送信) トラフィックについて、prio
qdisc
をenp1s0
に割り当てます。# nmcli connection modify enp1s0 +tc.qdisc "root prio handle 10:"
子なしでアタッチされた
prio
qdisc
を使用すると、フィルターをアタッチできます。ffff:
ハンドルを使用して、イングレストラフィックのqdisc
を追加します。# nmcli connection modify enp1s0 +tc.qdisc "ingress handle ffff:"
次のフィルターを追加して、入力および出力
qdiscs
のパケットを照合し、それらをenp7s0
にミラーリングします。# nmcli connection modify enp1s0 +tc.tfilter "parent ffff: matchall action mirred egress mirror dev enp7s0" # nmcli connection modify enp1s0 +tc.tfilter "parent 10: matchall action mirred egress mirror dev enp7s0"
matchall
フィルターは、すべてのパケットを照合し、mirred
アクションではパケットを宛先にリダイレクトします。接続をアクティベートします。
# nmcli connection up enp1s0
検証手順
tcpdump
ユーティリティーをインストールします。# yum install tcpdump
ターゲットデバイス (
enp7s0
) でミラーリングされたトラフィックを表示します。# tcpdump -i enp7s0
第15章 特定のデバイスを無視するように NetworkManager の設定
デフォルトでは、NetworkManager は lo
(loopback) デバイス以外のすべてのデバイスを管理します。ただし、特定のデバイスを unmanaged
に設定すると、NetworkManager がこのデバイスを無視するように設定できます。この設定では、スクリプトなどを使用して、このデバイスを手動で管理できます。
15.1. NetworkManager でデバイスを管理対象外として永続的に設定
インターフェイス名、MAC アドレス、デバイスタイプなどのいくつかの基準に基づいてデバイスを unmanaged
として永続的に設定できます。
ネットワークデバイスを一時的に unmanaged
として設定する場合は、Temporarily configuring a device as unmanaged in NetworkManager を参照してください。
手順
必要に応じて、デバイスの一覧を表示して、
unmanaged
に設定するデバイスまたは MAC アドレス を特定します。# ip link show ... 2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:74:79:56 brd ff:ff:ff:ff:ff:ff ...
以下の内容で
/etc/NetworkManager/conf.d/99-unmanaged-devices.conf
ファイルを作成します。特定のインターフェイスを管理対象外として設定するには、以下を追加します。
[keyfile] unmanaged-devices=interface-name:enp1s0
特定の MAC アドレスを管理対象外として設定するには、以下を追加します。
[keyfile] unmanaged-devices=mac:52:54:00:74:79:56
特定のタイプのすべてのデバイスを管理対象外として設定するには、以下を追加します。
[keyfile] unmanaged-devices=type:ethernet
複数のデバイスを管理対象外に設定するには、
unmanaged-devices
パラメーターのエントリーをセミコロンで区切ります。NetworkManager
サービスを再読み込みします。# systemctl reload NetworkManager
検証手順
デバイスの一覧を表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp1s0 ethernet unmanaged -- ...
enp1s0
デバイスの横にある管理対象外
状態は、NetworkManager がこのデバイスを管理していないことを示しています。
関連情報
-
NetworkManager.conf(5)
man ページ
15.2. NetworkManager でデバイスを管理対象外として一時的に設定
デバイスを一時的に unmanaged
として設定できます。
この方法は、たとえば、テスト目的で使用します。ネットワークデバイスを unmanaged
に応じて永続的に設定するには、Permanently configuring a device as unmanaged in NetworkManager を参照してください。
手順
必要に応じて、デバイスの一覧を表示して、
管理対象外
に設定するデバイスを特定します。# nmcli device status DEVICE TYPE STATE CONNECTION enp1s0 ethernet disconnected -- ...
enp1s0
デバイスをunmanaged
の状態に設定します。# nmcli device set enp1s0 managed no
検証手順
デバイスの一覧を表示します。
# nmcli device status DEVICE TYPE STATE CONNECTION enp1s0 ethernet unmanaged -- ...
enp1s0
デバイスの横にある管理対象外
状態は、NetworkManager がこのデバイスを管理していないことを示しています。
関連情報
-
NetworkManager.conf(5)
man ページ
第16章 すべての MAC アドレスからのトラフィックを受け入れるようにネットワークデバイスを設定
ネットワークデバイスは通常、コントローラーが受信するようにプログラムされているパケットを傍受して読み取ります。ネットワークデバイスを設定して、仮想スイッチまたはポートグループレベルのすべての MAC アドレスからのトラフィックを受け入れることができます。
このネットワークモードを使用すると、以下を行うことができます。
- ネットワーク接続の問題診断
- セキュリティー上の理由から、ネットワークアクティビティーの監視
- ネットワーク内のプライベートデータイントラントまたは侵入傍受
InfiniBand
を除くあらゆる種類のネットワークデバイスに対してこのモードを有効にできます。
16.1. 全トラフィックを受け入れるようなデバイスの一時設定
ip
ユーティリティーを使用して、MAC アドレスに関係なく、すべてのトラフィックを受け入れるようにネットワークデバイスを一時的に設定できます。
手順
必要に応じて、ネットワークインターフェイスを表示して、すべてのトラフィックを受信するインターフェイスを識別します。
# ip address show 1: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000 link/ether 98:fa:9b:a4:34:09 brd ff:ff:ff:ff:ff:ff ...
デバイスを変更して、このプロパティーを有効または無効にします。
enp1s0
のaccept-all-mac-addresses
モードを有効にするには、以下のコマンドを実行します。# ip link set enp1s0 promisc on
enp1s0
のaccept-all-mac-address
モードを有効にするには、以下のコマンドを実行します。# ip link set enp1s0 promisc off
検証手順
accept-all-mac-addresses
モードが有効になっていることを確認します。# ip link show enp1s0 1: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000 link/ether 98:fa:9b:a4:34:09 brd ff:ff:ff:ff:ff:ff
機器の説明の
PROMISC
フラグは、モードが有効であることを示しています。
16.2. nmcli を使用して、すべてのトラフィックを受け入れるようにネットワークデバイスを永続的に設定
nmcli
ユーティリティーを使用して、MAC アドレスに関係なく、すべてのトラフィックを受け入れるようにネットワークデバイスを永続的に設定できます。
手順
必要に応じて、ネットワークインターフェイスを表示して、すべてのトラフィックを受信するインターフェイスを識別します。
# ip address show 1: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000 link/ether 98:fa:9b:a4:34:09 brd ff:ff:ff:ff:ff:ff ...
接続がない場合は、新しい接続を作成できます。
ネットワークデバイスを変更して、このプロパティーを有効または無効にします。
enp1s0
のethernet.accept-all-mac-addresses
モードを有効にするには、以下のコマンドを実行します。# nmcli connection modify enp1s0 ethernet.accept-all-mac-addresses yes
enp1s0
のaccept-all-mac-address
モードを有効にするには、以下のコマンドを実行します。# nmcli connection modify enp1s0 ethernet.accept-all-mac-addresses no
変更を適用し、接続を再度アクティブにします。
# nmcli connection up enp1s0
検証手順
ethernet.accept-all-mac-addresses
モードが有効になっていることを確認します。# nmcli connection show enp1s0 ... 802-3-ethernet.accept-all-mac-addresses:1 (true)
この
802-3-ethernet.accept-all-mac-addresses: true
は、モードが有効であることを示しています。
16.3. nmstatectl を使用して全トラフィックを受け入れるようにネットワークデバイスを永続的に設定する手順
nmstatectl
ユーティリティーを使用して、MAC アドレスに関係なくすべてのトラフィックを受け入れるようにネットワークデバイスを永続的に設定できます。
前提条件
-
nmstate
パッケージがインストールされている。 -
デバイスの設定に使用した
enp1s0.yml
ファイルが利用できます。
手順
enp1s0
接続の既存のenp1s0.yml
ファイルを編集し、以下の内容を追加します。--- interfaces: - name: enp1s0 type: ethernet state: up accept -all-mac-address: true
ネットワーク設定を適用します。
# nmstatectl apply ~/enp1s0.yml
検証手順
802-3-ethernet.accept-all-mac-addresses
モードが有効になっていることを確認します。# nmstatectl show enp1s0 interfaces: - name: enp1s0 type: ethernet state: up accept-all-mac-addresses: true ...
この
802-3-ethernet.accept-all-mac-addresses: true
は、モードが有効であることを示しています。
関連情報
-
nmstatectl(8)
の man ページ -
/usr/share/doc/nmstate/examples/
directory
第17章 FreeRADIUS バックエンドで hostapd を使用する LAN クライアント用の 802.1x ネットワーク認証サービスの設定
IEEE 802.1X 標準は、許可されていないクライアントからネットワークを保護するためのセキュアな認証および承認方法を定義しています。hostapd
サービスと FreeRADIUS を使用すると、ネットワークにネットワークアクセス制御 (NAC) を提供できます。
本書では、RHEL ホストは、さまざまなクライアントを既存のネットワークに接続するためのブリッジとして機能します。ただし、RHEL ホストは、認証されたクライアントのみにネットワークへのアクセスを許可します。

17.1. 前提条件
FreeRADIUS のクリーンインストール。
freeradius
パッケージがすでにインストールされている場合は、/etc/raddb/
ディレクトリーを削除し、アンインストールしてから、パッケージを再度インストールします。/etc/raddb/
ディレクトリー内の権限とシンボリックリンクが異なるため、yum reinstall
コマンドを使用してパッケージを再インストールしないでください。
17.2. オーセンティケーターにブリッジを設定する
ネットワークブリッジは、MAC アドレスのテーブルに基づいてホストとネットワーク間のトラフィックを転送するリンク層デバイスです。RHEL を 802.1X オーセンティケーターとして設定する場合は、認証を実行するインターフェイスと LAN インターフェイスの両方をブリッジに追加します。
前提条件
- サーバーには複数のイーサネットインターフェイスがあります。
手順
ブリッジインターフェイスを作成します。
# nmcli connection add type bridge con-name br0 ifname br0
イーサネットインターフェイスをブリッジに割り当てます。
# nmcli connection add type ethernet slave-type bridge con-name br0-port1 ifname enp1s0 master br0 # nmcli connection add type ethernet slave-type bridge con-name br0-port2 ifname enp7s0 master br0 # nmcli connection add type ethernet slave-type bridge con-name br0-port3 ifname enp8s0 master br0 # nmcli connection add type ethernet slave-type bridge con-name br0-port4 ifname enp9s0 master br0
ブリッジが拡張認証プロトコル over LAN (EAPOL) パケットを転送できるようにします。
# nmcli connection modify br0 group-forward-mask 8
ポートを自動的にアクティブ化するように接続を設定します。
# nmcli connection modify br0 connection.autoconnect-slaves 1
接続をアクティベートします。
# nmcli connection up br0
検証
特定のブリッジのポートであるイーサネットデバイスのリンクステータスを表示します。
# ip link show master br0 3: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:62:61:0e brd ff:ff:ff:ff:ff:ff ...
EAPOL パケットの転送が
br0
デバイスで有効になっているかどうかを確認します。# cat /sys/class/net/br0/bridge/group_fwd_mask 0x8
コマンドが
0x8
を返す場合、転送が有効になります。
関連情報
-
man ページの
nm-settings(5)
17.3. FreeRADIUS による証明書の要件
セキュアな FreeRADIUS サービスを利用するには、さまざまな目的で TLS 証明書が必要です。
サーバーへの暗号化された接続用の TLS サーバー証明書。信頼済み認証局 (CA) を使用して証明書を発行します。
サーバー証明書には、
TLS Web Server Authentication
に設定された拡張鍵用途 (EKU) フィールドが必要です。拡張認証プロトコルトランスポート層セキュリティー (EAP-TLS) のために同じ CA によって発行されたクライアント証明書。EAP-TLS は証明書ベースの認証を提供し、デフォルトで有効になっています。
クライアント証明書では、EKU フィールドを
TLS Web Client Authentication
に設定する必要があります。
接続をセキュリティー保護するには、会社の CA を使用するか、独自の CA を作成して FreeRADIUS の証明書を発行します。パブリック CA を使用する場合は、パブリック CA がユーザーを認証し、EAP-TLS のクライアント証明書を発行できるようにします。
17.4. テスト目的で FreeRADIUS サーバーに一連の証明書を作成する
テストの目的で、freeradius
パッケージはスクリプトと設定ファイルを /etc/raddb/certs/
ディレクトリーにインストールして、独自の認証局 (CA) を作成し、証明書を発行します。
デフォルト設定を使用する場合、これらのスクリプトによって生成された証明書は 60 日後に期限切れになり、キーは安全でないパスワード (何でも) を使用します。ただし、CA、サーバー、およびクライアントの設定をカスタマイズできます。
手順を実行すると、本書の後半で必要となる次のファイルが作成されます。
-
/etc/raddb/certs/ca.pem
: CA 証明書 -
/etc/raddb/certs/server.key
: サーバー証明書の秘密鍵 -
/etc/raddb/certs/server.pem
: サーバー証明書 -
/etc/raddb/certs/client.key
: クライアント証明書の秘密鍵 -
/etc/raddb/certs/client.pem
: クライアント証明書
前提条件
-
freeradius
パッケージをインストールしました。
手順
/etc/raddb/certs/
ディレクトリーに移動します。# cd /etc/raddb/certs/
オプション: CA 設定をカスタマイズします。
... [ req ] default_bits = 2048 input_password = ca_password output_password = ca_password ... [certificate_authority] countryName = US stateOrProvinceName = North Carolina localityName = Raleigh organizationName = Example Inc. emailAddress = admin@example.org commonName = "Example Certificate Authority" ...
オプション: サーバー設定をカスタマイズします。
... [ CA_default ] default_days = 730 ... [ req ] distinguished_name = server default_bits = 2048 input_password = key_password output_password = key_password ... [server] countryName = US stateOrProvinceName = North Carolina localityName = Raleigh organizationName = Example Inc. emailAddress = admin@example.org commonName = "Example Server Certificate" ...
オプション: クライアント設定をカスタマイズします。
... [ CA_default ] default_days = 365 ... [ req ] distinguished_name = client default_bits = 2048 input_password = password_on_private_key output_password = password_on_private_key ... [client] countryName = US stateOrProvinceName = North Carolina localityName = Raleigh organizationName = Example Inc. emailAddress = user@example.org commonName = user@example.org ...
証明書を作成します。
# make all
/etc/raddb/certs/server.pem
ファイルのグループをradiusd
に変更します。# chgrp radiusd /etc/raddb/certs/server.pem*
関連情報
-
/etc/raddb/certs/README.md
17.5. EAP を使用してネットワーククライアントを安全に認証するための FreeRADIUS の設定
FreeRADIUS は、拡張認証プロトコル (EAP) のさまざまな方法をサポートしています。ただし、セキュアなネットワークの場合は、以下のセキュアな EAP 認証方法のみをサポートするように FreeRADIUS を設定します。
- EAP-TLS(Transport Layer Security) は、セキュアな TLS 接続を使用して、証明書を使用してクライアントを認証します。EAP-TLS を使用するには、各ネットワーククライアントの TLS クライアント証明書とサーバーのサーバー証明書が必要です。同じ認証局 (CA) が証明書を発行している必要があることに注意してください。使用する CA によって発行されたすべてのクライアント証明書は FreeRADIUS サーバーに対して認証できるため、常に独自の CA を使用して証明書を作成してください。
- EAP-TTLS(Tunneled Transport Layer Security) は、セキュアな TLS 接続を使用し、パスワード認証プロトコル (PAP) やチャレンジハンドシェイク認証プロトコル (CHAP) などのメカニズムを使用してクライアントを認証します。EAP-TTLS を使用するには、TLS サーバー証明書が必要です。
- EAP-PEAP (保護された拡張認証プロトコル) は、トンネルを設定するための外部認証プロトコルとしてセキュアな TLS 接続を使用します。オーセンティケーターは、RADIUS サーバーの証明書を認証します。その後、サプリカントは、Microsoft チャレンジハンドシェイク認証プロトコルバージョン 2 (MS-CHAPv2) またはその他の方法を使用して、暗号化されたトンネルを介して認証します。
デフォルトの FreeRADIUS 設定ファイルはドキュメントとして機能し、すべてのパラメーターとディレクティブを記述します。特定の機能を無効にする場合は、設定ファイルの対応する部分を削除するのではなく、コメントアウトしてください。これにより、設定ファイルと含まれているドキュメントの構造を保持できます。
前提条件
-
freeradius
パッケージをインストールしました。 -
/etc/raddb/
ディレクトリー内の設定ファイルは変更されておらず、freeradius
パッケージによって提供されています。 サーバーには次のファイルがあります。
-
FreeRADIUS ホストの TLS 秘密鍵:
/etc/raddb/certs/server.key
-
FreeRADIUS ホストの TLS サーバー証明書:
/etc/raddb/certs/server.pem
-
TLS CA 証明書:
/etc/raddb/certs/ca.pem
ファイルを別の場所に保存する場合、またはファイルの名前が異なる場合は、それに応じて
/etc/raddb/mods-available/eap
ファイルのprivate_key_file
、certificate_file
、およびca_file
パラメーターを設定します。-
FreeRADIUS ホストの TLS 秘密鍵:
手順
Diffie-Hellman (DH) パラメーターを持つ
/etc/raddb/certs/dh
が存在しない場合は、作成します。たとえば、2048 ビットの素数を持つ DH ファイルを作成するには、次のように入力します。# openssl dhparam -out /etc/raddb/certs/dh 2048
セキュリティー上の理由から、素数が 2048 ビット未満の DH ファイルは使用しないでください。ビット数によっては、ファイルの作成に数分かかる場合があります。
TLS 秘密鍵、サーバー証明書、CA 証明書、および DH パラメーターを使用したファイルにセキュアな権限を設定します。
# chmod 640 /etc/raddb/certs/server.key /etc/raddb/certs/server.pem /etc/raddb/certs/ca.pem /etc/raddb/certs/dh # chown root:radiusd /etc/raddb/certs/server.key /etc/raddb/certs/server.pem /etc/raddb/certs/ca.pem /etc/raddb/certs/dh
/etc/raddb/mods-available/eap
ファイルを編集します。private_key_password
パラメーターで秘密鍵のパスワードを設定します。eap { ... tls-config tls-common { ... private_key_password = key_password ... } }
環境に応じて、
eap
ディレクティブのdefault_eap_type
パラメーターを、使用するプライマリー EAP タイプに設定します。eap { ... default_eap_type = ttls ... }
安全な環境では、
ttls
、tls
、またはpeap
のみを使用してください。安全でない EAP-MD5 認証方式を無効にするには、
md5
ディレクティブをコメントアウトします。eap { ... # md5 { # } ... }
デフォルトの設定ファイルでは、他の安全でない EAP 認証方法がデフォルトでコメントアウトされていることに注意してください。
/etc/raddb/sites-available/default
ファイルを編集し、eap
以外のすべての認証方法をコメントアウトします。authenticate { ... # Auth-Type PAP { # pap # } # Auth-Type CHAP { # chap # } # Auth-Type MS-CHAP { # mschap # } # mschap # digest ... }
これにより、EAP のみが有効になり、プレーンテキスト認証方式が無効になります。
/etc/raddb/clients.conf
ファイルを編集します。localhost
およびlocalhost_ipv6
クライアントディレクティブでセキュアなパスワードを設定します。client localhost { ipaddr = 127.0.0.1 ... secret = client_password ... } client localhost_ipv6 { ipv6addr = ::1 secret = client_password }
リモートホスト上のネットワークオーセンティケーターなどの RADIUS クライアントが FreeRADIUS サービスにアクセスできる必要がある場合は、それらに対応するクライアントディレクティブを追加します。
client hostapd.example.org { ipaddr = 192.0.2.2/32 secret = client_password }
ipaddr
パラメーターは IPv4 および IPv6 アドレスを受け入れ、オプションのクラスレスドメイン間ルーティング (CIDR) 表記を使用して範囲を指定できます。ただし、このパラメーターに設定できる値は 1 つだけです。たとえば、IPv4 および IPv6 アドレスへのアクセスを許可するには、2 つのクライアントディレクティブを追加します。ホスト名や IP 範囲が使用される場所を説明する単語など、クライアントディレクティブのわかりやすい名前を使用します。
EAP-TTLS または EAP-PEAP を使用する場合は、ユーザーを
/etc/raddb/users
ファイルに追加します。example_user Cleartext-Password := "user_password"
証明書ベースの認証 (EAP-TLS) を使用する必要があるユーザーの場合、エントリーを追加しないでください。
設定ファイルを確認します。
# radiusd -XC ... Configuration appears to be OK
radiusd
サービスを有効にして開始します。# systemctl enable --now radiusd
トラブルシューティング
radiusd
サービスを停止します。# systemctl stop radiusd
デバッグモードでサービスを開始します。
# radiusd -X ... Ready to process requests
-
Verification
セクションで参照されているように、FreeRADIUS ホストで認証テストを実行します。
次のステップ
- 不要な認証方法や使用しないその他の機能を無効にします。
17.6. 有線ネットワークでのオーセンティケーターとしての hostapd の設定
ホストアクセスポイントデーモン (hostapd
) サービスは、有線ネットワークでオーセンティケーターとして機能し、802.1X 認証を提供できます。このため、hostapd
サービスには、クライアントを認証する RADIUS サーバーが必要です。
hostapd
サービスは、統合された RADIUS サーバーを提供します。ただし、統合 RADIUS サーバーはテスト目的でのみ使用してください。実稼働環境では、さまざまな認証方法やアクセス制御などの追加機能をサポートする FreeRADIUS サーバーを使用します。
hostapd
サービスはトラフィックプレーンと相互作用しません。このサービスは、オーセンティケーターとしてのみ機能します。たとえば、hostapd
制御インターフェイスを使用するスクリプトまたはサービスを使用して、認証イベントの結果に基づいてトラフィックを許可または拒否します。
前提条件
-
hostapd
パッケージをインストールしました。 - FreeRADIUS サーバーが設定され、クライアントを認証する準備が整いました。
手順
次のコンテンツで
/etc/hostapd/hostapd.conf
ファイルを作成します。# General settings of hostapd # =========================== # Control interface settings ctrl_interface=/var/run/hostapd ctrl_interface_group=wheel # Enable logging for all modules logger_syslog=-1 logger_stdout=-1 # Log level logger_syslog_level=2 logger_stdout_level=2 # Wired 802.1X authentication # =========================== # Driver interface type driver=wired # Enable IEEE 802.1X authorization ieee8021x=1 # Use port access entry (PAE) group address # (01:80:c2:00:00:03) when sending EAPOL frames use_pae_group_addr=1 # Network interface for authentication requests interface=br0 # RADIUS client configuration # =========================== # Local IP address used as NAS-IP-Address own_ip_addr=192.0.2.2 # Unique NAS-Identifier within scope of RADIUS server nas_identifier=hostapd.example.org # RADIUS authentication server auth_server_addr=192.0.2.1 auth_server_port=1812 auth_server_shared_secret=client_password # RADIUS accounting server acct_server_addr=192.0.2.1 acct_server_port=1813 acct_server_shared_secret=client_password
この設定で使用されるパラメーターの詳細は、
/usr/share/doc/hostapd/hostapd.conf
サンプル設定ファイルの説明を参照してください。hostapd
サービスを有効にして開始します。# systemctl enable --now hostapd
検証
参照:
トラブルシューティング
hostapd
サービスを停止します。# systemctl stop hostapd
デバッグモードでサービスを開始します。
# hostapd -d /etc/hostapd/hostapd.conf
-
Verification
セクションで参照されているように、FreeRADIUS ホストで認証テストを実行します。
関連情報
-
hostapd.conf(5)
man page -
/usr/share/doc/hostapd/hostapd.conf
file
17.7. FreeRADIUS サーバーまたはオーセンティケーターに対する EAP-TTLS 認証のテスト
Tunneled Transport Layer Security (EAP-TTLS) を介した拡張認証プロトコル (EAP) を使用した認証が期待どおりに機能するかどうかをテストするには、次の手順を実行します。
- FreeRADIUS サーバーをセットアップした後
-
hostapd
サービスを 802.1X ネットワーク認証のオーセンティケーターとして設定した後。
この手順で使用されるテストユーティリティーの出力は、EAP 通信に関する追加情報を提供し、問題のデバッグに役立ちます。
前提条件
認証する場合:
FreeRADIUS サーバー:
-
hostapd
パッケージによって提供されるeapol_test
ユーティリティーがインストールされます。 - この手順を実行するクライアントは、FreeRADIUS サーバーのクライアントデータベースで承認されています。
-
-
同じ名前のパッケージによって提供されるオーセンティケーター、
wpa_supplicant
ユーティリティーがインストールされます。
-
認証局 (CA) 証明書を
/etc/pki/tls/certs/ca.pem
ファイルに保存しました。
手順
次のコンテンツで
/etc/wpa_supplicant/wpa_supplicant-TTLS.conf
ファイルを作成します。ap_scan=0 network={ eap=TTLS eapol_flags=0 key_mgmt=IEEE8021X # Anonymous identity (sent in unencrypted phase 1) # Can be any string anonymous_identity="anonymous" # Inner authentication (sent in TLS-encrypted phase 2) phase2="auth=PAP" identity="example_user" password="user_password" # CA certificate to validate the RADIUS server's identity ca_cert="/etc/pki/tls/certs/ca.pem" }
認証するには:
FreeRADIUS サーバーには、次のように入力します。
# eapol_test -c /etc/wpa_supplicant/wpa_supplicant-TTLS.conf -a 192.0.2.1 -s client_password ... EAP: Status notification: remote certificate verification (param=success) ... CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully ... SUCCESS
-a
オプションは FreeRADIUS サーバーの IP アドレスを定義し、-s
オプションは FreeRADIUS サーバーのクライアント設定でコマンドを実行するホストのパスワードを指定します。オーセンティケーター。次のように入力します。
# wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant-TTLS.conf -D wired -i enp0s31f6 ... enp0s31f6: CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully ...
-i
オプションは、wpa_supplicant
が LAN(EAPOL) パケットを介して拡張認証プロトコルを送信するネットワークインターフェイス名を指定します。デバッグ情報の詳細は、コマンドに
-d
オプションを渡してください。
関連情報
-
/usr/share/doc/wpa_supplicant/wpa_supplicant.conf
file
17.8. FreeRADIUS サーバーまたはオーセンティケーターに対する EAP-TLS 認証のテスト
拡張認証プロトコル (EAP) Transport Layer Security (EAP-TLS) を使用した認証が期待どおりに機能するかどうかをテストするには、次の手順を実行します。
- FreeRADIUS サーバーをセットアップした後
-
hostapd
サービスを 802.1X ネットワーク認証のオーセンティケーターとして設定した後。
この手順で使用されるテストユーティリティーの出力は、EAP 通信に関する追加情報を提供し、問題のデバッグに役立ちます。
前提条件
認証する場合:
FreeRADIUS サーバー:
-
hostapd
パッケージによって提供されるeapol_test
ユーティリティーがインストールされます。 - この手順を実行するクライアントは、FreeRADIUS サーバーのクライアントデータベースで承認されています。
-
-
同じ名前のパッケージによって提供されるオーセンティケーター、
wpa_supplicant
ユーティリティーがインストールされます。
-
認証局 (CA) 証明書を
/etc/pki/tls/certs/ca.pem
ファイルに保存しました。 - クライアント証明書を発行した CA は、FreeRADIUS サーバーのサーバー証明書を発行した CA と同じです。
-
クライアント証明書を
/etc/pki/tls/certs/client.pem
ファイルに保存しました。 -
クライアントの秘密鍵を
/etc/pki/tls/private/client.key
に保存しました
手順
次のコンテンツで
/etc/wpa_supplicant/wpa_supplicant-TLS.conf
ファイルを作成します。ap_scan=0 network={ eap=TLS eapol_flags=0 key_mgmt=IEEE8021X identity="user@example.org" client_cert="/etc/pki/tls/certs/client.pem" private_key="/etc/pki/tls/private/client.key" private_key_passwd="password_on_private_key" # CA certificate to validate the RADIUS server's identity ca_cert="/etc/pki/tls/certs/ca.pem" }
認証するには:
FreeRADIUS サーバーには、次のように入力します。
# eapol_test -c /etc/wpa_supplicant/wpa_supplicant-TLS.conf -a 192.0.2.1 -s client_password ... EAP: Status notification: remote certificate verification (param=success) ... CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully ... SUCCESS
-a
オプションは FreeRADIUS サーバーの IP アドレスを定義し、-s
オプションは FreeRADIUS サーバーのクライアント設定でコマンドを実行するホストのパスワードを指定します。オーセンティケーター。次のように入力します。
# wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant-TLS.conf -D wired -i enp0s31f6 ... enp0s31f6: CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully ...
-i
オプションは、wpa_supplicant
が LAN(EAPOL) パケットを介して拡張認証プロトコルを送信するネットワークインターフェイス名を指定します。デバッグ情報の詳細は、コマンドに
-d
オプションを渡してください。
関連情報
-
/usr/share/doc/wpa_supplicant/wpa_supplicant.conf
file
17.9. hostapd 認証イベントに基づくトラフィックのブロックと許可
hostapd
サービスはトラフィックプレーンと相互作用しません。このサービスは、オーセンティケーターとしてのみ機能します。ただし、認証イベントの結果に基づいてトラフィックを許可および拒否するスクリプトを作成できます。
この手順はサポートされておらず、エンタープライズ対応のソリューションではありません。hostapd_cli
によって取得されたイベントを評価することにより、トラフィックをブロックまたは許可する方法のみを示しています。
802-1x-tr-mgmt
systemd サービスが開始すると、RHEL は LAN(EAPOL) パケットを介した拡張認証プロトコルを除く hostapd
のリッスンポート上のすべてのトラフィックをブロックし、hostapd_cli
ユーティリティーを使用して hostapd
制御インターフェイスに接続します。次に、/usr/local/bin/802-1x-tr-mgmt
スクリプトがイベントを評価します。hostapd_cli
が受信するさまざまなイベントに応じて、スクリプトは MAC アドレスのトラフィックを許可またはブロックします。802-1x-tr-mgmt
サービスが停止すると、すべてのトラフィックが自動的に再度許可されることに注意してください。
hostapd
サーバーでこの手順を実行します。
前提条件
-
hostapd
サービスが設定され、サービスはクライアントを認証する準備ができています。
手順
次のコンテンツで
/usr/local/bin/802-1x-tr-mgmt
ファイルを作成します。#!/bin/sh if [ "x$1" == "xblock_all" ] then nft delete table bridge tr-mgmt-br0 2>/dev/null || true nft -f - << EOF table bridge tr-mgmt-br0 { set allowed_macs { type ether_addr } chain accesscontrol { ether saddr @allowed_macs accept ether daddr @allowed_macs accept drop } chain forward { type filter hook forward priority 0; policy accept; meta ibrname "br0" jump accesscontrol } } EOF echo "802-1x-tr-mgmt Blocking all traffic through br0. Traffic for given host will be allowed after 802.1x authentication" elif [ "x$1" == "xallow_all" ] then nft delete table bridge tr-mgmt-br0 echo "802-1x-tr-mgmt Allowed all forwarding again" fi case ${2:-NOTANEVENT} in AP-STA-CONNECTED | CTRL-EVENT-EAP-SUCCESS | CTRL-EVENT-EAP-SUCCESS2) nft add element bridge tr-mgmt-br0 allowed_macs { $3 } echo "$1: Allowed traffic from $3" ;; AP-STA-DISCONNECTED | CTRL-EVENT-EAP-FAILURE) nft delete element bridge tr-mgmt-br0 allowed_macs { $3 } echo "802-1x-tr-mgmt $1: Denied traffic from $3" ;; esac
次のコンテンツで
/etc/systemd/system/802-1x-tr-mgmt@.service
サービスファイルを作成します。[Unit] Description=Example 802.1x traffic management for hostapd After=hostapd.service After=sys-devices-virtual-net-%i.device [Service] Type=simple ExecStartPre=-/bin/sh -c '/usr/sbin/tc qdisc del dev %i ingress > /dev/null 2>&1' ExecStartPre=-/bin/sh -c '/usr/sbin/tc qdisc del dev %i clsact > /dev/null 2>&1' ExecStartPre=/usr/sbin/tc qdisc add dev %i clsact ExecStartPre=/usr/sbin/tc filter add dev %i ingress pref 10000 protocol 0x888e matchall action ok index 100 ExecStartPre=/usr/sbin/tc filter add dev %i ingress pref 10001 protocol all matchall action drop index 101 ExecStart=/usr/sbin/hostapd_cli -i %i -a /usr/local/bin/802-1x-tr-mgmt ExecStopPost=-/usr/sbin/tc qdisc del dev %i clsact [Install] WantedBy=multi-user.target
systemd を再ロードします。
# systemctl daemon-reload
hostapd
がリッスンしているインターフェイス名で802-1x-tr-mgmt
サービスを有効にして開始します。# systemctl enable --now 802-1x-tr-mgmt@br0.service
検証
ネットワークに対してクライアントで認証します。参照:
関連情報
-
systemd.service(5)
man ページ
第18章 ファイルシステムに保存されている証明書で 802.1X 標準を使用した、ネットワークへの RHEL クライアントの認証
管理者は、IEEE 802.1X 標準に基づいてポートベースのネットワークアクセス制御 (NAC) を使用して、承認されていない LAN および Wi-Fi クライアントからネットワークを保護します。本セクションの手順では、ネットワーク認証を設定するさまざまなオプションを説明します。
18.1. nmcli を使用して、既存のイーサネット接続での 802.1X ネットワーク認証の設定
nmcli
ユーティリティーを使用して、クライアントがネットワークに対して自己認証するように設定できます。たとえば、enp1s0
という名前の既存の NetworkManager イーサネット接続プロファイルで TLS 認証を設定して、ネットワークに対して認証を行います。
前提条件
- ネットワークは 802.1X ネットワーク認証をサポートしている。
- イーサネット接続プロファイルが NetworkManager に存在し、有効な IP 設定があります。
TLS 認証に必要な以下のファイルがクライアントにある。
-
クライアント鍵が保存されているのは
/etc/pki/tls/private/client.key
ファイルで、そのファイルは所有されており、root
ユーザーのみが読み取り可能です。 -
クライアント証明書は
/etc/pki/tls/certs/client.crt
に保存されます。 -
認証局 (CA) 証明書は、
/etc/pki/tls/certs/ca.crt
ファイルに保存されています。
-
クライアント鍵が保存されているのは
-
wpa_supplicant
パッケージがインストールされている。
手順
EAP (Extensible Authentication Protocol) を
tls
に設定し、クライアント証明書および鍵ファイルへのパスを設定します。# nmcli connection modify enp1s0 802-1x.eap tls 802-1x.client-cert /etc/pki/tls/certs/client.crt 802-1x.private-key /etc/pki/tls/certs/certs/client.key
1 つのコマンドで、
802-1x.eap
パラメーター、802-1x.client-cert
パラメーター、および802-1x.private-key
パラメーターを設定する必要があります。CA 証明書のパスを設定します。
# nmcli connection modify enp1s0 802-1x.ca-cert /etc/pki/tls/certs/ca.crt
証明書で使用するユーザーの ID を設定します。
# nmcli connection modify enp1s0 802-1x.identity user@example.com
必要に応じて、パスワードを設定に保存します。
# nmcli connection modify enp1s0 802-1x.private-key-password password
重要デフォルトでは、NetworkManager は、パスワードを、
/etc/sysconfig/network-scripts/keys-connection_name
ファイルにクリアテキストで保存します。これは、root
ユーザーのみが読み取れるようにします。ただし、設定ファイルのクリアテキストパスワードはセキュリティーリスクとなる可能性があります。セキュリティーを強化するには、
802-1x.password-flags
パラメーターを0x1
に設定します。この設定では、GNOME デスクトップ環境またはnm-applet
が実行中のサーバーで、NetworkManager がこれらのサービスからパスワードを取得します。その他の場合は、NetworkManager によりパスワードの入力が求められます。接続プロファイルをアクティベートします。
# nmcli connection up enp1s0
検証手順
- ネットワーク認証が必要なネットワーク上のリソースにアクセスします。
関連情報
- イーサネット接続の設定
-
man ページの
nm-settings(5)
-
man ページの
nmcli(1)
18.2. nmstatectl を使用した 802.1X ネットワーク認証による静的イーサネット接続の設定
nmstate
ユーティリティーを使用して、802.1X 規格を使用してクライアントを認証するイーサネット接続を作成できます。たとえば、以下の設定で enp1s0
インターフェイスのイーサネット接続を追加します。
-
静的 IPv4 アドレス: サブネットマスクが
/24
の192.0.2.1
-
静的 IPv6 アドレス -
2001:db8:1::1
(/64
サブネットマスクあり) -
IPv4 デフォルトゲートウェイ -
192.0.2.254
-
IPv6 デフォルトゲートウェイ -
2001:db8:1::fffe
-
IPv4 DNS サーバー -
192.0.2.200
-
IPv6 DNS サーバー -
2001:db8:1::ffbb
-
DNS 検索ドメイン -
example.com
-
TLS
Extensible Authentication Protocol (EAP) を使用した 802.1X ネットワーク認証
nmstate
ライブラリーは、TLS
EAP メソッドのみに対応します。
前提条件
- ネットワークは 802.1X ネットワーク認証をサポートしている。
- 管理ノードは NetworkManager を使用している。
TLS 認証に必要な以下のファイルがクライアントにある。
-
クライアント鍵が保存されているのは
/etc/pki/tls/private/client.key
ファイルで、そのファイルは所有されており、root
ユーザーのみが読み取り可能です。 -
クライアント証明書は
/etc/pki/tls/certs/client.crt
に保存されます。 -
認証局 (CA) 証明書は、
/etc/pki/tls/certs/ca.crt
ファイルに保存されています。
-
クライアント鍵が保存されているのは
手順
以下の内容を含む YAML ファイル (例:
~/create-ethernet-profile.yml
) を作成します。--- interfaces: - name: enp1s0 type: ethernet state: up ipv4: enabled: true address: - ip: 192.0.2.1 prefix-length: 24 dhcp: false ipv6: enabled: true address: - ip: 2001:db8:1::1 prefix-length: 64 autoconf: false dhcp: false 802.1x: ca-cert: /etc/pki/tls/certs/ca.crt client-cert: /etc/pki/tls/certs/client.crt eap-methods: - tls identity: client.example.org private-key: /etc/pki/tls/private/client.key private-key-password: password routes: config: - destination: 0.0.0.0/0 next-hop-address: 192.0.2.254 next-hop-interface: enp1s0 - destination: ::/0 next-hop-address: 2001:db8:1::fffe next-hop-interface: enp1s0 dns-resolver: config: search: - example.com server: - 192.0.2.200 - 2001:db8:1::ffbb
設定をシステムに適用します。
# nmstatectl apply ~/create-ethernet-profile.yml
検証
- ネットワーク認証が必要なネットワーク上のリソースにアクセスします。
18.3. RHEL システムロールを使用した 802.1X ネットワーク認証による静的イーサネット接続の設定
network
RHEL システムロールを使用して、802.1X 規格を使用してクライアントを認証するイーサネット接続の作成を自動化できます。たとえば、Ansible Playbook を実行して、以下の設定で enp1s0
インターフェイスのイーサネット接続をリモートで追加します。
-
静的 IPv4 アドレス: サブネットマスクが
/24
の192.0.2.1
-
静的 IPv6 アドレス -
2001:db8:1::1
(/64
サブネットマスクあり) -
IPv4 デフォルトゲートウェイ -
192.0.2.254
-
IPv6 デフォルトゲートウェイ -
2001:db8:1::fffe
-
IPv4 DNS サーバー -
192.0.2.200
-
IPv6 DNS サーバー -
2001:db8:1::ffbb
-
DNS 検索ドメイン -
example.com
-
TLS
Extensible Authentication Protocol (EAP) を使用した 802.1X ネットワーク認証
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理ノードを準備している
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo
権限があります。 - この Playbook を実行するホストまたはホストグループは、Ansible インベントリーファイルにリストされています。
- ネットワークは 802.1X ネットワーク認証をサポートしている。
- 管理対象ノードは NetworkManager を使用します。
TLS 認証に必要な以下のファイルがコントロールノードにある。
-
クライアントキーは、
/srv/data/client.key
ファイルに保存されます。 -
クライアント証明書は
/srv/data/client.crt
ファイルに保存されます。 -
認証局 (CA) 証明書は、
/srv/data/ca.crt
ファイルに保存されます。
-
クライアントキーは、
手順
~/enable-802.1x.yml
などの Playbook ファイルを次の内容で作成します。--- - name: Configure an Ethernet connection with 802.1X authentication hosts: managed-node-01.example.com tasks: - name: Copy client key for 802.1X authentication copy: src: "/srv/data/client.key" dest: "/etc/pki/tls/private/client.key" mode: 0600 - name: Copy client certificate for 802.1X authentication copy: src: "/srv/data/client.crt" dest: "/etc/pki/tls/certs/client.crt" - name: Copy CA certificate for 802.1X authentication copy: src: "/srv/data/ca.crt" dest: "/etc/pki/ca-trust/source/anchors/ca.crt" - include_role: name: rhel-system-roles.network vars: network_connections: - name: enp1s0 type: ethernet autoconnect: yes ip: address: - 192.0.2.1/24 - 2001:db8:1::1/64 gateway4: 192.0.2.254 gateway6: 2001:db8:1::fffe dns: - 192.0.2.200 - 2001:db8:1::ffbb dns_search: - example.com ieee802_1x: identity: user_name eap: tls private_key: "/etc/pki/tls/private/client.key" private_key_password: "password" client_cert: "/etc/pki/tls/certs/client.crt" ca_cert: "/etc/pki/ca-trust/source/anchors/ca.crt" domain_suffix_match: example.com state: up
Playbook を実行します。
# ansible-playbook ~/enable-802.1x.yml
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.network/README.md
ファイル
第19章 デフォルトのゲートウェイ設定の管理
デフォルトゲートウェイは、他のルートがパケットの宛先と一致する場合にネットワークパケットを転送するルーターです。ローカルネットワークでは、通常、デフォルトゲートウェイは、インターネットの近くの 1 ホップのホストです。
19.1. nmcli を使用して、既存の接続でデフォルトのゲートウェイを設定
ほとんどの場合、管理者は、nmcli を使用した静的イーサネット接続の設定 などの説明に従って接続を作成する場合のデフォルトのゲートウェイを設定します。
ほとんどの場合、管理者は、接続を作成する場合のデフォルトのゲートウェイを設定します。ただし、nmcli
ユーティリティーを使用して、以前に作成した接続でデフォルトのゲートウェイ設定を設定したり、更新したりできます。
前提条件
- デフォルトゲートウェイが設定されている接続で、静的 IP アドレスを少なくとも 1 つ設定している。
-
物理コンソールにログインしている場合は、十分な権限を有している。それ以外の場合は、
root
権限が必要になります。
手順
デフォルトゲートウェイの IP アドレスを設定します。
たとえば、
example
接続のデフォルトゲートウェイの IPv4 アドレスを192.0.2.1
に設定するには、次のコマンドを実行します。# nmcli connection modify example ipv4.gateway "192.0.2.1"
たとえば、
example
接続のデフォルトゲートウェイの IPv6 アドレスを2001:db8:1::1
に設定するには、次のコマンドを実行します。# nmcli connection modify example ipv6.gateway "2001:db8:1::1"
ネットワーク接続を再起動して、変更を有効にします。たとえば、コマンドラインで
example
接続を再起動するには、次のコマンドを実行します。# nmcli connection up example
警告このネットワーク接続を現在使用しているすべての接続が、再起動時に一時的に中断されます。
必要に応じて、ルートがアクティブであることを確認します。
IPv4 デフォルトゲートウェイを表示するには、次のコマンドを実行します。
#
ip -4 route
default via 192.0.2.1 dev example proto static metric 100IPv6 デフォルトゲートウェイを表示するには、次のコマンドを実行します。
#
ip -6 route
default via 2001:db8:1::1 dev example proto static metric 100 pref medium
19.2. nmcli インタラクティブモードを使用して、既存の接続でデフォルトゲートウェイを設定
ほとんどの場合、管理者は、nmcli インタラクティブエディターを使用した動的イーサネット接続の設定 などの説明に従って、接続を作成する場合のデフォルトのゲートウェイを設定します。
ほとんどの場合、管理者は、接続を作成する場合のデフォルトのゲートウェイを設定します。ただし、nmcli
ユーティリティーのインタラクティブモードを使用して、以前に作成した接続でデフォルトのゲートウェイ設定を設定したり、更新したりすることもできます。
前提条件
- デフォルトゲートウェイが設定されている接続で、静的 IP アドレスを少なくとも 1 つ設定している。
-
物理コンソールにログインしている場合は、十分な権限を有している。それ以外の場合は、
root
権限が必要になります。
手順
必要な接続に対して
nmcli
インタラクティブモードを開きます。たとえば、example 接続のnmcli
インタラクティブモードを開くには、次のコマンドを実行します。# nmcli connection edit example
デフォルトのゲートウェイを設定します。
たとえば、
example
接続のデフォルトゲートウェイの IPv4 アドレスを192.0.2.1
に設定するには、次のコマンドを実行します。nmcli> set ipv4.gateway 192.0.2.1
たとえば、
example
接続のデフォルトゲートウェイの IPv6 アドレスを2001:db8:1::1
に設定するには、次のコマンドを実行します。nmcli> set ipv6.gateway 2001:db8:1::1
必要に応じて、デフォルトゲートウェイが正しく設定されていることを確認します。
nmcli> print ... ipv4.gateway: 192.0.2.1 ... ipv6.gateway: 2001:db8:1::1 ...
設定を保存します。
nmcli> save persistent
ネットワーク接続を再起動して、変更を有効にします。
nmcli> activate example
警告このネットワーク接続を現在使用しているすべての接続が、再起動時に一時的に中断されます。
nmcli
インタラクティブモードを終了します。nmcli> quit
必要に応じて、ルートがアクティブであることを確認します。
IPv4 デフォルトゲートウェイを表示するには、次のコマンドを実行します。
# ip -4 route default via 192.0.2.1 dev example proto static metric 100
IPv6 デフォルトゲートウェイを表示するには、次のコマンドを実行します。
# ip -6 route default via 2001:db8:1::1 dev example proto static metric 100 pref medium
19.3. using nm-connection-editor で、既存の接続にデフォルトのゲートウェイを設定
ほとんどの場合、管理者は、接続を作成する場合のデフォルトのゲートウェイを設定します。ただし、nm-connection-editor
アプリケーションを使用して、以前に作成した接続でデフォルトのゲートウェイ設定を設定したり、更新したりすることもできます。
前提条件
- デフォルトゲートウェイが設定されている接続で、静的 IP アドレスを少なくとも 1 つ設定している。
手順
端末を開き、
nm-connection-editor
と入力します。# nm-connection-editor
- 変更する接続を選択し、歯車のアイコンをクリックして、既存の接続を編集します。
IPv4 デフォルトゲートウェイを設定します。たとえば、その接続のデフォルトゲートウェイの IPv4 アドレスを
192.0.2.1
に設定します。-
IPv4 Settings
タブを開きます。 そのゲートウェイのアドレスが含まれる IP アドレスの範囲の隣の
gateway
フィールドにアドレスを入力します。
-
IPv6 デフォルトゲートウェイを設定します。たとえば、接続のデフォルトゲートウェイの IPv6 アドレスを
2001:db8:1::1
に設定するには、以下を行います。-
IPv6
タブを開きます。 そのゲートウェイのアドレスが含まれる IP アドレスの範囲の隣の
gateway
フィールドにアドレスを入力します。
-
- OK をクリックします。
- 保存 をクリックします。
ネットワーク接続を再起動して、変更を有効にします。たとえば、コマンドラインで
example
接続を再起動するには、次のコマンドを実行します。# nmcli connection up example
警告このネットワーク接続を現在使用しているすべての接続が、再起動時に一時的に中断されます。
必要に応じて、ルートがアクティブであることを確認します。
IPv4 デフォルトゲートウェイを表示するには、次のコマンドを実行します。
# ip -4 route default via 192.0.2.1 dev example proto static metric 100
IPv6 デフォルトゲートウェイを表示するには、次のコマンドを実行します。
# ip -6 route default via 2001:db8:1::1 dev example proto static metric 100 pref medium
19.4. control-center を使用して、既存の接続でフォルトのゲートウェイを設定
ほとんどの場合、管理者は、接続を作成する場合のデフォルトのゲートウェイを設定します。ただし、control-center
アプリケーションを使用して、以前に作成した接続でデフォルトのゲートウェイ設定を設定したり、更新したりできます。
前提条件
- デフォルトゲートウェイが設定されている接続で、静的 IP アドレスを少なくとも 1 つ設定している。
-
control-center
アプリケーションで、接続のネットワーク設定を開いている。
手順
IPv4 デフォルトゲートウェイを設定します。たとえば、その接続のデフォルトゲートウェイの IPv4 アドレスを
192.0.2.1
に設定します。-
IPv4
タブを開きます。 そのゲートウェイのアドレスが含まれる IP アドレスの範囲の隣の
gateway
フィールドにアドレスを入力します。
-
IPv6 デフォルトゲートウェイを設定します。たとえば、接続のデフォルトゲートウェイの IPv6 アドレスを
2001:db8:1::1
に設定するには、以下を行います。-
IPv6
タブを開きます。 そのゲートウェイのアドレスが含まれる IP アドレスの範囲の隣の
gateway
フィールドにアドレスを入力します。
-
- 適用 をクリックします。
Network
ウィンドウに戻り、接続のボタンを Off に切り替えてから On に戻して、接続を無効にして再度有効にし、変更を適用します。警告このネットワーク接続を現在使用しているすべての接続が、再起動時に一時的に中断されます。
必要に応じて、ルートがアクティブであることを確認します。
IPv4 デフォルトゲートウェイを表示するには、次のコマンドを実行します。
$ ip -4 route default via 192.0.2.1 dev example proto static metric 100
IPv6 デフォルトゲートウェイを表示するには、次のコマンドを実行します。
$ ip -6 route default via 2001:db8:1::1 dev example proto static metric 100 pref medium
19.5. nmstatectl を使用して既存の接続でデフォルトのゲートウェイを設定
ほとんどの場合、管理者は、接続を作成する場合のデフォルトのゲートウェイを設定します。ただし、nmstatectl
ユーティリティーを使用してネットワーク接続のデフォルトのゲートウェイ設定を設定したり、更新したりすることもできます。
前提条件
- デフォルトゲートウェイが設定されている接続で、静的 IP アドレスを少なくとも 1 つ設定している。
-
enp1s0
インターフェイスが設定され、デフォルトゲートウェイの IP アドレスがこのインターフェイスの IP 設定のサブネット内にある。 -
nmstate
パッケージがインストールされている。
手順
以下の内容を含む YAML ファイル (例:
~/set-default-gateway.yml
) を作成します。--- routes: config: - destination: 0.0.0.0/0 next-hop-address: 192.0.2.1 next-hop-interface: enp1s0
設定をシステムに適用します。
# nmstatectl apply ~/set-default-gateway.yml
関連情報
-
nmstatectl(8)
の man ページ -
/usr/share/doc/nmstate/examples/
directory
19.6. RHEL システムロールを使用して、既存の接続でデフォルトのゲートウェイを設定
network
の RHEL システムロールを使用して、デフォルトゲートウェイを設定できます。
network
の RHEL システムロールを使用する再生を実行すると、設定値が再生で指定されたものと一致しない場合に、システムロールが同じ名前の既存の接続プロファイルを上書きします。したがって、IP 設定がすでに存在している場合でも、プレイでネットワーク接続プロファイルの設定全体を指定する必要があります。それ以外の場合は、ロールはこれらの値をデフォルト値にリセットします。
この手順では、すでに存在するかどうかに応じて、以下の設定で enp1s0
接続プロファイルを作成または更新します。
-
静的 IPv4 アドレス -
/24
サブネットマスクを持つ198.51.100.20
-
静的 IPv6 アドレス -
2001:db8:1::1
(/64
サブネットマスクあり) -
IPv4 デフォルトゲートウェイ -
198.51.100.254
-
IPv6 デフォルトゲートウェイ -
2001:db8:1::fffe
-
IPv4 DNS サーバー -
198.51.100.200
-
IPv6 DNS サーバー -
2001:db8:1::ffbb
-
DNS 検索ドメイン -
example.com
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理ノードを準備している
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo
権限があります。 - この Playbook を実行するホストまたはホストグループは、Ansible インベントリーファイルにリストされています。
手順
~/ethernet-connection.yml
などの Playbook ファイルを次の内容で作成します。--- - name: Configure the network hosts: managed-node-01.example.com tasks: - name: Configure an Ethernet connection with static IP and default gateway include_role: name: rhel-system-roles.network vars: network_connections: - name: enp1s0 type: ethernet autoconnect: yes ip: address: - 198.51.100.20/24 - 2001:db8:1::1/64 gateway4: 198.51.100.254 gateway6: 2001:db8:1::fffe dns: - 198.51.100.200 - 2001:db8:1::ffbb dns_search: - example.com state: up
Playbook を実行します。
# ansible-playbook ~/ethernet-connection.yml
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.network/README.md
ファイル
19.7. レガシーネットワークスクリプトの使用時に、既存の接続でデフォルトゲートウェイの設定
ほとんどの場合、管理者は、接続を作成する場合のデフォルトのゲートウェイを設定します。ただし、従来のネットワークスクリプトを使用する際に、以前に作成した接続でデフォルトのゲートウェイ設定を設定したり、更新したりすることもできます。
前提条件
-
NetworkManager
パッケージがインストールされていないか、NetworkManager
サービスが無効になります。 -
network-scripts
パッケージがインストールされている。
手順
/etc/sysconfig/network-scripts/ifcfg-enp1s0
ファイルのGATEWAY
パラメーターを192.0.2.1
に設定します。GATEWAY=192.0.2.1
/etc/sysconfig/network-scripts/route-enp0s1
ファイルにデフォルト
エントリーを追加します。default via 192.0.2.1
ネットワークを再起動します。
# systemctl restart network
19.8. NetworkManager が複数のデフォルトゲートウェイを管理する方法
フォールバック上の理由で特定の状況では、ホストに複数のデフォルトゲートウェイを設定します。ただし、非同期ルーティングの問題を回避するために、同じプロトコルの各デフォルトゲートウェイには別のメトリクス値が必要です。RHEL は、最も低いメトリックセットを持つデフォルトゲートウェイへの接続のみを使用することに注意してください。
以下のコマンドを使用して、接続の IPv4 ゲートウェイと IPv6 ゲートウェイの両方にメトリクスを設定できます。
# nmcli connection modify connection-name ipv4.route-metric value ipv6.route-metric value
ルーティングの問題を回避するために、複数の接続プロファイルで同じプロトコルに同じメトリック値を設定しないでください。
メトリック値なしでデフォルトのゲートウェイを設定すると、NetworkManager は、インターフェイスタイプに基づいてメトリック値を自動的に設定します。このため、NetworkManager は、アクティブな最初の接続に、このネットワークタイプのデフォルト値を割り当て、そのネットワークタイプがアクティベートされる順序で、同じタイプの他の接続にインクリメントした値を設定します。たとえば、デフォルトゲートウェイを持つ 2 つのイーサネット接続が存在する場合、NetworkManager は、ルートに 100
のメトリックを、最初にアクティブにしている接続のデフォルトゲートウェイに設定します。2 つ目の接続では、NetworkManager は 101
を設定します。
以下は、よく使用されるネットワークタイプと、そのデフォルトのメトリックの概要です。
connection.type | デフォルトのメトリクス値 |
---|---|
VPN | 50 |
イーサネット | 100 |
MACsec | 125 |
Infiniband | 150 |
bond= | 300 |
team= | 350 |
VLAN | 400 |
ブリッジ | 425 |
TUN | 450 |
Wi-Fi | 600 |
IP トンネル | 675 |
19.9. 特定のプロファイルでのデフォルトゲートウェイの指定を防ぐための NetworkManager の設定
NetworkManager が特定のプロファイルを使用してデフォルトゲートウェイを指定しないようにすることができます。デフォルトゲートウェイに接続されていない接続プロファイルには、以下の手順に従います。
前提条件
- デフォルトゲートウェイに接続されていない接続の NetworkManager 接続プロファイルが存在する。
手順
接続で動的 IP 設定を使用する場合は、NetworkManager が、IPv4 および IPv6 接続のデフォルトルートとして接続を使用しないように設定します。
# nmcli connection modify connection_name ipv4.never-default yes ipv6.never-default yes
ipv4.never-default
およびipv6.never-default
をyes
に設定すると、対応するプロトコルのデフォルトのゲートウェイ IP アドレスが、接続プロファイルから削除されることに注意してください。接続をアクティベートします。
# nmcli connection up connection_name
検証手順
-
ip -4 route
コマンドおよびip -6 route
コマンドを使用して、RHEL が、IPv4 プロトコルおよび IPv6 プロトコルのデフォルトルートにネットワークインターフェイスを使用しないことを確認します。
19.10. 複数のデフォルトゲートウェイによる予期しないルーティング動作の修正
マルチパス TCP を使用する場合など、ホストで複数のデフォルトゲートウェイが必要なシナリオはそれほどありません。多くの場合、ルーティングの動作や非同期ルーティングの問題を回避するために、1 つのデフォルトゲートウェイのみを設定します。
異なるインターネットプロバイダーにトラフィックをルーティングするには、複数のデフォルトゲートウェイの代わりにポリシーベースのルーティングを使用します。
前提条件
- ホストは NetworkManager を使用してネットワーク接続を管理します。これはデフォルトです。
- ホストには複数のネットワークインターフェイスがある。
- ホストには複数のデフォルトゲートウェイが設定されている。
手順
ルーティングテーブルを表示します。
IPv4 の場合は、次のコマンドを実行します。
# ip -4 route default via 192.0.2.1 dev enp1s0 proto static metric 101 default via 198.51.100.1 dev enp7s0 proto static metric 102 ...
IPv6 の場合は、次のコマンドを実行します。
# ip -6 route default via 2001:db8:1::1 dev enp1s0 proto static metric 101 pref medium default via 2001:db8:2::1 dev enp7s0 proto static metric 102 pref medium ...
default
で開始するエントリーはデフォルトのルートを示します。dev
の横に表示されるこれらのエントリーのインターフェイス名を書き留めます。以下のコマンドを使用して、前の手順で特定したインターフェイスを使用する NetworkManager 接続を表示します。
# nmcli -f GENERAL.CONNECTION,IP4.GATEWAY,IP6.GATEWAY device show enp1s0 GENERAL.CONNECTION: Corporate-LAN IP4.GATEWAY: 192.168.122.1 IP6.GATEWAY: 2001:db8:1::1 # nmcli -f GENERAL.CONNECTION,IP4.GATEWAY,IP6.GATEWAY device show enp7s0 GENERAL.CONNECTION: Internet-Provider IP4.GATEWAY: 198.51.100.1 IP6.GATEWAY: 2001:db8:2::1
この例では、
Corporate-LAN
とInternet-Provider
という名前のプロファイルにはデフォルトのゲートウェイが設定されています。これは、ローカルネットワークでは、通常、インターネット 1 ホップ近いホストがデフォルトゲートウェイであるため、この手順の残りの部分では、Corporate-LAN
のデフォルトゲートウェイが正しくないことを想定するためです。NetworkManager が、IPv4 および IPv6 接続のデフォルトルートとして
Corporate-LAN
接続を使用しないように設定します。# nmcli connection modify Corporate-LAN ipv4.never-default yes ipv6.never-default yes
ipv4.never-default
およびipv6.never-default
をyes
に設定すると、対応するプロトコルのデフォルトのゲートウェイ IP アドレスが、接続プロファイルから削除されることに注意してください。Corporate-LAN
接続をアクティブにします。# nmcli connection up Corporate-LAN
検証手順
IPv4 および IPv6 ルーティングテーブルを表示し、プロトコルごとに 1 つのデフォルトゲートウェイのみが利用可能であることを確認します。
IPv4 の場合は、次のコマンドを実行します。
# ip -4 route default via 192.0.2.1 dev enp1s0 proto static metric 101 ...
IPv6 の場合は、次のコマンドを実行します。
# ip -6 route default via 2001:db8:1::1 dev enp1s0 proto static metric 101 pref medium ...
第20章 静的ルートの設定
ルーティングにより、相互に接続されたネットワーク間でトラフィックを送受信できるようになります。大規模な環境では、管理者は通常、ルーターが他のルーターについて動的に学習できるようにサービスを設定します。小規模な環境では、管理者は多くの場合、静的ルートを設定して、トラフィックが 1 つのネットワークから次のネットワークに確実に到達できるようにします。
次の条件がすべて当てはまる場合、複数のネットワーク間で機能する通信を実現するには、静的ルートが必要です。
- トラフィックは複数のネットワークを通過する必要があります。
- デフォルトゲートウェイを通過する排他的なトラフィックフローは十分ではありません。
「静的ルートを必要とするネットワークの例」 では、スタティックルートを設定しない場合のシナリオと、異なるネットワーク間でトラフィックがどのように流れるかについて説明します。
20.1. 静的ルートを必要とするネットワークの例
すべての IP ネットワークが 1 つのルーターを介して直接接続されているわけではないため、この例では静的ルートが必要です。スタティックルートがないと、一部のネットワークは相互に通信できません。さらに、一部のネットワークからのトラフィックは一方向にしか流れません。
この例のネットワークトポロジーは人為的なものであり、静的ルーティングの概念を説明するためにのみ使用されています。これは、実稼働環境で推奨されるトポロジーではありません。
この例のすべてのネットワーク間で通信を機能させるには、Raleigh (198.51.100.0/24
) への静的ルートを設定し、次のホップ Router 2 (203.0.113.10
) を設定します。ネクストホップの IP アドレスは、データセンターネットワークのルーター 2 のものです (203.0.113.0/24
)。
スタティックルートは次のように設定できます。
-
設定を簡素化するには、この静的ルートをルーター 1 だけに設定します。ただし、データセンター (
203.0.113.0/24
) からのホストがトラフィックを Raleigh (198.51.100.0/24
) に送信するため、常にルーター 1 を経由してルーター 2 に送信されるため、ルーター 1 のトラフィックが増加します。 -
より複雑な設定の場合、データセンター (
203.0.113.0/24
) 内のすべてのホストでこの静的ルートを設定します。このサブネット内のすべてのホストは、Raleigh (198.51.100.0/24
) に近いルーター 2 (203.0.113.10
) にトラフィックを直接送信します。
どのネットワーク間でトラフィックが流れるかどうかの詳細については、図の下の説明を参照してください。

必要な静的ルートが設定されていない場合、通信が機能する状況とそうで ない場合は、以下のようになります。
ベルリンネットワークのホスト (
192.0.2.0/24
):- 直接接続されているため、同じサブネット内の他のホストと通信できます。
-
ルーター 1 はベルリンネットワーク (
192.0.2.0/24
) 内にあり、インターネットにつながるデフォルトゲートウェイがあるため、インターネットと通信できます。 -
ルーター 1 はベルリン (
192.0.2.0/24
) とデータセンター (203.0.113.0/24
) ネットワークの両方にインターフェイスを持っているため、データセンターネットワーク (203.0.113.0/24
) と通信できます。 -
ローリーネットワーク (
198.51.100.0/24
) と通信できません。これは、ルーター 1 がこのネットワークにインターフェイスを持たないためです。したがって、ルーター 1 はトラフィックを独自のデフォルトゲートウェイ (インターネット) に送信します。
データセンターネットワーク内のホスト (
203.0.113.0/24
):- 直接接続されているため、同じサブネット内の他のホストと通信できます。
-
デフォルトゲートウェイがルーター 1 に設定されているため、インターネットと通信できます。ルーター 1 には、データセンター (
203.0.113.0/24
) とインターネットの両方のネットワークにインターフェイスがあります。 -
デフォルトゲートウェイがルーター 1 に設定されているため、ベルリンネットワーク (
192.0.2.0/24
) と通信でき、ルーター 1 にはデータセンター (203.0.113.0/24
) とベルリン (192.0.2.0/24
) の両方にインターフェイスがあります。) ネットワーク。 -
Raleigh ネットワーク (
198.51.100.0/24
) と通信できません。これは、データセンターネットワークがこのネットワークにインターフェイスを持たないためです。したがって、データセンター (203.0.113.0/24
) 内のホストは、トラフィックをデフォルトゲートウェイ (ルーター 1) に送信します。ルーター 1 も Raleigh ネットワーク (198.51.100.0/24
) にインターフェイスを持たないため、ルーター 1 はこのトラフィックを独自のデフォルトゲートウェイ (インターネット) に送信します。
Raleigh ネットワーク内のホスト (
198.51.100.0/24
):- 直接接続されているため、同じサブネット内の他のホストと通信できます。
-
インターネット上のホストと通信できません。デフォルトゲートウェイの設定により、ルーター 2 はトラフィックをルーター 1 に送信します。ルーター 1 の実際の動作は、リバースパスフィルター (
rp_filter
) システム制御 (sysctl
) の設定によって異なります。RHEL のデフォルトでは、Router 1 は送信トラフィックをインターネットにルーティングする代わりにドロップします。ただし、設定された動作に関係なく、スタティックルートがないと通信できません。 -
データセンターネットワーク (
203.0.113.0/24
) と通信できません。デフォルトゲートウェイの設定により、発信トラフィックはルーター 2 を経由して宛先に到達します。ただし、データセンターネットワーク (203.0.113.0/24
) 内のホストがデフォルトゲートウェイ (ルーター 1) に応答を送信するため、パケットへの応答は送信者に届きません。次に、ルーター 1 がトラフィックをインターネットに送信します。 -
ベルリンのネットワーク (
192.0.2.0/24
) と通信できません。デフォルトゲートウェイの設定により、ルーター 2 はトラフィックをルーター 1 に送信します。ルーター 1 の実際の動作は、rp_filter
sysctl
設定によって異なります。RHEL のデフォルトでは、Router 1 は発信トラフィックを Berlin ネットワーク (192.0.2.0/24
) に送信する代わりにドロップします。ただし、設定された動作に関係なく、スタティックルートがないと通信できません。
静的ルートの設定に加え、両方のルーターで IP 転送を有効にする必要があります。
20.2. nmcli コマンドを使用して、静的ルートを設定する方法
静的ルートを設定するには、次の構文で nmcli
ユーティリティーを使用します。
$ nmcli connection modify connection_name ipv4.routes "ip[/prefix] [next_hop] [metric] [attribute=value] [attribute=value] ..."
このコマンドは、次のルート属性に対応します。
-
cwnd=n
: パケット数で定義された輻輳ウィンドウ (CWND) サイズを設定します。 -
lock-cwnd=true|false
: カーネルが CWND 値を更新できるかどうかを定義します。 -
lock-mtu=true|false
: カーネルが MTU をパス MTU ディスカバリーに更新できるかどうかを定義します。 -
lock-window=true|false
: カーネルが TCP パケットの最大ウィンドウサイズを更新できるかどうかを定義します。 -
mtu=n
: 宛先へのパスに沿って使用する最大転送単位 (MTU) を設定します。 -
onlink=true|false
: ネクストホップがどのインターフェイス接頭辞とも一致しない場合でも、このリンクに直接接続されるかどうかを定義します。 -
scope=n
: IPv4 ルートの場合、この属性は、ルート 接頭辞によってカバーされる宛先の範囲を設定します。値を整数 (0〜255) として設定します。 -
src=address
: ルート接頭辞の対象となる宛先にトラフィックを送信するときに優先する送信元アドレスを設定します。 -
table=table_id
: ルートを追加するテーブルの ID を設定します。このパラメーターを省略すると、NetworkManager はmain
テーブルを使用します。 -
tos=n
: サービスのタイプ (TOS) キーを設定します。値を整数 (0〜255) として設定します。 -
type=value
: ルートタイプを設定します。NetworkManager は、unicast
、local
、blackhole
、unreachable
、prevent
、およびthrow
ルートタイプをサポートします。デフォルトはunicast
です。 -
window=n
: これらの宛先にアドバタイズする TCP の最大ウィンドウサイズをバイト単位で設定します。
ipv4.routes
サブコマンドを使用する場合は、nmcli
が、このパラメーターの現在の設定をすべて上書きします。
ルートを追加するには:
$ nmcli connection modify connection_name +ipv4.routes "..."
同様に、特定のルートを削除するには:
$ nmcli connection modify connection_name -ipv4.routes "..."
20.3. nmcli コマンドによる静的ルートの設定
nmcli connection modify
コマンドを使用して、既存の NetworkManager 接続プロファイルに静的ルートを追加できます。
以下の手順では、以下のルートを設定します。
-
リモート
198.51.100.0/24
ネットワークへの IPv4 ルート。IP アドレス192.0.2.10
を持つ対応するゲートウェイは、example
の接続を介して到達可能です。 -
リモート
2001:db8:2::/64
ネットワークへの IPv6 ルート。IP アドレス2001:db8:1::10
を持つ対応するゲートウェイは、example
の接続を介して到達可能です。
前提条件
-
example
の接続プロファイルが存在し、このホストがゲートウェイと同じ IP サブネットになるように設定されています。
手順
example
の接続プロファイルに静的 IPv4 ルートを追加します。# nmcli connection modify example +ipv4.routes "198.51.100.0/24 192.0.2.10"
1 回で複数のルートを設定するには、個々のルートをコンマで区切ってコマンドに渡す必要があります。たとえば、ルートを
198.51.100.0/24
および203.0.113.0/24
のネットワークに追加して、両方のルートが192.0.2.10
ゲートウェイを通るには、以下のコマンドを実行します。# nmcli connection modify example +ipv4.routes "198.51.100.0/24 192.0.2.10, 203.0.113.0/24 192.0.2.10"
example
の接続プロファイルに静的 IPv6 ルートを追加します。# nmcli connection modify example +ipv6.routes "2001:db8:2::/64 2001:db8:1::10"
接続を再度有効にします。
# nmcli connection up example
検証
IPv4 ルートを表示します。
# ip -4 route ... 198.51.100.0/24 via 192.0.2.10 dev enp1s0
IPv6 ルートを表示します。
# ip -6 route ... 2001:db8:2::/64 via 2001:db8:1::10 dev enp1s0 metric 1024 pref medium
関連情報
-
man ページの
nmcli(1)
-
nm-settings-nmcli(5)
man page
20.4. nmtui を使用した静的ルートの設定
nmtui
アプリケーションは、NetworkManager 用のテキストベースのユーザーインターフェイスを提供します。nmtui
を使用して、グラフィカルインターフェイスを使用せずにホスト上で静的ルートを設定できます。
たとえば、以下の手順では 198.51.100.1
で実行しているゲートウェイを使用する 192.0.2.0/24
ネットワークにルートを追加します。これは、既存の接続プロファイルから到達可能です。
nmtui
で 以下を行います。
- カーソルキーを使用してナビゲートします。
- ボタンを選択して Enter を押します。
- Space を使用して、チェックボックスを選択および選択解除します。
前提条件
- ネットワークが設定されている。
- 静的ルートのゲートウェイが、インターフェイスで直接到達できる。
- 物理コンソールにログインしている場合は、十分な権限を有している。それ以外の場合は、コマンドに root 権限が必要になります。
手順
nmtui
を開始します。# nmtui
-
Edit a connection
選択し、Enter を押します。 - 宛先ネットワークへのネクストホップに到達できる接続プロファイルを選択し、Enter を押します。
-
IPv4 ルートまたは IPv6 ルートに応じて、プロトコルの設定エリアの横にある
Show
ボタンを押します。 Routing
の横にあるEdit
ボタンを押します。これにより、静的ルートを設定する新しいウィンドウが開きます。Add
ボタンを押して、次のように入力します。- Classless Inter-Domain Routing (CIDR) 形式の接頭辞を含む宛先ネットワーク
- ネクストホップの IP アドレス
- 同じネットワークに複数のルートを追加し、効率によってルートに優先順位を付けたい場合のメトリック値
- 追加するルートごとに前の手順を繰り返し、この接続プロファイルを介して到達できます。
OK
ボタンを押して、接続設定のウィンドウに戻ります。図20.1 メトリックのない静的ルートの例
-
OK
ボタンを押してnmtui
メインメニューに戻ります。 -
Activate a connection
を選択し、Enter を押します。 編集した接続プロファイルを選択し、Enter キーを 2 回押して非アクティブ化し、再度アクティブ化します。
重要再アクティブ化する接続プロファイルを使用する SSH などのリモート接続で
nmtui
を実行する場合は、この手順をスキップしてください。この場合は、nmtui
で非アクティブ化すると、接続が切断されるため、再度アクティブ化することはできません。この問題を回避するには、nmcli connection connection_profile_name up
コマンドを使用して、前述のシナリオで接続を再アクティブ化します。-
Back
ボタンを押してメインメニューに戻ります。 -
Quit
を選択し、Enter キーを押してnmtui
アプリケーションを閉じます。
検証
ルートがアクティブであることを確認します。
$
ip route
... 192.0.2.0/24 via 198.51.100.1 dev example proto static metric 100
20.5. control-center による静的ルートの設定
GNOME で control-center
を使用して、ネットワーク接続の設定に静的ルートを追加します。
以下の手順では、以下のルートを設定します。
-
リモート
198.51.100.0/24
ネットワークへの IPv4 ルート。対応するゲートウェイの IP アドレスは192.0.2.10
です。 -
リモート
2001:db8:2::/64
ネットワークへの IPv6 ルート。対応するゲートウェイの IP アドレスは2001:db8:1::10
です。
前提条件
- ネットワークが設定されている。
- このホストは、ゲートウェイと同じ IP サブネットにあります。
-
control-center
アプリケーションで接続のネットワーク設定が開いている。nm-connection-editor を使用したイーサネット接続の設定 を参照してください。
手順
IPv4
タブで:-
オプション: 必要に応じて、
IPv4
タブのRoutes
セクションの On ボタンをクリックして自動ルートを無効にし、静的ルートのみを使用します。自動ルートが有効になっている場合は、Red Hat Enterprise Linux が静的ルートと、DHCP サーバーから受け取ったルートを使用します。 IPv4 ルートのアドレス、ネットマスク、ゲートウェイ、およびオプションでメトリック値を入力します。
-
オプション: 必要に応じて、
IPv6
タブで:-
オプション:
IPv4
タブのRoutes
セクションの On ボタンをクリックして自動ルートを無効にし、静的ルートのみを使用します。 IPv6 ルートのアドレス、ネットマスク、ゲートウェイ、およびオプションでメトリック値を入力します。
-
オプション:
- 適用 をクリックします。
Network
ウィンドウに戻り、接続のボタンを Off に切り替えてから On に戻して、接続を無効にして再度有効にし、変更を適用します。警告接続を再起動すると、そのインターフェイスの接続が一時的に中断します。
検証
IPv4 ルートを表示します。
# ip -4 route ... 198.51.100.0/24 via 192.0.2.10 dev enp1s0
IPv6 ルートを表示します。
# ip -6 route ... 2001:db8:2::/64 via 2001:db8:1::10 dev enp1s0 metric 1024 pref medium
20.6. nm-connection-editor による静的ルートの設定
nm-connection-editor
アプリケーションを使用して、ネットワーク接続の設定に静的ルートを追加できます。
以下の手順では、以下のルートを設定します。
-
リモート
198.51.100.0/24
ネットワークへの IPv4 ルート。IP アドレス192.0.2.10
を持つ対応するゲートウェイは、example
の接続を介して到達可能です。 -
リモート
2001:db8:2::/64
ネットワークへの IPv6 ルート。IP アドレス2001:db8:1::10
を持つ対応するゲートウェイは、example
の接続を介して到達可能です。
前提条件
- ネットワークが設定されている。
- このホストは、ゲートウェイと同じ IP サブネットにあります。
手順
端末を開き、
nm-connection-editor
と入力します。$
nm-connection-editor
-
example
接続プロファイルを選択し、歯車アイコンをクリックして、既存の接続を変更します。 IPv4 Settings
タブで、以下を行います。- Routes ボタンをクリックします。
Add ボタンをクリックして、アドレス、ネットマスク、ゲートウェイを入力します。必要に応じてメトリック値を入力します。
- OK をクリックします。
IPv6 Settings
タブで、以下を行います。- Routes ボタンをクリックします。
Add ボタンをクリックして、アドレス、ネットマスク、ゲートウェイを入力します。必要に応じてメトリック値を入力します。
- OK をクリックします。
- 保存 をクリックします。
ネットワーク接続を再起動して、変更を有効にします。たとえば、コマンドラインで
example
接続を再起動するには、次のコマンドを実行します。# nmcli connection up example
検証
IPv4 ルートを表示します。
# ip -4 route ... 198.51.100.0/24 via 192.0.2.10 dev enp1s0
IPv6 ルートを表示します。
# ip -6 route ... 2001:db8:2::/64 via 2001:db8:1::10 dev enp1s0 metric 1024 pref medium
20.7. nmcli インタラクティブモードで静的ルートの設定
nmcli
ユーティリティーのインタラクティブモードを使用して、ネットワーク接続の設定に静的ルートを追加できます。
以下の手順では、以下のルートを設定します。
-
リモート
198.51.100.0/24
ネットワークへの IPv4 ルート。IP アドレス192.0.2.10
を持つ対応するゲートウェイは、example
の接続を介して到達可能です。 -
リモート
2001:db8:2::/64
ネットワークへの IPv6 ルート。IP アドレス2001:db8:1::10
を持つ対応するゲートウェイは、example
の接続を介して到達可能です。
前提条件
-
example
の接続プロファイルが存在し、このホストがゲートウェイと同じ IP サブネットになるように設定されています。
手順
example
接続のnmcli
インタラクティブモードを開きます。# nmcli connection edit example
静的 IPv4 ルートを追加します。
nmcli> set ipv4.routes 198.51.100.0/24 192.0.2.10
静的 IPv6 ルートを追加します。
nmcli> set ipv6.routes 2001:db8:2::/64 2001:db8:1::10
必要に応じて、ルートが設定に正しく追加されたことを確認します。
nmcli> print ... ipv4.routes: { ip = 198.51.100.0/24, nh = 192.0.2.10 } ... ipv6.routes: { ip = 2001:db8:2::/64, nh = 2001:db8:1::10 } ...
ip
属性には、転送するネットワークと、ゲートウェイのnh
属性 (次のホップ) が表示されます。設定を保存します。
nmcli> save persistent
ネットワーク接続が再起動します。
nmcli> activate example
nmcli
インタラクティブモードを終了します。nmcli> quit
検証
IPv4 ルートを表示します。
# ip -4 route ... 198.51.100.0/24 via 192.0.2.10 dev enp1s0
IPv6 ルートを表示します。
# ip -6 route ... 2001:db8:2::/64 via 2001:db8:1::10 dev enp1s0 metric 1024 pref medium
関連情報
-
man ページの
nmcli(1)
-
nm-settings-nmcli(5)
man page
20.8. nmstatectl を使用した静的ルートの設定
nmstatectl
ユーティリティーを使用してネットワーク接続の設定に静的ルートを追加できます。
以下の手順では、以下のルートを設定します。
-
リモート
198.51.100.0/24
ネットワークへの IPv4 ルート。IP アドレス192.0.2.10
の対応するゲートウェイは、enp1s0
インターフェイスを介して到達できます。 -
リモート
2001:db8:2::/64
ネットワークへの IPv6 ルート。IP アドレス2001:db8:1::10
の対応するゲートウェイは、enp1s0
インターフェイスを介して到達できます。
前提条件
-
enp1s0
ネットワークインターフェイスが設定され、ゲートウェイと同じ IP サブネット内にあります。 -
nmstate
パッケージがインストールされている。
手順
以下の内容を含む YAML ファイルを作成します (例:
~/add-static-route-to-enp1s0.yml
)。--- routes: config: - destination: 198.51.100.0/24 next-hop-address: 192.0.2.10 next-hop-interface: enp1s0 - destination: 2001:db8:2::/64 next-hop-address: 2001:db8:1::10 next-hop-interface: enp1s0
設定をシステムに適用します。
# nmstatectl apply ~/add-static-route-to-enp1s0.yml
検証
IPv4 ルートを表示します。
# ip -4 route ... 198.51.100.0/24 via 192.0.2.10 dev enp1s0
IPv6 ルートを表示します。
# ip -6 route ... 2001:db8:2::/64 via 2001:db8:1::10 dev enp1s0 metric 1024 pref medium
関連情報
-
nmstatectl(8)
の man ページ -
/usr/share/doc/nmstate/examples/
directory
20.9. RHEL システムロールを使用した静的ルートの設定
network
RHEL System Role を使用して、静的ルートを設定できます。
network
の RHEL システムロールを使用する再生を実行すると、設定値が再生で指定されたものと一致しない場合に、システムロールが同じ名前の既存の接続プロファイルを上書きします。したがって、IP 設定がすでに存在している場合でも、プレイでネットワーク接続プロファイルの設定全体を指定する必要があります。それ以外の場合は、ロールはこれらの値をデフォルト値にリセットします。
この手順では、すでに存在するかどうかに応じて、以下の設定で enp7s0
接続プロファイルを作成または更新します。
-
静的 IPv4 アドレス: サブネットマスクが
/24
の192.0.2.1
-
静的 IPv6 アドレス -
2001:db8:1::1
(/64
サブネットマスクあり) -
IPv4 デフォルトゲートウェイ -
192.0.2.254
-
IPv6 デフォルトゲートウェイ -
2001:db8:1::fffe
-
IPv4 DNS サーバー -
192.0.2.200
-
IPv6 DNS サーバー -
2001:db8:1::ffbb
-
DNS 検索ドメイン -
example.com
静的ルート:
-
198.51.100.0/24
のゲートウェイ192.0.2.10
-
2001:db8:2::/64
とゲートウェイ2001:db8:1::10
-
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理ノードを準備している
- 管理対象ノードで Playbook を実行できるユーザー