Trying to understand why Pi-hole DHCP no longer works with my Virgin Hub 3.0.

The issue I am facing:
I’m trying to switch DHCP from a Virgin Media Hub 3.0 to Pi-hole on a Raspberry Pi. DNS via Pi-hole works normally. When I turn off DHCP on the Virgin Hub, devices start sending DHCPDISCOVER packets and Pi-hole responds with DHCPOFFER, but the devices still fail to get an IP address or internet connectivity. It worked previously, but have moved house and trying to set up again.

Details about my system:

  • Virgin Media Hub 3.0 Software version: 9.1.2208.100
  • Raspberry Pi running Raspberry Pi OS
  • Pi-hole at 192.168.0.2 (static IP set in /etc/dhcpcd.conf)
  • Pi-hole DHCP range is 192.168.0.10–192.168.0.254
  • Router/gateway set to 192.168.0.1
  • DNS in Pi-hole set to listen on 127.0.0.1
  • Pi-hole’s DHCP service is running and listening on port 67
  • tcpdump on the Pi shows DHCP requests from clients and replies from Pi-hole
  • Clients appear in Pi-hole’s DHCP lease list with valid IPs (e.g. 192.168.0.13)

What I have changed since installing Pi-hole:

  • Cleaned up the Pi’s routing table (removed a leftover dynamic route caused by the Virgin Hub)

  • Removed an extra dynamic address (192.168.0.24) that the Hub had previously assigned

  • Verified the Pi’s static IP, gateway, and DNS configuration

  • Retried the DHCP switch with Virgin’s DHCP off (without rebooting the Hub)

Observed behaviour:

  • When I disable DHCP on the Virgin Hub, devices do not get usable connectivity, even though Pi-hole is responding to DHCP requests and leases appear in its UI

  • Once Virgin DHCP is re-enabled, everything reconnects immediately

  • The Pi never loses its IP now, so the issue seems isolated to clients not being routed properly after receiving Pi-hole-issued addresses

What I’m trying to figure out:
Is this a known limitation or firmware change with the Virgin Hub 3.0 (software version 9.1.2208.100) preventing DHCP from working when the Hub’s own DHCP is disabled?
And if so, is there any workaround short of putting the Hub into modem mode and using a separate router?

Thanks

I'm assuming this is probably a typo, but your Pi-hole from the other settings you describe should be set to listen on 192.168.0.2, not 127.0.0.1.

Thanks for the heads up, and apologies for the slow reply. The 127.0.0.1 setting is intentional - Pi-hole is using its local resolver, and DNS works fine when devices still have leases from the Virgin Hub.

The issue only appears when DHCP is switched over. Clients get leases from Pi-hole and show up correctly, but they can’t route any traffic through 192.168.0.1 until Virgin DHCP is turned back on.

I was wondering if anyone has seen similar behaviour with the Hub 3.0 when its DHCP is disabled, and whether there’s a workaround besides putting it in modem mode with a separate router.

When using a static IP on the SH3, it sometimes doesn’t route properly or activate NAT for that device. I’ve found this with DHCP on, and using a static IP outside of the reserved range. So you might be running into the same issue even with DHCP off - although it would make me laugh in despair at this godawful piece of junk if this behaviour was the same with DHCP off, I would not be surprised at all. You should put the stupid thing into modem mode and never think about it again.

What OS release?

lsb_release -d

Hi, thanks for the reply, and apologies for taking so long to get back.
It’s Debian GNU/Linux 13 (trixie).
Thanks

Hi, thanks for your reply, sorry for taking so long to get back.
I think the modem mode is the way forward, cheers.

Assuming I am reading this correctly, you’ve got the Pi-hole host system using Pi-hole for DNS. This is not the way it should be configured. It will work, but would require reconfiguration should there be any issues with Pi-hole itself.

They switched from dhcpcd to network-manager with Debian 12 (Bookwork) and up.
You can check with below two which one is enabled on your Pi:

systemctl is-enabled dhcpcd.service

systemctl is-enabled NetworkManager.service

If its Network Manager, you can configure "manual" static IP details with below one:

sudo nmtui

Example config below:

Amazing, thanks so much, got it working now, cheers.