「hostnameコマンドで変更したのに、再起動したら元に戻ってしまった」
ホスト名はネットワーク上でサーバーを識別するための名前です。
この記事では、hostnameコマンドの基本から、hostnamectlによる永続的な変更、FQDN(完全修飾ドメイン名)の確認まで、実務で必要な操作を網羅します。
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
ホスト名とは?
ホスト名(hostname)とは、ネットワーク上でサーバーやPCを識別するために付ける名前です。Windowsでいう「コンピューター名」に相当します。サーバー運用では、どのサーバーにログインしているかをプロンプトやログで判別するために不可欠な設定です。
ホスト名には以下の種類があります。
・短縮ホスト名:ドメインを含まない名前(例:web01)
・FQDN:ドメインを含む完全な名前(例:web01.linuxmaster.jp)
ホスト名を確認する方法
1. hostnameコマンドで確認する(基本)
引数なしで実行すると、現在のホスト名を表示します。$ hostname web01.linuxmaster.jp
2. 短縮ホスト名を表示する(-s)
ドメイン部分を除いた短いホスト名だけを表示します。$ hostname -s web01
3. FQDNを表示する(-f)
ドメインを含む完全修飾ドメイン名(FQDN)を表示します。$ hostname -f web01.linuxmaster.jp
4. ドメイン名だけ表示する(-d)
$ hostname -d linuxmaster.jp
5. IPアドレスを表示する(-i / -I)
ホスト名に対応するIPアドレスを表示します。# ホスト名を解決したIPアドレス $ hostname -i 192.168.1.10 # すべてのネットワークインターフェースのIPアドレス $ hostname -I 192.168.1.10 10.0.0.5
hostnamectlコマンドで確認・変更する(RHEL7以降)
RHEL7/CentOS7以降のsystemd環境では、hostnamectlコマンドが推奨されます。ホスト名の確認と永続的な変更がこの1つのコマンドで完結します。1. 現在のホスト名を詳細表示する
$ hostnamectl Static hostname: web01.linuxmaster.jp Icon name: computer-vm Chassis: vm Machine ID: a1b2c3d4e5f6... Boot ID: f6e5d4c3b2a1... Virtualization: kvm Operating System: Red Hat Enterprise Linux 9.3 CPE OS Name: cpe:/o:redhat:enterprise_linux:9::baseos Kernel: Linux 5.14.0-362.el9.x86_64 Architecture: x86-64
2. ホスト名を永続的に変更する
# ホスト名を変更(再起動後も維持される) sudo hostnamectl set-hostname db01.linuxmaster.jp # 確認 hostnamectl Static hostname: db01.linuxmaster.jp
3. 3種類のホスト名について
systemd環境では、ホスト名に3つの種類があります。・Static hostname:/etc/hostnameに保存される永続的なホスト名。最も重要
・Transient hostname:一時的なホスト名。再起動するとStaticに戻る
・Pretty hostname:表示用のホスト名。日本語やスペースを含められる(UTF-8対応)
# Staticホスト名だけを変更 sudo hostnamectl set-hostname web01.linuxmaster.jp --static # Pretty hostname を設定(表示用) sudo hostnamectl set-hostname "本番Webサーバー01号機" --pretty
hostnameコマンドで一時的に変更する
hostnameコマンドでも変更できますが、再起動すると元に戻ります。# root権限で一時的にホスト名を変更 sudo hostname temp-server # 確認(変更されている) hostname temp-server # ただし再起動すると/etc/hostnameの値に戻る
応用・実務Tips
1. /etc/hostsも合わせて更新する
ホスト名を変更したら、/etc/hostsの該当行も更新しないと名前解決でトラブルが起きることがあります。# /etc/hostsを確認・更新 cat /etc/hosts 127.0.0.1 localhost 192.168.1.10 web01.linuxmaster.jp web01 # ホスト名変更後は対応する行を修正する sudo vi /etc/hosts
2. サーバーのホスト名命名ルール
実務では、サーバーの役割がホスト名からわかるようにするのが一般的です。・役割+番号:web01、db01、mail01
・拠点+役割:tk-web01(東京)、os-db01(大阪)
・環境+役割:prd-web01(本番)、stg-web01(ステージング)
ハイフン(-)やドット(.)は使えますが、アンダースコア(_)はRFC上非推奨です。また、英小文字と数字のみを使うのが無難です。
3. シェルスクリプトでホスト名を取得する
# スクリプト内でホスト名を取得する方法 MYHOST=$(hostname -s) echo "このサーバーは ${MYHOST} です" # ログファイル名にホスト名を含める LOGFILE="/var/log/backup_$(hostname -s)_$(date +%Y%m%d).log"
トラブルシュート・エラー対処
「再起動するとホスト名が元に戻る」場合の対処法
hostnameコマンドで変更しただけでは永続化されません。以下を確認してください。# /etc/hostnameの内容を確認 cat /etc/hostname web01.linuxmaster.jp # hostnamectlで永続的に変更する sudo hostnamectl set-hostname web01.linuxmaster.jp
「hostname -f」でFQDNが表示されない場合
/etc/hostsにFQDNの設定がないと、hostname -f がエラーになったり短縮名しか返さないことがあります。$ hostname -f hostname: Name or service not known # /etc/hostsにFQDNを追加する sudo sh -c 'echo "192.168.1.10 web01.linuxmaster.jp web01" >> /etc/hosts' # 再度確認 $ hostname -f web01.linuxmaster.jp
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| ホスト名を確認する | hostname |
| 短縮ホスト名を表示する | hostname -s |
| FQDNを表示する | hostname -f |
| IPアドレスを表示する | hostname -I |
| ホスト名の詳細情報を確認する | hostnamectl |
| ホスト名を永続的に変更する | sudo hostnamectl set-hostname 新ホスト名 |
| ホスト名を一時的に変更する | sudo hostname 新ホスト名 |
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
※登録30秒/合わなければ解除3秒
