diff --git a/README.md b/README.md index 29aeb33..8d0b7c1 100644 --- a/README.md +++ b/README.md @@ -734,7 +734,54 @@ framasoft.org. 3600 IN AAAA 2a01:4f8:141:3421::212 Total elapsed time: 0.04 seconds (41.83 ms/request) ``` -# Partie V - Utilisez votre résolveur +# Partie V - NGINX Reverse proxy + +Il est possible d'utiliser NGINX pour diriger le flux vers le serveur DoH en local. Pour ce faire, modifier le fichier dnsdist.conf comme ci. + +``` +-- Create local DOH server listener in DNS over HTTPS mode, otherwise the information coming from nginx won't be processed well (see nginx conf) +addDOHLocal('0.0.0.0:5300', nil, nil, '/', { reusePort=true }) +addDOHLocal('[::]:5300', nil, nil, '/', { reusePort=true }) +``` + +Le serveur écoute sur le port 5300 + +Du côté NGINX, créer un fichier de configuration pour le proxy reverse + +``` +pstream dns-backend { + server 127.0.0.1:5300; + keepalive 30; +} + +server { + listen 443 ssl http2; + listen \[::\]:443 ssl http2; + ssl_certificate /etc/letsencrypt/live/dns.adriatis.org/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/dns.adriatis.org/privkey.pem; + ssl_dhparam /etc/nginx/ssl/server.dhparam; + + server_name ; + + location / { + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $http_host; + proxy_set_header X-NginX-Proxy true; + proxy_set_header Connection ""; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_redirect off; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_read_timeout 86400; + grpc_pass grpc://dns-backend; + } +} +``` + +Ici on utilise grpc_pass grpc://dns-backend parce qu'à partir de la version 1.9 de dnsdist, il n'y a plus de support HTTP/1 mais HTTP/2. Or, NGINX ne supporte que HTTP/1. La solution de contournement consiste à utiliser grpc_pass. + +# Partie VI - Utilisez votre résolveur Vous voilà désormais en possession d'un résolveur DoT/DoH public.