ホスト名を変更しても元に戻ってしまう現象調査です。
永続的(恒久的)に変更したければ「/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は私の権限ではいじれないのでもうあきらめです。
これ以上はお手上げで打つ手なしです(>_<)