VPNSmith
Outil gratuit - split tunneling WireGuard

Calculateur AllowedIPs WireGuard

WireGuard n'a pas de réglage « exclure » : pour tout faire passer sauf votre LAN ou une adresse, AllowedIPs doit lister tous les autres réseaux. Indiquez ce que le tunnel doit transporter et ce qu'il doit laisser de côté, et obtenez la ligne AllowedIPs exacte, un bloc [Peer] prêt à coller et les commandes pour vérifier les routes. Tout se calcule dans votre navigateur.

Tout se calcule dans votre navigateur. Rien de ce que vous tapez ne quitte la page.

En général 0.0.0.0/0, ::/0 (tout). Pour un tunnel qui ne joint qu'un réseau distant, saisissez ce réseau, par exemple 10.0.0.0/24. Séparez les entrées par des virgules, des espaces ou des retours à la ligne.

Votre LAN, des plages privées ou des adresses isolées (une IP seule vaut /32 ou /128).

Réintégré après les exclusions. Mettez ici le sous-réseau de votre tunnel WireGuard s'il tombe dans une plage exclue.

Une adresse IP, pas un nom d'hôte. Elle est exclue comme adresse unique, ce qui évite la boucle de routage sous Linux.

Commandes de test des routes pour
  • Sous Linux avec wg-quick, une liste sans /0 qui couvre l'IP publique du serveur envoie les paquets chiffrés dans le tunnel. Saisissez l'IP du serveur ci-dessus pour l'exclure.

Résultat

24
IPv4 : préfixes
1
IPv6 : préfixes
99.99%
de l'espace IPv4 dans le tunnel
AllowedIPs = 0.0.0.0/1, 128.0.0.0/2, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.168.0.0/24, 192.168.2.0/23, 192.168.4.0/22, 192.168.8.0/21, 192.168.16.0/20, 192.168.32.0/19, 192.168.64.0/18, 192.168.128.0/17, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 224.0.0.0/3, ::/0
peer.conf
[Peer]
PublicKey = <server public key>
Endpoint = SERVER_PUBLIC_IP:51820
AllowedIPs = 0.0.0.0/1, 128.0.0.0/2, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.168.0.0/24, 192.168.2.0/23, 192.168.4.0/22, 192.168.8.0/21, 192.168.16.0/20, 192.168.32.0/19, 192.168.64.0/18, 192.168.128.0/17, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 224.0.0.0/3, ::/0
PersistentKeepalive = 25
verify-routes.sh
# Ce que le pair capture, tel que chargé dans le noyau
sudo wg show wg0 allowed-ips

# Une adresse exclue : ne doit PAS passer par l'interface WireGuard
ip route get 192.168.1.10

# Une adresse dans le tunnel : doit passer par l'interface WireGuard
ip route get 1.1.1.1

Le split tunneling est précis sur un serveur que vous maîtrisez

Sur votre propre serveur WireGuard, vous décidez de chaque plage qui y passe, l'adresse de l'endpoint ne change jamais, et l'exclure tient en une ligne. Le VPS d'entrée de gamme de Contabo inclut une adresse IPv4 publique et un accès root complet.

Lien d'affiliation : nous pouvons toucher une commission, sans surcoût pour vous. Le calculateur reste gratuit et n'en dépend pas.

Voir le VPS Contabo

Pourquoi une seule exclusion donne deux douzaines de lignes

AllowedIPs joue deux rôles à la fois : c'est la liste des destinations que le client envoie dans le tunnel, et la liste des adresses source qu'il accepte en retour du pair. Les deux s'écrivent en blocs CIDR, et un bloc CIDR est toujours une plage de taille puissance de deux, alignée sur sa propre taille. Retirer un /24 de tout l'espace IPv4 laisse donc un bloc pour chaque bit entre /0 et /24 : 24 préfixes. Ce n'est pas un défaut du résultat, c'est la réponse exacte la plus courte.

Tout sauf 192.168.1.0/24, IPv6 toujours entièrement dans le tunnel :

AllowedIPs = 0.0.0.0/1, 128.0.0.0/2, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.168.0.0/24, 192.168.2.0/23, 192.168.4.0/22, 192.168.8.0/21, 192.168.16.0/20, 192.168.32.0/19, 192.168.64.0/18, 192.168.128.0/17, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 224.0.0.0/3, ::/0

Sous Linux, wg-quick garde déjà utilisables les routes du LAN directement connecté en tunnel complet, grâce à sa règle suppress_prefixlength 0. Une exclusion explicite compte surtout sur Android et iOS, sous Windows quand vous renoncez au kill-switch pour l'accès local, pour les réseaux qui ne sont pas directement connectés (un second sous-réseau derrière votre box), et pour les adresses publiques à joindre hors VPN, comme une banque qui bloque les sorties VPN.

Les plages qu'on exclut habituellement

N'excluez que le nécessaire : chaque plage écartée est du trafic qui sort du tunnel sans protection. Voici les plages réservées standard et la raison d'exclure chacune.

PlageCe que c'estL'exclure quand
192.168.1.0/24Un LAN domestique typique (vérifiez le vôtre)Vous avez besoin de l'imprimante, du NAS ou de la box pendant la connexion
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16Tout l'IPv4 privé RFC 1918Vous changez de réseaux que vous ne connaissez pas à l'avance
169.254.0.0/16IPv4 lien local (RFC 3927)Appareils auto-adressés, ou l'adresse de métadonnées cloud 169.254.169.254 sur une VM
fc00::/7IPv6 unique local (RFC 4193)Vos appareils du LAN utilisent aussi des adresses IPv6 ULA
fe80::/10IPv6 lien local (RFC 4291)Rarement utile : les routes par interface l'emportent déjà
203.0.113.10/32Une adresse publique (exemple)Un service qui refuse le trafic VPN, ou l'IP du serveur lui-même sous Linux

Questions fréquentes

Comment exclure mon réseau local d'un tunnel WireGuard ?
AllowedIPs n'a pas de syntaxe d'exclusion : on écrit le complémentaire. Mettez 0.0.0.0/0, ::/0 dans le champ des réseaux inclus et votre LAN, par exemple 192.168.1.0/24, dans le champ des exclusions : le calculateur rend les blocs CIDR qui couvrent tout le reste. Collez cette ligne dans la section [Peer] de la config client. Sur Android, l'application officielle propose une case « Exclude private IPs » qui fait la même chose pour les plages privées.
Pourquoi la ligne AllowedIPs est-elle si longue ?
Un bloc CIDR est une plage de taille puissance de deux alignée sur sa taille : percer un trou laisse un bloc par bit d'écart. Retirer un /24 de 0.0.0.0/0 donne 24 préfixes, retirer les trois plages RFC 1918 en donne quelques-uns de plus. La liste paraît longue mais elle est exacte, et le noyau la traite sans coût mesurable.
Faut-il exclure l'IP du serveur WireGuard lui-même ?
Avec wg-quick sous Linux, oui dès que votre liste n'est pas un simple 0.0.0.0/0. wg-quick n'applique son routage par politique, qui protège l'endpoint, qu'aux entrées /0 ; avec toute autre liste, les routes vont dans la table principale, et si elles couvrent l'adresse publique du serveur, les paquets chiffrés partent dans le tunnel lui-même. Saisissez l'endpoint dans le calculateur : il est exclu comme adresse unique. Cela ne coûte rien sur les autres plateformes non plus.
Exclure une plage désactive-t-il le kill-switch sous Windows ?
Oui. WireGuard pour Windows ne propose « Block untunneled traffic (kill-switch) » que si le tunnel a un seul pair dont AllowedIPs contient 0.0.0.0/0 ou ::/0. Une liste calculée sans /0 fait disparaître cette option. Choisissez ce qui compte le plus sur cet appareil : l'accès local, ou le blocage strict de tout ce qui sort du tunnel.
Client ou serveur : où va cet AllowedIPs ?
Dans la section [Peer] du client, où il décide de ce que le client envoie dans le tunnel. Sur le serveur, chaque pair client ne garde que sa propre adresse de tunnel, par exemple 10.66.66.2/32. Deux pairs du serveur ne doivent jamais partager une plage : WireGuard n'attribue une adresse qu'à un seul pair, et le dernier configuré la prend.
Le DNS passe-t-il encore par le tunnel après l'exclusion du LAN ?
Pas si votre serveur DNS se trouve dans la plage exclue. Une box en 192.168.1.1 utilisée comme résolveur sera alors jointe hors du tunnel, et chaque requête sortira sans protection. Réglez DNS = dans la section [Interface] sur une adresse qui reste dans le tunnel, comme l'IP de tunnel du serveur ou un résolveur public que la liste route encore.