私は家庭内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
終わりに
いかがでしたか。
家庭内サーバー立てている人は、意外とこれのせいでパフォーマンス遅いかも?
Comments