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. docker proc
  5. docker status
  6. localhost docker
  7. pi hole
  8. ls proc
  9. ubuntu station
  10. adguard
  11. switch do 10 gbe
  12. reject md5 servers = yes
  13. container settings
  14. samsung evo 970