この質問の下に貼り付けられているのは、Linux(CentOS)およびWindowsマシンからの/etc/hosts
ファイルのサンプルです。 Linuxファイルには、IPアドレスの後に2つのタブ付きエントリ(つまり、localhost.localdomain localhost)があり、Windowsには1つしかありません。 Windowsでhostsファイルを編集してlocalhostではなくマシン名(etest)にしたい場合は、Wordのlocalhostを希望するマシン名に置き換えるだけです。マシンはドメインの一部である必要はありません。
Linuxマシンでは、2つのエントリlocalhost.localdomain
およびlocalhost
は、マシンをドメインの一部にする必要があることを示しているようです。これは本当ですか?
両方のエントリを単にetest
に編集して、次のようになりますか?
127.0.0.1 etest etest
または、1つのエントリをドメイン名に置き換える必要がありますか?
また、Linuxマシンの/etc/hosts
ファイルの2行目が何のためのものか教えてください。
::1 localhost6.localdomain6 localhost6
Linuxマシンのhosts
ファイル:
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
Windowsマシンのhosts
ファイル:
# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to Host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding Host name.
# The IP address and the Host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client Host
127.0.0.1 localhost
127.0.0.1アドレスを常に最初にlocalhostに解決する必要があります。ドメインがあればそれも使用できますが、localhostが2番目にリストされていることを確認してください。ループバックアドレスを検索するマシンのエイリアスを追加する場合は、その行にスペースで区切られた値としてエイリアスを追加し続けることができます。ここでのドメインの指定はオプションですが、オプションから「localhost」を削除しないでください。
LinuxとWindowsでの/etc/hosts
の形式は同じです。
IP address hostname [hostalias]...
ここで、角かっこは、何かがオプションであることを示す通常の方法です(実際には入力しないでください)。ドット(...
)は、複数あることを意味します。
ホストをドメインの一部にする必要はありません。試してみてください。ただし、実際のドメイン名がない場合は、.localdomain
を使用することをお勧めします。 /etc/resolv.conf
のndots
オプションにより、ホスト名の解決が少し速くなります。
この意味で、ドメインはDNSドメイン(google.com
またはstackexchange.com
など)を意味し、Windowsドメインなどは意味しないことに注意してください。
::1
で始まる行は IPv6 用です。 ::1
は、新しいアドレッシングスキームでは127.0.0.1
に似ています。 ifconfig lo
を実行すると、2つのアドレスがあることがわかります。 inet6
で始まるエントリに注意してください。
$ ifconfig lo
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
...
詳細は hosts(5)man page を参照してください。
WindowsがLinuxとどのように異なるかについて話すことはできませんが、ローカルマシンの定義の形式は、「hostname」コマンドから取得する結果に影響します。
私が見つけるフォーマットは最も一貫してうまくいきます:
127.0.0.1 etest.mydomain.com etest localhost
私が見つけた重要なことは、最初にFQDNを、その後に任意の順序でエイリアスを付けることです。
IPアドレスの後に名前を再配置して、「hostname -s」(短い名前)コマンドと「hostname -f」(完全修飾ドメイン名またはFQDN)コマンドを使用して実験すると、私の意味がわかります。次のようになります。
$ hostname -s
etest
$ hostname -f
etest.mydomain.com
'hostname'自体は、/ etc/conf.d/hostnameまたは/ etc/hostnameでホストに入力した名前を返します(ファイルの場所はディストリビューションによって異なりますが、/ etcのどこかにあります)。
名前の順序を変更すると、「hostname -f」が「localhost」や「hostname:system error」のような応答を返すことがあります。正しく機能する唯一の配置は、FQDNを最初にすることです。
私は常にIPv6ローカルアドレス行(:: 1)を同じ方法で設定します。
::1 etest.mydomain.com etest localhost
一部のディストリビューションでは、IPv6名がip6-localhostのような名前に設定されています。私はまだIPv6を使用していないので、この行の最適な設定についてコメントすることはできません。 IPv4ネットワークでは、両方の回線に同じ名前を付けることができると言えます。
スレーブのhostsファイルを
127.0.0.1 localhost
マスターホストファイルを
<private ip> master
<private ip> slave1
<private ip> slave2
100%働く