docker-pihole-unbound icon indicating copy to clipboard operation
docker-pihole-unbound copied to clipboard

One-Container - SERVFAIL

Open Werfjes opened this issue 2 years ago • 22 comments

Hi I have installed OneContainer on Raspberry and receiving SERVFAIL

Time Type Domain Client Status Reply Action

2022-11-01 22:20:20 | A | cloud.abcd.com | 172.18.0.1 | OK (answered by localhost#5335) | SERVFAIL (69.3ms)

I am a bit lossed.... as

  • sigfail.verteiltesysteme.net & dig sigok.verteiltesysteme.net & ping google.com are working perfectly
  • however unbound cannot open 127.0.0.1 port 8953 (as can be seen in ouput:/# sudo unbound -d -vvvv)

PS I have also a dnsmasq warning

DNSMASQ_WARN Warning in dnsmasq core:ignoring query from non-local network 192.168.88.4 (logged only once)

Please help me

Thanks Marc

Environment

Variable Value
DNSMASQ_LISTENING single
DNSMASQ_USER pihole
DNSSEC "true"
FTL_CMD no-daemon
FTLCONF_LOCAL_IPV4
IPv6 True
PATH /opt/pihole:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PHP_ENV_CONFIG /etc/lighttpd/conf-enabled/15-fastcgi-php.conf
PHP_ERROR_LOG /var/log/lighttpd/error-pihole.log
phpver php
PIHOLE_DNS 127.0.0.1#5335
REV_SERVER false
REV_SERVER_CIDR
REV_SERVER_DOMAIN
REV_SERVER_TARGET
S6_BEHAVIOUR_IF_STAGE2_FAILS 2
S6_CMD_WAIT_FOR_SERVICES_MAXTIME 0
S6_KEEP_ENV 1

dig sigfail.verteiltesysteme.net @127.0.0.1 -p 5335 ; <<>> DiG 9.16.33-Debian <<>> sigfail.verteiltesysteme.net @127.0.0.1 -p 5335 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 38755 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;sigfail.verteiltesysteme.net. IN A

;; Query time: 35 msec ;; SERVER: 127.0.0.1#5335(127.0.0.1) ;; WHEN: Tue Nov 01 19:40:22 UTC 2022 ;; MSG SIZE rcvd: 57

dig sigok.verteiltesysteme.net @127.0.0.1 -p 5335 ; <<>> DiG 9.16.33-Debian <<>> sigok.verteiltesysteme.net @127.0.0.1 -p 5335 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 46293 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;sigok.verteiltesysteme.net. IN A

;; Query time: 35 msec ;; SERVER: 127.0.0.1#5335(127.0.0.1) ;; WHEN: Tue Nov 01 19:42:02 UTC 2022 ;; MSG SIZE rcvd: 55

/# sudo unbound -d -vvvv [1667331143] unbound[807:0] notice: Start of unbound 1.13.1. [1667331143] unbound[807:0] debug: creating udp4 socket 127.0.0.1 5335 [1667331143] unbound[807:0] debug: creating tcp4 socket 127.0.0.1 5335 [1667331143] unbound[807:0] debug: creating tcp4 socket 127.0.0.1 8953 [1667331143] unbound[807:0] error: can't bind socket: Address already in use for 127.0.0.1 port 8953 (len 16) [1667331143] unbound[807:0] error: cannot open control interface 127.0.0.1 8953 [1667331143] unbound[807:0] fatal error: could not open ports

Werfjes avatar Nov 01 '22 20:11 Werfjes

Is there something else on port 8953?

The DNSMASQ-warning I also got when in the GUI I had allow only local requests ticked. Had it the way as shown below and tried the only allow local requests but reverted back almost immediately.

afbeelding

Tested dig and I get:

pi@raspberrypi:~/pi-hole $ dig sigok.verteiltesysteme.net

; <<>> DiG 9.16.33-Debian <<>> sigok.verteiltesysteme.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24796
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;sigok.verteiltesysteme.net.    IN      A

;; ANSWER SECTION:
sigok.verteiltesysteme.net. 60  IN      A       134.91.78.139

;; Query time: 95 msec
;; SERVER: 10.0.0.150#53(10.0.0.150)
;; WHEN: Wed Nov 02 09:49:33 CET 2022
;; MSG SIZE  rcvd: 71

pi@raspberrypi:~/pi-hole $ dig sigfail.verteiltesysteme.net

; <<>> DiG 9.16.33-Debian <<>> sigfail.verteiltesysteme.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 24430
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;sigfail.verteiltesysteme.net.  IN      A

;; Query time: 215 msec
;; SERVER: 10.0.0.150#53(10.0.0.150)
;; WHEN: Wed Nov 02 09:49:42 CET 2022
;; MSG SIZE  rcvd: 57

whether or not I run it from within the container as on the host.

One more thing, above it says PIHOLE_DNS with the value 127.0.0.1#5335. The environmentvariable-name should be PIHOLE_DNS_ .

How does your docker-compose-file look like?

pluim003 avatar Nov 02 '22 08:11 pluim003

Hi, thanks for you help and time.

I am using Portainer deployment of the docker, I just redeployed it, in the hope it may help, but alas.

As can be seen in the screenshots: The Docker and PiHole runs, however only without Unbound but with Google DNS. image

And I would like to use Unbound. :-)

Changing (in the PiHole website) the:

  • upstream DNS from Google DSN to Unbound by adding 127.0.0.1#5335 -> resulting in SERVFAILS.
  • Interface Settings from "Only local" to "All origins" (or anyother one) -> resulting in SERVFAILS and N/A. image

Question: Is there something else on port 8953? Reply: I dont think so, on :

  • Raspberry nothing is using 8953 (checked via sudo netstat -tulpn | grep LISTEN )
  • docker console netstat doesnt work, however I didnt open a port (in docker). Just do double check, I opened 8953 UPD & TCP ports and redeployed the docker, now $ sudo netstat -tulpn | grep LISTEN gives 8953 ports are used by docker proxy
                      tcp        0      0 0.0.0.0:8953            0.0.0.0:*               LISTEN      7065/docker-proxy
                      tcp6       0      0 :::8953                 :::*                    LISTEN      7072/docker-proxy

and still SERFAIL issues

I looked again to: sudo unbound -d -vvvv still complains "cannot open control interface 127.0.0.1 8953" It seems that the local host ip (127.0.0.1) is giving issues. I have found something on this (thanks google). but it is way to complex for me https://github.com/NLnetLabs/unbound/issues/252

Question:How does your docker-compose-file look like? Reply:I am using the default compose file (only changed the 5335 setting) added into Portainer and deployed it...... This is the compose file:


version: '3.0'
volumes:
  etc_pihole-unbound:
  etc_pihole_dnsmasq-unbound:
services:
  pihole:
    container_name: pihole
    image: cbcrowe/pihole-unbound:latest
    hostname: ${HOSTNAME}
    domainname: ${DOMAIN_NAME}
    ports:
      - 443:443/tcp
      - 53:53/tcp
      - 53:53/udp
      - ${PIHOLE_WEBPORT:-80}:80/tcp #Allows use of different port to access pihole web interface when other docker containers use port 80
      - 5335:5335/tcp # Uncomment to enable unbound access on local server
      # - 22/tcp # Uncomment to enable SSH
    environment:
      - FTLCONF_LOCAL_IPV4=${FTLCONF_LOCAL_IPV4}
      - TZ=${TZ:-UTC}
      - WEBPASSWORD=${WEBPASSWORD}
      - WEBTHEME=${WEBTHEME:-default-light}
      - REV_SERVER=${REV_SERVER:-false}
      - REV_SERVER_TARGET=${REV_SERVER_TARGET}
      - REV_SERVER_DOMAIN=${REV_SERVER_DOMAIN}
      - REV_SERVER_CIDR=${REV_SERVER_CIDR}
      - PIHOLE_DNS_=127.0.0.1#5335
      - DNSSEC="true"
      - DNSMASQ_LISTENING=single
    volumes:
      - etc_pihole-unbound:/etc/pihole:rw
      - etc_pihole_dnsmasq-unbound:/etc/dnsmasq.d:rw
    restart: unless-stopped

I sincerely hope this info helps

Kind regards, Marc

Werfjes avatar Nov 02 '22 13:11 Werfjes

Hmm… frankly I don’t know what’s going wrong. Maybe someone else knows it. Don’t see anything weird in the docker-compose-file. I have used Chris’s image for about 8 months without any problems. Now running with a fork and modified with a more recent version of Unbound.

Your logs don’t also show the specific clients but only localhost or the ip-adress of the container? Maybe that can give a clue.

How do the environment variables look like? Could you paste the values from your .env-file (ofcourse removing the webpassword).

pluim003 avatar Nov 02 '22 16:11 pluim003

i thought the environment variables were loaded via docker compose file.

Thus: environment: - FTLCONF_LOCAL_IPV4=${FTLCONF_LOCAL_IPV4} - TZ=${TZ:-UTC} - WEBPASSWORD=${WEBPASSWORD} - WEBTHEME=${WEBTHEME:-default-light} - REV_SERVER=${REV_SERVER:-false} - REV_SERVER_TARGET=${REV_SERVER_TARGET} - REV_SERVER_DOMAIN=${REV_SERVER_DOMAIN} - REV_SERVER_CIDR=${REV_SERVER_CIDR} - PIHOLE_DNS_=127.0.0.1#5335 - DNSSEC="true" - DNSMASQ_LISTENING=single

And I dont use a rev_server... so... only thing could be the FTLCONF_LOCAL_IPV4....

Werfjes avatar Nov 02 '22 17:11 Werfjes

Well, if you don’t put them hardcoded in your docker-compose-file the values have to be in a file called .env in that same folder. So I’m wondering what the values are in the .env-file. There will be lines like Dunno what happens if it’s blank. I’ll check out my .env-file later this evening (or tomorrow).

pluim003 avatar Nov 02 '22 18:11 pluim003

That would help a lot. I have been fiddeling with the values / settings..

So if you could help... Thanks

Werfjes avatar Nov 04 '22 00:11 Werfjes

pi@raspberrypi:~/pi-hole $ cat .env
HOSTNAME=pihole.mydomain.nl
TZ=Europe/Amsterdam
WEBPASSWORD=xxxxxx
WEB_PORT=8100
FTLCONF_LOCAL_IPV4=10.0.0.150
REV_SERVER=true
REV_SERVER_TARGET=10.0.0.1
REV_SERVER_DOMAIN=pihole.local
REV_SERVER_CIDR=10.0.0.0/24
#DNS1=10.0.0.150
FTLCONF_MAXDBDAYS=180

Note I use the 10.0.0.x as this one is connected to my TP-Link Deco-mesh.

For the one connected to the Fritz:

pi@raspberrydick:~/pi-hole $ cat .env
HOSTNAME=pihole2.mydomain.nl
TZ=Europe/Amsterdam
WEBPASSWORD=xxxxx
WEB_PORT=8100
FTLCONF_LOCAL_IPV4=192.168.178.35
REV_SERVER=true
REV_SERVER_TARGET=192.168.178.1
REV_SERVER_DOMAIN=pihole2.local
REV_SERVER_CIDR=192.168.178.0/24
#DNS1=192.168.178.35
FTLCONF_MAXDBDAYS=180

mydomain is something else but replaced the original value here.

pluim003 avatar Nov 04 '22 05:11 pluim003

Well I am completely lost now.

image

added the Enviroment variables... redeployed and still SERVFAIL

However the client IP numbers are wrong... !?!?? image

Werfjes avatar Nov 06 '22 10:11 Werfjes

You mean the 172.18.0.1? That's the ip from your dockercontainer and you will most likely see that in the overview of containers in Portainer:

afbeelding

Then I'm also lost. I now presume/assume it has to do something with:

[1667331143] unbound[807:0] debug: creating tcp4 socket 127.0.0.1 8953 [1667331143] unbound[807:0] error: can't bind socket: Address already in use for 127.0.0.1 port 8953 (len 16) [1667331143] unbound[807:0] error: cannot open control interface 127.0.0.1 8953 [1667331143] unbound[807:0] fatal error: could not open ports

I found on your already mentiond link https://github.com/NLnetLabs/unbound/issues/252 that this port has to do with remote control. The weird thing is that in my conf it's set to yes, but if I enter the command it won't do anything with port 8953. Could you check remote-control.conf (in unbound.conf.d) and check the settings. If it's yes, I would suggest changing it to no and see if that solves it. My conf below.

root@pihole:/etc/unbound/unbound.conf.d# cat remote-control.conf
remote-control:
  control-enable: yes
  # by default the control interface is is 127.0.0.1 and ::1 and port 8953
  # it is possible to use a unix socket too
  control-interface: /run/unbound.ctl

If this doesn't help then I'm afraid I can't help you further with this problem. As I guess it might be unbound-specific then I'd suggest trying it there.

pluim003 avatar Nov 06 '22 13:11 pluim003

In both my raspberry and my docker I dont have a remote-control.conf

pi@raspberrypi:/etc/unbound/unbound.conf.d $ ls
resolvconf_resolvers.conf
root@36af1e916d5a:/etc/unbound/unbound.conf.d# ls
pi-hole.conf  root-auto-trust-anchor-file.conf

in fact in both Docker and Rapsberry, there is

find remote-controle.conf
find: 'remote-controle.conf': No such file or directory

Well thanks for you help

Werfjes avatar Nov 06 '22 21:11 Werfjes

The thing can also be an additon to the regular unbound.conf. And it could be that it got there through another install. It's on a volume so will stay there upon recreating my container and overwrite the original contents of the image.

pluim003 avatar Nov 07 '22 07:11 pluim003

Hello, I'm experiencing this same issue. Raspberry Pi 4 running Portainer and one-container, dig requests trying to use unbound will always time out, and running unbound -d -vvvv will throw the same error about port 8953. I tried to add a new port to the stack and it didn't work either.

unclamped avatar Dec 07 '22 17:12 unclamped

Hi Guys, can you give us please some love, help and support in these cold and difficult times :-)

Werfjes avatar Dec 14 '22 19:12 Werfjes

Hass it worked before? What happens with the original pihole-container (without unbound)? There is a newer pihole-release which I use in my latest image (forked repo from Chris, but together with the latest release of unbound).

pluim003 avatar Dec 14 '22 21:12 pluim003

Hi Pluim,

Well I have a Raspberry PiHole & unbound working without a container. but I will try to setup the original pihole-container (without unbound). and get back to you

Werfjes avatar Dec 14 '22 21:12 Werfjes

Hass it worked before? What happens with the original pihole-container (without unbound)? There is a newer pihole-release which I use in my latest image (forked repo from Chris, but together with the latest release of unbound).

This is my first time trying out this project, so no, it has not ever worked for me. The official Pi-hole container works perfectly fine. I'll do some testing with your fork after Sunday, thanks for bringing this up.

unclamped avatar Dec 15 '22 01:12 unclamped

I had this same issue multiple times now. I've had the single container implementation running successfully, but randomly this started happening twice in a few months. First time I don't recall what I did to fix it, but this time I disabled custom upstream (127.0.0.1#5335) and disabled Use DNSSEC in pihole, enabling Cloudflare ipv4. After saving, I brought docker compose down and back up, changed settings back to what they were before (enable Use DNSSEC, enable upstream 127.0.0.1#5335, disable cloudflare ipv4) and after saving everything started working again. I even tried restarted compose again just to be sure and it's still working (which would suggest either a timing issue, or something that's persistent in the volumes). So I unexpectedly fixed the issue, but still don't know the cause (so I assume it will happen again).

Also, I still see the same errors is my unbound logs:

[1667331143] unbound[807:0] error: can't bind socket: Address already in use for 127.0.0.1 port 8953 (len 16) [1667331143] unbound[807:0] error: cannot open control interface 127.0.0.1 8953 [1667331143] unbound[807:0] fatal error: could not open ports

Not sure if it was a matter of timing, or this is just a (different) problem that is not affecting the usage of it. But does the main problem have anything to do with DNSSEC options? RE: pihole I am capable and know some, know near nothing about unbound other than troubleshooting a few things and then forget it over a few months and re-learn it when have to troubleshoot again.

When looking into this I also discovered it's using an older version of unbound, to get things working I did some modification to the compose file and envs, and honestly I'm not a big fan of how the process of building the image is non-standard. I will probably look into moving away from this implementation to a different one, but (also honestly) when I tried to do this before I couldn't find any other ones that worked so well out of the box. Maybe there is a better one nowadays...

If it helps I can post all of my configs etc. but not sure if that'll help here? I'd be interested to know if my steps of disable/reenable pihole --> unbound connection works for others (who had it working before in the past, as first time users could have a host of other issues)

amphibithen avatar Jan 31 '23 15:01 amphibithen

When looking into this I also discovered it's using an older version of unbound, to get things working I did some modification to the compose file and envs, and honestly I'm not a big fan of how the process of building the image is non-standard. I will probably look into moving away from this implementation to a different one, but (also honestly) when I tried to do this before I couldn't find any other ones that worked so well out of the box. Maybe there is a better one nowadays...

If it helps I can post all of my configs etc. but not sure if that'll help here? I'd be interested to know if my steps of disable/reenable pihole --> unbound connection works for others (who had it working before in the past, as first time users could have a host of other issues)

I forked the repo of Chris a while ago and modified it so that it uses the most recent version of Unbound (from debian:testing) which in the latest image is 1.17.0, but the next one will contain 1.17.1 (as that has now been promoted to testing). It's working fine for ages at my site although I don't look frequently in the unbound-logfiles but recently at least no errors.

pluim003 avatar Feb 02 '23 07:02 pluim003

Hey, I totally forgot about this issue. Sorry about that. I tried installing your fork with docker and Portainer (by the way, the advice from Chris about the volumes is no longer needed. You can safely remove it), but I'm getting an issue when trying to deploy it: failed to deploy a stack: Network pihole-unbound_default Creating Network pihole-unbound_default Created Container pihole-unbound Creating Container pihole-unbound Created Container pihole-unbound Starting Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/data/compose/23/one-container/resolv.conf" to rootfs at "/etc/resolv.conf": mount /data/compose/23/one-container/resolv.conf:/etc/resolv.conf (via /proc/self/fd/6), flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

unclamped avatar Feb 10 '23 15:02 unclamped

The issue in my previous comment is now being tracked on https://github.com/pluim003/docker-pihole-unbound/issues/14

unclamped avatar Feb 17 '23 21:02 unclamped

Wondering if the original problem, mentioned by @Werfjes is still present.

pluim003 avatar Feb 18 '23 08:02 pluim003

Hi,

I gave up installing "docker-pihole-unbound" with portainer. Due to the above mentioned issue.

However I installed "docker-pihole-unbound" with compose and worked fine ...

Werfjes avatar Feb 20 '23 05:02 Werfjes