コンピューターシステム(Linux)には1つのホスト名しかありませんか?


15

hostname は、システムのDNS名を表示し、ホスト名またはNISドメイン名を表示または設定するために使用されます。

コンピューターシステム(Linux)には1つのホスト名しかありませんか?

仮想ホスティングでは、いくつかのホスト名をWebサーバーの異なるルートディレクトリに解決できます。コンピューターシステム(Linux)がホスト名を1つしか持つことができない場合、仮想ホスティングはどのように可能ですか?

ありがとう。


DNS AまたはAAAレコードは、複数のドメインの同じIPアドレスを指します。マシンのホスト名は必ずしも重要ではありません。
ラバースタンプ

(1)の出力は、hostnameホスト名をIPアドレスに解決する際に使用されますか?(2)AはIPv4アドレス、AAAA IPv6を意味します。AAAとは何ですか?
すべてのStackExchange

avahiマシンのホスト名に依存するなどのmDNSサービス。その場合、hostname.localマシンのローカルIPアドレスに解決されます。誰かが私の最初のコメントの拡張である答えを書いたのを見ます...私のブラウザ通知にはあまりにも同時です。
ラバースタンプ

AAAは 'A'の短いタイプミスです
-RubberStamp

仮想ホストはホスト名とは関係ありません。純粋にWebサーバーの動作に依存します。サーバーは、HTTP要求ヘッダーの異なるHostフィールドに対して異なる応答をします。通常のWebサーバーは、DNSまたはホスト名に関連して仮想ホスト機能を提供することはないと思います。
炸鱼薯条德里克

回答:


26

はいといいえ。ホスト名と呼ばれる2つの異なるものです。

「内部」ホスト名は、基本的にカーネルが保持する文字列です。これはhostnameコマンド(またはgethostname()呼び出し)によって返されるもので、システム内で一意です(*)

主に、プログラムが実行されているシステムの識別子を出力したいときに使用されます。たとえば\h、BashのPS1ホスト名に展開します。同様に、syslogスタイルのログファイルには、ログエントリのホスト名も含まれます。

(* Stephen Kittがコメントしているように、名前空間は同じシステム上のプロセスに異なるホスト名を表示するために使用できます。これは主に、異なるシステムのように振る舞うコンテナに使用されます。)

次に、他のシステムが別のシステムのIPアドレスを検索するために使用するDNS名もあります。同じIPアドレスを指す複数のDNS名が存在する可能性があるため、同じホストが存在する可能性があります。

内部ホスト名とDNS名は同じである必要はありません。誰かがIPアドレスを使用してorange(*)を呼び出すことにしたWebサーバーを持っているとします192.0.2.9。これは、2つの異なるドメインにサービスを提供でき、DNSが持つように設定されるだろうwww.example.orgwww.example.comの両方のポイント192.0.2.9システムの内部ホスト名があるかもしれないが、orange.example.orgあるいは単にorange。その場合には、DNSの設定は、通常、必要があります逆引き参照192.0.2.9名前をポイントバックをorange.example.org、しかし、その力には何もありません。

(*果物にちなんでサーバーに名前を付けるのが好きだからです。誰かが使用webserver1するなどの可能性がありますが、ポイントは実際のドメインのいずれかに名前を付ける必要がないということです。)

それに加えて、仮想ホスティングでは、ブラウザがアクセスしようとしたサイトの名前をWebサーバーに通知する必要があります。そうしないと、サーバーはクライアントがどの仮想サイトに到達しようとしたかを知りません。HTTPにはそのためのHostヘッダーがあります。


DNS名と内部ホスト名の区別を混乱させるのは、mDNSプロトコル (たとえばavahiデーモンによって実装される)と他のディスカバリプロトコルです。mDNSを使用すると、ホストは同じネットワーク上の他のすべてのホストに名前情報を照会し、DNSで明示的に設定することなく、自分のホスト名を他のホストに表示できます。


ありがとう。(1)「DNSセットアップは通常、名前orange.example.orgを指す192.0.2.9ポイントを持ちます」指定されたホスト名のIPアドレスの取得を解決しないのはなぜですか?(2)の出力は、hostnameホスト名をIPアドレスに解決する際に使用されますか?
すべてのStackExchange

(2)...ルーターとモデムを使用してISPから自宅にローカルWi-Fiネットワークをセットアップする場合、ネットワーク内のマシンはhostnameコマンドの出力で識別できますか?ルーターはDNSのように動作hostnameして、ネットワーク内のプライベートIPアドレスへの出力を解決しますか?
すべてのStackExchange

2
(1)については、IPアドレスを取得して名前を返す逆ルックアップもあります。(単一の名前と単一のアドレスを持つシステムの場合は、明確にするために両方を解決する必要があります)
-ilkkachu

3
小規模ネットワークがを使用している可能性がありますmDNS。良くも悪くも、システム所有者は、DNSサーバーに登録する必要なく、ローカルネットワーク上の他のシステムからアクセス可能な独自のホスト名を選択できます。
マークプロトニック

2
多くのホームネットワークでは、ローカルルーターはDNSリゾルバーとして機能します。ホストはDHCPを使用してアドレスを要求するとホスト名を送信し、ルーターはその名前を記憶し、ネットワーク上のすべてのホストに対して名前を解決します。MarkとRubberStampが言及しているように、LAN(特にプリンター)でのサービス検出を可能にするBonjour(Avahiで実装)もあります。また、ホストは複数のIPアドレスを持つことができ、ホスト名は名前空間になっているため、プロセスは同じホスト上の異なるホスト名を見ることができます。
スティーブンキット

7

コンピューターシステム(Linux)には1つのホスト名しかありませんか?

番号。

[アドレスを指すDNSレコードを持つことで、誰でもホストに好きな名前を付けることができること、またはで複数のエイリアスを持つことができること/etc/hosts、または名前が実際に何であるかについての哲学的考慮事項があることを完全に無視します]

Linuxシステムでは、ホスト名は単にプロセスごとのリソース(「UTS名前空間」)であり、デフォルトでその子によって継承されますが、フラグを使用して、unshare(2)またはフラグclone(2)を使用して分離できますCLONE_NEWUTS。あなたは、になるはずnamespaces(7)マンページを参照してください。

pid、ポート番号、マウントポイントなどと同様に、ホスト名はもはやグローバル識別子ではなく、プロセスのアドレス空間(仮想メモリ)またはファイル記述子テーブルと同じように仮想化できます。

仮想ホスティングでは、いくつかのホスト名をWebサーバーの異なるルートディレクトリに解決できます。コンピューターシステム(Linux)がホスト名を1つしか持つことができない場合、仮想ホスティングはどのように可能ですか?

仮想ホスティングは完全に異なるものであり、通常、WebサーバーでワイルドカードDNSレコード(たとえば*.foo.com=> 13.13.13.13)を構成し13.13.13.13、http Host:ヘッダー[1]の値に基づいて異なるディレクトリ/リソースを提供します(高度に構成可能です) ;ほとんどのウェブサーバーは httpヘッダーだけでなく、さまざまなリソースを提供できますHost:)。これらすべてにおいて、Webサーバーが実行されているシステムのOSは何の役割も果たしません。

[1]またはhttpsの場合のサーバー名表示の値。これにより、同じWebサーバーは異なる仮想ホストに対して異なる証明書を使用できます。


これについてあなたに反対しなければなりません。仮想ホスティングの場合、通常、単一のホストを指すcnameレコードの特定のセットがあります。ドメイン内には仮想ホストを必要とする多くのシステムがあるため、ワイルドカードDNSレコードは使用しません。UTS名前空間を除いて(とにかくこれはどれほど広く使われていますか?)、hostnamectlは特定のサーバーの単一のホスト名を報告します。DNSとhostnamectlは直交しており、互いにほとんど関係ありません。
doneal24

1
@ DougO'Nealあなたは何に同意しませんか?そのワイルドカードDNSレコードは、私が説明する方法で使用されていますか?あなたはそれが好きであろうとなかろうと、彼らはそのように乱暴に使用されています(しゃれのために申し訳ありません)uts情報はLinuxでプロセスごとに仮想化されているのですか?それはただの方法です。名前空間は缶詰のコンテナ化/仮想化ソリューション(他の回答で提案されているように)でのみ使用/使用されるという考えについては、申し訳ありませんが、それは「女の子だけが人形で遊ぶ」または「手動トランスミッションは大型トラックでのみ使用されます」品質;-)
ビリーおじさん

1

通常、単一のホスト名を/ etc / hostnameに設定します。そして、/ etc / hostsに多くのドメイン名を設定します。

UTS名前空間を使用すると、単一のシステムが異なるプロセスに対して異なるホスト名とドメイン名を持つように見えます。:詳細情報についてはhttps://en.wikipedia.org/wiki/Linux_namespaces。そのため、同じシステムに対して複数のホスト名とドメイン名を持つことは絶対に可能です。たとえば、同じホスト内のdockerコンテナは、ホストシステムとは異なるホスト名を持ちます。

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