Linuxのホスト名を決定するものは何ですか?


13

ここ数年、私はLinuxをメインシステム、具体的にはFedoraとして使用してきましたが、一部のネットワークに接続してIPになった場合を除き、ホスト名が「localhost」に設定されていました。今日、私は理解するのに苦労している以下の行動を経験しました。

ラップトップの別のパーティションにUbuntuインストールをセットアップし、Ubuntuのインストール中にコンピューター名/ホスト名を設定します。ただし、Fedoraを再起動すると、FedoraはUbuntuのインストール時に設定した名前にホスト名を更新しました。

ホスト名はディストリビューションのインストールのパーティションに設定および保存され、Fedoraの/ etc / hostnameの内容は「localhost.localdomain」のままですが、hostnameコマンドを実行すると新しいホスト名が表示されます。両方のインストールはefiブートパーティションを共有しますが、それ以外は個別です。Fedoraのインストールが新しいホスト名を読み取っている場所と理由を知りたいのですが?


hosts:/etc/nsswitch.confのエントリは何ですか?
cutrightjm

@cutrightjm- hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
フェドラ

回答:


12

次のhostname実行からわかるように、プログラムはuname syscallを実行します。

strace hostname
...
uname({sysname="Linux", nodename="my.hostname.com", ...}) = 0
...

uname syscallのmanページから、syscallはカーネルから次の構造体を取得すると述べています。

  struct utsname {
               char sysname[];    /* Operating system name (e.g., "Linux") */
               char nodename[];   /* Name within "some implementation-defined
                                     network" */
               char release[];    /* Operating system release (e.g., "2.6.28") */
               char version[];    /* Operating system version */
               char machine[];    /* Hardware identifier */
           #ifdef _GNU_SOURCE
               char domainname[]; /* NIS or YP domain name */
           #endif
           };

したがって、コメントを信じる場合、ドメイン名はNIS / YPシステムから取得されます。おそらく、ネットワーク上にubuntu OSによって設定された名前を追跡しているNIS / YPサービスが存在する可能性があります。


5
これは正しくありませんhostname(1)。ホスト名がどのように設定され、返されるかを説明したマニュアルページを参照してください。名前の類似性にもかかわらず、NIS / YPドメイン名は、リゾルバーによって返されるFQDN / DNSドメイン名とは関係ありません。NIS / YPを構成していない場合、NIS / YPドメイン名は設定解除されます。
bodgit

「ノード名」はあなたが気にするフィールドですか?IPネットワークをオプションで実装定義のものと見なすUNIXのノスタルジーに沿ったものになるでしょう:)
rackandboneman

5

Linuxシステム上のホスト名には、2つの独立した(!)コンセプトがあります。

ネットワーク接続に関係なく、カーネルがローカルホスト名(gethostname / unameおよびsethostnameシステムコールで処理される)を考慮するものは何でもあります。TCP/ IPネットワークの機能を持たないカーネルを構築した場合、これらのメカニズムは依然として存在します。

ホストが持っているTCP / IP(または他のネットワークスタック-すべてのネットワークがIPではない!)アドレスに実際に接続されている1つ以上のホスト名があり、これらはリゾルバライブラリ関数(の一部libc)、適切な構成ファイル(/etc/nsswitch.conf、/etc)で指定した規則に従ってソース(ローカル/ etc / hostsファイル、DNS、NIS ....)を解釈することにより、このような名前を決定します/host.confなど...)。


3

おそらく、Ubuntuはインストール中にホームルーターを介してインターネットに接続しました。これを行うため、ルーターにホスト名を報告し、一時的なローカルIPを取得しました。

Fedoraを再起動すると、同じルーターに接続してIPアドレスを取得しますが、Ubuntu用に作成された古いリースは引き続き有効です。同じネットワークカードと同じハードウェアMACアドレスを持つ同じマシンであるため、同じリースを再利用します。

私の推測では、ルーターはIPリースが登録されたホスト名を送信し、Fedoraがそれを取得します。

残念ながら、答えを裏付ける証拠や引用はありません。WindowsとのデュアルブートでUbuntuをインストールしたという個人的な経験について話すことができます。当時、Ubuntuは、Windowsで使用していたホスト名と同じホスト名をインストール中に設定することを拒否しました。これは、名前がネットワークに存在していると主張していたためです。ここでも同様のことが起こっているようです。

私の推測があなたの状況にも当てはまるかどうかを確認するには、ルーターの設定インターフェイスでIPリースを取り消してから、Fedoraを再起動してください。Ubuntuのホスト名が必要なくなったら、私は正しいはずです。


DHCPクライアントがホスト名をサーバーに送信したり、サーバーからホスト名を読み取ったりすることは確かに可能です。ほとんどすべてが最初に実行されます(ただし、ホスト名が「localhost」に設定されている場合、あまり効果はありません:)。Linux DHCPクライアントでは、DHCPサーバーからホスト名読み取ることができますが、このサポートが常に有効になっているわけではないことを理解しています()。最近のFedoraがこれを行っているようだと聞いて興味深い。
sourcejedi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.