Pomoc Pi Hole na Dockerze, jak skofigurować?

krystianen

System Engineer
Q Specialist
25 Styczeń 2010
101
9
18
Poznań
QNAP
TS-x53
Ethernet
1 GbE
Wersja oprogramowania Firmware: 4.4.1 Build 20YYMMDD
Model serwera: QNAP TS-251A

Zainstalowałem PI HOLE na dockerze jednak podczas uruchomienia mam bład

Czy ktoś się spotkał z takim problemem?

Kod:
[✗] DNS resolution is currently unavailable

Doszukałem się że musze ze musze zedytować DNSy w pliku /etc/resolf.conf tylko nie wiem jak sie mam do niego stać. Bo wyrzuceniu w/w błedy pi hole sie wylacza.

Kod:
 ::: Starting docker specific checks & setup for docker pihole/pihole                                                                                                                                                                                                                                                     
WARNING Misconfigured DNS in /etc/resolv.conf: Two DNS servers are recommended, 127.0.0.1 and any backup server                                                                                                                                                                                                           
WARNING Misconfigured DNS in /etc/resolv.conf: Primary DNS should be 127.0.0.1 (found 127.0.0.11)                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                                                                         
nameserver 127.0.0.11                                                                                                                                                                                                                                                                                                     
options ndots:0                                                                                                                                                                                                                                                                                                           
Assigning random password: -6wj8quc                                                                                                                                                                                                                                                                                       
  [i] Existing PHP installation detected : PHP version 7.0.33-0+deb9u5                                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                                                         
  [i] Installing configs from /etc/.pihole...                                                                                                                                                                                                                                                                             
  [i] Existing dnsmasq.conf found... it is not a Pi-hole file, leaving alone!                                                                                                                                                                                                                                             
  [✓] Copying 01-pihole.conf to /etc/dnsmasq.d/01-pihole.conf                                                                                                                                                                                                                                                             
chown: cannot access '/etc/pihole/dhcp.leases': No such file or directory                                                                                                                                                                                                                                                 
Setting password: -6wj8quc                                                                                                                                                                                                                                                                                               
+ pihole -a -p -6wj8quc -6wj8quc                                                                                                                                                                                                                                                                                         
  [✓] New password set                                                                                                                                                                                                                                                                                                   
Using default DNS servers: 8.8.8.8 & 8.8.4.4                                                                                                                                                                                                                                                                             
DNSMasq binding to default interface: eth0                                                                                                                                                                                                                                                                               
Added ENV to php:                                                                                                                                                                                                                                                                                                         
                        "PHP_ERROR_LOG" => "/var/log/lighttpd/error.log",                                                                                                                                                                                                                                                 
                        "ServerIP" => "0.0.0.0",                                                                                                                                                                                                                                                                         
                        "VIRTUAL_HOST" => "0.0.0.0",                                                                                                                                                                                                                                                                     
Using IPv4 and IPv6                                                                                                                                                                                                                                                                                                       
::: Preexisting ad list /etc/pihole/adlists.list detected ((exiting setup_blocklists early))                                                                                                                                                                                                                             
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts                                                                                                                                                                                                                                                         
https://mirror1.malwaredomains.com/files/justdomains                                                                                                                                                                                                                                                                     
http://sysctl.org/cameleon/hosts                                                                                                                                                                                                                                                                                         
https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt                                                                                                                                                                                                                                                         
https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt                                                                                                                                                                                                                                                               
https://hosts-file.net/ad_servers.txt                                                                                                                                                                                                                                                                                     
::: Testing pihole-FTL DNS: FTL started!                                                                                                                                                                                                                                                                                 
::: Testing lighttpd config: Syntax OK                                                                                                                                                                                                                                                                                   
::: All config checks passed, cleared for startup ...                                                                                                                                                                                                                                                                     
::: Docker start setup complete                                                                                                                                                                                                                                                                                         
  [i] Pi-hole blocking is enabled                                                                                                                                                                                                                                                                                         
  [✗] DNS resolution is currently unavailable                                                                                                                                                                                                                                                                             
  [✗] DNS resolution is not available                                                                                                                                                                                                                                                                                     
[cont-init.d] 20-start.sh: exited 1.                                                                                                                                                                                                                                                                                     
[cont-finish.d] executing container finish scripts...                                                                                                                                                                                                                                                                     
[cont-finish.d] done.                                                                                                                                                                                                                                                                                                     
[s6-finish] syncing disks.                                                                                                                                                                                                                                                                                               
[s6-finish] sending all processes the TERM signal.                                                                                                                                                                                                                                                                       
[s6-finish] sending all processes the KILL signal and exiting.
 
port 53 jest zajęty na qnapie - musisz przekierowanie poprawić dla kontenera

pi-hole/docker-pi-hole

upload_2020-1-5_17-1-6.png

Doszukałem się że musze ze musze zedytować DNSy w pliku /etc/resolf.conf
zainstaluj portainer i tam masz edycję kontenera
 
Swego czasu był problem z kontenerem pihole, że nie odpalał się z powodu błędnego wpisu w resolv.conf i nie działał kiedy było 127.0.0.11 (domyślne w dockerach pod debianem) i musiało być 127.0.0.1.
Nie pamiętam, czy poprawili pihole, czy moje wpisy w docker-compose to naprawiły (sekcja dns jak w poście pigersa)

Za to polecam instalację na osobnym adresie IP, dzięki czemu działa niezależnie od używanych portów na QNAPie, w razie czego QNAP (czy router) może być backupowym DNSem dla sieci lokalnej.
 
hmm
jak odpale to tak:
Bash:
docker volume create pihole_config
docker volume create pihole_dnsmasqd
docker run -d \
    --name pihole \
	--network bridge \
    -p 653:53/tcp \
	-p 653:53/udp \
    -p 680:80 \
    -p 6443:443 \
    -e TZ="Europe/Warsaw" \
    -v "pihole_config:/etc/pihole/" \
    -v "pihole_dnsmasqd:/etc/dnsmasq.d/" \
    --dns=127.0.0.1 --dns=8.8.8.8 \
    --restart=unless-stopped \
    pihole/pihole:latest

to kontener wstaje .. tylko że do interfejsu nie moge się dostać :/
dobra ...

po zrobieniu :
Kod:
apt-get update
apt-get install nano
nano /var/www/html/pihole/index.php


change
$serverName = htmlspecialchars($_SERVER["HTTP_HOST"]);
with
$serverName = htmlspecialchars($_SERVER["SERVER_ADDR"]);

Ctrl+X to save

reload web page
działa
 
krystianen, napisz w jaki sposób odpalasz kontener pihole: z konsoli czy poprzez plik docker-compose ?
W każdym przypadku pokaż jaka jest konfiguracja - będzie łatwiej.
 
To tutaj nie ma dużego wpływu na konfigurację, ja robię to przez docker-compose gdzie mam większy wpływ na parametry.
A czy ten kontener ma wyjście na świat?
 
ja robię to przez docker-compose gdzie mam większy wpływ na parametry.
zapodasz swojego konfiga ? chętnie pozbyłbym się malinki z biurka .. bo klaster malinek ma braki ;)
Przegladam Portainera i widze zainstalowane pihole ale nie moge znalesc miejsca do edycji plików ani miejsca aby wykonac w terminalu to co podales wyzej.

na końcu filmu , CONSOLE i attach
 

Załączniki

  • 2020-01-05_23-22-01.mp4
    5,5 MB · Wyświetleń: 1 043
ja robię to przez docker-compose gdzie mam większy wpływ na parametry.
zapodasz swojego konfiga ? chętnie pozbyłbym się malinki z biurka .. bo klaster malinek ma braki ;)
Przegladam Portainera i widze zainstalowane pihole ale nie moge znalesc miejsca do edycji plików ani miejsca aby wykonac w terminalu to co podales wyzej.

na końcu filmu , CONSOLE i attach

dzieki za super wyjasnienie. Tylko nie moge tego zrobić bo "Conterinter is not running"...
 
Im wcześniej przestaniecie korzystać z interfejsu graficznego Container Station tym szybciej pozbędziecie się problemów z kontenerami! A jeśli już, to Portainer, który jest o niebo lepszy.
Ale najbardziej polecam zapoznać się z docker-compose i wszystkie kontenery stawiać dzięki definicjom w plikach docker-compose.yml

A u mnie docker-compose.yml do postawienia pihole wygląda tak:

Kod:
version: "3"

# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    restart: always
    networks:
      default:
        ipv4_address: 192.168.99.2
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "67:67/udp"
      - "80:80/tcp"
      - "443:443/tcp"
    environment:
      TZ: 'Europe/Warsaw'
      WEBPASSWORD: <tu twoje haslo>
    volumes:
      - './data/etc-pihole/:/etc/pihole/'
      - './data/etc-dnsmasq.d/:/etc/dnsmasq.d/'
    dns:
      - 192.168.99.1
      - 127.0.0.1
      - 1.1.1.1

networks:
  default:
    external:
      name: qnet-static-eth1

- Sekcja volumes jest opcjonalna, ale jeśli chcecie zachować wszystko pomiędzy kolejnymi reinkarnacjami kontenera to tak można tego użyć.
- Dodatkowo, u mnie zdefiniowana jest pod kontenery dodatkowa sieć qnet-static-eth1, która powoduje, że kontenery korzystają z innego fizycznego interfejsu (eth1) niż reszta systemu (eth0). Ale tego nie trzeba tak robić, można na tym samym interfejsie. Np tak:
Kod:
docker network create -d qnet --ipam-driver=qnet --ipam-opt=iface=eth0 --subnet=192.168.99.0/24 --gateway=192.168.99.1 qnet-static-eth0
- Istniejące sieci można sprawdzić komendą "docker network ls"
- Oczywiście adresację sieci dostosowujemy do swojej rzeczywistości, u mnie router jest pod adresem 192.168.99.1 i działa również jako DNS
 
Walczę z tematem od kilku dni. Po zlokalizowaniu odpowiedniego pliku resolv.conf dokonałem zmiany nameserver z 127.0.0.11 na 127.0.0.1 jednak uruchomienie pihole skutkuje przywróceniem domyślnych ustawień w pliku. Jak można zmienić wpis permanentnie ?
 
@PiracyOEM Nazwij kontener pi.hole i nie będziesz musiał zmieniać wpisu w resolv.conf ;) U mnie przynajmniej pomogło. Nie miałem czasu dokładniej analizować ale w /etc/.pihole/gravity.sh masz taki fragment:

Kod:
# Determine if DNS resolution is available before proceeding                                                                                                                                                       
gravity_CheckDNSResolutionAvailable() {                                                                                                                                                                           
  local lookupDomain="pi.hole"                                                                                                                                                                                     
                                                                                                                                                                                                                   
  # Determine if $localList does not exist                                                                                                                                                                         
  if [[ ! -e "${localList}" ]]; then                                                                                                                                                                               
    lookupDomain="raw.githubusercontent.com"                                                                                                                                                                       
  fi                                                                                                                                                                                                               
                                                                                                                                                                                                                   
  # Determine if $lookupDomain is resolvable                                                                                                                                                                       
  if timeout 1 getent hosts "${lookupDomain}" &> /dev/null; then                                                                                                                                                   
    # Print confirmation of resolvability if it had previously failed                                                                                                                                             
    if [[ -n "${secs:-}" ]]; then                                                                                                                                                                                 
      echo -e "${OVER}  ${TICK} DNS resolution is now available\\n"                                                                                                                                               
    fi                                                                                                                                                                                                             
    return 0                                                                                                                                                                                                       
  elif [[ -n "${secs:-}" ]]; then                                                                                                                                                                                 
    echo -e "${OVER}  ${CROSS} DNS resolution is not available"                                                                                                                                                   
    exit 1                                                                                                                                                                                                         
  fi                                                                                                                                                                                                               
                                                                                                                                                                                                                   
  # If the /etc/resolv.conf contains resolvers other than 127.0.0.1 then the local dnsmasq will not be queried and pi.hole is NXDOMAIN.                                                                           
  # This means that even though name resolution is working, the getent hosts check fails and the holddown timer keeps ticking and eventualy fails                                                                 
  # So we check the output of the last command and if it failed, attempt to use dig +short as a fallback                                                                                                           
  if timeout 1 dig +short "${lookupDomain}" &> /dev/null; then                                                                                                                                                     
    if [[ -n "${secs:-}" ]]; then                                                                                                                                                                                 
      echo -e "${OVER}  ${TICK} DNS resolution is now available\\n"                                                                                                                                               
    fi                                                                                                                                                                                                             
    return 0                                                                                                                                                                                                       
  elif [[ -n "${secs:-}" ]]; then                                                                                                                                                                                 
    echo -e "${OVER}  ${CROSS} DNS resolution is not available"             

    exit 1                                                                                                                                                                                                         
  fi                                                                                                                                                                                                               
                                                                                                                                                                                                                   
  # Determine error output message                                                                                                                                                                                 
  if pidof ${resolver} &> /dev/null; then                                                                                                                                                                         
    echo -e "  ${CROSS} DNS resolution is currently unavailable"                                                                                                                                                   
  else                                                                                                                                                                                                             
    echo -e "  ${CROSS} DNS service is not running"                                                                                                                                                               
    "${PIHOLE_COMMAND}" restartdns                                                                                                                                                                                 
  fi                                                                                                                                                                                                               
                                                                                                                                                                                                                   
  # Ensure DNS server is given time to be resolvable                                                                                                                                                               
  secs="120"                                                                                                                                                                                                       
  echo -ne "  ${INFO} Time until retry: ${secs}"                                                                                                                                                                   
  until timeout 1 getent hosts "${lookupDomain}" &> /dev/null; do                                                                                                                                                 
    [[ "${secs:-}" -eq 0 ]] && break                                                                                                                                                                               
    echo -ne "${OVER}  ${INFO} Time until retry: ${secs}"                                                                                                                                                         
    : $((secs--))                                                                                                                                                                                                 
    sleep 1                                                                                                                                                                                                       
  done                                                                                                                                                                                                             
                                                                                                                                                                                                                   
  # Try again                                                                                                                                                                                                     
  gravity_CheckDNSResolutionAvailable                                                                                                                                                                             
}

Nie bardzo rozumiem na czym ma polegac obejscie dig +short pi.hole przy innych wpisach w resolv.conf niz 127.0.0.1 ale to nie ma wiekszego sensu.
Dlaczego ktoś tak to skomplikował nie wiem - ale to sprawdzanie czy resolver dziala wyglada co najmniej dziwnie.
 
czy dla laika jest jakaś komenda wykorzystująć container station i terminal, żeby naprawić te DNS bo po instalacji nie może znależć dns
Checking if custom gravity.db is set in /etc/pihole/pihole-FTL.conf
s6-rc: info: service legacy-services successfully started
Creating new gravity database
Migrating content of /etc/pihole/adlists.list into new database
[✗] DNS resolution is currently unavailable
Time until retry: 85Stopping pihole-FTL
[✗] DNS resolution is not available
przeczytałem, że muszę wpisać coś takiego i edytować wpis
sudo nano /etc/resolv.conf
nameserver line to nameserver 9.9.9.9

Run
pihole -d

ale z poziomu terminala tego nie przyjmuje... i niby zainstalowane ale nie działa nie filtruje mi ruchu, ( w urządzeniach na stałe wpisany DNS ) bo nie mam możliwości wejść w ustawienia routera operatora.
 

Użytkownicy znaleźli tą stronę używając tych słów:

  1. pihole
  2. netflix
  3. container sieć
  4. localhost docker
  5. pi hole
  6. ls proc
  7. ubuntu station
  8. adguard
  9. switch do 10 gbe
  10. reject md5 servers = yes
  11. container settings
  12. samsung evo 970
  13. docker proc
  14. docker status