Weird networking issue, seeking help

I run CachyOS on my desktop. I host [Homepage](https://gethomepage.dev/) for myself on a home server. This is reached at `home.mydomain.tld`. Pihol…

I’m pretty clueless, but perhaps try putting a short time delay on the NetworkManager service startup.
The output of dmseg or journalctl might show you an error message related to networkmanager to give you some clues
Thank you for the suggestion, I will check these next time.

Ugh, this is the bane of my existence. For decades, this worked reliably. Then they introduced networkmanager and systemd-resolved, and everything went out the window and now it’s impossible to trace behavior.

I would verify your network and dns settings. One or both of those things I mentioned are probably interfering in resolution.

Do you see the dns calls in pi-hole when it is not reaching its destination?
No, the DNS calls do not show up in pi-hole log when it’s not reaching destination. If I do it from my phone, which works fine and has never not resolved for me, they show up on pi-hole as expected.

Hmm, interesting…

But we learned now, that your desktop somehow isn’t reaching your DNS (pi-hole) until restart of Network Manager

So next thing i would do is traceroute and dig on your desktop while it is not working, to see what DnS is used in this state

traceroute(8) - Linux man page

traceroute tracks the route packets taken from an IP network on their way to a given host. It utilizes the IP protocol's time to live (TTL) field and ...

Is your pihole server the only DNS server set? Either on your PC or router? Is network manager sometimes using a different nameserver?
How would I check that?

nmcli device show eth0

Or replace eth0 with whatever interface it is. Will give you a list of all network parameters including the DNS servers. There ideally should only be one, your pihole

There is only one IP4 DNS address, however there are two IP6 DNS addresses for my ethernet interface. However, I also notice that the GENERAL.CON-PATH ends in 2, whereas I have another interface lo which ends in 1. Would that be a clue of anything?
It’s normal for the loopback con path to end in 1, each con path is unique for each interface. My guess is that if your pihole sometimes works, the IPv4 server is your pihole and the IPv6 servers are ISP provided (especially if there are 2), so they work for the internet but not your internal network. Ideally you would set your pihole’s IPv6 address as your IPv6 DNS as well. Failing that setting the IPv6 mode to “Automatic, addresses only” will make it not used for DNS
resolvectl status

So I would start with checking if the request is reaching PiHole.

Next time it breaks, before restarting networkmanager, go check the pihole requests log and see if your DNS queries are even showing up there.

If they are, what does pihole show it’s returning for the query, is it the correct IP?

If that’s working properly then I would check if you can ping the server by IP directly, make sure that connection is working.

I will check this next time it happens (I’m very confident that will be later today lol)

Out of curiosity, can you think of a reason why a problem with Pihole would be fixed by restarting my NetworkManager? I was certain the problem had to be on my pc.

I don’t think it’s a problem with PiHole realistically, it sounds more like for some reason your DNS requests are getting to PiHole.
Can confirm, when this happens my requests from desktop are not getting to pi-hole. Works from my phone without issue.

Nice, narrowing it down!

Next thing I would check is your configured DNS servers on the desktop, it needs to have only the pihole IP, if it has any other servers configured that is likely the issue.

Also worth pinging the pihole IP next time it’s not working, to check if it’s actually a networking issue instead of a DNS issue.

Do you have multiple NIC? I sporadically run into issues where traffic will try to route itself via a secondary network which has limited external access and it is resolved in a similar manner, by bringing down all networks, then re-starting them in a specific order.

Realistically I should probably define some static routes, but it works automatically 99% of the time so I never bother.

If this sounds like a possible cause, check your routes while in failed, and functional states, and set static routes as needed to resolve.