Tracerouteは名前をどのように確認しますか?

Tracerouteは名前をどのように確認しますか?

スクリプトを作成するときに、私が指定したコンピュータ名(「selenium-rc」など)でコンピュータを参照したいと思います。 "selenium-rc"を使用してpingできないため、次のコマンドを使用して名前が認識されていることを確認しました。

> traceroute 192.168.235.41
traceroute to 192.168.235.41 (192.168.235.41), 64 hops max, 52 byte packets
 1  selenium-rc (192.168.235.41)  0.545 ms  0.241 ms  0.124 ms

いいですね。 Tracerouteが名前を「発見」しました。どのように?次へ...

> traceroute selenium-rc
traceroute: unknown host selenium-rc

うーん…ホストがわからないので、ここではルックアップメカニズムが異なるはずです。私はこれがシステム名解決プロセスを使用していると仮定していますが、最初の例ではTraceroute固有のプロセスを使用しています。正しいですか?

そして後でまた来ると...

> traceroute 192.168.235.41
traceroute to 192.168.235.41 (192.168.235.41), 64 hops max, 52 byte packets
 1  minint-q4e8i52.mycorp.net (192.168.235.41)  0.509 ms  0.206 ms  0.136 ms

まあ、他の結果。 「selenium-rc」の名前はシステム自体では変更されませんでしたが、トレースパス名解決プロセスには一種の優先順位が含まれている必要があり、現在はネットワーク内の他のシステム/サービスによって割り当てられた潜在的に権威のある結果を提供します。 (残念ながら、私が制御できない動的名前であると仮定しているので、スクリプトでは使用できません。)

誰かが結果を説明できますか?

ベストアンサー1

通常、LinuxとUnixでは、Tracerouteとpingの両方でgethostbyname()呼び出しを使用してシステム名を見つけます。 gethostbyname() は順番にシステム構成ファイルを使用して、名前付きデータベースが照会される順序、つまり /etc/hosts と DNS を決定します。

Linuxでは、基本的な作業はDNSを最初に照会し、次に/ etc / hostsに照会することです(またはそうであるかもしれません)。これは、/etc/host.confで希望の順序を設定して変更または更新できます。

DNSの前に/etc/hostsを検索するには、/etc/host.confで次の順序を設定します。

order hosts,bind

Solaris では、ホストデータベースエントリの /etc/nsswitch.conf ファイルで同じ順序が制御されます。

ホスト:filedns

DNSを検索する前に/ etc / hostsを検索するように検索順序を設定します。

Tracerouteとpingは両方とも、これらの方法を使用して構成された名前付きデータベースをすべて検索します。hostコマンドはnslookupすべてDNSのみを使用するため、一見一貫していない結果を必ずしも複製するわけではありません。

getentSolarisには、検索用に構成された名前付きデータベースのセットに沿ってトレースパスとpingと同じ方法でホストまたはアドレスを識別するために使用できるルックアップツールがあります。

getent hosts <hostname>

/etc/nsswitch.conf にホスト用にリストされているすべてのデータベースが検索されます。

だから。あなたの場合、一貫した結果を得るには、/etc/hosts に以下を追加します。

192.168.235.41 selenium-rc

また、/etc/host.conf に以下があることを確認してください。

order hosts,bind

または、/etc/nsswitch.confに次のものがあることを確認してください。

hosts: files dns

完了すると、ping、Traceroute、ssh、telnet、curl、wgetなどの他のコマンドでより一貫した結果を表示できます。

おすすめ記事