家で動かしているdnsmasqが遅いのを直した件

DNS

私は家庭内LANでdnsmasqを動かしています。
 家でPCやスマホからNextcloudにアクセスするため。

のですが、
どうもNextcloudにアクセスしたときの応答が遅い気がしたので、調べて改善しました。

具体的にはNextcloudのトップページが表示されるまで約3秒くらい待たされていたのですが、改善後は1秒足らずで表示されるようになりました。

結論

dnsmasqがAAAAレコード要求を自身で処理せず自身のDNSサーバーにForwardしていたため。
dnsmasqがAAAAレコードを直接応答するように設定した。

でした。

詳細

LAN内でnslookupし、同時にdnsmasqが動いているホストで/var/log/syslogを見ます。
192.168.1.1にAAAAレコードを転送し、回答がタイムアウトになるまで2秒待っていました。

nslookup yasufumi-yokoyama.gq
(別ターミナルでtail -f /var/log/syslog)
Jun  2 20:29:45 raspberrypi dnsmasq[26771]: query[A] yasufumi-yokoyama.gq from 1234:567:89:abcd:ef01:2345:6789:abcd
Jun  2 20:29:45 raspberrypi dnsmasq[26771]: /etc/hosts yasufumi-yokoyama.gq is 192.168.1.123
Jun  2 20:29:45 raspberrypi dnsmasq[26771]: query[AAAA] yasufumi-yokoyama.gq from 1234:567:89:abcd:ef01:2345:6789:abcd
Jun  2 20:29:45 raspberrypi dnsmasq[26771]: forwarded yasufumi-yokoyama.gq to 192.168.1.1
Jun  2 20:29:45 raspberrypi dnsmasq[26771]: query[AAAA] yasufumi-yokoyama.gq from 1234:567:89:abcd:ef01:2345:6789:abcd
(2秒待つ)
Jun  2 20:29:47 raspberrypi dnsmasq[26771]: query[AAAA] yasufumi-yokoyama.gq from 1234:567:89:abcd:ef01:2345:6789:abcd
Jun  2 20:29:47 raspberrypi dnsmasq[26771]: forwarded yasufumi-yokoyama.gq to 1234:567:89:abcd:ef01:2345:6789:abcd
Jun  2 20:29:47 raspberrypi dnsmasq[26771]: forwarded yasufumi-yokoyama.gq to 1234:567:89:abcd:ef01:2345:6789:abcd
Jun  2 20:29:47 raspberrypi dnsmasq[26771]: forwarded yasufumi-yokoyama.gq to 192.168.1.1
Jun  2 20:29:47 raspberrypi dnsmasq[26771]: query[AAAA] yasufumi-yokoyama.gq from 1234:567:89:abcd:ef01:2345:6789:abcd
Jun  2 20:29:47 raspberrypi dnsmasq[26771]: forwarded yasufumi-yokoyama.gq to 1234:567:89:abcd:ef01:2345:6789:abcd
Jun  2 20:29:47 raspberrypi dnsmasq[26771]: forwarded yasufumi-yokoyama.gq to 1234:567:89:abcd:ef01:2345:6789:abcd
Jun  2 20:29:47 raspberrypi dnsmasq[26771]: forwarded yasufumi-yokoyama.gq to 192.168.1.1
Jun  2 20:29:47 raspberrypi dnsmasq[26771]: reply error is REFUSED



ちなみにdigのときはこんなふう。
AAAAレコードを問合せしないので、速いです。

dig yasufumi-yokoyama.gq
(別ターミナルでtail -f /var/log/syslog)
Jun  2 20:28:34 raspberrypi dnsmasq[26771]: query[A] yasufumi-yokoyama.gq from 1234:567:89:abcd:ef01:2345:6789:abcd
Jun  2 20:28:34 raspberrypi dnsmasq[26771]: /etc/hosts yasufumi-yokoyama.gq is 192.168.1.123



ただ、dig <domain name> aaaaとするとAAAAレコードを問い合わせするようになり、nslookup同様に3秒程度かかるようになりました。

AAAAレコードはAレコードのIPv6版なので、/etc/hostsに設定を追加します。
こんな感じで。

1234:567:89:abcd:ef01:2345:6789:abcd    yasufumi-yokoyama.gq
1234:567:89:abcd:ef01:2345:6789:abcd    www.yasufumi-yokoyama.gq

追加したあとは再起動。

sudo service dnsmasq restart



指定するIPv6アドレスはifconfigで調べました。

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.123  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 1234:567:89:abcd:ef01:2345:6789:abcd  prefixlen 64  scopeid 0x20<link>
        inet6 1234:567:89:abcd:ef01:2345:6789:abcd  prefixlen 64  scopeid 0x0<global>
        ether 12:34:56:78:90:ab  txqueuelen 1000  (Ethernet)
        RX packets 1622897  bytes 962296354 (917.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 13
        TX packets 668903  bytes 324940192 (309.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0



ipコマンドの場合はこう。

ip -6 addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 1234:567:89:abcd:ef01:2345:6789:abcd/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 2591942sec preferred_lft 604742sec
    inet6 1234:567:89:abcd:ef01:2345:6789:abcd/64 scope link 
       valid_lft forever preferred_lft forever



これでNextcloudアクセス時の2秒待ちがなくなり、かなりサクサク感が増しました!

dnsmasqでログ出力する方法

↑で調べる際にdnsmasqでのログ出力を有効にしました。

やり方は簡単で/etc/dnsmasq.confに以下を追加して再起動するだけ。

log-queries
log-facility=local0

終わりに

いかがでしたか。

家庭内サーバー立てている人は、意外とこれのせいでパフォーマンス遅いかも?

この記事を書いた人

組込ソフト歴15年の外資系エンジニア。
前職で組込Linuxを使った商品設計/品質確保の業務に従事。
Raspberry Piが好き。
株式投資で年50万円を稼ぐ。
妻は香港人(国際結婚)。

Please follow me
DNSdnsmasq
Please follow me
世界Linux新聞

Comments

タイトルとURLをコピーしました