pfSense 配置 AdGuardHome

pfSense 配置 AdGuardHome

AdGuardHome 是一个开源的 DNS 服务器,可以通过 DNS 过滤功能,过滤网页广告、恶意下载链接以及追踪器,提升网络浏览的体验。将 AdGuardHome 集成到 pfSense 则可以使 AdGuardHome pfSense 启动,让整个网络都受到过滤器的保护。

安装 AdGuardHome

到写这篇日志为止,AdGuardHome 并没有进入 pfSense 官方源,因此需要手动安装。由于 AdGuardHome 是由 Golang 编写,没有其他外部依赖,可以很方便的进行安装。

由于安装 AdGuardHome 需要使用 DNS,因此在修改 DNS 配置之前应当完成 AdGuardHome 的安装。

首先安装 AdGuardHome 的依赖

# pkg install ca_root_nss
# pkg install nano
# pkg install sudo

安装 AdGuardHome

curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v

安装完成后,在 pfSense 的命令行中会提示从 LAN IP 的 3000 端口登录 AdGuardHome 对软件进行初始化。

网页管理界面选择端口 3000 或者其他未被占用的端口。DNS 服务器监听端口可以选择默认的 53 端口,但需要关闭 Unbound 的监听;本文则依然使用 Unbound 进行转发,因此选择 5354(5353端口为 mDNS,因此也要避免占用)。

设置完用户名密码后,AdGuardHome 的初始化就已经完成了。

配置 Unbound 转发

接下来就是配置 Unbound。在 Services > DNS Resolver > General Settings > Display Custom Options > Custom options 中填入如下内容:

server:
do-not-query-localhost: no
forward-zone:
 name: "."    # Allow all DNS queries
 forward-addr: 127.0.0.1@5354
 forward-addr: ::1@5354

取消勾选 Enable DNSSEC Support (必选,否则 DNS 转发无法正常工作

随后设置系统 DNS 服务器: System > General Setup > DNS Server Settings > DNS Servers

A - 127.0.0.1
B - ::1

同时取消勾选 Allow DNS server list to be overridden by DHCP/PPP on WAN

此时系统的 DNS 请求都会转发到 [localhost:5354](<http://localhost:5354>) 通过 AdGuardHome 进行解析。可以通过 dig 命令测试 DNS 解析是否正常工作:

$ dig @192.168.1.1 google.com 

; <<>> DiG 9.18.18-0ubuntu0.22.04.2-Ubuntu <<>> @192.168.1.1 google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9854
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1372
;; QUESTION SECTION:
;google.com.                    IN      A

;; ANSWER SECTION:
google.com.             172     IN      A       216.58.206.46

;; Query time: 39 msec
;; SERVER: 192.168.1.1#53(192.168.1.1) (UDP)
;; WHEN: Sun Feb 25 22:56:01 CET 2024
;; MSG SIZE  rcvd: 55

设置 SSL/TLS(可选):如果 pfSense 已经设置 SSL 证书保护,则可以在 DNS Resolver 中勾选 Enable SSL/TLS Service 并选择相应的证书,则可以使用 Unbound 解析 DNS-over-TLS 请求。

$ dig @192.168.1.1 google.com +tls

; <<>> DiG 9.18.18-0ubuntu0.22.04.2-Ubuntu <<>> @192.168.1.1 google.com +tls
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27728
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1372
;; QUESTION SECTION:
;google.com.                    IN      A

;; ANSWER SECTION:
google.com.             300     IN      A       142.251.209.142

;; Query time: 44 msec
;; SERVER: 192.168.1.1#853(192.168.1.1) (TLS)
;; WHEN: Sun Feb 25 11:24:52 CET 2024
;; MSG SIZE  rcvd: 55

配置 AdGuardHome 自启动

编辑自启动脚本:

#!/bin/sh
# PROVIDE: AdGuardHome
# REQUIRE: networking
# KEYWORD: shutdown

. /etc/rc.subr

name="AdGuardHome"
rcvar="adguardhome_enable"
AdGuardHome_env="IS_DAEMON=1"
AdGuardHome_user="root"
pidfile_child="/var/run/${name}.pid"
pidfile="/var/run/${name}_daemon.pid"
command="/usr/sbin/daemon"
command_args="-P ${pidfile} -p ${pidfile_child} -T ${name} -r /opt/AdGuardHome/AdGuardHome"

load_rc_config $name
: ${adguardhome_enable:=yes}

run_rc_command "$1"

赋予权限:

chmod 755 /usr/local/etc/rc.d/adguardhome.sh

新建并编辑启动项:

# touch /etc/rc.conf.d/adguardhome
# nano /etc/rc.conf.d/adguardhome 

写入如下内容:

#!/bin/sh

adguardhome_enable="YES"
adguardhome_bootup_run="/usr/local/etc/rc.d/adguardhome.sh"

赋予执行权限:

chmod 755 /etc/rc.conf.d/adguardhome

参考文档

https://forums.torguard.net/index.php?/topic/2546-pfsense-adguardhome-with-doq/

https://broadband.forum/threads/installing-adguard-home-on-pfsense.205884/

https://www.openos.org/threads/pfsense-adguard-home-dns.3362/

Amefs, EFS, IT, Linux, 教程
上一篇文章
使用 Windows Performance Analyze 分析异常 DPC 来源
下一篇文章
Seafile 迁移升级记录

1条评论. Leave new

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Fill out this field
Fill out this field
请输入有效的邮箱地址。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

keyboard_arrow_up