Инструменты пользователя

Инструменты сайта


service:pihole

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
service:pihole [04.10.2024 10:03] – создано viacheslavservice:pihole [27.03.2025 21:59] (текущий) – [Docker] viacheslav
Строка 1: Строка 1:
-===== Pi-hole =====+====== Pi-hole ======
 The [[https://github.com/pi-hole/pi-hole|Pi-hole]]® is a [[https://en.wikipedia.org/wiki/DNS_Sinkhole|DNS sinkhole]] that protects your devices from unwanted content, without installing any client-side software. The [[https://github.com/pi-hole/pi-hole|Pi-hole]]® is a [[https://en.wikipedia.org/wiki/DNS_Sinkhole|DNS sinkhole]] that protects your devices from unwanted content, without installing any client-side software.
  
Строка 15: Строка 15:
 pihole -up pihole -up
 </code> </code>
 +:!: В 6-й версии изменились названия переменных и т. д. [[https://docs.pi-hole.net/docker/upgrading/v5-v6/|Upgrading from v5.x]]
 +===== Установка =====
 +==== Docker ====
 +https://github.com/pi-hole/docker-pi-hole
  
-==== Установка ====+Админка на порту 5001, DNS на 53. Чтобы DNS не конфликтовал с systemd-resolve на хосте, нужно на хосте 
 +<code bash> 
 +sudo sed -r -i.orig 's/#?DNSStubListener=yes/DNSStubListener=no/g' /etc/systemd/resolved.conf 
 +sudo sh -c 'rm /etc/resolv.conf && ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf' 
 +sudo systemctl restart systemd-resolved 
 +</code> 
 +https://github.com/pi-hole/docker-pi-hole?tab=readme-ov-file#installing-on-ubuntu-or-fedora 
 + 
 +Если systemd-resolve был выключен, то нужно привязать порт 53 к конкретному адресу хоста, иначе контейнеры не смогут разрешать внешние имена. 
 +<code yaml> 
 +    ports: 
 +      - 192.168.1.15:53:53/tcp 
 +      - 192.168.1.15:53:53/udp 
 +</code> 
 +https://discourse.pi-hole.net/t/solve-dns-resolution-in-other-containers-when-using-docker-pihole/31413 
 + 
 +<code yaml> 
 +  pihole: 
 +    image: pihole/pihole 
 +    container_name: pihole 
 +    restart: unless-stopped 
 +    environment: 
 +      TZ: 'Europe/Moscow' 
 +      FTLCONF_webserver_api_password: 'Qwerty123456' 
 +      FTLCONF_webserver_port: 5001 
 +      FTLCONF_dns_upstreams: '8.8.8.8;8.8.4.4;2001:4860:4860:0:0:0:0:8888;2001:4860:4860:0:0:0:0:8844;208.67.222.222;208.67.220.220;2620:119:35::35 
 +;2620:119:53::53;84.200.69.80;84.200.70.40;2001:1608:10:25:0:0:1c04:b12f;2001:1608:10:25:0:0:9249:d69b;1.1.1.1;1.0.0.1;2606:4700:4700::11 
 +11;2606:4700:4700::1001' 
 +      FTLCONF_dns_dnssec: true 
 +      FTLCONF_dns_listeningMode: 'all' 
 +    ports: 
 +      - 192.168.1.15:53:53/tcp 
 +      - 192.168.1.15:53:53/udp 
 +      - 5001:5001 
 +    volumes: 
 +      - '~/volumes/pihole/pihole:/etc/pihole' 
 +      - '~/volumes/pihole/dnsmasq:/etc/dnsmasq.d' 
 +</code> 
 + 
 +==== Локально ====
 Методом № 2 Методом № 2
 <code bash> <code bash>
Строка 34: Строка 77:
 </code> </code>
  
-==== Выяснить, в каком чёрном списке находится домен ====+===== Выяснить, в каком чёрном списке находится домен =====
 <code bash> <code bash>
 root@orangepione:~# pihole -q -exact vk.com root@orangepione:~# pihole -q -exact vk.com
Строка 46: Строка 89:
 </code> </code>
  
-==== Ошибки ==== +===== Ошибки, проблемы ===== 
-=== DNSMASQ_WARN: reducing DNS packet size for nameserver XXX.XXX.XXX.XXX to 1232 ===+==== Контейнер не стартует после перезагрузки хоста ==== 
 +Проблема возникает, когда DNS-порты привязаны к IP хоста. Если не указывать IP, всё работает. 
 +<code yaml> 
 +    ports: 
 +      - 192.168.1.15:53:53/tcp 
 +      - 192.168.1.15:53:53/udp 
 +</code> 
 +Дело в том, что сеть не успевает полностью подняться до запуска контейнера и его запуск обламывается. Для решения можно использовать следующий костыль: 
 + 
 +<code bash> 
 +# Сделать override-файл для докер-демона, запускающий скрипт 
 +systemctl edit docker 
 + 
 +[Service] 
 +# wait for the network to be up 
 +ExecStartPre=/etc/systemd/system/docker.service.d/wait_for_network.sh 
 +</code> 
 + 
 +<code bash> 
 +# Скрипт 
 +cat << EOF > /etc/systemd/system/docker.service.d/wait_for_network.sh 
 +#!/bin/bash 
 +ipServerAddress="192.168.1.1" # Адрес роутера, например 
 +cycleLength=1 # The length of a wait cycle in seconds 
 +timeout=15    # Maximum number of seconds to wait before giving up 
 + 
 +elapsedTime=0 
 +ping -c 1 \$ipServerAddress > /dev/null 2>&
 +while [ \$? -ne 0 ]; do 
 +    if [ "\$elapsedTime" -ge "\$timeout" ]; then 
 +        # Timeout 
 +        exit 1 
 +    fi 
 + 
 +    elapsedTime=\$((elapsedTime + cycleLength)) 
 +    sleep \$cycleLength 
 +    ping -c 1 \$ipServerAddress > /dev/null 2>&
 +done 
 +EOF 
 + 
 +# Сделать скрипт запускаемым 
 +chmod ug+x /etc/systemd/system/docker.service.d/wait_for_network.sh 
 +</code> 
 +https://discourse.pi-hole.net/t/solved-failed-to-allocate-and-map-port-53-53-after-system-restart/64872/
 + 
 +==== DNSMASQ_WARN: reducing DNS packet size for nameserver XXX.XXX.XXX.XXX to 1232 ====
  
 <code bash> <code bash>
service/pihole.1728036187.txt.gz · Последнее изменение: 04.10.2024 10:03 — viacheslav

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki