web-dev-qa-db-ja.com

ホスト名の混乱としてのローカルホスト

ホスト名とFQDNについての基本的な理解があります。今私は混乱しています、私は本当に私のホスト名の名前を指定する必要がありますか?だから例えば:

Hostname: somename
Domain: mydomain.com
FQDN: somename.mydomain.com

ここで、ホスト名がlocalhostであることがわかります。その違いと影響は何ですか?したがって、localhostが私のホスト名である場合、私のFQDNはlocalhost.mydomain.com、 正しい?

4
Baboon

localhostは、インターネットを使用できるすべてのコンピューターに存在するはずのIPアドレス127.0.0.1を指す「特別な名前」であり、マシン自体を指します。 (127.x.x.xで始まるIPアドレスはすべてローカルマシンを参照します)。

localhostはlocalhost.mydomain.comと同じではありません。

ファイル/ etc/hostnameは、コンピュータがその名前と見なしているものを表示します。 Debianでは、127.0.1.1を/ etc/hostsファイルのこの名前にリンクしているようです。 [静的に割り当てられている場合は、これを「有効な」IPアドレスに設定できます]

理想的には、ホスト名として「localhost」を使用しないでください(理論的には、私が行っていないため、例を考えることはできません)。一部のプログラムで問題が発生します。

2
davidgo

「localhost」はループバックインターフェイスの「名前」であり、常に予約済みのIP 127.0.0.1があり、通常はデバイス名「lo」または「lo0」です。

わかりました。もうわかったようです。しかし、なぜホスト名-fがローカルホストを提供するのですか?

ホストに名前を付けない場合、名前のないシステムは「ネットワーク/インターネット準備完了」とは見なされないため、ホスト名はデフォルトでlocalhostになります。

doホストに名前を付けると、ホスト名はホストのIPアドレスに解決されます。実行するLinuxのフレーバーに応じて、これを設定するためのdiffconfファイルがあります。名前付きマシン(つまり、ホスト名が「localhost」ではないホストHost)からこの動作を確認するには、次のコマンドを実行します。

pingローカルホスト
ping $ hostname

127.0.0.1とマシンのIPの2つの異なるIPが表示されるはずです。そうでない場合は、confファイル、hupインターフェース/ネットワークスクリプトを確認するか、変更後に再起動します

したがって、localhostが私のホスト名である場合の私のFQDNはlocalhost.mydomain.comになりますよね?

いいえ、localhostはマシンの外部への接続には使用されないため、localhostには実際の「fqdn」はありません(ただし、インストールではデフォルトでlocalhost.localdomainがインストールされますが、インターネット上では実際には存在しないため、「完全修飾」imoではありません。 )。

「localhost」またはloは、ローカルマシンにのみ存在し、関連する疑似デバイスです。その理由は、スタックをローカルにトラバースすることです...たとえば、python "localhost"で実行されているデータベースに接続するコード

1
nandoP

影響は、このマシンのIPアドレスとしてDNSゾーンファイルにlocalhostを入力するか、127.0.0.1として入力することです。どちらを選択しても、正しく機能しないものがあります。

127.0.0.1と入力すると(これが推奨される方法です)、他のマシンからこのlocalhostという名前のマシンにアクセスすることはできません。したがって、別の名前を使用するのが現実的です...

これをこのマシンのIPアドレスとして入力した場合、他のすべてのマシンが持つファイル(/ etc/hosts)を介した名前解決の結果とDNSサービスの間で、他のマシンで不一致が発生します。/etc/hostsファイルのlocalhost行。アドレスは127.0.0.1で、DNSサービスには異なるアドレスが含まれます。

0
Laszlo Valko

localhostは、ローカルマシンへのループバックです。そのままlocalhostにする必要があるので、localhostという名前を付けるために邪魔をする必要はありません。 Linuxまたは任意のOSを任意のマシンにインストールし、何もしなくても、ネットワーク構成に常にlocalhostが存在します。

つまり、入力しているMacMiniはlocalhostに応答します。つまり、それは私のマシンと私のローカルマシンです。ローカルマシンを使用している場合は、localhostがローカルマシンになります。

hostnameは、他のサービスの参照として使用できる、または使用できないマシンのニックネームです。多くの場合、hostname.localhostnameは実際のホスト名)に置き換えることで、マシンへのローカルネットワークループを実現できます。 hostname.localの組み合わせは、完全修飾ドメイン名(FQDN)と見なされます。

たとえば、私はApacheの設定をいろいろと試していますが、Apacheでlocalhostを使用している場合は、NameVirtualHostまたはhostname.localに個別の設定を設定することには利点があります。

.localを超えて拡張したい場合は、実際のドメインを外の世界の設定に接続する領域に入ります。これはまったく別の議論です。

EDIT:以下のコメントに基づくと、問題のマシンのホスト名はlocalhostのようです。つまり、技術的にはlocalhost.localに到達できます。これは、100%間違っているわけではありませんが、非常に混乱しています。ホスト名を新しいものに変更するには、次の手順を実行します。たとえば、新しいホストはcoolnewhostと呼ばれるべきだと思います。

これにより、ホスト名が一時的にcoolnewhostに変更されます。

Sudo hostname coolnewhost

恒久的に変更するには、ファイルを編集します(私はnanoを使用したいが、好きなものを使用します):

Sudo nano /etc/hostname

次に、そのファイルのホスト名を編集して、coolnewhostを読み取ります。

もう1つのオプションは、sysctlを使用してカーネルのホスト名を変更することです。

Sudo sysctl kernel.hostname= coolnewhost

そして、あなたは比較的良いはずです。ただし、/etc/hostsファイルをチェックして、古いlocalhostが奇妙に設定されていることを確認します。

Sudo nano /etc/hosts

そこには次のような行が1つだけあるはずです。

127.0.0.1       localhost

その行に一致しないものが他にある場合は、編集、コメント、または削除する必要があります。

0
JakeGould