通过HTTPS为Cloudflare DNS配置Ubuntu Pi-hole

时间:2020-01-09 10:37:48  来源:igfitidea点击:

如何通过防止中间人攻击来窃听和操纵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