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 : [email protected]
Unsubscribe : https://launchpad.net/~touch-packages
More help : https://help.launchpad.net/ListHelp