通过HTTPS为Cloudflare DNS配置Ubuntu Pi-hole
如何通过防止中间人攻击来窃听和操纵DNS数据,迫使Pi-hole通过HTTPS(DoH)使用Cloudflare DNS来提高我的隐私和安全性?
Pi-hole是一款免费的开源软件,用于阻止Internet广告和跟踪域。
最显着的优势是,从智能手机到平板电脑(包括所有台式机和应用程序),网络上所有设备上的广告屏蔽功能都可以。
本教程显示如何通过HTTPS服务配置Cloudflare DNS以及在Ubuntu Linux 18.04 LTS上运行的Pi-Hole服务器。
通过HTTPS的Pi-hole DNS
HTTPS上的DNS(DoH)是用于通过HTTPS协议进行DNS解析的协议。
DoH可以提高用户的隐私和安全性,并有助于防止DNS的操纵。
如何为Cloudflare DNS配置Pi-hole
自然,您必须在Ubuntu上设置和配置OpenVPN Server,在Ubuntu Linux 18.04 LTS上设置和配置Pi-hole。
下载Cloudflared
您可以使用许多基于HTTPS(DoH)的DNS客户端来连接到Cloudflare DNS服务器IP地址1.1.1.1和1.0.0.1。
我们将通过为Ubuntu下载.deb软件包来使用Cloudflared。
执行以下wget命令:
cd /tmp wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.deb
安装Cloudflared
在apt命令或apt-get命令的帮助下安装cloudflared是一项轻松的工作:
$ sudo apt install ./cloudflared-stable-linux-amd64.deb
验证安装,运行:
cloudflared --version
如何为Cloudflared添加新的Ubuntu Linux用户
为了将cloudflared配置为在启动时运行,首先使用useradd命令添加一个名为cloudflared的新Linux用户:
sudo useradd -r -M -s /usr/sbin/nologin -c "Cloudflared user" cloudflared
验证是否已通过grep命令和/etc/passwd
创建了用户:
grep '^cloudflared' /etc/passwd
另外,也可以在Ubuntu上使用id命令来验证cloudflared用户帐户:
id cloudflared
锁定名为cloudflared的Linux帐户:
sudo passwd -l cloudflared sudo chage -E 0 cloudflared
您可以看到帐户老化信息,运行chage命令:
sudo chage -l cloudflared
如何配置Cloudflared DNS
使用文本编辑器(例如vim命令或nano命令),如下创建一个名为/etc/default/cloudflared的文件:
sudo vi /etc/default/cloudflared
追加以下文本:
## args for cloudflared ## ## 5353 is localhost:5353. This is where dns queries are sent by pi-hole ## ## 1.1.1.1 and 1.0.0.1 are Cloudflare DNS servers ## CLOUDFLARED_OPTS=--port 5353 --upstream https://1.1.1.1/dns-query --upstream https://1.0.0.1/dns-query
保存并关闭vim中的文件。
使用chown命令设置权限:
sudo chown -v cloudflared:cloudflared /usr/local/bin/cloudflared /etc/default/cloudflared
输出示例:
changed ownership of '/usr/local/bin/cloudflared' from root:root to cloudflared:cloudflared changed ownership of '/etc/default/cloudflared' from root:root to cloudflared:cloudflared
如何为Cloudflared创建systemd启动脚本
执行以下命令:
sudo vi /lib/systemd/system/cloudflared.service
追加以下配置:
[Unit] Description=cloudflared DoH proxy After=syslog.target network-online.target [Service] Type=simple User=cloudflared EnvironmentFile=/etc/default/cloudflared ExecStart=/usr/local/bin/cloudflared proxy-dns $CLOUDFLARED_OPTS Restart=on-failure RestartSec=10 KillMode=process [Install] WantedBy=multi-user.target
启用并启动cloudflared服务
运行以下systemctl命令:
sudo systemctl enable cloudflared sudo systemctl start cloudflared echo $? sudo systemctl status cloudflared
保存并退出vim。
验证cloudflared是否正常工作
如下运行dig命令或host命令以测试Cloduflare DoH代理:
dig -p 5353 www.theitroad.com @127.0.0.1
另一个选择是使用nmap命令检查并确定TCP/UDP端口5353是否工作:
sudo nmap -Pn -sT -sU -p 5353 127.0.0.1
输出示例:
Starting Nmap 7.60 ( https://nmap.org ) at 2020-04-08 13:55 UTC Nmap scan report for localhost (127.0.0.1) Host is up (0.00013s latency). PORT STATE SERVICE 5353/tcp open rlm 5353/udp open|filtered unknown Nmap done: 1 IP address (1 host up) scanned in 2.05 seconds
通过HTTPS为Cloudflare DNS配置Ubuntu Pi-hole
现在,一切都已设置并运行。
因此,是时候配置Pi-hole以使用在127.0.0.1端口5353上运行的本地cloudflared服务了。
启动Web浏览器并根据您的设置执行pi-hole管理员url。
在我的情况下,我的OpenVPN和pi-hole在10.8.0.1上运行,因此我输入:
http://10.8.0.1/
单击"设置">" DNS">在"上游DNS服务器"下选择"自定义1(IPv4)",然后输入" 127.0.0.1#5353">向下滚动并单击"保存"按钮。
如何升级cloudflard?
从url下载最新版本并按以下步骤安装:
$ cloudflared --version `cloudflared version 2020.8.2 (built 2020-08-20-1712 UTC)` $ cd /tmp $ wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.deb $ sudo apt install ./cloudflared-stable-linux-amd64.deb $ sudo systemctl restart cloudflared $ cloudflared --version