NetworkManagerでkeyfile形式のプロファイルを利用する(備忘録)


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

こんばんは。

今日はOS設定(RHEL9)の話になります。
備忘録として記事を書こうと思います。
5分で読める記事を目指します。

どこかの誰かの参考になれば幸いです!

状況(Situation)

RHEL9をEC2インスタンス上で新たに起動させ、NetworkManagerを利用してOSレベルのネットワーク設定を行います。NetworkManagerを利用して設定した場合、そのプロファイルは以下のどちらかの形式のファイルに保存されます。

  • ifcfg形式のファイル(/etc/sysconfig/network-scripts/*)
  • keyfile形式のファイル(/etc/NetworkManager/system-connections/*)

従来はifcfg形式のファイルが利用されていましたが、RHEL9ではkeyfile形式のファイルの利用が推奨されています(keyfile形式はrhel9以降の互換性も保証されているようです)。そのため、keyfile形式でネットワーク設定のプロファイルを生成するようにします。

課題(Task)

通常、keyfileが有効化されており、かつifcfgよりも優先されているはずです。その場合、デフォルトの設定のまま問題なくkeyfile形式のプロファイルが生成されます。しかし、今回利用しているAMI(RHEL-9.2.0_HVM-20230905-x86_64-38-Hourly2-GP2)では、keyfileが無効化されていました。

そこで、keyfileを利用するように設定を変更する必要があります。

行動(Action)

以下では前提の確認から設定の変更まで行っていきます。

変更前設定確認

  1. NetworkManagerが起動していることを確認します。
    systemctl status NetworkManager
  2. keyfile形式のファイルがないことを確認します。
    ※ 本来はここにネットワーク設定のプロファイルがあります。

    ls -lrt /etc/NetworkManager/system-connections/
  3. ifcfg形式のプロファイルが(残念ながら)あることを確認します。
    ls -lrt /etc/sysconfig/network-scripts/
  4. NetworkManagerの設定ファイルを確認してみます。catの結果、以下の記述でifcfg-rfのみがloadされるよう設定されていることが確認できます。
    cat /etc/NetworkManager/NetworkManager.conf
    <略>
    [main]
    plugins = ifcfg-rh,
    #plugins=keyfile,ifcfg-rh
    <略>

設定変更手順

  1. 設定のためにdrop-inファイルを/etc/NetworkManager/conf.d/ディレクトリ配下に作成します(ここではload_keyfile.conf)。
    ※ デフォルトのNetworkManager.confファイルはアップデートのタイミングなどで再配布されて先祖返りする可能性があるため編集しないようにします。

    cp /etc/NetworkManager/NetworkManager.conf /etc/NetworkManager/conf.d/load_keyfile.conf
  2. 設定ファイルを編集してkeyfileもloadするようにします。
    vi /etc/NetworkManager/conf.d/load_keyfile.conf

    修正後

    <略>
    [main]
    #plugins = ifcfg-rh,
    plugins=keyfile,
    <略>
  3. NerworkManagerを再起動します。これをしないと設定が読み込まれません。
    systemctl restart NetworkManager
  4. 対象のインターフェイスのuuidを控えます。
    nmcli con show
  5. 対象のインターフェイスのNAME(connection-name)を変更してみます。
    nmcli con modify <uuid> connection.id hogehoge
  6. NAMEが変更されたことを確認します。
    nmcli con show
  7. 変更されると、その変更を反映したkeyfile形式のファイルが生成されているので確認します。
    ls -lrt /etc/NetworkManager/system-connections/

補足

カスタム設定(/etc/NetworkManager/conf.d/load_keyfile.conf)がきちんと読み込まれているかどうかや、keyfileがloadされているかどうかは、journalログで確認できます。トラブルシューティングの際に訳に立ちます。

journalctl -u NetworkManager

結果(Result)

これでkeyfile形式を利用してOSのネットワーク設定を行う準備ができました。
victory!!!

参考

Last modified: 2023-12-02

Author