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

Reply via email to