はじめに
最近はプライバシーや盗聴の観点からDNSの問い合わせについてもDNS over HTTPSやDNS over TLSなどを使用することが推奨され、ブラウザーの機能としてもその手のサービスのDNSを直接使用できるようになっています。
普段は自宅のDNSフォワーダーとしてCoreDNSを使用しているのですが、今までNon-secureな形でのしかアップストリームサーバを指定したことが無かったので、複数のDoTを提供しているサーバへの問い合わせを行う方法について書いておくことにしました。
確認環境
.:53
.:5301 on 127.0.0.1
.:5302 on 127.0.0.1
[INFO] plugin/reload: Running configuration MD5 = a2ed192d06c1fb0e51bf5d987617f669
CoreDNS-1.8.3
linux/arm64, go1.16.3, 4293992
設定方法
これについては公式ドキュメントのサンプル通りです。昔はこのサンプルが無かったように思うのですが、先日この記述を見つけてようやく設定をDNSからDoTに切り替えることが出来ました。
.:53 {
forward . 127.0.0.1:5301 127.0.0.1:5302
}
.:5301 {
forward . 8.8.8.8 8.8.4.4 {
tls_servername dns.google
force_tcp
}
}
.:5302 {
forward . 1.1.1.1 1.0.0.1 {
tls_servername cloudflare-dns.com
force_tcp
}
}
通常通り53/udpで待ち受け、そのあと、5301/udp、5302/udp として2つ設定したそれぞれのアップストリームサーバをそれぞれ指定することでランダムに問い合わせを振り分けます(振り分けポリシーがデフォルトだとランダムのため。変更可能)。
また、今回のようにDoTのみを指定する場合はUDPによる問い合わせを行う必要がないので、force_tcp
を指定してアップストリームへの問い合わせをTCPに強制するようにしました。