- #1
- 已编辑
佬友们都知道DNS全称是 Domain Name System,通俗来讲也就是说用一些相对好记忆的字符串来解析出实际要访问的IP地址。DNS这些年来也一直在进化和改进,最终的目的是安全快速易使用。
今天我们以实际例子来说说目前使用较多且相对安全的DNS查询方式 DOH (DNS-over-HTTPs)。
准备部分:
1.一台能正常解析域名的机器(无需公网IP)
2.域名托管在Cloudflare上,如果没有请参考 https://www.nodeloc.com/d/23749
前置部分(域名测试工具)
感谢 natesales 提供了一个简洁易使用的域名测试工具
工具更多格式请访问 https://github.com/natesales/q/releases
#下载二进制文件压缩包
wget https://github.com/natesales/q/releases/download/v0.19.2/q_0.19.2_linux_amd64.tar.gz -O qfiles.tar.gz
#解压二进制文件
mkdir -p qfiles ; tar -xzvf qfiles.tar.gz -C qfiles
#复制并赋予可执行权限
cp ./qfiles/q ./dnsquery ; chmod +x ./dnsquery
部署部分(生成证书,建立DOH)
1.生成5000年的证书,只需要一直回车即可。
如果想优雅的生成证书请访问 https://www.nodeloc.com/d/23186 或 https://www.nodeloc.com/d/23215
openssl genrsa -out mydomain.key 2048 ; openssl req -new -x509 -key mydomain.key -out mydomain.crt -days 1825000
2.建立DOH
感谢 AdguardTeam 提供的安全DNS软件
更多格式请访问 https://github.com/AdguardTeam/dnsproxy/releases
#下载二进制文件
wget https://github.com/AdguardTeam/dnsproxy/releases/download/v0.75.0/dnsproxy-linux-amd64-v0.75.0.tar.gz -O dnsproxy.tar.gz
#解压二进制文件
tar -xzvf dnsproxy.tar.gz
#复制并赋予可执行权限
cp ./linux-amd64/dnsproxy ./dnsproxy ; chmod +x ./dnsproxy
#创建DOH,使用端口10443
./dnsproxy -l 127.0.0.1 --https-port=10443 --tls-crt=mydomain.crt --tls-key=mydomain.key -u https://1.1.1.1/dns-query -u https://8.8.8.8/dns-query -u 1.1.1.1:53 -u 8.8.8.8:53 -p 0 --cache --edns --edns-addr=114.114.114.114
测试本机DOH是否成功
./dnsquery A AAAA --dnssec cloudflare.com @https://127.0.0.1:10443/dns-query -i
#如果出现cloudflare.com. *** A ******* 类似的字样就是成功了
Cloudflare配置部分(如果没有托管域名请参考准备部分)
网站部分
打开 https://dash.cloudflare.com/ 【如果没有登录请先登录】
1.点击左侧 Zero Trust , 继续点击左侧 Networks,然后中间找到并点击 Create a tunnel
2.点击中间部分偏左的按钮 Select Cloudflared (Select your tunnel type)
3.输入 Tunnel name ,点击 Save tunnel
4.在页面中找到 $cloudflared.exe service install ************** 类似字样并复制,然后取出 service install 后面的全部字符串,也就是 token 保存好
5.点击 Next
6.输入子域名 Subdomain ,选择根域 Domain ,Type 选 HTTPS,URL中 输入 127.0.0.1:10443,然后点击 Additional application settings,接着点击 TLS,然后打开 No TLS Verify ,最后 Save tunnel
软件部分
感谢大善人 Cloudflare,更多格式请访问 https://github.com/cloudflare/cloudflared/releases
如果想要使用更强大的cftun,请访问 https://www.nodeloc.com/d/23373
wget https://github.com/cloudflare/cloudflared/releases/download/2025.2.1/cloudflared-linux-amd64 -O cf
chmod +x cf
./cf tunnel --edge-ip-version auto --no-autoupdate run --token 这里填写刚才复制出来的token
测试最终的DOH是否成功【假设域名是mydns.mydomain.com
】
./dnsquery A AAAA --dnssec cloudflare.com @https://mydns.mydomain.com/dns-query
#如果出现cloudflare.com. *** A ******* 类似的字样就是成功了
需要使用DOH的地方,只需要填写 https://mydns.mydomain.com/dns-query
即可。
到此我们就实现了在无公网IP的条件下配置出一个安全绿色的DNS环境,教程至此基本结束。
相信佬友们会有更好的解决方案,还请多多交流与分享。
Good luck to all