Ok, this tells the DNS to irgnore /etc/hosts. Because it could be changed manually or by other circumstances.
But the local DNS need to know about "pihole.fritz.box" & "pihole" refer to 192.168.0.50 and return this properly to requesting clients. Where is this information local gathered?
As we discovered the "main" local DNS at the FRITZBox doesn't know the host.
Lets forget Pi-Hole is running a DNS service.
The "/etc/hosts" file main purpose is for telling processes, running on its own host, how to resolve certain hostnames to IP addresses without using a DNS server (suppose the DNS server is down).
Its not intended for other clients on the network to be used for resolution.
So this entry would make perfect sense:
127.0.1.1 pihole.fritz.box
If a local process is asking to resolve "pihole.fritz.box" via the hosts file, it will get "127.0.1.1" returned which is an IP address on its own loopback interface.
Everything on the loopback interface stays internal and is not broadcasted over the physical network interfaces like eth0, wlan0 etc.
Do you now see the advantage of using a loopback IP addresses for the processes to communicate internally to each other ?
Having loopback IP addresses as DNS records in your dnsmasq service is pointless for resolving to for example another host.
But these loopback IP addresses as DNS records could be used for other purposes like for example whats implemented on FritzBox routers:
Noooo dont do that!
Pi-Hole needs to populate this file " /etc/pihole/local.list" for you.
I believe if you run "pihole -r" for reconfiguring, you will be asked for a hostname and you can change it if you want (set it to a FQDN to avoid trouble and have a short name covered as well).
Chances are that first time you run Pi-Hole updates, the entries you made in that file will be overwritten.
EDIT: Did you see me having a short name in that file from my examples ?
Yes but dont forget to change it too in the "/etc/hosts" file for the loopback IP 127....
And reboot just to make sure the new hostname propagates through the system.
Added below as this seems to confuse alot of people:
$ cat /etc/resolv.conf
# Generated by resolvconf
nameserver 127.0.0.1
It says for DNS resolution, use the localhost Pi-Hole dnsmasq daemon who is listening on all interfaces including the 127.0.0.1 loopback interface IP address.
Pi-Hole is not using this file, only local processes that invoke DNS, because Pi-Hole got its own upstream DNS servers configured for resolution.
Not sure if running the "-g" option will update all hostname instances for Pi-Hole besides the "/etc/pihole/local.list" file.
Had a quick look at the code but got lost in functions.
For now I would stick with the "-r" option or maybe a dev or someone else knows ?
Ping @MrD
This to allow users to still add entries in the "/etc/hosts" file that will be read by dnsmasq to share with the clients.
Though the hosts file is not intended for that, allot of us (ab)use it like that anyway just for the ease.
Proper way is to configure dnsmask to load your own list of hosts and IP addresses to be loaded as DNS records.
I already implemented the "localise-queries" directive and without breaking loopback, everything looks dandy.
If you want to help out testing:
sudo rm /etc/dnsmasq.d/no-hosts-file.conf echo 'localise-queries' | sudo tee /etc/dnsmasq.d/99-localise-queries.conf sudo service dnsmasq restart
I already read both requests this afternoon and be pleased about the canny solution. I reprocuced the changes on my system and I can confirm: Everything operates flawless so far.