Can't you look up the hostname by using the IPv4 address instead of using the most recent hostname found via IPv6? This way the network table would function as wished thus users won't experience the inconvenience.
Edit: to be clear,
dig @(local IP Pi-hole) -x (local IPv4 client) +short
instead of using IPv6:
dig @(local IP Pi-hole) -x (local IPv6 client) +short
Thank you both - and apologies for my unique, annoying network setup. I've moved onto the mentioned testing new/mac_clients branch for now - and will probably be there until the update moves onto master. I'll check if it offers any sort of solution. The issue was that the generic 'broadband.bt.com' was being used as a hostname for any device using IPv6, rather than the 'true', IPv4 device name - effectively overwriting it as you say.
Well, a lot of people seem to don't want the IPv6 host names. This is why we added this option. For instance, many German users receive host names for their IPv6 devices like p200300DA9BBF17FA0000000000000001.dip0.t-ipconnect.de which is their devices IPv6 address transformed into some more or less (rather less...) useful name. I can feel why they want to avoid this.
Doesn't sound bad to have the option to disable this, so here we go:
@tomco I'm interested in your thoughts, we should probably open a new discussion when you have suggestions for improving the new/mac_clients branch. It is more thought for v5.2, not earlier as there are some more things to get done and I don't want have it sitting as a possible blocker for an intermediate v5.1 release.
Hmm... I've tried adding RESOLVE_IPV6=no to /etc/pihole/pihole-FTL.conf, then I used "pihole restartdns" and (just in case) "pihole arpflush". After a few hours of waiting my Pi-hole unfortunately still used IPv6 hostnames. However, it seems like it did stop resolving some IPv6 addresses because there were quite a few of them without hostname. Retried the above steps but with rebooting afterwards but it just won't work. It stills shows the transformed addresses. That's why I commented the above.
Maybe I should just wait until MAC addresses can be used for hostnames...
edit: now the queries page (not the network table) constantly shows the correct hostname for my iPhone, but not for my Windows machine. Maybe the network table just needs to update itself for the iPhone hostname to change. I'll keep waiting.
It looks like resolving IPv6 addresses is not disabled. grep "RESOLVE_IPV6" /var/log/pihole-FTL.log doesn't return anything and the log file only contains "WARNING: Hostname of client (paste IPv6 GUA) too long, truncating to 64 chars!" and "Resizing "/FTL-queries" from 2064384 to 2293760" and resizing DNS cache.
/etc/pihole/pihole-FTL.conf contains RESOLVE_IPV6=no and pihole restartdns was used after the modification.
By the way, my queries page decided to change back to an ISP IPv6 address as hostname for the iPhone.
update: I've rebooted the Pi and the log file now shows "RESOLVE_IPV6: Don't resolve IPv6 addresses" (as expected). However, the lines after the reboot process once again show "WARNING: Hostname of client (paste IPv6 GUA) too long, truncating to 64 chars!", which means FTL is resolving IPv6 addresses? What's happening?
The network table hasn't shown any changes regarding hostnames yet. Running "pihole arpflush" didn't change anything (well, it became blank for a moment and was suddenly filled up again). The query page doesn't show any changes either. Still the ISP IPv6 as hostname. I'll see whether anything has changed tomorrow.
and agree that this is what you should do. After running the checkout, you can also remove DEBUG_RESOLVER. It will not be needed any longer. Just make sure to switch back to master before updating to v5.1 when this is released. But even if you forget about this, you will see that you cannot update to v5.1 so no drama will happen.
If my backported fix doesn't work for some reason, you can still try my cleaning commands from above.
I've run pihole checkout ftl fix/broken_RESOLVE_settings_master, removed DEBUG_RESOLVER from the FTL conf and restarted FTL. It works.
However, it's not really helpful. Because a lot of traffic is IPv6 (it looks like devices that also support IPv6 rather use IPv6 than IPv4), you'll end up with a Pi-hole that's messier than before, having a lot more seperate IPv6 compared to IPv4 addresses in the network table, making it harder to couple queries to devices. The "top clients" tables on the dashboard show almost only IPv6 addresses. Those addresses change from time to time. That's a downward step compared to having all of a device its addresses assigned to an ISP IPv6 address hostname. Once again, I'll give it some time and see if my view on this matter changes. Ofcourse, if I'd like to, I could go back to the way it used to be at any time.
Furthermore, I would like to emphasize that coupling MAC addresses to hostnames and using this as a way to create a clear network table sounds like a great idea. I've read that it's currently an experimental feature, but I'm not sure when it's expected to be released and whether this new feature will solve this problem. I hope you can clarify this.
edit: I noticed that OP had this issue where clients have exactly the same hostname, whereas my ISP processes an IPv6 address into the ISP address (for example 2001-1c00-0000-0000-0000-0000-0000-0000.cable.dynamic.v6.ziggo.nl).
moreover, this error appeared in the FTL log 6 times over a period of 3 minutes:
ERROR: SQL query "END TRANSACTION" failed: database is locked
END TRANSACTION failed when trying to store queries to long-term database
Keeping queries in memory for later new attempt
followed by the following notice:
Notice: Queries stored in long-term database: 101 (took 1590575366144.0 ms, last SQLite ID 1270953)
Queries from earlier attempt(s) stored successfully
This doesn't look like something to worry about but I'm posting it nonetheless.