Enable DHCP on Pi-Hole, disable DHCP on my router, and everything just works.
Actual Behaviour:
When DHCP is enabled on Pi-Hole and disabled on my router (AT&T BGW320-500), devices are served IP addresses and DNS server just fine. The only problem is that the devices then are no longer connected to the internet. Pi-Hole is receiving the requests and supposedly answering them, yet no devices work. Connecting to the DNS manually while using the router's DHCP works great.
Steps to reproduce
Install and set up Pi-Hole on Fedora Server 34
Disable DHCP on router and enable in Pi-Hole
Renew DHCP lease on computer/device (ipconfig /renew on Windows)
I initially installed Pi-Hole on Fedora Server 36 by bypassing the support checks and ran into no issues other than this one. Thinking that this might be the source of my problems I started from scratch with Fedora Server 34, which is officially supported, and ran into the same issue.
My router does not support changing the DHCP's DNS even though it has a bunch of other advanced options. My theory on why is that ATT uses their own in-house DNS service to collect advertising data on their users so obviously they wouldn't want anybody circumventing that
When running the debug with DHCP on, I noticed that it errored on the default gateway and provided a link to this. The website told me to set my default gateway to my router's default gateway. I have tried this before to no avail on Fedora Server 36 as it seemed to cause any DHCP request to time out. But I decided to try it again as I haven't tried it on Fedora Server 34 yet and I hadn't found anything that told me to set this to my router's default gateway until then (yes, I looked for probably half an hour and never found that site). And it seems to have worked! I have no idea if it not working before was due to being on Fedora 36 or from a configuration error, but it now works. I'm surprised that no one mentioned this in the numerous Pi-Hole DHCP tutorials I read. Thanks for the help!