ホスト名(hostname)は、ネットワーク上のコンピューターを識別する名前です。Linux(Ubuntu Server含む)でのホスト名の考え方と、hostnamectlコマンドによる初期設定・変更・確認の方法を初心者向けに解説します。
管理人本記事の読者層は以下の方を想定しています。
- ホスト名とホストの違いを知りたい方
- ドメイン名とホスト名の違いを知りたい方
- Ubuntuでホスト名を設定したい方
- Ubuntu以外のLinuxディストリビューションでホスト名を設定したい方
結論から:ホスト名の設定はこの2ステップだけ
sudo hostnamectl set-hostname [ホスト名]でホスト名を設定する- 他のコンピューターからそのホスト名でアクセスしたい場合のみ、
/etc/hostsにIPアドレスとホスト名を追記する
まずは「ホスト名とは何か」という基礎から丁寧に知りたい方はこのまま読み進めてください。コマンドだけ先に知りたい方は、後半の「ubuntuサーバーでホスト名の初期設定・変更・確認を行う方法」の見出しまで読み飛ばしても構いません。
ホスト名 とは?
「ホスト名」(Host name) と「ドメイン名」(Domain name) の違い
TCP/IP(Transmission Control Protocol/Internet Protocol)は、現在のインターネットならびにイントラネット通信でもっとも利用されている通信プロトコルです。TCP/IP通信では、必ずIPアドレスという「ネットワーク上の住所に相当する番号」が必要です。一方で、IPアドレスは数字として示されているため、人が認識するにはわかりづらいですよね。解決する手段として、ドメイン名すなわちDNS (Domain Name System) と呼ばれる文字列を使って自信のネットワーク内のIPアドレスに紐付けした表記を使えるようになっています。
たとえば、ネットワークに接続する「コンピューター」や「コンピューターの集合体」にドメイン名として「example.net」といった分かりやすい名前を付けられます。1つのドメイン名に対して1つのコンピューターだけが割り振られていれば単純ですが、実際には1つのドメイン名の中で複数のコンピューターの集合体を管理したいケースが多くあります。そこで登場するのが「ホスト名」です。
次に、「ホスト名」という概念を説明します。「ホスト名」とは自身で管理できるコンピューターに名付けられるインターネット上の名前のことです。「ドメイン名」も「ホスト名」も同じネットワーク上での名前ですが、「ドメイン名」はネットワーク上の複数のコンピューターの集合体に割り振られるものであり、「ホスト名」は、その集合体内のあるコンピューターの名前に相当します。
もうすこし具体的にみてみましょう。
上記の例に従って、「ドメイン名」を「example.net」(複数のコンピューターの集合体)として、そのネットワーク内の「コンピューター名」(=「ホスト」)を「Hogehoge10」と名前を付けるとします。
このとき外部からみた「ドメイン」内の「ホスト名」は、
「ホスト名」=「ホスト」.「ドメイン名」=Hogehoge10.example.net
と名付けます。
「example.net」というドメイン名自体は、そのドメインを取得・所有している人(または組織)が管理します。「Hogehoge10.example.net」というホスト名も、同じ所有者が管理する範囲に含まれます。
ここで、
「複数のコンピューターの集合体」=「イントラネット」
「あるコンピューター」=「サーバー」
で「ホスト名」はサーバー機に割り当てられるインターネット上の名前で、名前管理はサーバー所有者が行います。
以上をまとめると以下のようなイメージです。


ドメイン名を取得する方法について詳しく知りたい場合は以下の記事をご参照ください。


- ホスト名」はIPアドレスと紐付けて利用する名前なのに対して、「ホスト」はコンピューター名として使われます。
- ブラウザー上のURLでよくwww (World Wide Web)と記載されているのを見るかと思います。たとえば、ホスト名「www.example.net」の場合ですと、「www」がホストとなります。
余談ですが、wwwがあるなしの違いが気になる方は以下の記事もご参照ください。


それでは、具体的にホスト名の初期設定の方法を次に紹介します。
サーバーのホスト名 (host name) の変更と反映に必要な情報
インターネットワーク(複数のコンピューターの集合体)が下図のネットワークAのようにネットワークに接続されている場合を考えます。インターネット内にルーターなどを通して、イントラネットワークが形成されいます。
イントラネットワークにサーバー機を設置した場合、以下①-④の事前情報が必要です。
ネットワーク用の設定 (サーバー機のみ)
- ①「固定IPアドレス」(etc「60.40.xxx.xxx」)
- ②「ホスト名」(Hogehoge10.example.net)
- イントラネット用の設定 (サーバー機とPC)
- ③ 「プライベートIPアドレス」 (etc「192.168.xxx.xxx」)
- ④ 「ホスト」 (Hogehoge10)
インターネットからイントラネット内にアクセスが必要なサーバーの設定
①「固定IPアドレス」:プロバイダと契約して取得したグローバルIPアドレス。後半でホスト名として紐付けして使用。
②「ホスト名」:インターネット上の名前として登録。「ホスト名」=「ホスト」.「ドメイン名」で決定します。
イントラネット内向けのコンピューターやサーバーの設定
③「プライベートIPアドレス」:イントラネット内で利用する専用のIPアドレス(詳細は後述)。
④「ホスト」:プライベートIPアドレスに紐づくコンピューター名。


上記のようなネットワークAとネットワークBがあったとします。
次に、実際の設定方法を解説します。
ubuntuサーバーでホスト名の初期設定・変更・確認を行う方法
ここで紹介する/etc/hostname・hostnamectl・/etc/hostsという3つの仕組みは、Ubuntuに限らずDebian・Fedora・RHEL等、systemdを採用している主要なLinuxディストリビューションであれば基本的に同じ考え方・同じコマンドで設定できます。本記事ではUbuntuを例に解説しますが、他のLinuxディストリビューションを使っている方も同じ手順を参考にしていただけます。
利用可能なUbuntuバージョン(18.04LTS, 20.04LTS, 22.04LTS)
- Ubuntu Linux 18.04 LTS以降
上記は元記事作成時点(2022年)の確認環境です。本記事で紹介する/etc/hostname・hostnamectl・/etc/hostsによるホスト名設定は、Ubuntu 24.04 LTS・26.04 LTSを含む現行のUbuntu LTSバージョンでもコマンドを変更することなくそのまま利用できます。
上記のネットワークAを想定して、ホスト名の設定方法を説明します。
サーバー機側では、以下のコマンド入力が設定上必要です。
| # | Ubuntu コマンド | 解説 |
|---|---|---|
| 1 | vi /etc/hostname | 設定ファイル/etc/hostnameでホスト名③を変更 |
| 2 | hostnamectl set-hostname hogehoge10 | コマンドから/etc/hostnameのホスト名③を変更 |
| 3 | vi /etc/hosts | 設定ファイルの場所は /etc/hostsで イントラネットIPアドレス④とホスト名③の紐付け さらにこの二つをDNS名①と紐づけ |
上記コマンドの1番目と2番目の設定・変更方法は同じ動作をします。2番目を変更すれば1番目のコマンドは必要ありません。一方、1番目もしくは2番目のコマンドでホスト名を変更しても、3番目のホスト名の変更されません。
3番目のコマンドはあくまでもDNS名とイントラネットIPアドレスとホスト名の対応関係を記載するだけといったところでしょうか。
ホスト名に使える文字のルール
ホスト名を自由に決める前に、使える文字にはルールがあります。
- 使える文字は半角英数字(a-z, A-Z, 0-9)とハイフン(
-)、ドット(.)のみ - 先頭・末尾をドットにしない
- アンダースコア(
_)は使用可能な実装もありますが、従来の仕様では非推奨とされているため避けるのが無難です - 全体で64文字以内
ホスト名を確認する方法
最初にコンピューター名、即ちホストを名付けます。名付けたホスト名が正しく設定されているかどうかは、以下の手順で確認できます。
①以下のlsb_releaseコマンドで、Ubuntuのバージョン確認しておきます。
$lsb_release -a
LSB Version: core-9.20170808ubuntu1-noarch:security-9.20170808ubuntu1-noarch
Distributor ID: Ubuntu
Description: Ubuntu 18.04.6 LTS
Release: 18.04
Codename: bionic②ホストが設定されているかどうかをhostnameコマンドを入力して確認できます。
Hostname (ホスト名) が「hogehoge10」の場合、
$ hostname
hogehoge10とUbuntuのコマンドプロンプト上で入力すると 「hogehoge10」と表示されます。
なお、hostnameコマンドには短縮名・FQDNをそれぞれ表示するオプションもあります。
$ hostname -s # 短縮名(ドメイン部分を含まないホスト名)のみ表示
$ hostname -f # FQDN(完全修飾ドメイン名)を表示③pingコマンドでホスト名の名前解決が行われたか確認できます。
$ ping hogehoge10ホスト名の初期設定・変更方法
①ホストを変更する方法はエディター (emacsコマンド)で「/etc/hostname」を編集します。
編集にはルートユーザー権限の必要から「sudo」を付けます。
$ sudo emacs /etc/hostname「/etc/hostname」ファイル内は空であれば[ホスト名]を入力するだけです。たとえば、hogehoge10と文字列を入力するだけで設定完了です。
hogehoge10上記hostnameコマンドで、hogehoge10と表示されれば成功です。
②ホストを変更する方法はhostnamectl set-hostname [ホスト名]でも同じことができます。
$sudo hostnamectl set-hostname hogehoge10上記hostnameコマンドで、hogehoge10と表示されれば成功です。
③hostnamectlコマンドを入力し「Static hostname」にて同様に設定の確認できます。
$hostnamectl
Static hostname: HogeHoge10
Icon name: computer-desktop
Chassis: desktop
Machine ID: caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Boot ID: dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
Operating System: Ubuntu 18.04.6 LTS
Kernel: Linux 4.15.0-194-generic
Architecture: x86-64設定の反映
これらの①と②設定は、再起動を行うまで反映されないため、一度sudo rebootコマンドで再起動してみてください(shutdown -h nowは電源を切る(シャットダウン)コマンドであり、再起動ではないため注意してください)。
ホスト名とIPアドレスの紐付け方法と永続化
ホスト名 にIPアドレスを紐付けしたい場合には、下記コマンド(emacsコマンドの場合) で「/etc/hosts」も開き編集します。ファイル名の指定は「host」でなく「hosts」と複数形です。ここで、IPアドレスとDNSも同時に紐づけできます。/etc/hostname編集時と同様、この操作にもルート権限が必要なため「sudo」を付けます。
①/etc/hostsの設定変更
$ sudo emacs /etc/hostsたとえば、「etc/hosts」のファイル内容は、
127.0.0.1 localhost localhost.localdomain 192.168.12.10 hogehoge10.example.net hogehoge10
といった表記になります。
「/etc/hosts」の表記の意味
左側から
[IPアドレス] [正式なホスト名(FQDN)] [エイリアス(短縮名など)]
の順に記載します(man 5 hostsにもこの順序が定義されています)。
最初の列:「127.0.0.1 localhost localhost.localdomain」 の意味は、コンピューター内のアドレスです。
127.0.0.1は自分自身を示す[IPアドレス]、localhostは自分自身を表すホスト名。localhost.localdomainは自身の仮の内部向けドメイン名です。
127.0.0.1の意味は?
Linuxでは、最初の行にループバックアドレス(127.0.0.1)とホスト名が定義される。ループバックアドレスとはそのコンピューター自身を示すIPアドレスの事です。
二番目の列:「192.168.12.10 hogehoge10.example.net hogehoge10」の意味は、イントラネット内のアドレスです。
このサーバー機がイントラネットワークの母艦である場合の例ですが、「192.168.12.10」はサーバー機 のプライベートIPアドレス、「hogehoge10.example.net」は正式なホスト名(FQDN、インターネット側のDNS名)、「hogehoge10」(コンピューター名に相当)はエイリアス(短縮名)として入力します。
プライベートIPアドレスに関して更に詳しく知りたい方は以下の記事をご参考ください。


最後のエイリアスについて以下少し解説します。
エイリアスに短縮名を入力する意味は?
イントラネットのあるコンピューターから、同じイントラネット内のサーバー機 (IPアドレスが「192.168.12.10」) と通信する際に以下の問題が生じます。イントラネットワーク内のあるPCから、サーバー機が持つ外部のDNS名を検索できません。イントラネット内のサーバー機 は192.168.12.10でアクセスできるため、これをエイリアスに短い名前を打ち込みIPと紐付けておくと便利です。これはWEBブラウザでサーバーを内部と外部からアクセスするときに便利です。
/etc/hosts は変更・保存したら自動的に反映にされるようです。確認のためにnslookupコマンドでIPアドレスを叩くと
% nslookup 192.168.12.10
10.12.168.192.in-addr.arpa name = hogehoge10.example.net.
10.12.168.192.in-addr.arpa name = hogehoge10.と表記されます。
この逆引きで示されるアドレス表記は、反対になっていて、「10.12.168.192.in-addr.arpa」→「192.168.12.10」のことです。
これで確認もできました。設定は以上で終了です。お疲れ様でした。
まとめ
サーバー機を立ち上げる際に最初にすること!(Ubuntuに限らずLinux全般で共通)
- ② hostnamectl set-hostname [ホスト名] (① /etc/hostnameでもOK!)
でホスト名 (hostname)を設定
- ③ /etc/hosts
でIPとホスト名 (hostname)を紐づけ
次回の記事をご期待下さい。どうぞよろしくお願いいたします。
関連リンク









コメント