DNS lookup for pi.hole pointing to internal IP of Docker container

Expected Behaviour:

I just created a new Pi-hole installation on a Raspberry Pi 5 in a Docker container. I am failing to access the web interface using the http://pi.hole address. I believe that this URL should resolve to the IP of the RPi on my local network. I am attempting to connect on devices with DNS set to the IP of the RPi running Pi-hole, and I am able to access the web interface using the RPi's IP address.

Actual Behaviour:

Pi-hole is resolving http://pi.hole to an IP address internal to the Docker container rather than the IP of the RPi running Pi-hole. This IP is not accessible on my local network, so the connection fails.

This is the result of running nslookup on one of the devices using Pi-hole as its DNS server:

nslookup pi.hole
Server:  UnKnown
Address:  192.168.1.100

Name:    pi.hole
Address:  172.19.0.2

192.168.1.100 is the IP of the RPi on my local network. 172.19.0.2 is the IP of the virtual machine in the Docker container, as far as I can tell.

Debug Token:

https://tricorder.pi-hole.net/UsSzOdHG/

Thank you for your time!

If your pihole is in a docker container you will probably want to post the docker compose or its config as well.

1 Like

Here is the docker compose, it's just the standard template from the docker installation guide.

services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    ports:
      # DNS Ports
      - "53:53/tcp"
      - "53:53/udp"
      # Default HTTP Port
      - "80:80/tcp"
      # Default HTTPs Port. FTL will generate a self-signed certificate
      - "443:443/tcp"
      # Uncomment the line below if you are using Pi-hole as your DHCP server
      # - "67:67/udp"
      # Uncomment the line below if you are using Pi-hole as your NTP server
      #- "123:123/udp"
    environment:
      # Set the appropriate timezone for your location (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones), e.g:
      TZ: 'America/New_York'
      # Set a password to access the web interface. Not setting one will result in a random password being assigned
      FTLCONF_webserver_api_password: 'not the real password'
      # If using Docker's default `bridge` network setting the dns listening mode should be set to 'all'
      FTLCONF_dns_listeningMode: 'all'
    # Volumes store your data between container upgrades
    volumes:
      # For persisting Pi-hole's databases and common configuration file
      - './etc-pihole:/etc/pihole'
      # Uncomment the below if you have custom dnsmasq config files that you want to persist. Not needed for most starting fresh with Pi-hole v6. If you're upgrading from v5 you and have used this directory before, you should keep it enabled for the first v6 container start to allow for a complete migration. It can be removed afterwards. Needs environment variable FTLCONF_misc_etc_dnsmasq_d: 'true'
      #- './etc-dnsmasq.d:/etc/dnsmasq.d'
    cap_add:
      # See https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
      # Required if you are using Pi-hole as your DHCP server, else not needed
      - NET_ADMIN
      # Required if you are using Pi-hole as your NTP client to be able to set the host's system time
      #- SYS_TIME
      # Optional, if Pi-hole should get some more processing time
      - SYS_NICE
    restart: unless-stopped

Try setting FTLconf_dns_reply_host_IPv4: '192.168.1.100' in your compose file.

I gave it a try and that does not seem to have worked. The setting was read properly because the web interface setting is now showing this:

But even after flushing the DNS cache on my device, nslookup is still reporting 172.19.0.2 as the IP of the web interface.

The IP is also unchanged in the system settings web portal page.

Please try:

      FTLCONF_dns_reply_host_IPv4: '192.168.1.100'
      FTLCONF_dns_reply_host_force4: true

That combination did the trick!

It might be worth adding those settings to the default compose file since I assume more people will run into this issue with the docker install. Also, the primary IP address listed on the System Settings page is still the container's IP (172.19.0.2 in my case). That's not a problem for me but I'm not sure if it's the intended behavior so I thought I'd mention it. Thanks for your help!

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.