適当な DoH クライアントでエンドポイントに https://dns.maya.st/resolve を指定してください。右は Jigsaw Intra の設定例。
最近の firefox なら、about:config から network.trr.uri にエンドポイントを指定、さらに network.trr.mode に 2 ( = DoH を優先して利用)を設定してください。ちなみに 0 は通常の DNS のみ、1 は通常の DNS を優先、3 は DoH のみ利用。trr とは trusted recursive resolver のことらしい。
あるいは、以下のフォームで JSON 形式の応答が得られます。
DoH クライアントも作りました。の実行には Knot Resolver および lua-http がインストールされている必要があります(動いている必要はありません)。実行例:
% ./hdig +dnssec chigumaya.jp https://dns.maya.st/resolve ;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 0 ;; Flags: rd qr ad ra; QUERY: 1; ANSWER: 2; AUTHORITY: 0; ADDITIONAL: 1 ;; OPT PSEUDOSECTION: false;; QUESTION ;; chigumaya.jp. A IN ;; ANSWER chigumaya.jp. 86400 A 160.16.73.77 chigumaya.jp. 86400 RRSIG A 8 2 86400 20181101005133 20181017232133 22455 chigumaya.jp. E6N+K+VYnBd48DkpPxfhjrvPLu5zrAEdflVx5ADDnU9FKMLgoOWtjKNXRrbt6ymSTgMgFssH8+VYgBJRofMkZ1BATy3MUj2h4HndcKaDN2lzIV80WAucyf2lhVFfcB6aFMnIo63f40IQ/3ZfoSLCt9kyPMolju1A5s6RXzzhhxY= ;; ADDITIONAL
以下解説。
Knot Resolver (kresd) で動いてます。
一般的に DoH サーバを実装するなら以下のような構成になると思いますが、
+------------+ +------------+ +------------+ | doh client | ----(https)----| Web server |----(dns)----| DNS server | +------------+ +------------+ +------------+
このデモでは以下のような構成になってます。
+------------+ +------------+ | doh client | ----(https)----| DNS server | +------------+ +------------+
DNS サーバ自身が HTTPS リクエストを直接受けて解釈してます。このデモではサーバ側の都合で前段に apache の reverse proxy が入ってますが、なくても動きます。Knot Resolver は DNS サーバなのに HTTP/2 を喋れるのですが、apache が HTTP/1.1 しか喋らないので(mod_http2 を入れればいいんだけどめんどくさいので)、このデモは HTTP/1.1 限定です。
以下をサポート。
どちらの形式を使う場合もエンドポイントは同一です。
% git clone https://dns.maya.st/doh.git
あるいは、以下のファイルを持ってってください。
無保証。
kresd の config ファイルの中で以下のように記述してください。
modules.load('http') doh = require 'doh' http.config { host = '127.0.0.1', port = 443, } http.add_interface { host = '192.0.2.1', port = 443, endpoints = { ['/dns-resolve'] = { 'application/json', doh.serve_doh } }, }
/stats など内部情報が見える URI が外からアクセスされないよう、かならず外部公開用の別アドレスを用意して、http.add_interface() で設定してください。
詳細はkresd のドキュメントを参照してください。
まともな DoH モジュールは cloudflare の中の人が作ったものが kresd に寄贈してもらえることになってるので、こんなものは使わずそっちを待ちましょう。