一部のドメインにおいてWHOISはもうオワコン?ICANN公式のRDAPコマンドラインツールを導入してみた話
Googleが管理するgTLDで突如WHOISのサポートを打ち切り、RDAP(Registration Data Access Protocol)に一本化しやがりました。
ここではWHOISに代わって登場するRDAPや、ICANN公式のコマンドラインツールの使い方についてまとめています。
日本語圏に情報が全くなさそうなので書いてみた…という感じです。
KEY POINTS
- ICANNはWHOISの廃止とRDAPの正式採用を表明(今すぐWHOIS廃止という意味ではない)
- まだWHOISは機能しているはずだが、2025年5月頃からGoogle管理下のgTLDではWHOIS非対応、RDAPオンリーに
- whoisコマンドくらいの使い勝手で手軽に使いたいなら、ICANN提供のCLIツールが便利
時代はRDAP
今年からWHOISが廃止に向かい、後継としてRDAPが使われる方向性であることをICANNが発表しました。
とはいえいきなりRDAPに全部切り替わるわけではなく、WHOISもまだまだ使える状態です。
今後はRDAPを使いますというのは、WHOISを今すぐシャットダウンしましょうという意味ではないはずです。
実際RDAPに対応していないドメインはまだまだあります。WHOISをいきなり切り捨てるのは…普通に考えてナシでしょう。
Googleさんの大胆な対応
ところが今年の5月ごろ(XとかThreadsとかに流れる情報からすると4月?)から、Googleが管理するgTLDではWHOISが機能しなくなり、空レスポンスを返す仕様に変わりました。
つまりWHOISをいきなりシャットダウンして切り捨てやがったのです。
事前に告知でもされていた可能性を考えましたが、見る感じなさそうです。なので本当にいきなりなのでしょう。
Googleが管理するgTLDには.dev
や.app
などのポピュラーなものが含まれています。
WHOISを参照した自動化ツールを使っている場合影響は甚大です。
実を言うと私がこれに気づいたのは、自作のドメイン有効期限切れ警告ツールが突如正常に動作しなくなったからです。
whoisコマンドの結果をシェルスクリプトでパースするだけの素朴なツールなのですが、devドメインに関連するものがぶっ壊れてしまいました。
そんなわけでRDAPを導入することになったのです。
日本語圏で検索するとよく出てくる、RDAPの基本的な使い方
RDAPはHTTPベースのAPIです。curl
などで以下のように使えます。
# curl -L https://rdap.verisign.com/com/v1/domain/google.com | jq .ldhName
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2429 100 2429 0 0 6800 0 --:--:-- --:--:-- --:--:-- 6784
"GOOGLE.COM"
ただドメインごとに異なるRDAPエンドポイントを手作業で調べるのは面倒です。
whoisコマンドではwhois example.com
のように入れるだけで、人間が読めるデータを取得してくれますよね。
whois並みに簡単なコマンドで取得できないと辛すぎるので専用ツールを導入します。
ICANN特製のコマンドラインツール
ICANNはRust製のRDAPコマンドラインツールを公開しています。
他にも同様のコマンドラインツールはありそうですが、以下の理由からこれを導入しました。
- ICANNが作っている
- インターネットといえばここしかないでしょ
- ケツモチが強いと継続性を期待できる
- Rustで作られている
- 保守性が高そう
- 出力が非常にフレンドリーで使い方もお手軽
- 人間にもマシンにもやさしい
インストール
詳細は公式Wikiを参照してください
インストールは以下のどれかをやればよいです。
このツールは比較的新しいツールです。
2025年6月現在、各種Linuxディストロのパッケージ管理システムではまだあまり見かけません。
debianではITPされているようなので、そのうち一撃インストールできるパッケージになってるかもしれないです。
- もし利用可能なパッケージがあるならそれを使う
- たとえばMacなら
brew install icann-rdap
でhomebrewからインストールする
- たとえばMacなら
- バイナリをGitHubからダウンロード後、適当な場所に配置してパスを通す
cargo install icann-rdap-cli
使い方
詳しくはrdap --help
やGitHubのWikiを見てください。
基本
基本はこれだけです。ドメイン入れるだけで動くってのは、ほぼwhoisコマンドと同様です。設定項目はかなりありますが未入力でも普通に動作します。
rdap tpdn.kim
見ての通り、かなり親切な出力です。
(前略)
Domain tpdn.kim
┌────────────────────────────┬──────────────────────────────┐
│ Summary│Domain tpdn.kim │
│ │• INTERNAL-9069 (Registrant) │
│ │• INTERNAL-9070 │
│ │ (Administrative) │
│ │• INTERNAL-9071 (Technical) │
│ │• INTERNAL-9072 (Billing) │
│ │• 1861 (Registrar) │
│ │ • 1 (Abuse) │
│ │• Nameserver │
│ │ cleo.ns.cloudflare.com │
│ │• Nameserver │
│ │ janet.ns.cloudflare.com │
├────────────────────────────┼──────────────────────────────┤
│ Identifiers │ │
├────────────────────────────┼──────────────────────────────┤
│ LDH Name│tpdn.kim │
│ Unicode Name│ │
│ Handle│a2de3ca25dc8437baef2a953acba73│
│ │86-DONUTS │
│ IANA Registrar ID│1861 │
├────────────────────────────┼──────────────────────────────┤
│ Information │ │
├────────────────────────────┼──────────────────────────────┤
│ Status│• Delete Prohibited │
│ │• Transfer Prohibited │
│ Whois│ │
├────────────────────────────┼──────────────────────────────┤
│ Events │ │
├────────────────────────────┼──────────────────────────────┤
│Last Update Of RDAP Database│• Tue, 11-Mar-2025 11:15:08 │
│ │ +00:00 │
│ Registration│• Mon, 1-Sep-2014 00:25:40 │
│ │ +00:00 │
│ Expiration│• Fri, 1-Sep-2034 00:25:40 │
│ │ +00:00 │
│ Last Changed│• Tue, 11-Mar-2025 11:15:08 │
│ │ +00:00 │
├────────────────────────────┼──────────────────────────────┤
│ Links │ │
├────────────────────────────┼──────────────────────────────┤
│ Self│• https://cart-before.porkbun.│
│ │ horse/rdap/domain/tpdn.kim │
│ │• application/rdap+json │
│ │• https://cart-before.porkbun.│
│ │ horse/rdap/domain/tpdn.kim │
└────────────────────────────┴──────────────────────────────┘
┌──────────────────┬─────┐
│DNSSEC Information│ │
├──────────────────┼─────┤
│ Zone Signed│ │
│ Delegation Signed│false│
│ Max Sig Life│ │
└──────────────────┴─────┘
(以下略)
標準状態では出力フォーマットは自動選択となっています。
自動選択はパイプ処理時にはjson、単独実行時にはrendered-markdown形式で出力する親切設計になっていました。
応用
RDAPは指定のフォーマットで書かれたjsonで、jqを噛ませると色々便利に扱うことができます。
# rdap -O pretty-json -p registry tpdn.kim | jq '.events[]'
2025-06-09T22:16:43.472390Z INFO rdap: ICANN RDAP 0.0.22 Command Line Interface
2025-06-09T22:16:43.472444Z INFO rdap: query type is Domain Lookup for value 'tpdn.kim'
{
"eventAction": "transfer",
"eventDate": "2025-03-11T11:11:49.391Z"
}
{
"eventAction": "expiration",
"eventDate": "2034-09-01T00:25:40.394Z"
}
{
"eventAction": "registration",
"eventDate": "2014-09-01T00:25:40.394Z"
}
{
"eventAction": "last changed",
"eventDate": "2025-03-16T11:12:04.982Z"
}
{
"eventAction": "last update of RDAP database",
"eventDate": "2025-06-09T22:12:34.083Z"
}
例えばこんなふうにしちゃえばドメインの有効期限の日付がとれます。
# rdap -O pretty-json -L off -p registry tpdn.kim | jq '.events[] | select(.eventAction == "expiration")["eventDate"]' | tr -d \" | xargs -I{} date --iso-8601 -d {}
2034-09-01
注意点:2025年6月現在、すべてのドメインがRDAPに対応しているわけではない
例えば、.io
ドメインは現時点でRDAPに対応していないように見えます。そのような場合はWHOISを使うしかないです。
# rdap github.io
2025-06-08T22:34:57.344817Z INFO rdap: ICANN RDAP 0.0.22 Command Line Interface
2025-06-08T22:34:57.344858Z INFO rdap: query type is Domain Lookup for value 'github.io'
2025-06-08T22:34:57.347489Z ERROR rdap: No Bootstrap URLs Found
No Bootstrap URLs Found
RDAPへの完全移行に何年かかるか不明ですが、当分の間はドメインの種類ごとにWHOISとRDAPを使い分ける必要があるということです。
実用上はRDAPダメそうならWHOISにフォールバックするような実装になるでしょう。これはメンドクサイ・・・。
参考資料
-
https://atpx.com/blog/from-whois-to-rdap/
- たまたま見つけた誰かのブログ(中国語)
- 言及していることや遭遇した事例は、私の記事と似ている
Discussion