
私は最近VPSにMTAを設定し、それを設定している間、Unixのホスト名の概念と実装について非常に混乱していることに気づきました。
私はDNSについての深い知識を持っており、古いファイルに精通していますhosts
。しかし、私は常にインターネットに直接接続されているサーバーを使用していたので、伝統的な内部ネットワーキングの経験はありません。
このトピックで検索してみると、矛盾する説明が多く、まずCPUと完全に独立したホスト名(単純な名前ではなく複雑で多層的なホスト名)の徹底的な紹介を求めたいと思います。名前。 DNSとインターネット、そして それからDNSとどのように関連しているかを説明し、「完全修飾ドメイン名」(DNSなどと同じ)という混乱した用語を説明してください。
また、一般的なUnixシステム(または少なくともDebian / Ubuntu)で、ホスト名の管理にどのファイルとコマンドが機能するかを知りたいと思います。具体的には次のようになります。
/etc/hostname
(簡単な名前ですか、複雑な名前ですか?Aレコードの名前ですか?)と正しい設定- ホスト名を設定して正しく設定する役割について
/etc/hosts
(単に解決策ではありませんか?名前とポイントの場所は何ですか?) - その他のファイル
- 再起動せずにホスト名に変更を適用するにはどうすればよいですか?
トピックを簡素化する回答よりも詳細な回答が優先されます。なぜなら、後者の種類の答えが多く、ここで混乱が来るからです。
答え1
slmのコメントによると、システムのホスト名はカーネルによってメモリに保持され、ユーザースペースソフトウェアがこれを取得する正しい方法はgethostname()
システムコールを使用することです。
デフォルトのホスト名は実際には(Linux)カーネルにコンパイルされているので、自分で使用する場合はそれを設定できます。デプロイカーネルは一般的に使用しているようですlocalhost
(空白かもしれません)。
ほとんどの人は、ホスト名を設定するためにカーネルをコンパイルしたくないので、これを設定するシステムコールもあります。sethostname()
これは次のコマンドで使用されますhostname
。通常、起動中にinitサービスはこの操作を実行するためにfrom値を使用します/etc/hostname
。しかし、これは必須ではありません。
ホスト名の設定に制限はありませんが、ホスト名と同じではありません。完全修飾ドメイン名(完全修飾ドメイン名)。 FQDN はホスト名とドメイン名を加えたものです。次の方法でドメイン名を設定する場合は、ホスト名にドットを含めないでください。
ホスト名を設定して正しく設定するための/ etc / hostsの役割は何ですか? (単に確認するのではなく、名前は何で、どこを指しますか?)
これはDNS解決に使用されますが、Patrickはそれを使用してドメイン名のしくみを設定する方法について説明します。ここ。これはホスト名を照会し、IPアドレスを使用してリバース照会を実行することです。単に設定するよりも少し複雑で混乱するかもしれませんが、hostname --fqdn
より一般的です。
domainname
これはreturnを防ぐことはできませんが、(none)
おそらく重要ではないかもしれません。
答え2
まず、システムが起動すると、システムのホスト名が初期化されます。ホスト名はカーネルとともにコンパイルされません。
Debianは/etc/init.d/hostname.sh
起動スクリプトの一部として実行されます。スクリプトはホスト名を読み取り、コマンドを/etc/hostname
使用してhostname
設定します。
システムのホスト名は、自分自身を識別するためにのみ使用されます。システムがネットワークに接続されていない場合でも、主にロギングやその他の目的のためにシステム自体に名前を付ける必要があります。たとえば、すべてのログメッセージにはホスト名があります。これは自分自身を識別するためのものです。
/etc/hosts
ホスト名はそれとまったく関係ありません/etc/hostname
。
/etc/hostname
のみ含める必要がありますCPU名FQDNの代わりに部分。
次のことで違いがわかります。
$ hostname
kannan
$ hostname -d
oongil.com
$ hostname -f
kannan.oongil.com
これでFQDN部分が出てきます。
FQDNは、システムが大規模ネットワークの一部であり、それ自体を一意に識別する必要がある場合に主に必要です。
/etc/hosts
ファイルには、ここにマップされたシステムホスト名とFQDNのルックアップテーブルが含まれています。
127.0.1.1 kannan.oongil.com kannan
Debian ベースのシステムでは、127.0.1.1 はシステム FQDN にマップされます。したがって、hostname -fqdn
呼び出されると、システムは/etc/hosts
この情報を取得するために照会します。
内容の順序は/etc/hosts
非常に重要です。
FQDNを照会したくない場合は、の/etc/hosts
順序を変更できます/etc/nsswitch.conf
。
私の設定は次のとおりです。ここで/etc/hosts
最初にクエリし、次にDNSをクエリします。
ホスト: ファイル mdns4_minimal [NOTFOUND=return] dns mdns4
もっと知りたい場合CPU名そして完全修飾ドメイン名これを参照してくださいDebian メールスレッド。