Skip to content
Published on

ドメインが自ら売り物だと告げる方法 — DNSはいつから主張を載せるチャネルになったのか

シェア
Authors

ちゃんと表示されるドメインが実は売られているということ

探していたドメインはすでに登録済みです。開いてみるとサイトも問題なく表示されます。ここでたいていは諦めます。ところがそのうち相当数は、実は売る意思があります。

問題は、その事実を知る方法が機械にはないことです。人であればサイトに書かれた連絡先を探してメールを送ってみることもできますが、ドメイン検索ツールやレジストラが数百万のドメインについてそれをやることはできません。登録情報にも売る意思は書かれていません。登録されているという事実と、売る意思があるという事実は別の層の情報なのに、後者を収める場所がなかったのです。

DNSは古くから名前解決以上のことをやってきました

この問題への答えが最近RFCとして出ましたが、答えそのものより答えが置かれた場所が興味深いところです。DNSです。

私たちはDNSを、名前をアドレスに変えるシステムだと習います。ところが実際の運用でDNSに入れているもののうち相当数はアドレスではありません。どのサーバーがこのドメイン名でメールを送ってよいかを書き、署名検証に使う公開鍵を書き、証明書をどの機関が発行してよいかを書き、証明書を受け取るためにこのドメインを制御しているという証拠をしばらく載せておきます。

これらの共通点は、すべてがこのドメインに関する主張だという点です。そしてその主張を、ドメイン所有者だけが書ける場所に載せておくという点です。DNSが本当に提供しているのは名前解決というより、ドメイン所有者だけが書けて誰でも読める世界規模の公開掲示板に近いものです。

アンダースコアの名前がやっていること

この掲示板が互いに衝突せずに回っている理由がアンダースコアです。

TXTレコードは何でも入れられるので、ひとつのドメインに複数の用途のTXTが混ざると、読む側は中身を開いてみないと自分のものを選び出せません。この問題を整理したのが2019年のRFC 8552です。この文書は用途ごとにアンダースコアで始まる下位ノードを置き、その下のレコードだけをその用途として解釈するという規則を立てました。そしてIANAにアンダースコア付きノード名の登録簿を作り、互いに重ならないよう管理させました。

アンダースコアを使った理由が核心です。ホスト名の規則はアンダースコアを許しません。だからアンダースコアで始まる名前は、どんな実在のホストとも決して衝突しません。すでに広く使われていた _dmarc_domainkey_acme-challenge といった名前がこの規則の下に入りました。

RFC 10023が定義したレコード

今回追加されたのがRFC 10023です。SIDN LabsのMarco Davidsが書いた情報提供文書で、2026年7月に出ました。名前は _for-sale です。

動作はこうです。example.com を売る意思があるなら、_for-sale.example.com にTXTレコードをひとつ置きます。元のドメインはそのまま問題なく動きます。サイトもそのまま表示され、メールもそのまま届きます。信号だけが横に付くわけです。

レコードの内容は255オクテットの文字列の断片ひとつであり、必ずバージョンタグで始まらなければなりません。そのあとにタグと値の組を最大ひとつだけ付けられます。

_for-sale IN TXT "v=FORSALE1;"
_for-sale IN TXT "v=FORSALE1;ftxt=Call for info."
_for-sale IN TXT "v=FORSALE1;furi=https://example.com/foo%20bar"
_for-sale IN TXT "v=FORSALE1;fval=EUR999"
_for-sale IN TXT "v=FORSALE1;fval=BTC0.000010"

一行目のようにタグがなくバージョンだけのものも有効です。売る意思があるという事実だけを知らせ、残りは何も言わない形です。

四つのタグと制約

定義されたタグは四つです。

タグ用途形式
fcod協力関係にある当事者どうしで使う私的なコード1〜239オクテット
ftxt人が読む自由形式の文言1〜239オクテット
furi追加情報につながるURIURIひとつ。http、https、mailto、telを推奨
fval希望価格通貨コードと金額。USD750BTC0.000010 の形

制約も仕様にはっきり書かれています。ひとつのレコードにタグと値の組はひとつを超えられません。ワイルドカードの形は規格に適合しません。キャッシュ有効時間は3600秒以下が推奨されます。そして売る意思がないという趣旨の内容を書くことは、無効な使い方とみなされます。

価格の表記が通貨記号ではなく通貨コードだという点も注目に値します。記号は国ごとに重なり文字集合の問題を起こしますが、コードはそうなりません。小さな決定に見えても、自動処理の側では大きな違いです。

この方式が安い理由

この設計が魅力的な理由は、何も触らないという点にあります。

新しいレコードタイプを作りませんでした。作っていたら、リゾルバーと権威サーバーと管理ツールがすべて対応しなければならなかったはずです。代わりに、すでにどこでも動くTXTをそのまま使います。プロトコルも変えません。そして元のドメインの運用に影響がありません。生きているサイトの横に静かに付いて、売る気がなくなれば消せばそれで終わりです。

これがアンダースコアのチャネルが使われ続ける理由でもあります。新しい機能を配備するもっとも安い方法が、すでに全員が配備してあるものの上に載せることだからです。メール認証も、証明書発行の検証も、同じ経路で広がりました。

そしてこの方式が信頼を与えられない理由

安いのには理由があります。このチャネルに載るものはすべて検証されていない自己主張です。ドメインを制御しているということ以外、何も保証しません。

RFC 10023はこの点について驚くほど率直です。セキュリティ節で挙げられている危険を見るだけでもそれが分かります。値をそのまま画面に流せばスクリプト挿入やクエリ挿入になりうるし、同形異義文字や双方向テキストを使って人が読む値を欺けるし、furi が指す先が悪性サイトである可能性もあり、とんでもなく低い価格を書いて買い手を誘い込むこともできます。だから文書は、処理する側が値を必ずサニタイズしURIの評判を確認すること、そして価格は参考であり売り手に確認すべきだという趣旨の案内を併せて表示することを勧告しています。

もっとも明確な禁止事項もあります。furi の内容に出会っても、ユーザーの明示的な確認なしに自動的に遷移させてはならないということです。DNSレコードに書かれたアドレスへユーザーをそのまま送った瞬間、ドメインを一時的に手にした人がそのリンクの到達先を決められるようになります。

プライバシー面の危険も文書が直接書いています。売るという意思を公開すること自体が情報の露出であり、書いておいた連絡先は収集されてスパムの対象になります。

自分のドメインに付けるなら

まとめるとチェックリストはこうなります。

  1. 本当に売る気があるときだけ付けます。 仕様がそう定めています。
  2. キャッシュ有効時間を短く取ります。 3600秒以下が推奨です。気が変わったのに一日じゅう売り物として広告される状況を避けるために必要です。
  3. 連絡手段を新しく作ります。 既存の業務用アドレスを書かないでください。公開レコードに書かれたアドレスは収集されます。
  4. 価格を書くかを慎重に決めます。 情報提供RFCは形式だけを定め、交渉戦略を決めてはくれません。書いておいた数字が上限になります。
  5. 読む側を作るなら自動的な信頼を禁じます。 値をそのままレンダリングせず、自動遷移を入れず、この情報が売り手の主張にすぎないという点を画面に表示します。
  6. 売る気がなくなったら消します。 レコードを消すだけで信号が消えるという点が、この方式の最大の長所です。

まとめと出典

このRFCをドメイン取引に関する文書としてだけ読むと小さく見えます。より値打ちがあるのはパターンのほうです。配備済みのインフラの上にアンダースコアの名前をひとつ載せて新しい意味を運ぶやり方がどれほど安く、その代償として信頼がどれほどないかを、ひとつの文書のなかで両方見せてくれます。社内システムで同じ誘惑を感じたときは、この二つの面を一緒に見ていただければと思います。