RHEL9を題材にnmcliコマンドを使って、ただ単に一からIPアドレス設定をするのではなく、テンプレートとして押さえておきたい設定内容を含めて解説します。
RHEL9では「ifcfgスタイル」と「キーファイル」どちらの設定ファイルを利用して
IPアドレス設定を行っているのかを確認する必要があります。
くわしくは、こちらのURLを参照してください。
今回は、「ifcfgスタイル」と「キーファイル」どちらを利用されていても対応できるように比較しながらIPアドレス設定をしていきます。
IPアドレス設定時の前提条件
「ifcfgスタイル」と「キーファイル」どちらの設定ファイルを利用しているか確認をして設定ファイルがないことを確認する。
-----「キーファイル」でIPアドレス設定する場合-----
ls -ltra /etc/NetworkManager/system-connections
配下にファイルが存在しないこと
-----「ifcfgスタイル」でIPアドレス設定する場合-----
ls -ltra /etc/sysconfig/network-scripts/
配下にファイルが存在しないこと
※IPアドレス設定をするファイルが存在していた場合は、そのファイルを移動させておいてください。
IPアドレス設定前の2つの初期設定
■1つ目
NWインターフェースの「DEVICE」と「NAME」が一致していることを確認する。
nmcli connection show
「NAME]が「DEVICE」と一致しているかを確認する。
一致している例
NAME UUID TYPE DEVICE
enp0s10 eb5e362f-51f5-3e58-a7d0-df1d75c3a676 ethernet enp0s10
-------------------------
※一致していない場合は、以下のコマンドを実行して一致させてください。
nmcli connection modify eb5e362f-51f5-3e58-a7d0-df1d75c3a676 connection.id enp0s10
# nmcli connection modify 【UUID】 connection.id 【NAME】
【NAME】に「DEVICE」名を入力することで「NAME」が「DEVICE」名になります。
一致していない例
NAME UUID TYPE DEVICE
有線接続1 eb5e362f-51f5-3e58-a7d0-df1d75c3a676 ethernet enp0s10
-------------------------
■2つ目
NWデバイスの「UUID」を設定ファイル(ifcfgファイル or キーファイル)に紐づけする。
以下のコマンド実行してください。
nmcli connection show
nmcli connection modify eb5e362f-51f5-3e58-a7d0-df1d75c3a676 connection.id enp0s10
# nmcli connection modify 【UUID】 connection.id 【NAME】
---補足説明----
nmcliコマンドで設定を変更する「modify」オプションなどを実行すると設定ファイルが作成されます。
設定ファイルには、必ず「UUID」が記述されます。
この機能を利用して設定ファイルを作成し、NWデバイスの「UUID」と設定ファイルを紐づけします。
本来、上記のnmcliコマンドの「modify」は、「UUID」と「DEVICE」を紐づけするのに利用する為のものですが、設定ファイルを作成する為に行っているので必ず実行してください。
※「■1つ目」にて、「nmcli connection modify」コマンドをすでに実行している場合はこの「■2つ目」の対応は不要です。
IPアドレス設定(IPV4)
IPアドレス設定するときに、テンプレートとして利用できる設定項目を「キーファイル」と「ifcfgスタイル」に分けて記載しました。
この項目をnmcliコマンドで実行したときの「キーファイル」と「ifcfgスタイル」の設定がどうなるかを解説します。
※基本的に、デバイス、IPアドレス、DNSを変更するだけで、その他の設定項目はそのまま流用しても問題なくIPアドレス設定ができる設定項目になっています。
キーファイル
/etc/NetworkManager/system-connections/enp0s10.nmconnection
[connection]
id=enp0s10
uuid=eb5e362f-51f5-3e58-a7d0-df1d75c3a676
type=ethernet
interface-name=enp0s10
[ethernet]
[ipv4]
address1=192.168.11.32/24,192.168.11.1
dns=192.168.11.2;192.168.11.3;
dns-search=isleofhoso.com;test.com;
may-fail=false
method=manual
ignore-auto-dns=true
never-default=false
autoconnect=true
[ipv6]
method=disabled
never-default=false
may-fail=true
addr-gen-mode=default
[proxy]
browser-only=false
method=0
ifcfgスタイル
/etc/sysconfig/network-scripts/ifcfg-enp0s10
NAME=enp0s10
UUID=eb5e362f-51f5-3e58-a7d0-df1d75c3a676
DEVICE=enp0s10
TYPE=Ethernet
IPADDR=192.168.11.32
PREFIX=24
GATEWAY=192.168.11.1
DNS1=192.168.11.2
DNS2=192.168.11.3
DOMAIN="isleofhoso.com test.com"
IPV4_FAILURE_FATAL=yes
BOOTPROTO=none
PEERDNS=no
DEFROUTE=yes
ONBOOT=yes
IPV6_DISABLED=yes
IPV6INIT=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=default
BROWSER_ONLY=no
PROXY_METHOD=none
1.「IPアドレス設定前の2つの初期設定」と「type(TYPE)」を確認する
※この設定は重要な設定の為、再度記載しています。初期設定で実施していれば実行不要です。
「id(NAME)」「uuid(UUID)」「interface-name(DEVICE)」を紐づけて設定する。
対象のNWデバイスの「TYPE」が「ethernet」になっていることを確認する。
nmcli connection modify eb5e362f-51f5-3e58-a7d0-df1d75c3a676 connection.id enp0s10
nmcli connection show enp0s10
キーファイル | ifcfgスタイル | 解説 |
---|---|---|
[connection] | ― | キーファイルで利用するタグ [connection]はNWデバイス、インターフェース関連を設定する箇所 |
id=enp0s10 | NAME=enp0s10 | 接続プロファイル用(コネクション)の表示名 ※今回の設定は、interface-name(DEVICE)と紐づけてあわせておく |
uuid=eb5e362f-51f5-3e58-a7d0-df1d75c3a676 | UUID=eb5e362f-51f5-3e58-a7d0-df1d75c3a676 | 接続プロファイルを識別するための一意の文字列 ※接続プロファイル用の識別名と紐づけるための文字列 |
interface-name=enp0s3 | DEVICE=enp0s10 | デバイスの名前 ※物理的なNWデバイス名に依存するので個人で名前を決めれない |
type=ethernet | TYPE=Ethernet | 接続(ethernet、vlan、wifiなど)の種類(タイプ)を設定 |
-------------------------
■NWデバイスが表示されなかった場合
NWデバイスを追加する。
以下を実行することは、基本ありません。
# nmcli device
# nmcli connection add type ethernet ifname enp0s10 con-name enp0s10
# nmcli connection show
# nmcli device up enp0s10
-------------------------
2.IPアドレスとDNSを含むネットワーク設定をする
「address1(IPADDR)」「(GATEWAY)」「dns(DNS1,DNS2)」「dns-search(DOMAIN)」「may-fail(IPV4_FAILURE_FATAL)」「method(BOOTPROTO)」「ignore-auto-dns(PEERDNS)」「never-default(DEFROUTE)」「autoconnect(ONBOOT)」を設定する。
nmcli connection modify enp0s10 ipv4.addresses 192.168.11.32/24
nmcli connection modify enp0s10 ipv4.gateway 192.168.11.1
nmcli connection modify enp0s10 ipv4.dns 192.168.11.2,192.168.11.3
nmcli connection modify enp0s10 ipv4.dns-search "isleofhoso.com test.com"
nmcli connection modify enp0s10 ipv4.may-fail no
nmcli connection modify enp0s10 ipv4.method manual
nmcli connection modify enp0s10 ipv4.ignore-auto-dns yes
nmcli connection modify enp0s10 ipv4.never-default no
nmcli connection modify enp0s10 connection.autoconnect yes
キーファイル | ifcfgスタイル | 解説 |
---|---|---|
[ipv4] | ― | キーファイルで利用するタグ [ipv4]を設定する箇所 |
address1 =192.168.11.32/24,192.168.11.1 | IPADDR=192.168.11.32 PREFIX=24 GATEWAY=192.168.11.1 | IPアドレ、サブネットマスク、デフォルトゲートウェイを設定 |
dns=192.168.11.2;192.168.11.3; | DNS1=192.168.11.2 DNS1=192.168.11.3 | DNSサーバを設定 |
dns-search=isleofhoso.com;test.com; | DOMAIN="isleofhoso.com test1.com" | DNS検索ドメインを設定 ※ドメイン名の末尾に自動的に追加され、名前解決に使用されるドメイン名のリストになります。 簡潔なドメイン名でホスト名にアクセスできます。 例えば、「isleofhoso.com」ドメインに属する「srv1」という名前のホストにアクセスする場合、「srv1.isleofhoso.com」という形式でアクセスできます。 NGだった場合は、「srv1.test1.com」という形式でもアクセスします。 |
may-fail=false | IPV4_FAILURE_FATAL=yes | IPv4接続に失敗した場合にシステムを強制的に停止させる設定 ※システムがIPv4接続を必要とする場合に、接続が失敗した場合に即座に問題を特定し、修正するメリットがあります。 |
method=manual | BOOTPROTO=none | 手動でネットワークを設定 ※IPアドレス(address1)が設定されていないとエラーになる ※DHCP設定の場合は、auto(DHCP)と設定 |
ignore-auto-dns=true | PEERDNS=no | 自動的にDNSサーバの設定を取得しないように無効にする設定 |
never-default=false | DEFROUTE=yes | IPV4利用環境化で、デフォルトルートとして自動的に設定される接続を指定する設定 |
autoconnect=true | ONBOOT=yes | サーバ起動時にNWインターフェースを自動で有効にする設定 |
-------------------------
■キーファイルで設定した場合
本来は、「never-default=false」と「autoconnect=true」はデフォルト設定なのでnmcliコマンド実行ではファイルに書き込まれずに省略されます。
-------------------------
3.IPV6関連の設定を無効化する
「method(IPV6_DISABLED)(IPV6INIT)」「addr-gen-mode(IPV6_ADDR_GEN_MODE)」「never-default(IPV6_DEFROUTE)」「may-fail(IPV6_FAILURE_FATAL)」を設定する。
nmcli connection modify enp0s10 ipv6.method disabled
nmcli connection modify enp0s10 ipv6.never-default no
nmcli connection modify enp0s10 ipv6.may-fail yes
nmcli connection modify enp0s10 ipv6.addr-gen-mode default
キーファイル | ifcfgスタイル | 解説 |
---|---|---|
[ipv6] | ― | キーファイルで利用するタグ [ipv6]を設定する箇所 |
method=disabled | IPV6_DISABLED=yes IPV6INIT=no | IPV6を無効にしてIPV6アドレスが割当てできない設定 ※今回は、IPV4で設定しているためIPV6の利用は無効に設定 |
never-default=false | IPV6_DEFROUTE=yes | IPV6利用環境化で、デフォルトルートとして設定 ※IPV6が有効のときに利用する設定の為、今回はIPV6は無効なのでデフォルトの設定になります。 |
may-fail=true | IPV6_FAILURE_FATAL=no | IPv6の設定で、接続に失敗した場合にエラーを出さずに続行するように設定 ※IPV6が有効のときに利用する設定の為、今回はIPV6は無効なのでデフォルトの設定になります。 |
addr-gen-mode=default | IPV6_ADDR_GEN_MODE=default | IPV6アドレスを自動生成する方法を指定する設定 ※IPV6が有効のときに利用する設定の為、今回はIPV6は無効なのでデフォルトの設定になります。 デフォルトの場合、MACアドレスを使用してIPv6アドレスを生成します。 |
-------------------------
■キーファイルで設定した場合
本来は、「never-default=false」と「may-fail=true」はデフォルト設定なのでnmcliコマンド実行ではファイルに書き込まれずに省略されます。
「method=disabled」か「method=ignore」の設定をした状態でnmcliコマンドで「may-fail」の設定は変更できないので注意してください。
「method=disabled」か「method=ignore」にnmcliコマンドで変更した場合、強制的に「may-fail=true」に変更されるので注意してください。
※ifcfgスタイルで設定した場合でも同様です。
-------------------------
■ifcfgスタイルで設定した場合
「IPV6_DISABLED=yes」は、RHEL8.5以降で利用できる設定となっています。
この設定をおこなうと「IPV6INIT=no」に変更されます。
※RHEL8.4以前で設定する場合は「IPV6INIT=no」だけを設定します。
「disabled」の設定がないOSバージョンは「ignore」が「IPV6INIT=no」に該当します。
この時のnmcliコマンドは以下になります。
# nmcli connection modify enp0s10 ipv6.method ignore
-------------------------
4.proxy関連の設定を無効にする
「browser-only(BROWSER_ONLY)」「method(PROXY_METHOD)」を設定する。
nmcli connection modify enp0s10 proxy.browser-only no
nmcli connection modify enp0s10 proxy.method none
キーファイル | ifcfgスタイル | 解説 |
---|---|---|
[proxy] | ― | キーファイルで利用するタグ [proxy]を設定する箇所 |
browser-only=false | BROWSER_ONLY=no | ブラウザーを表示しない設定 ※Webブラウザを使用してネットワークに接続するためのダイアログボックスを表示しないようになります。 |
method=0 | PROXY_METHOD=none | ネットワークプロキシを使用しないように設定 |
-------------------------
■キーファイルで設定した場合
本来は、「browser-only=false」と「method=0」はデフォルト設定なのでnmcliコマンド実行ではファイルに書き込まれずに省略されます。
-------------------------
IPアドレス設定の反映方法(2パターンあり)
nmcliコマンドの「connection」オプションによるIPアドレス設定を行っても、実際のサーバ設定(NWデバイス)に反映されません。
各自で決定した「キーファイル」か「ifcfgスタイル」のどちらかのIPアドレス設定ファイルに更新されるだけになります。
結果、IPアドレスの設定ファイルが更新されることでサーバ再起動などを行っても、設定した内容でサーバが起動されることになり永続的な設定となります。
サーバへ反映するには、IPアドレスの設定ファイルを再読込して反映させる必要があります。
1.「nmcli」コマンドでIPアドレス設定を行った場合
nmcli connection up enp0s10
---補足説明----
nmcliコマンドでIPアドレス設定すると、「nmcli connection show」コマンドで参照できる設定情報(コネクション情報)とIPアドレスの設定ファイルを同時に更新します。
実際のサーバへ反映するには、この設定情報を「nmcli device show」コマンドで確認できるNWデバイスへ反映させる必要があります。
それが、「nmcli connection up」コマンドで、「nmcli connection show」の情報を「nmcli device show」の情報へ反映されます。
2.「キーファイル」か「ifcfgスタイル」を直接変更した場合
nmcli connection reload
nmcli connection up enp0s10
---補足説明----
IPアドレスの設定ファイルを直接修正しても「nmcli connection show」コマンドで参照できる設定情報(コネクション情報)へは、反映されません。
「nmcli connection reload」コマンドで、「nmcli connection show」の情報へ反映されます。
まとめ
- 「/etc/NetworkManager/NetworkManager.conf」ファイルから「キーファイル」か「ifcfgスタイル」どちらの設定ファイルを利用しているか?を確認する
- 設定ファイルが存在していた場合は、設定ファイルバックアップしたから削除する
- 「nmcli connection modify 【UUID】 connection.id 【DEVICE】」コマンドで「NAME」を「DEVICE」名に合わせて、「UUID」と紐づけする
- 「nmcli」コマンドでIPアドレス設定をする
- 「nmcli connection up 【DEVICE】」コマンドでサーバへIPアドレス設定した内容を反映する
※直接、設定ファイルを編集した場合は、「nmcli connection reload」を実行する
コメント