Spent the whole morning on it and finally figured it out—I had dnsmasq looking at the wrong DNS server because it was looking at the wrong resolv.conf:
⏵ cat /var/run/NetworkManager/resolv.conf # Generated by NetworkManager nameserver 127.0.0.53 I remember now that early on there were too many daemons managing DNS !! (NetworkManager, systemd-resolved, dnsmasq). Couldn't get them all happy so I removed systemd-resolved. That would be fine if there was something running at 127.0.0.53 but there wasn't since I'd uninstalled it. I needed the original (though dynamic) resolv.conf and found it at no-stub-resolv.conf: ⏵ head /etc/dnsmasq.d/foo.conf address=/#/127.0.0.2 port=53 # resolv-file=/var/run/NetworkManager/resolv.conf resolv-file=/var/run/NetworkManager/no-stub-resolv.conf This file has my correct DNS info from the router and now dnsmasq is working quietly as expected. I see there are other ways to configure things (NetworkManager can run dnsmasq too!) but I like this way because I can do everything in just one file. No need to instruct NetworkManager to write /etc/resolv.conf either. Was inclined to close this, but thinking about it, dnsmasq should not hammer a non-existent DNS server to the point of saturating the CPU. True, the server address was misconfigured but dnsmasq should check *at most* once every few seconds. Definitely needs a delay in there in this case. -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to dnsmasq in Ubuntu. https://bugs.launchpad.net/bugs/1980146 Title: dnsmasq often using 100% of CPU Status in dnsmasq package in Ubuntu: Incomplete Bug description: Release: 22.04 Codename: jammy Kernel: Linux 5.15.0-40-generic x86_64 ⏵ apt-cache policy dnsmasq Installed: 2.86-1.1ubuntu0.1 dnsmasq is caught in a loop after every dns request, resulting in 100% CPU usage for several minutes each time. This leads to a hot and lethargic computer. During this time thousands of the following messages (see below) are printed from strace. The loop tends to obsess on denied connections, but there are so many I'm not 100% sure. systemd-resolved is _not_ running, some bugs refer to that. ⏵ head /etc/dnsmasq.d/foo.conf address=/#/127.0.0.2 port=53 resolv-file=/var/run/NetworkManager/resolv.conf ⏵ sudo strace -p 3519 (dnsmasq) poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=7, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=13, events=POLLIN}, {fd=14, events=POLLIN}], 9, -1) = 1 ([{fd=4, revents=POLLIN}]) recvmsg(4, {msg_name={sa_family=AF_INET, sin_port=htons(60224), sin_addr=inet_addr("127.0.0.1")}, msg_namelen=28 => 16, msg_iov=[{iov_base="\302\221\1\0\0\1\0\0\0\0\0\0\17classify- client\10ser"..., iov_len=4096}], msg_iovlen=1, msg_control=[{cmsg_len=28, cmsg_level=SOL_IP, cmsg_type=IP_PKTINFO, cmsg_data={ipi_ifindex=if_nametoindex("lo"), ipi_spec_dst=inet_addr("127.0.0.53"), ipi_addr=inet_addr("127.0.0.53")}}], msg_controllen=32, msg_flags=0}, 0) = 54 ioctl(4, SIOCGIFNAME, {ifr_ifindex=1, ifr_name="lo"}) = 0 sendto(14, "\302\221\1\0\0\1\0\0\0\0\0\0\17classify-client\10ser"..., 54, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.53")}, 16) = 54 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/dnsmasq/+bug/1980146/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp