1. 描述
Pi-hole 是一款开源且免费的 DNS 沉洞服务器(DNS sinkhole),能够在不安装任何客户端侧软件的前提下为设备提供网络内容屏蔽服务,非常轻量易用。搭配上家中吃灰已久的树莓派,我们就能够轻松打造属于自己的广告屏蔽助手。
在官网的介绍中,Pi-hole 主要具有以下优点:
- 易于安装和配置(号称 10 分钟安装配置一条龙)。
- 全平台,广告屏蔽服务可作用于任何设备,包括 PC、手机、平板电脑。
- 轻量,对硬件要求极低。
- 功能稳定且强大,能轻松 hold 住百万级别的请求。
- 提供了美观的 Web 数据监控仪表盘。
- 开源且免费。
2. 配置安装
关闭自带的 DNS 服务
systemctl stop systemd-resolved systemctl disable systemd-resolved
3. docker-compose.yml
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 ports: - "53:53/tcp" - "53:53/udp" - "67:67/udp" - "80:80/tcp" - "443:443/tcp" environment: TZ: 'Asia/Shanghai' WEBPASSWORD: 'changeme' # Volumes store your data between container upgrades volumes: - './etc-pihole/:/etc/pihole/' - './etc-dnsmasq.d/:/etc/dnsmasq.d/' # Recommended but not required (DHCP needs NET_ADMIN) # https://github.com/pi-hole/docker-pi-hole#note-on-capabilities restart: unless-stopped
4. host 模式
host 模式是最简单的一种设置方式,该容器和宿主机共有物理网络
services: pihole: image: pihole/pihole:latest container_name: pihole-host cap_add: - CAP_NET_RAW - CAP_NET_BIND_SERVICE - CAP_CHOWN # - CAP_NET_ADMIN #uncomment if you want to use DHCP - CAP_SYS_NICE - CAP_SYS_TIME environment: - PIHOLE_UID=1000 #CHANGE_TO_YOUR_UID - PIHOLE_GID=1000 #CHANGE_TO_YOUR_GID - TZ=Asia/Shanghai #CHANGE_TO_YOUR_TZ - FTLCONF_webserver_api_password=web-password - FTLCONF_webserver_port=8003 - DNSMASQ_USER=pihole volumes: - /volume1/docker/pihole/dnsmasq.d:/etc/dnsmasq.d - /volume1/docker/pihole/pihole:/etc/pihole network_mode: host labels: - com.centurylinklabs.watchtower.enable=false restart: unless-stopped
容器启动后可以通过端口 8003 及设置文件中对应的密码登录
5. bridge 桥接模式
该模式是容器默认的设置模式,该模式中容器需要对外映射对应的端口。在该模式下会存在网络上的所有客户端都是同一个容器 IP 地址的情况
services: pihole: image: pihole/pihole:latest container_name: pihole-bridge cap_add: - CAP_NET_RAW - CAP_NET_BIND_SERVICE - CAP_CHOWN - CAP_SYS_NICE - CAP_SYS_TIME environment: - PIHOLE_UID=1234 #CHANGE_TO_YOUR_UID - PIHOLE_GID=65432 #CHANGE_TO_YOUR_GID - TZ=Europe/London #CHANGE_TO_YOUR_TZ - FTLCONF_webserver_api_password=YOURPASSWORD - FTLCONF_dns_listeningMode=all - DNSMASQ_USER=pihole volumes: - /volume1/docker/pihole:/etc/pihole ports: - 53:53/udp - 8000:80/tcp - 8443:443/tcp labels: - com.centurylinklabs.watchtower.enable=false restart: unless-stopped
6. maclan 模式
该模式设置相比前面的复杂,在该模式下所有客户端都能正确显示 IP 。但由于 Macvlan 的额外安全功能及其与主机的通信,该模式下宿主机无法使用 pi-hole 的 DNS 功能
services: pihole: image: pihole/pihole:latest container_name: pihole-macvlan cap_add: - CAP_NET_RAW - CAP_NET_BIND_SERVICE - CAP_CHOWN # - CAP_NET_ADMIN #uncomment if you want to use DHCP - CAP_SYS_NICE - CAP_SYS_TIME environment: - PIHOLE_UID=1234 #CHANGE_TO_YOUR_UID - PIHOLE_GID=65432 #CHANGE_TO_YOUR_GID - TZ=Europe/London #CHANGE_TO_YOUR_TZ - FTLCONF_webserver_api_password=YOURPASSWORD - DNSMASQ_USER=pihole volumes: - /volume1/docker/pihole:/etc/pihole networks: macvlan: ipv4_address: 192.168.0.129 labels: - com.centurylinklabs.watchtower.enable=false restart: always networks: macvlan: name: macvlan driver: macvlan driver_opts: parent: eth0 ipam: config: - subnet: "192.168.0.0/24" ip_range: "192.168.0.254/24" gateway: "192.168.0.1"
添加评论