Project name being used as domain name (in DHCP)?

I’ve noticed an odd error message, and I’m try to understand what’s going on, but I can’t see any mention of project names being used as domains in the projects documentation.

This is with incus 6.0.2 LTS from Zabbly repos, running on Ubuntu 22.04.5. I have created a network called “bridge0”:

$ incus network show bridge0
config:
  dns.domain: nmm.internal
  ipv4.address: 192.0.2.254/24
  ipv4.dhcp.ranges: 192.0.2.200-192.0.2.250
  ipv4.nat: "true"
  ipv6.address: fd4e:4d4d::254/64
  ipv6.dhcp.ranges: fd4e:4d4d::1000-fd4e:4d4d::1fff
  ipv6.dhcp.stateful: "true"
  ipv6.nat: "true"
description: ""
name: bridge0
type: bridge
used_by:
...
managed: true
status: Created
locations:
- none
project: default

(Notice that it has dns.domain=“nmm.internal”)

Now I create a project called “wombat”, and within it a container called “foo”:

incus project create wombat
incus project switch wombat
incus profile edit default <<EOS
devices:
  eth0:
    name: eth0
    network: bridge0
    type: nic
  root:
    path: /
    pool: default
    type: disk
EOS
incus launch images:ubuntu/24.04/cloud foo

Then I look at journalctl -eu incus and I see the following error (or warning):

...
Sep 25 21:45:34 brian-kit dnsmasq-dhcp[3218]: read /var/lib/incus/networks/bridge0/dnsmasq.hosts/wombat_foo.eth0
Sep 25 21:45:38 brian-kit dnsmasq-dhcp[3218]: Ignoring domain wombat for DHCP host name foo

I’m trying to understand where and why is the project name being used as a domain, and what is this message trying to tell me?

If I cat the file that the message refers too, I do see the project name being used as a domain:

$ cat /var/lib/incus/networks/bridge0/dnsmasq.hosts/wombat_foo.eth0
00:16:3e:5b:49:4c,foo.wombat

But if I run tcpdump to look at the DHCP exchange, I don’t see “wombat” in any of the DHCP request or reply attributes:

# tcpdump -i bridge0 -nn -s0 -v udp port 67 or udp port 68
tcpdump: listening on bridge0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
21:46:49.631561 IP (tos 0xc0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 318)
    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:16:3e:5b:49:4c, length 290, xid 0x48f39b47, secs 1, Flags [none]
	  Client-Ethernet-Address 00:16:3e:5b:49:4c
	  Vendor-rfc1048 Extensions
	    Magic Cookie 0x63825363
	    DHCP-Message (53), length 1: Discover
	    Client-ID (61), length 19: hardware-type 255, ae:7e:08:c1:00:02:00:00:ab:11:ef:12:b7:10:c8:86:e0:6a
	    Parameter-Request (55), length 12:
	      Subnet-Mask (1), Default-Gateway (3), Domain-Name-Server (6), Hostname (12)
	      Domain-Name (15), MTU (26), Static-Route (33), NTP (42)
	      URL (114), Unknown (119), Unknown (120), Classless-Static-Route (121)
	    MSZ (57), length 2: 1472
	    SLP-NA (80), length 0""
	    Hostname (12), length 3: "foo"
21:46:49.642775 IP (tos 0xc0, ttl 64, id 27650, offset 0, flags [none], proto UDP (17), length 341)
    192.0.2.254.67 > 192.0.2.227.68: BOOTP/DHCP, Reply, length 313, xid 0x48f39b47, secs 1, Flags [none]
	  Your-IP 192.0.2.227
	  Server-IP 192.0.2.254
	  Client-Ethernet-Address 00:16:3e:5b:49:4c
	  Vendor-rfc1048 Extensions
	    Magic Cookie 0x63825363
	    DHCP-Message (53), length 1: ACK
	    Server-ID (54), length 4: 192.0.2.254
	    Lease-Time (51), length 4: 3600
	    SLP-NA (80), length 0""
	    RN (58), length 4: 1800
	    RB (59), length 4: 3150
	    Subnet-Mask (1), length 4: 255.255.255.0
	    BR (28), length 4: 192.0.2.255
	    Default-Gateway (3), length 4: 192.0.2.254
	    Domain-Name-Server (6), length 4: 192.0.2.254
	    Domain-Name (15), length 12: "nmm.internal"
	    Hostname (12), length 3: "foo"

And if I go to another container (in another project), I can’t resolve names ending with “wombat”; but I can resolve them with the domain that belongs to the bridge, as I would expect:

# ping foo.wombat
ping: foo.wombat: Name or service not known
# ping foo.nmm.internal
PING foo.nmm.internal (fd4e:4d4d::122d) 56 data bytes
64 bytes from foo.nmm.internal (fd4e:4d4d::122d): icmp_seq=1 ttl=64 time=0.299 ms

Therefore, I don’t see what purpose the project name is serving as a domain.

It’s not actually causing me any problem; I just don’t like seeing error messages that I don’t understand :slight_smile: