Nginx DoT 网关 > 状态 500

Nginx DoT Gateway > Status 500

我尝试用 nginx 创建一个 DoT 网关。但是,每次尝试通过 Android 私有 DNS 连接时,我都会收到状态 500 响应。

我的 Nginx 配置如下所示:

stream {
    log_format basic '$remote_addr [$time_local] $protocol $status $bytes_sent $bytes_received $session_time $upstream_addr';

    upstream dns {
        server 8.8.8.8:53;
    }

    server {
        listen 853 ssl;
        access_log /var/log/nginx/dot-access.log basic;
        error_log /var/log/nginx/dot-error.log;
        ssl_certificate /etc/letsencrypt/live/my.domain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/my.domain.com/privkey.pem;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_session_timeout 4h;
        ssl_handshake_timeout 10s;
        proxy_pass dns;
    }
}

我已经尝试用 https://medium.com/@nykolas.z/troubleshooting-dns-over-tls-e7ca570b6337 and https://www.aaflalo.me/2019/03/dns-over-tls/. A test request with https://getdnsapi.net/query/ 解决错误,效果很好,我得到了 "status": GETDNS_RESPSTATUS_GOOD。在 /var/log/nginx/dot-access.log 我看到

185.49.141.27 [01/Oct/2021:11:59:57 +0200] TCP 200 56 130 0.210 8.8.8.8:53

但是,如果我在 Android 私有 DNS 设置中输入“my.domain.com”,我会收到错误消息“无法连接”并且在 /var/log/nginx/dot-access.log

84.33.44.28 [01/Oct/2021:11:55:01 +0200] TCP 500 0 0 0.131 -

对我来说,这意味着此设置基本上可以工作,但不适用于 Android 私有 DNS。有人有想法吗?

我有完全相同的设置,直到昨天它仍然有效。 Let's Encrypt 证书似乎存在问题: https://twitter.com/WatfordJC/status/1443611562028245005

可以通过在您的 certbot 请求中添加 --preferred-chain="ISRG Root X1" 来解决该问题。我只是强制更新了我的证书,现在它又可以工作了。 讨论该主题的其他用户:https://www.reddit.com/r/Adguard/comments/pynis4/agh_android_private_dns_couldnt_connect/