ホスト名 (hostname) は、ネットワークに接続されたコンピューターなどの機器を識別しやすいように付けられる名前です。Ubuntu Server(18.04LTS, 20.04LTS, 22.04LTS)導入・運用に際して、ホスト名は最初に行う設定です。本記事では「ホスト名とは何か?」、そしてホスト名の初期設定・変更・確認する方法をわかりやすく解説します。
本記事の読者層は以下の方を想定しています。
- ホスト名とホストの違いを知りたい方
- ドメイン名とホスト名の違いを知りたい方
- 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」と名前を付けるとします。
このとき外部からみた「ドメイン」内の「ホスト名」は、
「ホスト名」=「ホスト」.「ドメイン名」=Hogege10.example.net
と名付けます。
ドメイン名「exmaple.net」は「.net」により管理されており、ホスト名「Hogege10.example.net」は「exmaple.net」を所有する者により管理されます。
ここで、
「複数のコンピューターの集合体」=「イントラネット」
「あるコンピューター」=「サーバー」
で「ホスト名」はサーバー機に割り当てられるインターネット上の名前で、名前管理はサーバー所有者が行います。
以上をまとめると以下のようなイメージです。
ドメイン名を取得する方法について詳しく知りたい場合は以下の記事をご参照ください。
- ホスト名」はIPアドレスと紐付けて利用する名前なのに対して、「ホスト」はコンピューター名として使われます。
- ブラウザー上のURLでよくwww (World Wide Web)と記載されているのを見るかと思います。たとえば、ホスト名「www.example.net」の場合ですと、「www」がホストとなります。
余談ですが、wwwがあるなしの違いが気になる方は以下の記事もご参照ください。
それでは、具体的にホスト名の初期設定の方法を次に紹介します。
サーバーのホスト名 (host mame) の変更と反映に必要な情報
インターネットワーク(複数のコンピューターの集合体)が下図のネットワークAのようにネットワークに接続されている場合を考えます。インターネット内にルーターなどを通して、イントラネットワークが形成されいます。
イントラネットワークにサーバー機を設置した場合、以下①-④の事前情報が必要です。
ネットワーク用の設定 (サーバー機のみ)
- ①「固定IPアドレス」(etc「60.40.xxx.xxx」)
- ②「ホスト名」(Hogehoge10.exmaple.net)
- イントラネット用の設定 (サーバー機とPC)
- ③ 「プライベートIPアドレス」 (etc「192.168.xxx.xxx」)
- ④ 「ホスト」 (Hogehoge10)
インターネットからイントラネット内にアクセスが必要なサーバーの設定
①「固定IPアドレス」:プロバイダと契約して取得したグローバルIPアドレス。後半でホスト名として紐付けして使用。
②「ホスト名」:インターネット上の名前として登録。「ホスト名」=「ホスト」.「ドメイン名」で決定します。
イントラネット内向けのコンピューターやサーバーの設定
③「プライベートIPアドレス」:イントラネット内で利用する専用のIPアドレス(詳細は後述)。
④「ホスト」:プライベートIPアドレスに紐づくコンピューター名。
次に、実際の設定方法を解説します。
ubuntuサーバーでホスト名の初期設定・変更・確認を行う方法
利用可能なUbuntuバージョン(18.04LTS, 20.04LTS, 22.04LTS)
- Ubuntu Linux 18.04 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アドレスとホスト名の対応関係を記載するだけといったところでしょうか。
ホスト名を確認する方法
①以下の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」と表示されます。
③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
設定の反映
これらの①と②設定は、再起動を行うまで反映されないため、一度shotdown -h nowコマンドで再起動してみてください。
ホスト名とIPアドレスの紐付け方法と永続化
ホスト名 にIPアドレスを紐付けしたい場合には、下記コマンド(emacsコマンドの場合) で「/etc/hosts」も開き編集します。ファイル名の指定は「host」でなく「hosts」と複数形です。ここで、IPアドレスとDNSも同時に紐づけできます。
①/etc/hostsの設定変更
$emacs /etc/hosts
たとえば、「etc/hosts」のファイル内容は、
127.0.0.1 localhost localhost.localdomain
192.168.12.10 hogehoge10 hogehoge10.example.net
といった表記になります。
「/etc/hosts」の表記の意味
左側から
[IPアドレス] [正式なホスト] [ホスト名 (エイリアス)]
の順に記載します。
最初の列:「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 hogehoge10.example.net」の意味は、イントラネット内のアドレスです。
このサーバー機がイントラネットワークの母艦である場合の例ですが、「192.168.12.10」はサーバー機 のプライベートIPアドレス、ホスト名「hogehoge10」(コンピューター名に相当)と、「hogehoge10.example.net」はエイリアスすなわちDNS名(インターネット側のDNS名)を入力します。
プライベートIPアドレスに関して更に詳しく知りたい方は以下の記事をご参考ください。
最後のエイリアスについて以下少し解説します。
エイリアスにDNS名を入力する意味は?
イントラネットのあるコンピューターから、同じイントラネット内のサーバー機 (IPアドレスが「192.168.12.10」) と通信する際に以下の問題が生じます。イントラネットワーク内のあるPCから、サーバー機が持つ外部のDNS名を検索できません。イントラネット内のサーバー機 は192.168.12.10でアクセスできるため、これをエイリアスに外部のDNS名を打ち込み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」のことです。
これで確認もできました。設定は以上で終了です。お疲れ様でした。
まとめ
サーバー機を立ち上げる際に最初にすること!
- ② hostnamectl set-hostname [ホスト名] (① /etc/hostnameでもOK!)
でホスト名 (hostname)を設定 - ③ /etc/hosts
でIPとホスト名 (hostname)を紐づけ
次回の記事をご期待下さい。どうぞよろしくお願いいたします。
コメント