OpenWrt 发起大量 DNS 请求

局域网设备断网了,排查下来和 DNS 有关。 甚至往 233.5.5.5 发 UDP 请求都会被丢包。随便抓一段看到大量 DNS 请求和丢包。

tcpdump -n -i eth1 udp port 53 and ip
15:37:28.813613 IP 192.168.9.207.33576 > 192.168.9.1.53: 61390+ [1au] PTR? lb._dns-sd._udp.pve.kokomi.site. (60)
15:37:28.813649 IP 192.168.9.207.41705 > 192.168.9.1.53: 58545+ [1au] PTR? db._dns-sd._udp.pve.kokomi.site. (60)
15:37:28.813729 IP 192.168.9.207.33576 > 192.168.9.1.53: 61390+ [1au] PTR? lb._dns-sd._udp.pve.kokomi.site. (60)
15:37:28.813766 IP 192.168.9.207.41705 > 192.168.9.1.53: 58545+ [1au] PTR? db._dns-sd._udp.pve.kokomi.site. (60)
15:37:28.813839 IP 192.168.9.207.41705 > 192.168.9.1.53: 58545+ [1au] PTR? db._dns-sd._udp.pve.kokomi.site. (60)
15:37:28.813875 IP 192.168.9.207.41705 > 192.168.9.1.53: 58545+ [1au] PTR? db._dns-sd._udp.pve.kokomi.site. (60)
15:37:28.813913 IP 192.168.9.207.43594 > 192.168.9.1.53: 2032+ [1au] PTR? b._dns-sd._udp.pve.kokomi.site. (59)
15:37:28.813961 IP 192.168.9.1.18364 > 192.168.9.207.53: 2925+ [1au] PTR? lb._dns-sd._udp.pve.kokomi.site. (60)
15:37:28.814020 IP 192.168.9.1.62820 > 192.168.9.207.53: 65430+ [1au] PTR? b._dns-sd._udp.pve.kokomi.site. (59)
15:37:28.814060 IP 192.168.9.207.43594 > 192.168.9.1.53: 2032+ [1au] PTR? b._dns-sd._udp.pve.kokomi.site. (59)
15:37:28.814133 IP 192.168.9.207.41705 > 192.168.9.1.53: 58545+ [1au] PTR? db._dns-sd._udp.pve.kokomi.site. (60)
 
13792 packets captured
24454 packets received by filter
10609 packets dropped by kernel

IP 地址是昨天调的 OpenWrt 设备上的,那里一天产生了 1TiB 的流量

ifconfig eth0
eth0      Link encap:Ethernet  HWaddr BC:24:11:23:02:01
          inet addr:192.168.9.207  Bcast:192.168.9.255  Mask:255.255.255.0
          inet6 addr: 2409:8a1e:6952:4d90:be24:11ff:fe23:201/64 Scope:Global
          inet6 addr: 2409:8a1e:6952:4d90::fe1/128 Scope:Global
          inet6 addr: fe80::be24:11ff:fe23:201/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2813220718 errors:0 dropped:13698 overruns:0 frame:0
          TX packets:8432272352 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:317244301256 (295.4 GiB)  TX bytes:1062935204222 (989.9 GiB)

我改了什么:

  1. 关闭由 MerlinClash 设置的 DNS 劫持
  2. 关闭 OpenWrt 上 DNSmasq 的重绑定保护、过滤本地包

感觉不是这原因,再观察观察


其实是 DNS 有环了,OpenWrt 的 DNSmasq 设置有问题,流量过程是这样:

  • lb._dns-sd._udp 局域网设备想要探测设备
  • lb._dns-sd._udp.pve.kokomi.site. 添加 DNS 前缀发出主机解析请求
  • 192.168.9.1 DNS 请求到达默认主路由,被 MerlinClash 劫持到路由器本地解析器,本地的 DNSmasq 设置了转发 server=/pve.kokomi.site/192.168.9.207
  • 192.168.9.207 DNS 请求到达 OpenWrt,它只设置了 option local '/lan/' 而不是 option local '/pve.kokomi.site/',导致请求又被发往默认 resolver 的主路由,由此产生环

结论是只需要把 OpenWrt 的 DNSmasq 本地解析项目设置正确就行。