====== Infos ====== Following Pi-Hole's update to v6 that creates amazing lags and performance issues: dig google.com @8.8.8.8 | grep time ;; Query time: 7 msec dig google.com @192.168.1.1 -p 53 | grep time #SwisscomBox ;; Query time: 10 msec dig google.com @192.168.1.10 | grep time #Raspberry Pi 2... ;; Query time: 1316 msec dig google.com @192.168.1.11 | grep time #BeagleBoneBlack ;; Query time: 12 msec Now the same after moving both to AdGuard: dig google.com @8.8.8.8 | grep time ;; Query time: 10 msec dig google.com @192.168.1.1 | grep time ;; Query time: 6 msec dig google.com @192.168.1.10 | grep time ;; Query time: 13 msec dig google.com @192.168.1.11 | grep time ;; Query time: 10 msec dig google.com @192.168.1.15 | grep time #Docker container see below ;; Query time: 4 msec ====== Install ====== ~straightforward once you have the correct archive... * Raspberry Pi: wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_armv6.tar.gz * BeagleBoneBlack: wget AdGuardHome_linux_armv7.tar.gz tar xvzf AdGuardHome_linux*.tar.gz cd AdGuardHome ./AdGuardHome -s install And voilà ... :FIXME might be better to put in /opt\\ Once installed, go to http://IP of your device:3000 to start the setup\\ In Settings/DNS Settings, put the IP of unbound + some other failover DNS:\\ 127.0.0.1:5335 9.9.9.9 1.1.1.1 Enjoy your new DNS ====== Docker ====== Here is a Docker version:\\ :!: it's a container with a fixedIP ≠ from the docker server :!: docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eno1 my_macvlan git clone https://github.com/hat3ph/docker-adguard-unbound.git cd docker-adguard-unbound vi docker-compose.yml services: adguard-unbound: container_name: adguard-unbound image: ghcr.io/hat3ph/adguard-unbound:latest restart: unless-stopped hostname: adguard-unbound volumes: - "./adguard/opt-adguard-work:/opt/adguardhome/work" - "./adguard/opt-adguard-conf:/opt/adguardhome/conf" - "./unbound:/opt/unbound" networks: my_macvlan: ipv4_address: 192.168.1.15 # statically assign the desired LAN IP networks: my_macvlan: external: true mkdir -p ./adguard/opt-adguard-work mkdir -p ./adguard/opt-adguard-conf mkdir -p ./unbound docker compose up -d then finish the setup in http://192.168.1.15:3000\\ DNS of unbound is in unbound/unbound.conf: 127.0.0.1:5053 -> to be put in Settings/DNS Settings ===== optimisation ===== vi ./unbound/unbound.conf prefetch: yes prefetch-key: yes msg-cache-size: 128m rrset-cache-size: 256m # Minimum caching time for any record (in seconds) cache-min-ttl: 300 docker rm -f adguard-unbound docker compose up -d Better Host perfs sysctl -w net.core.rmem_max=26214400 sysctl -w net.core.wmem_max=26214400 sysctl -w net.ipv4.tcp_rmem="4096 87380 26214400" sysctl -w net.ipv4.tcp_wmem="4096 16384 26214400" ===== Tweaks ===== Improve cache & speed :FIXME ===== Upstream DNS ===== ==== 2 files ==== vi /opt/AdGuardHome/conf/upstream-dns.txt #UncensoredDNS #quic://unicast.uncensoreddns.org #quic://anycast.uncensoreddns.org #DNS.WATCH #84.200.69.80 #84.200.70.40 #OpenDNS #208.67.222.222 #208.67.220.220 # Freenom world #80.80.80.80 #80.80.81.81 #Quad9 #9.9.9.9 #149.112.112.112 # Quad9 Unfiltered (No blocking, just resolution) tls://dns10.quad9.net https://dns10.quad9.net/dns-query 9.9.9.10 149.112.112.10 vi /opt/AdGuardHome/AdGuardHome.yaml ... dns: # Listen on all interfaces, port 53 bind_hosts: - 0.0.0.0 - ::0 port: 53 ... # Path to upstream DNS file upstream_dns_file: /opt/AdGuardHome/conf/upstream-dns.txt ... # Bootstrap DNS (required for hostname-based upstreams like dns.quad9.net) bootstrap_dns: - 1.1.1.1 - 8.8.8.8 - 208.67.222.222 ... # Enable DNSSEC validation (Quad9 supports it) enable_dnssec: true ==== One file (AdGuardHome.yaml) ==== Optimized for Rapberry Pi/BeagleBoneBlack dns: bind_hosts: - 0.0.0.0 port: 53 # UPSTREAMS : 100% chiffrés + diversifiés upstream_dns: - tls://dns11.quad9.net # DoT Quad9 ECS (Suisse) - tls://dns.quad9.net # DoT Quad9 standard (Suisse) - tls://unicast.uncensoreddns.org # DoT UncensoredDNS (Danemark) - tls://dns.digitale-gesellschaft.ch # DoT Suisse privacy[204] upstream_dns_file: "" # Ignore fichier upstream_mode: parallel_requests # Ignore 1 down upstream_timeout: 5s # BOOTSTRAP : IPs uniquement (zéro dépendance hostname) bootstrap_dns: - 9.9.9.10 # Quad9 unfiltered IPv4 - 149.112.112.10 # Quad9 unfiltered IPv4 - 2620:fe::10 # Quad9 unfiltered IPv6 # SÉCURITÉ ABSOLUE enable_dnssec: true # Anti-poisoning refuse_any: true # Rejette ANY queries (attaques) cache_enabled: true cache_size: 4194304 # 4MiB OK Pi2/BBB # ANTI-MITM bogus_nxdomain: - 'version.bind' - 'id.server' - 'hostname.bind' # CLIENTS anonymize_client_ip: true # Privacy locale ratelimit: 20 # AVANTAGES SÉCURITÉ max_goroutines: 100 # Pi2/BBB friendly sudo systemctl daemon-reload sudo systemctl restart AdGuardHome sudo systemctl status AdGuardHome ===== debug/troubleshoot ===== cd /opt/AdGuardHome/ ./AdGuardHome -c /opt/AdGuardHome/AdGuardHome.yaml --check-config