whoisを実行するときにLinuxは誰に尋ねますか?


11

あなたがするとき:

$ whois stackoverflow.com

Linuxは最初にDNSクエリを実行し、stackoverflow.comのIPを検索して、そこに直接情報を要求しますか?

または、「ルート」whoisサーバー(Linuxディストリビューションで「ルートwhoisサーバー」のIPは、同様の方法でハードコーディングされてい/etc/bind/db.rootますか)を要求しますか?

接続フローとは何ですか?

my computer doing `whois ...` ---> root whois server ---> another whois server ---> information

または

my computer doing `whois ...` ---> DNS server (?) ---> ... ?

回答:


12

Marco d'Itri'swhoisを使用している場合は、--verboseオプションを追加して、機能を確認できます。stackoverflow.comの場合、whois.verisign-grs.com(WHOISサーバーのリストを参照)に問い合わせることから始めます。これにより、Stack OverflowのレジストラーがName.comであるという事実、およびそのWHOISサーバーはwhois.name.comです。そのため、whois.name.comへの問い合わせに進みます。

プロトコルはRFC 3912で文書化されていますwhoisマニュアルページはまた、便利なポインタを持っています。


ありがとう(DebianのデフォルトのwhoisはMarco d'Itriのようです)。whoisverisign-grs以外のWHOISサーバーを使用するように指示するコマンドはありますか?で見つかりませんでしたman whois
Basj 2017年

何か他のもの:あなたはそれがその後、照会しましたwhois.name.com。これは、すべてのレジストラにレジストラ-whoisサーバーが必要であることを意味しますか?これを行うwhois google.frと、whois.nic.frのように、ハードコーディングされたwhoisよりも別のwhoisをクエリするようには見えません。そうですか?
Basj 2017年

そうです、DebianのデフォルトwhoisはMarco d'Itriです(MarcoはDebian開発者です)。探しているオプションは-h(を参照whois -h whois.name.com stackoverflow.com)です。レジストラ全員がWHOISサーバーを持っている必要はありません。ALDKを行うのは、TLDの「権威ある」レジストラだけです。したがって、google.frの場合、レジストラはMARKMONITORですが、情報はのTLDレジストラであるAFNICから取得され.frます。
Stephen Kitt 2017年

どうもありがとう。面白いのは、実行するときwhois stackoverflow.comに取得する情報が非常に少ないのですが、実行するときwhois -h whois.name.com stackoverflow.comに取得する情報(Admin Organization: Stack Exchange, Inc.、番地など)は、取得するときに得られないものですwhois stackoverflow.com。それはの予想される動作ですか?whoisつまり、最初に行う必要がありますwhois domain.com。次に、whoisサーバーを見て、詳細情報を得るために a whois -h ... domain.comやり直す必要がありますか?whois彼がレジストラwhoisを見つけたときに、これらすべてを直接行うべきではありませんか?
Basj 2017年

ので、あなたは、同じ情報を取得する必要whois stackoverflow.com はない(少なくとも、それはバージョン5.2.17でない)whois.name.com自体を行くと尋ねます。レート制限の問題が発生している可能性があります。大量のリクエストを発行すると、whois.name.comによって一時的にブロックされます(ただし、エラーメッセージが表示されます)。ダンプwhois stackoverflow.comwhois -h whois.name.com stackoverflow.comて比較すると、どちらの場合もまったく同じname.com出力が得られます。
Stephen Kitt 2017年

11

スティーブンは主要な部分に答えましたが、あなたが私が対処したい他のいくつかのポイントがあります:

  1. Whoisは十分に定義されていないプロトコルです。階層やルートwhoisなどはありません。実際、whoisシステムにはDNSに関連するものは何もありません。同じソース(レジストリデータベース)完全に独立して動作します。
  2. この点で、各TLDレジストリの動作は異なります。gTLDはそれ自体がケースです。ICANN契約に従って、現時点では、各レジストラは、処理するすべての名前に対してwhoisサーバーが応答する義務があります。レジストリには同じ要件があります。レジストリのwhois出力には、レジストラのwhoisサーバーが一覧表示されます(ただし、上記のコメントで書いたように、これは最近変更されました-正当な理由がないため、実際には多くのwhoisクライアントを壊しました)。 (そして今でも.COM / .NETの場合-.JOBSは最近切り替えられましたが、以前は同じボートにいました、https: //www.icann.org/resources/pages/thick-whois-transition-policy-2017-を参照してください02-01-en)レジストリが連絡先に関するデータを格納しないことを意味する「薄い」レジストリ。レジストラのみが格納します。つまり、ドメイン名に関するデータがあり、問題が発生した場合に連絡する相手を見つける必要がある場合(これは、whoisプロトコルの本来の目的であり、現在もそうです)、最初にレジストリwhoisサーバーにクエリを実行する必要があります。基本的な情報セットを取得し、レジストラのwhoisサーバーを検出してから、このレジストラのwhoisサーバーに連絡して、すべての連絡先情報にアクセスします。これが、今日の.COM / .NETのレジストリ出力がドメインネームサーバー、日付、ステータスに関するデータのみを提供する理由を説明しています。そして、レジストラのwhoisサーバー名、whoisクライアントはフォローしようとしますが、物事が変わったためにできないことがあります(上の私のコメントを参照してください)
  3. ccTLDは、ほとんどの場合、そのように機能しません。レジストラーを使用して、レジストリのwhoisサーバーにクエリを実行しても、必要なすべての結果が返され、一部が欠落している場合(プライバシー上の理由など)でも、レジストラーのwhoisサーバーにクエリを実行する必要はありません。それらは、それが処理するccTLDに対してそれを実行することをレジストリから義務付けられていません(ただし、一部のレジストラはそれにもかかわらず行います)。これは、.frたとえばドメイン名の観察を説明します。
  4. 一部のwhoisクライアントは、whoisサーバーのアドレスをハードコードし、一部whois.nic.$TLDはデフォルトで試行します。これは、多くの場合、レジストリとして機能し、$TLDしばしばnic.$TLDプライマリ操作ドメイン名を持っています。
  5. IANAは、https://www.iana.org/domains/root/dbおよび各レジストリページ(https://www.iana.org/domains/root/db/fr.htmlなど)でレジストリのリストを処理しますWHOIS Server選択したレジストリに関連するwhoisサーバーを一覧表示する行が表示されます。ただし、場合によっては古くなったり間違ったりすることがあります。また、に向けてTLDのwhoisクエリを実行することにより、このデータにアクセスできます。これによりwhois.iana.orgwhoisキー内のwhoisサーバーを含む、関連するレジストリに関するデータが得られます。
  6. 別のトリックもあります。DNSクエリを実行する場合(ただし、このポイントは最初のポイントを無効にしないことに注意してください)$TLD.whois-servers.net、対応するwhoisサーバーの名前が$TLDCNAMEレコードとして提供されます。一部のwhoisクライアントはこのトリックを使用するwhoisかもしれませんが、私はそれを疑います(GNU クライアントはそれらの1つかもしれません、またはそれはおそらくFreeBSDのものです)。このイニシアチブは純粋に非公開であり、仮にそうであったとしても、ICANNやIANAのように、これらすべてに関与するトップの当局によって取り扱われることはありません。たとえば、次のdig uk.whois-servers.net +shortようになりますwhois.nic.uk.。これの魅力は、これが変更された場合(非常にまれ)、または(より頻繁に)新しいレジストリ/ TLDが公開されたときに更新する必要があることです。
  7. 一部のレジストリSRVは、ドメイン名が特定のサービスを処理する場所を指定する専用DNSレコードタイプであるwhoisサーバーアドレスエンドポイントを公開します。だから、あなたが行う場合はdig _nicname._tcp.fr +short、あなたが実際に取得します0 0 43 whois.nic.fr.使用されていません(ただし、/フェイルオーバーロードバランシングを使用することができる)2つの最初の数字以外にも、与える、ポート番号(43)とサーバー名whois.nic.fr連絡先に到達するためにnicname、つまりwhoisその下のサービス正式な登録名(https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml)、frドメイン。多くのレジストリで使用されていませんが、SRVレコードはこの分散型自動検出メカニズムを提供しているため、DNSツリーのどのレベルでも機能し、レジストリや「サブ」レジストリなどで機能します。 。

上記の多くは、新しいプロトコルであるRDAPがwhoisに置き換わると変更されることに注意してください。これはすでに複数のRFCで定義されており、一部のレジストリ(RIRの本番環境、一部のドメイン名レジストリの実験)で使用されていますが、gTLDのレジストリおよびレジストラ(技術的な理由以外)による契約での使用は強制されていません世界とccTLDレジストリは、現在のwhoisサーバーを破棄してRDAPサーバーを配置することに消極的です。


2

WHOISクライアントはWTCPサーバー(TCPポート43)に問い合わせ、直接応答します。DebianのWHOISクライアントには、ハードコーディングされたサーバーのリストがあり、そこから自動的に選択されます。IANAにはWHOISサービスもあります。

出典:RFC 3912


ありがとう。あるtld_serv_listDebianにはないファイルは?ファイルシステムを検索しましたが、見つかりません。これは、whoisバイナリ内でコンパイルされることを意味し/usr/bin/whoisますか?
Basj 2017年

1
これは確かにバイナリにコンパイルされています(の出力を参照strings /usr/bin/whois)。
Stephen Kitt 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.