DNS et IPv6 sous macOS avec un VPN : résolution, routage et implications techniques

Le fonctionnement d’un VPN sous macOS ne dépend pas uniquement de l’interface tunnel et de la table de routage IPv4. La résolution DNS et la gestion d’IPv6 constituent deux mécanismes distincts, pouvant suivre des chemins différents si le système n’est pas configuré de manière cohérente. La compréhension de ces mécanismes est essentielle pour analyser le comportement réel d’un tunnel VPN.

Sous macOS, la résolution DNS et le routage IPv6 sont gérés par des composants spécifiques du système, indépendants de la table de routage IPv4 standard.

1. Architecture DNS sous macOS

Contrairement à de nombreux systèmes Unix, macOS ne repose pas uniquement sur le fichier /etc/resolv.conf. La résolution DNS est assurée par le service système mDNSResponder, qui agit comme résolveur central.

Ce service :

  • maintient la configuration des serveurs DNS
  • gère les requêtes de résolution
  • distribue les requêtes vers les résolveurs appropriés

La configuration active peut être observée avec :

scutil --dns

Cette commande affiche :

  • les serveurs DNS actifs
  • les interfaces associées
  • l’ordre de priorité

2. Association entre DNS et interfaces réseau

Sous macOS, chaque interface réseau peut posséder sa propre configuration DNS.

Exemple :

  • interface physique : en0 → DNS local
  • interface tunnel : utun0 → DNS distant

Le système sélectionne le résolveur en fonction de :

  • l’ordre de priorité
  • la configuration des services réseau
  • l’interface associée à la requête

Cette architecture permet le split DNS.

3. Split DNS : fonctionnement et implications

Le split DNS consiste à utiliser différents serveurs DNS selon la destination.

Exemple conceptuel :

  • domaine interne → DNS tunnel
  • domaine public → DNS local

Ce mécanisme est géré par mDNSResponder.

Il peut être observé via :

scutil --dns

Chaque resolver possède un identifiant et une interface associée.

4. Routage des requêtes DNS

Une requête DNS est un paquet IP standard. Son chemin dépend de la table de routage.

Pour vérifier le routage vers un serveur DNS :

route -n get 8.8.8.8

Exemple :

route to: 8.8.8.8
gateway: 10.0.0.1
interface: utun0

Dans ce cas, la requête DNS passe par le tunnel.

Si l’interface affichée est en0, la requête passe par l’interface physique.

5. Observation empirique des requêtes DNS

Les requêtes DNS peuvent être observées avec tcpdump.

Sur l’interface tunnel :

sudo tcpdump -i utun0 port 53

Sur l’interface physique :

sudo tcpdump -i en0 port 53

Cette observation permet de déterminer le chemin réel des requêtes DNS.

6. Architecture IPv6 sous macOS

IPv6 fonctionne indépendamment d’IPv4.

Le système maintient :

  • une table de routage IPv4
  • une table de routage IPv6

La table IPv6 peut être observée avec :

netstat -rn -f inet6

Exemple :

default fe80::1%en0 en0

Cette route indique que le trafic IPv6 passe par l’interface physique.

7. Interface utun et IPv6

Une interface utun peut posséder une adresse IPv6.

Observation :

ifconfig utun0

Exemple :

inet6 fe80::1234:5678:abcd:ef01%utun0 prefixlen 64 scopeid 0x10

Si une route IPv6 par défaut est associée à utun, le trafic IPv6 passe par le tunnel.

8. Double routage IPv4 et IPv6

Le système peut utiliser :

  • IPv4 via utun
  • IPv6 via en0

Ces deux routages sont indépendants.

La cohérence du tunnel dépend de la configuration des deux tables.

9. Résolution DNS et IPv6

Les requêtes DNS peuvent retourner :

  • enregistrements A (IPv4)
  • enregistrements AAAA (IPv6)

Le système choisit ensuite le protocole à utiliser.

Ce choix dépend de :

  • la disponibilité IPv6
  • la table de routage
  • la configuration du tunnel

10. Validation du chemin réseau complet

Pour analyser le comportement réel :

Vérifier les DNS :

scutil --dns

Vérifier le routage IPv4 :

netstat -rn

Vérifier le routage IPv6 :

netstat -rn -f inet6

Observer le trafic :

sudo tcpdump -i utun0
sudo tcpdump -i en0

11. Interaction entre DNS, IPv4 et IPv6

Le comportement du tunnel dépend de la cohérence entre :

  • configuration DNS
  • table de routage IPv4
  • table de routage IPv6
  • interfaces réseau

Ces composants fonctionnent indépendamment mais déterminent ensemble le chemin réel du trafic.

12. Position du DNS et d’IPv6 dans l’architecture VPN macOS

Le tunnel VPN agit au niveau de l’interface réseau et du routage, mais la résolution DNS et le routage IPv6 reposent sur des mécanismes séparés.

La compréhension de ces composants permet d’analyser précisément le comportement du système réseau sous macOS.

Ces mécanismes peuvent être observés directement via les outils système standard.