描述
Pi-hole 是一款开源且免费的 DNS 沉洞服务器(DNS sinkhole),能够在不安装任何客户端侧软件的前提下为设备提供网络内容屏蔽服务,非常轻量易用。搭配上家中吃灰已久的树莓派,我们就能够轻松打造属于自己的广告屏蔽助手。
在官网的介绍中,Pi-hole 主要具有以下优点:
...
- 易于安装和配置(号称 10 分钟安装配置一条龙)。
- 全平台,广告屏蔽服务可作用于任何设备,包括 PC、手机、平板电脑。
- 轻量,对硬件要求极低。
- 功能稳定且强大,能轻松 hold 住百万级别的请求。
- 提供了美观的 Web 数据监控仪表盘。
- 开源且免费。
配置安装
关闭自带的 DNS 服务
代码块 |
---|
|
systemctl stop systemd-resolved
systemctl disable systemd-resolved |
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 |
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 及设置文件中对应的密码登录
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 |
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" |
国内 adblock