私は最近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)
おそらく重要ではないかもしれません。