ホスト名と/ etc / hostsを理解する


13

/ etc / hostnameには、がありmynameます。

/ etc / hostsには、

127.0.0.1   localhost.localdomain   localhost myname
::1     localhost.localdomain   localhost myname

私は実際にホスト名とは何か、それが何に使用されるのかについて漠然と理解しています。

これらのより正確な質問は、それをよりよく理解するのに役立ちます。

  1. 上記の例で私のホスト名は本当に何ですか?mynameまたは、他の何か?代わりにを使用myname.domain.comした場合/etc/hostname、実際のホスト名はどうなりますか?

  2. この例では、コマンドhostnameはを返しますmynameが、コマンドhostname -fはを返しますlocalhost.localdomain/etc/hosts名前とIPアドレスの間のマッピングにすぎないことを覚えていました。ここでは別の機能を果たしているようです。fqdnとは何ですか?何に使用されますか?どのように取得されますか?なんでlocalhost.localdomain

  3. 私が代わりに持っていた場合myname.domain.comには/etc/hostnamehostname -f返しますmyname.domain.com。どうして?

  4. これらのファイルでfqdnがドットで終わっていないのはなぜですか?

  5. あるhostname -ddnsmydomain同等?

  6. ホスト名(myname)はどのような状況で使用できますか。また、いつfqdn(localhost.localdomain)を使用する必要がありますか?

回答:


9
  1. /etc/hostnameローカルで実行するアプリケーションに知られているマシンの名前が含まれます。/etc/hostsDNSは名前をIPアドレスに関連付けます。mynameマシンがそれ自体にアクセスできるIPアドレスにマップできますが、それをマップするの127.0.0.1は美的ではありません。
  2. ではありませんが/etc/hosts、で/bin/hostname別の機能を果たします-f
  3. /etc/hosts常識を覆すことができるからです。慎重に編集してください。一時的なパッチや実験の後で、ゴミをそこに残さないでください。
  4. どちらのスタイル(⋯ .TLD.および⋯ .TLD)も使用できます。前者は明確ですが、後者はユビキタスです。
  5. 何であるかわからないdnsmydomainが、そうではない。何かを探すこと/etc/hostsは、技術的には「DNS」ではありません。
  6. ポイント1.ホスト名–ローカルで実行されるアプリケーションの場合。また、SMB(samba)などの特殊なネットワークプロトコルにも使用できます。FQDN(偽物やのようなプレースホルダーでない場合localhost.localdomain)–外部からマシンにアクセスするため。FQDNは、使用される場所で解決できる必要があります。

1
IPが動的(DHCP)であり、時々変更される場合はどうなりますか?myname/ etc / hostsのようにどのアドレスを使用すればよいですか?
user156516 2018

3

誰かがマニュアルを読むように言われたときは絶対に嫌いですが、この場合はホスト名のmanページを見てください。すべてではないにしても、ほとんどの質問に答える必要があります。それは私が説明できるよりもはるかによく書かれています。

いくつかの支援を提供するために、質問に当てはまる抜粋の一部を以下に示します。-ホスト名は、/ etc / hostsに表示されるものです。-返されるFQDNはリゾルバーが返すものに基づいているため、リゾルバーが最初にhostsファイルをチェックしてから必要なDNSクエリを実行するときに、/ etc / hostsの値が返されるのはなぜですか。

(私自身のマニュアルページの再読み込みに基づく)ホスト名のマニュアルページで触れられていないのは、ファイルのエントリがドットで終わっていない理由です。

この規則は、DNSレコードを処理するときに使用されます。ホスト名とホストファイルは実際にはDNSレコードではありません。これらのエントリをバインドで構成してDNSルックアップを解決する場合は、ドットを使用することができます(この優れたリソースを確認してくださいhttp : //www.zytrax.com/books/dns/apa/dot.html)。

また、これらの値はすべてシステムからブロードキャストされるわけではないことに注意してください。したがって、FQDNに基づいて別のシステムにアクセスさせる場合、そのシステムは、その別のシステムのホストファイルに基づいているか、外部システムがFQDNでDNSルックアップに基づいてホストエントリを欠いているため、システム。


関連、最後のドットについて/etc/hostsserverfault.com/questions/336056/setting-fqdn-hostname-and-dot
John WH Smith

3

に答えて

IPが動的(DHCP)であり、時々変更される場合はどうなりますか?/ etc / hostsでmynameとして使用するアドレスはどれですか?

まず、/ etc / hostsは、それがインストールされているホストの名前からアドレスへのマッピングの静的な定義であり、そのホストが名前をIPアドレスに変換するためにのみ使用されることを指摘しておきます。

したがって、考慮すべき2つの視点があります。ホスト 'myname'と他の全員です。

その「myhost」ホストの場合、「localhost」(/ etc / hostsで127.0.0.1として定義されています)を使用して現在のホストを参照するか、「myname」をローカルホストを定義する/ etc / hosts行に追加して、「myname 'は常に、localhostにマップされます。そのようです:

127.0.0.1 localhost myname

次に、INTERFACEがどのIPアドレスを取得するかは関係ありません。常に機能するアドレスを持っています(追加のボーナスは、「myname」から「myname」に話すためにハードウェアをヒットする必要がないことです)。

ここで、「myhost」が動的IPアドレスを持っているときに他のホストが「myhost」を検出できるようにするには、DNSを使用する必要があり、DNSサーバーはDHCP割り当てマッピングを処理する必要があります。(そうですね、他にも考えられるソリューションはありますが、頭に浮かぶものはすべて、「愚かなものを超えた」カテゴリであるIMHOに当てはまります。まあ、そうですね、ホストにITにDNSを通知させるためにできることはあります。それがどこにあるか、しかしそれはここで完全に異なる質問/回答ストリームに値する質問です、私見)


2

/ etc / hostname/ etc / hostsは単純ですが、それほど単純ではありません...

Debianを素早くセットアップする方法/etc/hostname/etc/hosts

1)/ etc / hostnameを編集します。

これを設定するには2つの有効な方法があります。

どちらにするか:

  • machineつまり、このプロセッサの単純な1つの単語の名前です。
    たとえば、「joe」は自分で選択したマシン名である場合があります。
    これには/ etc / hostsにエイリアスが必要になることに注意してください。

または

  • machine.domain.netつまり、完全修飾ドメイン名(FQDN)です。
    たとえば、「joe.xyz.com」です。
    (これは、joe.xyz.comからjoeのIPアドレスを指すDNSホスト「A」レコードがあることを前提としています。つまり、joeという名前のマシンにあります。通常、このレコードは、ドメイン名を購入した場所に設定します。詳細については、瞬間。)

一度の/ etc /ホスト名が設定され、その後、次のステップは、コマンド取得することですhostname --all-fqdnし、dnsdomainname次のように、そのためには、適切に動作するように:

2)/ etc / hostsを編集します

このホストのFQDNの行、たとえば 'machine.domain.net'の前に、このマシンのIPアドレス(おそらく動的IPアドレスサーバーから)を次のように付けます。

#   IP           FQDN (CANONICAL_HOSTNAME)   ALIASES
#-------------- --------------------------- ------------------------
192.168.1.14    Joe.xyz.com                 joe
  • まず、ここでは大文字でも小文字でもかまいませんヒント:ただし、上限を設定すると、次のステップでどこから来るのかを知ることができます。だから私はJ oe を大文字にしました。

  • また、シンプルhostname(つまり、/ etc / hostname = 'machine')がFQDNを正しく生成するには、'machine'というエイリアスが/ etc / hostsに存在している必要があります。そのため、エイリアスjoeが存在します。(ところで、そのエイリアスを使用していなくてもかまいません。)それ以外の場合、このエイリアスは不要であり、使用されません。

  • また、「domain.net」は解決可能である必要があることに注意してください。つまり、DNSにはA.レコードが存在する必要があります。これは「解決可能」と呼ばれるものです(つまり、DNSリゾルバーによって)。

3)次のコマンドを実行して、これらの新しい設定を/ etc / hostnameおよび/ etc / hostsからカーネルにインストールします。

    $ /etc/init.d/hostname.sh       # Or by rebooting

4)テストのホスト名

$ hostname      # Reports the hostname previously read from in /etc/hostname.
joe

または

$ hostname
joe.xyz.com

チップ:

  • これは、/ etc / hostnameが現在の状態ではなく、今すぐ編集する場合などではなく、おそらく再起動の結果として/etc/init.d/hostname.shスクリプトによって以前に読み取られたものであることに注意してください。

  • また、「j」は小文字であることにも注意してください。これは、/ etc / hostsではなく、/ etc / hostnameからのものであることを示しています。

5)FQDNをテストする

$ hostname --all-fqdn   #reports the FQDN(s) matched in /etc/hosts.
Joe.xyz.com             #  It searches /etc/hosts for the joe in /etc/hostname.
                        #  Notice that the 'J' is uppercase.  
                        #     This suggest it came from /etc/hosts.

6)DNSドメイン名をテストする

$ dnsdomainname         #reports the computed DNS doman name    
xyz.com                 #  (i.e. the right most part of the FQDN; 
                        #    the part to the right of the first, left most, dot)
                        #  This is coming from Joe.xyz.com in /hosts, 
                        #    after 'Joe.' is removed.

これにより、Webおよび電子メールサーバーのセットアップが簡単になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.