Linux配置DNS-over-HTTPS (DoH)并在局域网共享

背景

众所周知,明文的DNS流量很容易被篡改。如今国内各机构植入广告的行为大行其道,你也不希望自己明明访问的是电影网站,返回的页面却满屏幕一刀999,对吧。

为解决该问题,DNS-over-HTTPS (DoH)应运而生。Windows11内置了DoH客户端,但Linux及很多移动设备并没有这个功能。本文将告诉你如何在Linux系统配置DNS-over-HTTPS (DoH),并在本地或局域网共享给小伙伴们。拓扑如下:

终端设备 <-DNS-> Linux服务器 <-DoH-> DoH服务器

操作步骤

  1. Linux服务器下载安装Cloudflared客户端
# 这里直接下载编译好的二进制文件
# 需要root权限
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflared
chmod +x ./cloudflared
mv ./cloudflared /usr/local/bin/

# 测试安装,查看版本
cloudflared --version
  1. 启动Cloudflared
# 本例中我们使用Cloudflare的DoH服务,使用简单的命令行启动
# DoH地址:https://1.1.1.1/dns-query。可通过--upstream参数指定多个
# 通过udp://0.0.0.0:53实现局域网共享
cloudflared proxy-dns --port 53 --upstream https://1.1.1.1/dns-query --address 0.0.0.0
  1. 终端设备连接DoH
    将终端设备的DNS设置为Linux服务器的IP地址即可。注意服务器防火墙需要开放UDP53端口。

该方法本质上是将公网上的DoH服务转换为局域网内或本地的普通DNS,防止中间商在公网对DNS问询结果进行篡改。

Leave a Reply

发表回复