IT二刀流にはプロモーションが含まれています。

Linuxで再起動するとホスト名が戻る!?Transient hostnameが変えられない。

CPU

ホスト名を変更しても元に戻ってしまう現象調査です。

永続的(恒久的)に変更したければ「/etc/hostname」を変更するとか、hostnamectlで変更するとか、そういう話ではありません。

永続設定しても再起動で元に戻る謎の現象です。

結果として解決できませんでした、調査した内容の備忘録です。

各バージョン

  • MIRACLE LINUX release 8.7

通常のホスト名変更

ホスト名を変更するときは下記のコマンドで変更します。

# hostname hogehoge.example.jp

しかし、hostnameコマンドでの変更は一時的で、再起動すると元に戻ります。

永続的(恒久的)に変更したい場合は「/etc/hostname」を変更するか、hostnamectlを使用します。

# hostnamectl set-hostname hogehoge.example.jp

再起動すると元に戻る

ここからが本題です、永続的(恒久的)に変更したはずなのに再起動で元に戻る現象が発生しました。

# hostnamectl set-hostname localhost.localdomain
# hostname
localhost.localdomain
# cat /etc/hostname
localhost.localdomain
# uname -n
localhost.localdomain
# hostnamectl
   Static hostname: localhost.localdomain
         Icon name: computer-desktop
           Chassis: desktop
        Machine ID: a1b2c3d4e5f6g7h8i9j0k
           Boot ID: a1b2c3d4e5f6g7h8i9j0k
  Operating System: MIRACLE LINUX 8.8 (Peony)
       CPE OS Name: cpe:/o:cybertrust_japan:miracle_linux:8
            Kernel: Linux 4.18.0-477.10.1.el8_8.x86_64
      Architecture: x86-64

どこからどう見てもホスト名は「localhost.localdomain」に変更されています、完璧です。

しかし、ここで再起動(reboot)します。

# hostname
abc.hoge.hoge
# cat /etc/hostname
localhost.localdomain
# uname -n
abc.hoge.hoge
# hostnamectl
   Static hostname: localhost.localdomain
Transient hostname: abc.hoge.hoge
         Icon name: computer-desktop
           Chassis: desktop
        Machine ID: a1b2c3d4e5f6g7h8i9j0k
           Boot ID: a1b2c3d4e5f6g7h8i9j0k
  Operating System: MIRACLE LINUX 8.8 (Peony)
       CPE OS Name: cpe:/o:cybertrust_japan:miracle_linux:8
            Kernel: Linux 4.18.0-477.10.1.el8_8.x86_64
      Architecture: x86-64

なんということでしょう、変更したはずのホスト名が元に戻っているではありませんか。

匠もびっくりです。

元に戻る原因

hostnamectlの結果に気になる項目があります。

「Transient hostname: abc.hoge.hoge」と変更前のホスト名が表示されています。

この「Transient hostname」を調べると下記の記述が見つかった。

「transient」ホスト名 は、カーネルが維持する動的ホスト名です。デフォルトではstaticホスト名に初期化され、その値は「localhost」になります。これはランタイム時にDHCPまたはmDNSで変更できます。

何も設定されていなければ、「Static hostname」と同じになるようだが、次の記載が気になる。

「ランタイム時にDHCPまたはmDNSで変更できます」とある、このサーバはDHCPでIPを取得しているので、DHCPからホスト名が渡されているのかも?

おそらく、DHCPが以前「abc.hoge.hoge」が使用していたIPをこのサーバに付与した際にホスト名まで送ってきている可能性がある。

ちょうどサーバの入れ替えなどで、複数のマシンにOSインストールして構築しまくっているので、その影響だろう。

DHCPに新しいホスト名を認識させる必要がありそうです。

試行錯誤

いろいろ調べて、DHCPに新しいホスト名を通知する設定を試しました。

ifcfgの変更

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html-single/configuring_and_managing_networking/index

ifcfgに「DHCP_HOSTNAME」か「DHCP_FQDN」を追加しなさいとある。

いずれか一方のみを使用できるが、両方設定した場合は「DHCP_FQDN」が適用されようだ。

ただ、この方法では変更できなかった。

設定して再起動した結果。

# tail -3 /etc/sysconfig/network-scripts/ifcfg-eno1
IPV6_FAILURE_FATAL=no
DHCP_HOSTNAME=localhost.localdomain
DHCP_FQDN=localhost.localdomain

# hostnamectl
   Static hostname: localhost.localdomain
Transient hostname: abc.hoge.hoge
         Icon name: computer-desktop
           Chassis: desktop
        Machine ID: a1b2c3d4e5f6g7h8i9j0k
           Boot ID: a1b2c3d4e5f6g7h8i9j0k
  Operating System: MIRACLE LINUX 8.8 (Peony)
       CPE OS Name: cpe:/o:cybertrust_japan:miracle_linux:8
            Kernel: Linux 4.18.0-477.10.1.el8_8.x86_64
      Architecture: x86-64

NW経由でのホスト名変更

次に、ネットワークマネージャー経由でドメイン名を変更した。

このサーバはネットワークマネージャーでネットワーク設定をしているので、直接ifcfgを編集してもダメかと思って。

# nmcli general hostname localhost.localdomain

設定後に再起動しても結果は同じでダメでした。

# hostnamectl
   Static hostname: localhost.localdomain
Transient hostname: abc.hoge.hoge
         Icon name: computer-desktop
           Chassis: desktop
        Machine ID: a1b2c3d4e5f6g7h8i9j0k
           Boot ID: a1b2c3d4e5f6g7h8i9j0k
  Operating System: MIRACLE LINUX 8.8 (Peony)
       CPE OS Name: cpe:/o:cybertrust_japan:miracle_linux:8
            Kernel: Linux 4.18.0-477.10.1.el8_8.x86_64
      Architecture: x86-64

dhclientの設定

DHCPクライアントの設定を追記してみた。

# vi /etc/dhcp/dhclient.conf
send fqdn.fqdn = gethostname();

設定後に再起動しても結果は同じでやっぱり、ダメでした。

# hostnamectl
   Static hostname: localhost.localdomain
Transient hostname: abc.hoge.hoge
         Icon name: computer-desktop
           Chassis: desktop
        Machine ID: a1b2c3d4e5f6g7h8i9j0k
           Boot ID: a1b2c3d4e5f6g7h8i9j0k
  Operating System: MIRACLE LINUX 8.8 (Peony)
       CPE OS Name: cpe:/o:cybertrust_japan:miracle_linux:8
            Kernel: Linux 4.18.0-477.10.1.el8_8.x86_64
      Architecture: x86-64

まとめ

Transient hostnameが厄介です。

サーバ側ではなくDHCPのIPとホスト名の紐づけのせいだとは思うんですが、うまくいきませんでした。

直接DHCP側のリストみたいなのを編集する必要があるのかもしれません。

DHCPは私の権限ではいじれないのでもうあきらめです。

これ以上はお手上げで打つ手なしです(>_<)

ITエンジニアの転職

いまITエンジニアの需要は急拡大しています。
ITエンジニアの経験があれば好条件で転職することも難しくありません。

転職ドラフト

☆ 支援ご協力のお願い ☆

この記事が「役に立った」と感じたら

投げ銭の「OFUSEで応援」で支援して頂けたら励みになります!

OFUSEのやり方(説明)

記事特集