ラップトップのLinuxでDoTを有効にしました。
DoTよりもDNSSECとか、ドメインを管理しているレジストラやプロバイダが標準で提供して対応できることが重要だと思います。
ルートサーバ同士は対応しているので、他でもそれができたらいいですね。
一般のユーザーとしては、プロバイダのDNSが信頼できるものであれば、本来はDoTは不要だと思うのです。
プライバシーといっても、DNSの問い合わせを知られては困るという、状況の人はあまりいないと思います。
でも一応、DoTの対応の手順を確認しておこうと思いました。
ただDNSの応答が集中するから、負荷が高いだろうなと思います。
時々、反応が遅くなりますね。
上のサイトが参考になります。
流れとしては、
- stubby、dnsmasqの導入
- NetworkManagerによる/etc/resolv.confの自動生成を停止する。
- systemd-resolvedの無効化
- /etc/resolv.confの設定
といった感じです。
stubby,dnsmasqの導入
sudo pacman -S stubby dnsmasq
# サービスを有効にします。
sudo systemctl enable stubby
sudo systemctl enable dnsmasq
cat << EOF > dnsmasq.conf
no-resolv
proxy-dnssec
server=::1#53000
server=127.0.0.1#53000
listen-address=::1,127.0.0.1
EOF
# 環境に応じて設定してください。ここでは設定を追記しています。
sudo cat dnsmasq.conf | sudo tee -a /etc/dnsmasq.conf
cat << EOF > stubby.yml
resolution_type: GETDNS_RESOLUTION_STUB
dns_transport_list:
- GETDNS_TRANSPORT_TLS
tls_authentication: GETDNS_AUTHENTICATION_REQUIRED
tls_query_padding_blocksize: 128
edns_client_subnet_private : 1
round_robin_upstreams: 1
idle_timeout: 9000
listen_addresses:
- 127.0.0.1@53000
- 0::1@53000
dnssec: GETDNS_EXTENSION_TRUE
appdata_dir: "/var/cache/stubby"
upstream_recursive_servers:
- address_data: 1.1.1.1
tls_port: 853
tls_auth_name: "cloudflare-dns.com"
- address_data: 1.0.0.1
tls_port: 853
tls_auth_name: "cloudflare-dns.com"
- address_data: 8.8.8.8
tls_port: 853
tls_auth_name: "dns.google"
- address_data: 8.8.4.4
tls_port: 853
tls_auth_name: "dns.google"
- address_data: 2606:4700:4700::1111
tls_port: 853
tls_auth_name: "cloudflare-dns.com"
- address_data: 2606:4700:4700::1001
tls_port: 853
tls_auth_name: "cloudflare-dns.com"
- address_data: 2001:4860:4860::8888
tls_port: 853
tls_auth_name: "dns.google"
- address_data: 2001:4860:4860::8844
tls_port: 853
tls_auth_name: "dns.google"
EOF
sudo cat stubby.yml | sudo tee -a /etc/stubby/stubby.yml
sudo systemctl start stubby
sudo systemctl start dnsmasq
以上で、stubby,dnsmasqによるDNSoverTLSの設定ができました。
sudo systemctl status stubby
sudo systemctl status dnsmasq
次に、NetworkManagerとsystemd-resolvedによる/etc/resolv.confの自動生成の無効化を行います。
systemd-resolvedの無効化は、
systemctl disable systemd-resolved
systemctl stop systemd-resolved
cat << EOF > disabled-systemd-resolved.conf
[main]
dns=none
EOF
sudo cat disabled-systemd-resolved.conf | sudo tee -a /etc/systemd/resolved.conf
sudo cp disabled-systemd-resolved.conf /etc/NetworkManager/conf.d/
DNSの名前解決をstubby,dnsmasqを利用するので、resolv.confを下記のように修正します。
自動生成による上書きが無効になるので、設定ファイルが書き換わることはありません。
cat << EOF > resolv.conf
options inet6 edns0 trust-ad
nameserver 127.0.0.1
nameserver ::1
EOF
sudo cp resolv.conf /etc/resolv.conf
NetworkManagerを再起動しても、/etc/resolv.confが変更されないか確認します。
sudo systemctl restart NetworkManager.service
sudo cat /etc/resolv.conf
最後にDNSの名前解決が問題なく行えているか確認しておきましょう。
drill +dnssec sigok.verteiltesysteme.net @127.0.0.1
以上、お疲れ様でした。