這是本文件的舊版!


安裝 Pi-hole+Unbound 的 DNS (Docker)

  • 編輯 docker-compose.yml
    version: '3'
    
    networks:
      dns_net:
        driver: bridge
        ipam:
            config:
            - subnet: 172.22.0.0/16
    
    services:
      pihole:
        container_name: pihole
        hostname: pihole
        image: pihole/pihole:latest
        networks:
          dns_net:
            ipv4_address: 172.22.0.6
        ports:
        - "53:53/tcp"
        - "53:53/udp"
        - "8080:80/tcp"
        environment:
        - 'TZ=Asia/Taipei'
        - 'WEBPASSWORD=mypassword'
        - 'DNS1=172.22.0.7#53'
        - 'DNS2=no'
        volumes:
        - './etc-pihole/:/etc/pihole/'
        #- './etc-crond-pihole:/etc/cron.d/pihole'
        - './etc-dnsmasq.d/:/etc/dnsmasq.d/'
        restart: always
    
      unbound:
        container_name: unbound
        image: mvance/unbound:latest
        networks:
          dns_net:
            ipv4_address: 172.22.0.7
        #volumes:
        #- ./etc-unbound:/opt/unbound/etc/unbound
        ports:
        - "5053:53/tcp"
        - "5053:53/udp"
        healthcheck:
          disable: true
        restart: always
  • 啟動服務

    docker compose up -d

  1. unbound 預設阻擋上游 DNS 回復私有網路保留 IP 網段 Exp. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 169.254.0.0/16 , 如果要開放這限制, 需要
    1. 複製 unbound 內的 /opt/unbound/etc/unbound 目錄出來成為 etc-ubound

      docker cp unbound:/opt/unbound/etc/unbound .
      mv unbound etc-unbound

    2. 修改 docker-compose.yml 將 volumes 註記取消, 讓 etc-ubound 可掛載起來
      :
        unbound:
          container_name: unbound
          image: mvance/unbound:latest
          networks:
            dns_net:
              ipv4_address: 172.22.0.7
          volumes:
          - ./etc-unbound:/opt/unbound/etc/unbound
          ports:
      :
    3. 修改 ./etc-unbound/unbound.conf 將 private-address 設定註記掉 Exp.
      :
          # These private network addresses are not allowed to be returned for public
      #    private-address: 10.0.0.0/8
      #    private-address: 172.16.0.0/12
      #    private-address: 192.168.0.0/16
      #    private-address: 169.254.0.0/16
          # private-address: fd00::/8
          # private-address: fe80::/10
          # private-address: ::ffff:0:0/96
      :
    4. 重新啟動 docker compose

      docker compose up -d

  2. 如何調整自動更新週期
    1. 複製 pihole 內的 /etc/cron.d/pihole 出來成為 etc-crond-pihole

      docker cp pihole:/etc/cron.d/pihole .
      mv pihole etc-crond-pihole

    2. 修改 docker-compose.yml 將 etc-crond-pihole 註記取消, 讓 etc-crond-pihole 可掛載起來
      :
      services:
        pihole:
          container_name: pihole
      :
          volumes:
      :
          - './etc-crond-pihole:/etc/cron.d/pihole'
      :
    3. 修改 ./etc-crond-pihole 將 pihole updateGravity 原本每周執行的週期 16 4 * * 7 改成每天 Exp. 16 4 * * *
      :
      # Pi-hole: Update the ad sources once a week on Sunday at a random time in the
      :
      16 4   * * *   root    PATH="$PATH:/usr/sbin:/usr/local/bin/" pihole updateGravity >/var/log/pihole/pihole_updateGravity.log || cat /var/log/pihole/pihole_updateGravity.log
      :
    4. 重新啟動 docker compose

      docker compose up -d

  • tech/pihole_unbound.1699199808.txt.gz
  • 上一次變更: 2023/11/05 23:56
  • jonathan