Flint 2: Resolution of local hostnames

Router: Flint 2
Firmware: v4.8.2
Admin Client: EndeavourOS (Arch Linux based)

I’m confused by the resolution (or non-resolution) of hostnames to IP addresses for devices on the local LAN, as it seems very unpredictable.

Scenario
A simple home LAN setup with 4 network clients (all on physical Ethernet connections)-

  1. PC - My desktop PC. Named locally. Dynamic IP address from the router via DHCP
  2. Samsung - A smart TV. Named via the router “Description” field. Gets its IP address dynamically from the router via DHCP
  3. Ambeo - TV soundbar. Assigned a name and fixed IP address by the router DHCP config
  4. pve - Linux home server, running Proxmox (Debian based). Hostname and static IP address assigned on the machine, but with the same name and IP also set up in the router DHCP config

Behaviour

From the desktop PC-

  1. A ping to any of: samsung, samsung.lan, samsung.local all work as expected. nslookup of the samsung, samsung.lan addresses work. (As I understand it the .local domain depends on mDNS so is not relevant to nslookup)

  2. ping to ambeo.local works. I believe this is being sorted out via mDNS without name resolution by the router? However ping to ambeo or ambeo.lan both fail.

    nslookup of ambeo gives the response: Can't find ambeo: No answer
    nslookup of ambeo.lan
    results in: server can't find ambeo.lan: NXDOMAIN

  3. ping and nslookup of the addresses pve, pve.lan, pve.local all fail. I haven’t explicitly set up mDNS support on Promox, so the result for pve.local is not a surprise, but I don’t understand the failure to resolve the pve and pve.lan addresses?

    nslookup of the pve and pve.lan addresses give the same results as above for the soundbar

Note-

The ambeo and pve devices are using the addresses assigned to them statically, so the ambeo in particular must be successfully using DHCP to the router, as it has no capability to set a fixed IP address itself (unlike the pve server).

In the router’s client list the pve and ambeo machines show as active, although the ambeo device is listed with the name “Unknown”

Ideally I want to be able to address any device by name, especially for ssh and http/https, but if someone can at least explain what the router SHOULD be doing with local addresses, and whether what i’m seeing is expected or not, that would be a start.

1 Like

Hi

Given that you mentioned having already configured static addresses for these devices, the quickest and more stable way to access them via hostname is likely to set up hosts records for them on your router.

Please refer to the following documentation to see if this approach works for you.
DNS - GL.iNet Router Docs 4

For years I had to manually edit the hosts file on each client machine on the LAN. I was hoping that we had reached the point where static local addresses could be configured in one place on the router. It seems not.

Editing two lists (hosts and DHCP static assignments) is undoubtedly easier than doing this on every client, but it still leaves the risk of the two lists getting out of sync.

It doesn’t sound hard at all to have a solution that-

  • Takes the list of addresses statically assigned for DHCP
  • Adds this as a “local prefix” for DNS. (If this is actually achieved by appending the list to the content of the hosts file, that’s fine)

Hard to believe this hasn’t been requested many times before?

Similar technologies already exist, but it seems your device does not implement them very well.

  • .local require the devices supporting mDNS, so they can respond when other devices query their hostnames.
  • .lan (the GL.iNet default) or .local requires devices to include their hostname in DHCP requests so the router can correctly associate it.

If a device doesn’t support either of these behaviors, the practical workaround is to maintain two lists which both support via Flint 2:

  1. Static DHCP leases or Address Reservation
  2. A host list mapping hostnames to IP addresses