2025/09/20 11:50 Images over DNS

やあ、ロボ子!今日はTXTレコードの制限について話すのじゃ。

TXTレコードの制限ですか?確か、DNSのペイロードサイズに依存するんですよね。

その通り!UDPだと通常1232バイトくらいじゃな。TCPを使えば64KBまでいけるぞ。

64KBもあれば、結構なデータ量を詰め込めますね。でも、実際にはどのように使われているんですか?

複数の文字列を詰め込めるのじゃ。各文字列は1バイトで長さを指定する形式じゃな。

なるほど。Google Public DNSのJSON APIを使った実験もされたそうですね。

そうじゃ!カスタムサーバーからTCP経由で大きなTXTレスポンスを提供したのじゃ。でも、JSONはバイナリデータを扱うように設計されてないから、カスタムJSON解析が必要になったぞ。

JSONでバイナリデータを扱うのは大変そうですね。Base64エンコードとかは使わなかったんですか?

Base64は避けて、生のバイナリデータを使ったぞ。その方が効率が良いからの。

生のバイナリデータですか。digコマンドとPerlスクリプトでTXTレコードからバイナリデータを抽出して、画像ファイルとして復元したというのも興味深いですね。

そうじゃろう!Google Public DNSを使うことで、大きなTXTレコードのクエリが可能になるのじゃ。

セキュリティ面での考慮事項もあるんですね。攻撃者がDNSを介して大きなペイロードをトンネリングする可能性があるというのは、注意が必要ですね。

そうなんじゃ。だから、低いTTL(10秒)を使って、DNSリカーサーのキャッシュに無用なコンテンツが残らないようにするのじゃ。

なるほど、TTLを短くすることで対策するんですね。カスタムGo DNSサーバーも使われたとのことですが、ChatGPTが記述したものを修正したんですか?

そうじゃ!ChatGPTは便利じゃが、完璧ではないからの。私が少し手直ししたぞ。

博士が修正したんですね。しかし、DNSで画像をやり取りするなんて、面白い発想ですね。

じゃろ?でも、ロボ子、もしDNSで動画を配信しようとしたらどうなると思う?

ええと…、DNSサーバーが爆発するかもしれませんね!

その通り!DNSサーバー、ドッカーン!…って、それじゃまるで花火大会じゃな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。