お家DNSにキャッシュさせたらブラウジングが快適になった

以前の記事でお家DNSとして簡単にdnsmasqを導入しました。 ローカルIPを名前解決してもらえるだけで、感動していたのですが、友人が自宅のDNSの設定を変えただけで、ブラウジングが快適になったというので、私もやってみることに。まず最初に現状を計測してみました。

現状把握

$dig google.com

; <<>> DiG 9.10.6 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25727
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com.			IN	A

;; ANSWER SECTION:
google.com.		252	IN	A	172.217.31.174

;; Query time: 9 msec
;; SERVER: 192.168.2.6#53(192.168.2.6)
;; WHEN: Sat Oct 16 05:41:02 JST 2021
;; MSG SIZE  rcvd: 55

一応ローカルの192.168.2.6に問い合わせてますが、google.comを解決するのに9msぐらいかかっています。これは何度やっても同じでした。

試しに、最速と言われている1.1.1.1に問い合わせしてみます。

$ dig @1.1.1.1 google.com

; <<>> DiG 9.10.6 <<>> @1.1.1.1 google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40694
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;google.com.			IN	A

;; ANSWER SECTION:
google.com.		251	IN	A	216.58.220.110

;; Query time: 7 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Sat Oct 16 05:41:54 JST 2021
;; MSG SIZE  rcvd: 55

あれ、ローカルDNSよりも速い・・・ということで、色々調べてみたら、何段も重なっているようでした。

自PC > dnsmasq > ubuntu内蔵DNS > ホームルータ > プロバイダDNS > 外のDNS

これでは遅いなーということで、以下を目指します。

自PC > dnsmasq(キャッシュさせる) > プロバイダDNS > 外のDNS

プロバイダDNS挟まなくても良いかと思われるかもしれませんが、試しにプロバイダDNSに直接問い合わせたら5msで帰ってきたので、プライマリにしたいと考えています。

dnsmasqを設定する

設定は簡単です。dnsmasq.conf を編集して、dnsmasqのサービスを再起動するだけです。dnsmasq.conf に追加した設定は以下です。説明をコメントに書きます。

$vi dnsmasq.conf
no-resolv                 #ubuntu内蔵のDNS機能を使用しません
no-poll                   #ubuntu内蔵のDNS設定ファイル resolv.conf の定期的な確認を行いません
bogus-priv             #ローカルIPであった場合上位のDNSサーバーに問い合わせを行いません
server=100.200.100.222    #プロバイダーのDNSサーバーです
server=1.1.1.1          #CloudflareのDNSサーバーです
server=8.8.8.8          #googleのDNSサーバーです
cache-size=1000          #キャッシュする件数です。デフォルトだと150件らしい
min-cache-ttl=3600        #キャッシュするTTLを強制的に最低3600秒としています。

$sudo systemctl restart dnsmasq

効果は?

さて、内部にキャッシュするようにDNSサーバーを設定しました。果たして効果は?digを2回ほど叩いてみます。

$ dig  google.com

; <<>> DiG 9.10.6 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3711
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com.			IN	A

;; ANSWER SECTION:
google.com.		37	IN	A	216.58.197.206

;; Query time: 0 msec
;; SERVER: 192.168.2.6#53(192.168.2.6)
;; WHEN: Sat Oct 16 06:16:07 JST 2021
;; MSG SIZE  rcvd: 55

やりました!0 msec です!!

もちろん1回目は7msぐらいかかっていたのですが、2回目実行したらなんと 0ms WEBブラウジングもサクサク感が非常に増しました。みなさんも是非お家にDNSサーバーをお考えください。

参考サイト

http://akira-arets.blogspot.com/2017/10/linux-centos7-dnsmasq.html
http://akira-arets.blogspot.com/2017/04/centos6-dnsmasq-settings.html

投稿を作成しました 112

コメントを残す

関連する投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る
%d人のブロガーが「いいね」をつけました。