我本来是用1panel跑Adguard Home,也就想着用1panel来运行technitium,可是如果直接进行递归解析,容器没有ipv6。我想过让1panel的docker支持ipv6,可是1panel官方文档导入需要一个ipv6的ip段,可我的v6地址是/128的,所以也不行。于是不用docker容器,直接运行。
需要做三件事情
#安装acme.sh
curl https://get.acme.sh | sh -s email=my@example.com
#导入环境变量
export CF_Token="填DNS token"
export CF_Zone_ID="填区域ID"
export CF_Account_ID="填账户ID"
#申请命令
acme.sh --issue --dns dns_cf -d doh.235421.xyz
#安装命令
acme.sh --install-cert -d doh.235421.xyz --key-file /root/certs/key.pem --fullchain-file /root/certs/cert.pem --reloadcmd "systemctl reload nginx"
/etc/nginx/conf.d/tech.conf
长这样:server {
# 监听 IPv4 和 IPv6 的 443 端口,启用 SSL
listen 443 ssl;
listen [::]:443 ssl;
server_name doh.235421.xyz;
# SSL 证书配置
ssl_certificate /root/certs/cert.pem;
ssl_certificate_key /root/certs/key.pem;
# SSL 优化配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
# 同时反代 http://127.0.0.1:5380 和 http://[::1]:5380 到 https://doh.235421.xyz
location / {
# 使用 Nginx 支持 IPv4 和 IPv6 的方式反代
proxy_pass http://[::1]:5380;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 同时反代 http://127.0.0.1:5480/dns-query 和 http://[::1]:5480/dns-query 到 https://doh.235421.xyz/doh
location /doh {
# 代理本地 IPv4 和 IPv6 的 5480 端口
proxy_pass http://[::1]:5480/dns-query;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 日志配置
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
}
# HTTP 到 HTTPS 的重定向
server {
listen 80;
listen [::]:80;
server_name doh.235421.xyz;
# 将所有 HTTP 请求重定向到 HTTPS
return 301 https://$host$request_uri;
}
listen [::]:443 ssl;
和 listen [::]:80;
用于监听 IPv6 地址的 443 和 80 端口,listen 443 ssl;
和 listen 80;
用于监听 IPv4 地址的 443 和 80 端口。proxy_pass
支持 IPv4 和 IPv6:使用 proxy_pass http://[::1]:5380;
来代理到本地的 IPv6 回环地址([::1]
是 IPv6 回环地址,等同于 IPv4 的 127.0.0.1
)。Nginx 会自动处理 IPv4 和 IPv6。/
路径代理到本地的 5380 端口,/doh
路径代理到本地的 5480 端口,并通过 SSL 访问外部服务。配置完成用nginx -t
检查配置是否有错误,应该显示successful
再systemctl restart nginx.service
来重启nginx
现在已经搭建完成,可以在technitium后台进行一些配置以适合自己的需求,这样在递归解析时就可以支持ipv6了,也可以开启prefer ipv6。
technitium也支持和Adguard Home一样的拦截列表,可以无痛迁移。