I have just created a new Pi-hole setup within Docker on a RPi4. The Pi-hole is working and blocking blacklisted domains. I would like to keep my router as the DHCP server for my network. I have setup Conditional Forwarding within Pi-hole in order to fetch the local client names from the router. However, only some of the client names are being resolved. The remainder show as the local IP address of the client.
Would appreciate any help! Thanks.
For reference:
Pi-hole / Docker on Pi: 192.168.1.79
Router (DHCP Server): 192.168.1.1
Router Model: Asus XT8
Router Firmware: 3.0.0.4.388_24609
Expected Behaviour
With Conditional Forwarding activated, Pi-hole should resolve IP addresses in web portal for all clients as per router DHCP
Actual Behaviour:
Pi-hole is only resolving some client names, remainder show local IP address of client.
To add to this. A bit of trial and error has shown that there are (at least) two issues that might be causing this.
Some clients names include spaces in their names within the router’s DHCP server. Removing spaces seems to allow pi-hole to recognise their names.
Quite a few devices on the network are iOS devices. There is a wi-fi setting called ‘Private Wi-Fi address’ which when activated, seems to prevent the device name being recognised in pi-hole. Is there a way I can manually bind these ios device names in pi-hole?
Those nslookup results from directly querying your router at 192.168.1.1 confirm that Pi-hole's Conditional Forwarding is working correctly - it is your router that is supplying those answers, and Pi-hole's dashboard merely reflects this.
You'd have to address this at your router.
If you can't fix this at your router, you could consider to create the respective Local DNS Records via Pi-hole's UI.
Note that this approach would still require your router to play along and assign the same IP addresses to the same devices.
For any devices randomising their MAC address, make sure that such a device does support using the same randomised MAC for a specific network, or to not randomise its MAC for a specific network or not at all.