Understand hostname and /etc/hosts – Unix & Linux Stack Exchange に書いてある通りである:
目次
/etc/hostname の編集
この設定にはやり方が二通りある。自分の場合は hostname はマシン名だけにしている:
- マシン名だけにする方法 つまりこのプロセッサーを表す単純な1単語の名前にする方法だ。 たとえば、「joe」は自分で選んだマシン名かもしれない。 この場合、/etc/hostsにエイリアスを設定する必要があることに注意しよう(詳細は後述)。
- machine.domain.net、つまりFQDN (Fully Qualified Domain Name) にする方法
たとえば、「joe.xyz.com」 (これは、joe.xyz.comからjoeのIPアドレス、つまりjoeという名前のマシンを指すDNSホスト「A」レコードがあると仮定している)。 通常、このレコードはドメイン名を購入した場所で設定する。 詳細は後述する。
HOSTNAME
/etc/hosts の編集
例えば、「machine.domain.net」のように、このホストのFQDNの行があり、その前に、このマシンのIPアドレス(おそらく動的IPアドレスサーバーのもの)がこのように付加されている:# IP FQDN (CANONICAL_HOSTNAME) ALIASES #-------------- --------------------------- ------------------------ 192.168.1.14 Joe.xyz.com joe
- まず、ここでは大文字と小文字は関係ないことに注意しよう。 ヒント:ただし、大文字と小文字を区別しておくと、次のステップでどこから来たのかが一目瞭然になる。 だから私はジョーを大文字にした。
- また、単純なホスト名(つまり/etc/hostname = ‘machine’)が正しくFQDNを生成するためには、/etc/hostsに’machine’というエイリアスが存在しなければならないことにも注意しよう。 これが、joeというエイリアスが存在する理由だ。 (ちなみに、このエイリアスは使わなくても問題ない。) そうでなければ、このエイリアスは必要ないし、使われることもない。
- また、’domain.net’はリゾルバ可能でなければならない、つまり、DNSにそのためのAレコードが存在しなければならないことに注意して欲しい。 これが(DNSリゾルバによって)「解決可能」と呼ばれるものだ。
自分の場合は下記のようにしている:
127.0.0.1 localhost 192.168.XX.XXX HOSTNAME.DOMAIN.net HOSTNAME
パブリックではないネットワーク内なので、DOMAINは好きなようにできる。
なお、/etc/hosts のファイルの機能は以下の通り(dns – What is the purpose of /etc/hosts? – Unix & Linux Stack Exchange):
/etc/hostsファイルは、DARPAの古い時代に、インターネットに接続されているすべてのホストの解決ファイルとして始まった(DNSが存在する前)。 このファイルには最大の優先順位があり、他のどのネームシステムよりも優先されます。
しかし、単一のファイルとしては拡張しずらい。ファイルのサイズが大きくなりすぎる。 そのため、階層型分散ネームシステムであるDNSシステムが開発された。 これにより、どのホストも他のホストの数値アドレスを効率的に見つけることができる。
/etc/hosts
ファイルの非常に古い概念はとても単純で、各行に 127.0.0.1 localhostというアドレスとホスト名だけである:127.0.0.1 localhost現在の主な用途は、DNS解決をバイパスすることである。
/etc/hosts
ファイルで見つかったマッチは、どのDNSエントリーよりも先に使われる。 実際、検索された名前(localhostのような)がファイル内で見つかった場合、DNS解決はまったく行われない。
/etc/hostnameと/etc/hostsからこれらの新しい設定を有効化する
再起動する。
/etc/init.d/hostname.shは今の構成では見付からない…。
確認
hostanme
$ hostname
FQDN
$ hostname --all-fqdn
domainname
$ dnsdomainname