自建公网DoH服务部署教程
被污染事件促使我重新考虑自建公网DoH服务的必要性。我拥有一个已备案的域名、一台线路良好的闲置香港服务器以及阿里云的免费边缘加速套餐。在普通家宽环境下,通过CURL测试,整个服务响应时间不到0.3秒,表现良好。我最终选择了Docker部署satishweb/doh-server来实现这一服务。以下是核心的Docker部署命令和Nginx配置。Docker部署命令如下:
docker run -d --name doh-server \
-p 8053:8053 \
-e UPSTREAM_DNS_SERVER="udp:1.1.1.1:53,udp:8.8.8.8:53" \
-e DOH_HTTP_PREFIX="/dns-query" \
-e DOH_SERVER_LISTEN=":8053" \
-e DOH_SERVER_TIMEOUT="10" \
-e DOH_SERVER_TRIES="3" \
-e DOH_SERVER_VERBOSE="false" \
satishweb/doh-serverNginx配置如下:
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
http2 on;
server_name server_name xxx.com; #这里改成你的域名
server_tokens off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers EECDH+AESGCM;
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
ssl_early_data off;
resolver 1.1.1.1 valid=300s;
resolver_timeout 5s;
# HTTP Security Headers
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=63072000";
ssl_certificate /xxx/xxx.pem; #这里改成你的证书路径
ssl_certificate_key /xxx/xxx.pem; #这里改成你的私钥路径
location /dns-query {
proxy_pass http://localhost:8053/dns-query;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}尽管satishweb/doh-server不支持配置上游使用DoH查询,但考虑到我的服务器位于香港,使用备案域名以利用阿里CDN加速的效果,我认为这已经足够。这次自建DoH服务更多是出于个人兴趣和挑战,而非实际需求。
评论已关闭