RHEL / CentOS8でNetworkManagerを使用してネットワークを管理する方法


RHELおよびCentOS8では、ネットワークサービスはNetworkManagerデーモンによって管理され、ネットワークデバイスを動的に構成および制御し、接続が利用可能な場合は接続をアクティブに保つために使用されます。

NetworkManagerには、コマンドラインインターフェイスとグラフィカルユーザーインターフェイスツールの両方を使用した簡単なネットワークセットアップと管理のサポート、ネットワーク構成のクエリと制御を可能にするD-Busを介したAPIのサポート、構成の柔軟性のサポートなど、多くの利点があります。

さらに、NetworkManagerはファイルとコックピットWebコンソールを使用して構成することもでき、接続ステータスに基づいて他のサービスを開始または停止するためのカスタムスクリプトの使用をサポートします。

先に進む前に、CentOS/RHEL8でのネットワーキングについて注意すべきその他の重要なポイントを次に示します。

  • The traditional ifcfg type configuration (eg. ifcfg-eth0, ifcfg-enp0s3) files are still supported.
  • Network scripts are deprecated and are no longer provided by default.
  • A minimal installation provides a new version of the ifup and ifdown scripts that call NetworkManager via the nmcli tool.
  • To run the ifup and ifdown scripts, NetworkManager must be running.

CentOS / RHEL8へのNetworkManagerのインストール

NetworkManagerは、CentOS/RHEL 8の基本インストールにプリインストールされている必要があります。それ以外の場合は、図のようにDNFパッケージマネージャーを使用してインストールできます。

# dnf install NetworkManager

NetworkManagerのグローバル設定ファイルは/etc/NetworkManager/NetworkManager.confにあり、追加の設定ファイルは/ etc/NetworkManager /にあります。

CentOS / RHEL8でSystemctlを使用してNetworkManagerを管理する

CentOS/RHEL 8、およびsystemd(システムおよびサービスマネージャー)を採用しているその他の最新のLinuxシステムでは、サービスはsystemctlツールを使用して管理されます。

以下は、NetworkManagerサービスを管理するための便利なsystemctlコマンドです。

CentOS/RHEL 8の最小インストールでは、デフォルトでNetworkManagerが起動され、起動時に自動的に起動できるようになっている必要があります。次のコマンドを使用して、NetworkManagerがアクティブであるか有効になっているかを確認し、NetworkManagerのランタイムステータス情報を出力できます。

# systemctl is-active NetworkManager
# systemctl is-enabled NetworkManager
# systemctl status NetworkManager 

NetworkManagerが実行されていない場合は、実行するだけで開始できます。

# systemctl start NetworkManager

何らかの理由でNetworkManagerを停止または非アクティブ化するには、次のコマンドを発行します。

# systemctl stop NetworkManager

インターフェイス設定ファイルまたはNetworkManagerデーモンの設定(通常は/ etc/NetworkManager /ディレクトリの下にあります)に変更を加えた場合は、NetworkManagerを再起動(停止してから開始)して、図のように変更を適用できます。

# systemctl restart NetworkManager

サービスを再起動せずにNetworkManagerデーモンの設定(systemdのユニット設定ファイルではない)をリロードするには、次のコマンドを実行します。

# systemctl reload NetworkManager

NetworkManagerツールの使用とifcfgファイルの操作

NetworkManagerは、ユーザーがNetworkManagerと対話するためのいくつかのツールをサポートしています。

  1. nmcli – a command-line tool used to configure networking.
  2. nmtui – a simple curses-based text user interface, which is also used to configure and manage newtwork interface connections.
  3. Other tools include the nm-connection-editor, control-center, and network connection icon (all under GUI).

NetworkManagerによって検出されたデバイスを一覧表示するには、nmcliコマンドを実行します。

 
# nmcli device 
OR
# nmcli device status

すべてのアクティブな接続を表示するには、次のコマンドを実行します( -a がないと、使用可能な接続プロファイルが一覧表示されることに注意してください)。

# nmcli connection show -a

ネットワークインターフェイス固有の構成ファイルは、/ etc/sysconfig/network-scripts /ディレクトリにあります。これらのファイルのいずれかを編集して、たとえば、CentOS/RHEL8サーバーの静的IPアドレスを設定できます。

# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

静的IPアドレスを設定するための設定例を次に示します。

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=e81c46b7-441a-4a63-b695-75d8fe633511
DEVICE=enp0s3
ONBOOT=yes
IPADDR=192.168.0.110
PREFIX=24
GATEWAY=192.168.0.1
DNS1=8.8.8.8
PEERDNS=no

変更を保存した後、新しい変更を適用するには、すべての接続プロファイルをリロードするか、NetworkManagerを再起動する必要があります。

# nmcli connection reload
OR
# systemctl restart NetworkManager

ネットワーク接続に基づくネットワークサービス/スクリプトの開始または停止

NetworkManagerには、ユーザーがネットワーク接続に基づいてサービス(NFS、SMBなど)または単純なスクリプトを実行できるようにする便利なオプションがあります。

たとえば、リモートディレクトリをsshfsを使用してローカルに自動的にマウントする場合、SMB共有をマウントする場合、またはネットワークを切り替えた後にNFS共有をマウントする場合です。 NetworkManagerが起動して実行されるまで(すべての接続がアクティブになるまで)、このようなネットワークサービスを実行しないようにすることができます。

この機能は、NetworkManager-dispatcherサービスによって提供されます(システムの起動時に自動的に開始するには、開始して有効にする必要があります)。サービスが実行されたら、スクリプトを/etc/NetworkManager/dispatcher.dディレクトリに追加できます。

すべてのスクリプトは、実行可能で書き込み可能であり、rootが所有している必要があります。次に例を示します。

# chown root:root /etc/NetworkManager/dispatcher.d/10-nfs-mount.sh
# chmod 755 /etc/NetworkManager/dispatcher.d/10-nfs-mount.sh

重要:ディスパッチャスクリプトは、接続時にアルファベット順に実行され、切断時にアルファベットの逆順に実行されます。

前述したように、ネットワークスクリプトはCentOS/RHEL 8で非推奨になり、デフォルトではインストールされません。それでもネットワークスクリプトを使用する場合は、network-scriptsパッケージをインストールする必要があります。

# yum install network-scripts

インストールされると、このパッケージは、上記で確認したnmcliツールを介してNetworkManagerを呼び出すifupおよびifdownスクリプトの新しいバージョンを提供します。これらのスクリプトを実行するには、NetworkManagerが実行されている必要があることに注意してください。

詳細については、systemctlおよびNetworkManagerのマニュアルページを参照してください。

# man systemctl
# man NetworkManager

この記事で準備したのはこれだけです。以下のフィードバックフォームを使用して、ポイントの説明を求めたり、質問したり、このガイドに追加したりすることができます。