Comment configurer DNS over HTTPS sur Linux

Ce guide vous aidera à configurer DNS over HTTPS (DoH) sur votre système Linux, couvrant plusieurs méthodes de configuration et les meilleures pratiques.

Prérequis

  • Système d’exploitation Linux
  • Privilèges d’administrateur (root)
  • Connaissances de base de la ligne de commande
  • Connexion réseau stable

Utilisation de systemd-resolved

Étape 1 : Vérifier la version de systemd-resolved

systemctl --version
systemd-resolve --version

Assurez-vous que la version est 247 ou supérieure, car ces versions prennent en charge DoH.

Étape 2 : Configurer resolved.conf

Modifiez /etc/systemd/resolved.conf :

[Resolve]
DNS=1.1.1.1 1.0.0.1
DNSOverTLS=yes
DNSSEC=yes
Cache=yes
DNSStubListener=yes

Pour DoH, ajoutez la configuration suivante :

[Resolve]
DNS=https://cloudflare-dns.com/dns-query
     https://dns.google/dns-query
DNSOverTLS=no
DNSSEC=yes
Cache=yes
DNSStubListener=yes

Étape 3 : Redémarrer le service

sudo systemctl restart systemd-resolved
sudo systemctl status systemd-resolved

Utilisation de NetworkManager

Étape 1 : Vérifier la version de NetworkManager

nmcli --version

Assurez-vous que la version prend en charge la fonctionnalité DoH.

Étape 2 : Configurer la connexion

Configurez DoH en utilisant nmcli :

# Lister les connexions actuelles
nmcli connection show

# Modifier la connexion spécifiée
sudo nmcli connection modify "Nom de la connexion" ipv4.dns "1.1.1.1,1.0.0.1" ipv4.dns-over-tls yes
sudo nmcli connection modify "Nom de la connexion" ipv6.dns "2606:4700:4700::1111,2606:4700:4700::1001" ipv6.dns-over-tls yes

Étape 3 : Appliquer les modifications

sudo nmcli connection up "Nom de la connexion"

Utilisation de clients autonomes

dnscrypt-proxy

  1. Installation
# Debian/Ubuntu
sudo apt install dnscrypt-proxy

# Fedora
sudo dnf install dnscrypt-proxy

# Arch Linux
sudo pacman -S dnscrypt-proxy
  1. Configuration

Modifiez /etc/dnscrypt-proxy/dnscrypt-proxy.toml :

server_names = ['cloudflare', 'google']
listen_addresses = ['127.0.0.1:53']
max_clients = 250
ipv4_servers = true
ipv6_servers = true
dnscrypt_servers = true
doh_servers = true
require_dnssec = true
require_nolog = true
require_nofilter = true
force_tcp = false
timeout = 2500
keepalive = 30
  1. Démarrer le service
sudo systemctl enable dnscrypt-proxy
sudo systemctl start dnscrypt-proxy
sudo systemctl status dnscrypt-proxy

Stubby

  1. Installation
# Debian/Ubuntu
sudo apt install stubby

# Fedora
sudo dnf install stubby

# Arch Linux
sudo pacman -S stubby
  1. Configuration

Modifiez /etc/stubby/stubby.yml :

resolution_type: GETDNS_RESOLUTION_STUB
dns_transport_list:
  - GETDNS_TRANSPORT_TLS
tls_authentication: GETDNS_AUTHENTICATION_REQUIRED
tls_query_padding_blocksize: 128
edns_client_subnet_private: 1
round_robin_upstreams: 1
idle_timeout: 10000
listen_addresses:
  - 127.0.0.1@53
  - 0::1@53
upstream_recursive_servers:
  - address_data: 1.1.1.1
    tls_auth_name: "cloudflare-dns.com"
  - address_data: 1.0.0.1
    tls_auth_name: "cloudflare-dns.com"
  1. Démarrer le service
sudo systemctl enable stubby
sudo systemctl start stubby
sudo systemctl status stubby

Vérification de la configuration

Méthode 1 : Utilisation de dig

# Tester la résolution DNS
dig @127.0.0.1 example.com

# Vérifier DNSSEC
dig @127.0.0.1 example.com +dnssec

# Vérifier le serveur DoH
dig @127.0.0.1 whoami.cloudflare CH TXT

Méthode 2 : Utilisation de resolvectl

# Afficher les paramètres DNS actuels
resolvectl status

# Tester la résolution DNS
resolvectl query example.com

# Vérifier DNSSEC
resolvectl query --dnssec example.com

Méthode 3 : Test en ligne

  1. Visitez un site de test de fuite DNS
  2. Exécutez un test complet
  3. Vérifiez le routage des requêtes DNS

Dépannage

Problèmes courants

  1. Échec de résolution

    • Vérifiez la connexion réseau
    • Vérifiez les fichiers de configuration
    • Vérifiez le statut du service
    • Consultez les journaux système
  2. Problèmes de performance

    • Choisissez le serveur le plus proche
    • Optimisez les paramètres de cache
    • Surveillez le temps de réponse
    • Vérifiez les ressources système
  3. Problèmes de compatibilité

    • Mettez à jour les paquets
    • Vérifiez les dépendances
    • Vérifiez les exigences système
    • Testez des configurations alternatives

Analyse des journaux

  1. Journaux système
# Afficher les journaux de systemd-resolved
journalctl -u systemd-resolved

# Vérifier les journaux de NetworkManager
journalctl -u NetworkManager

# Afficher les journaux de dnscrypt-proxy
journalctl -u dnscrypt-proxy
  1. Diagnostics réseau
# Tester la connectivité réseau
ping 1.1.1.1

# Vérifier la résolution DNS
nslookup example.com

# Vérifier DNSSEC
dig example.com +dnssec

Bonnes pratiques

  1. Sélection du fournisseur

    • Évaluez les politiques de confidentialité
    • Vérifiez la disponibilité du service
    • Considérez l’emplacement géographique
    • Testez la vitesse de connexion
  2. Recommandations de sécurité

    • Utilisez des fournisseurs de confiance
    • Activez DNSSEC
    • Mises à jour régulières du système
    • Surveillez l’activité réseau
  3. Optimisation des performances

    • Choisissez les serveurs les plus proches
    • Optimisez les paramètres de cache
    • Surveillez les métriques de performance
    • Maintenance régulière

Déploiement en entreprise

Configuration à l’échelle du système

  1. Créer des fichiers de configuration

    • Configurez systemd-resolved
    • Configurez NetworkManager
    • Déployez les logiciels clients
  2. Stratégie de déploiement

    • Utilisez la gestion de configuration
    • Implémentez la surveillance
    • Planifiez les fenêtres de maintenance
  3. Gestion de la maintenance

    • Mises à jour régulières
    • Surveillance des performances
    • Suivi des problèmes
    • Procédures de sauvegarde

Prochaines étapes