Configuration WireGuard

Chute prend en charge WireGuard comme protocole de proxy sortant. Vous pouvez soit configurer WireGuard en ligne dans la section [Proxy], soit définir une section [WireGuard] nommée et y faire référence.

Section WireGuard

Une section [WireGuard] définit une configuration de tunnel WireGuard complète, référençable par son nom depuis un serveur proxy WireGuard.

[WireGuard wg0]
private-key = base64_private_key
peer-public-key = base64_peer_public_key
self-ip = 10.0.0.2
self-ip-v6 = fd00::2
preshared-key = base64_preshared_key
server = example.com
port = 51820
wg-mtu = 1420
keepalive = 25

Paramètres

Clé Requis Description
private-key Oui Clé privée WireGuard, encodée en base64
peer-public-key Oui Clé publique du pair, encodée en base64
self-ip Non Adresse IPv4 locale de l'interface WireGuard (par défaut : 10.0.0.2, pour WireGuard comme pour AmneziaWG)
self-ip-v6 Non Adresse IPv6 locale de l'interface WireGuard
preshared-key Non Clé pré-partagée pour la résistance post-quantique
server Oui* Adresse du serveur distant (utilisée lorsque la ligne de proxy n'en indique pas ; la ligne de proxy est prioritaire)
port Oui* Port du serveur distant (même priorité que server)
wg-mtu Non MTU de l'interface WireGuard (par défaut : 1420). Dans la section, mtu est lu comme wg-mtu ; un wg-mtu explicite l'emporte
keepalive Non Intervalle de keepalive persistant, en secondes. Absent, aucun keepalive n'est envoyé
allowed-ips Non Les destinations que transporte le pair, en CIDR séparés par des virgules (par ex. allowed-ips = 10.0.0.0/8, 192.168.1.0/24). Une connexion vers une adresse hors de ces plages est refusée (TCP) ou abandonnée (UDP). Absente, ou listant à la fois 0.0.0.0/0 et ::/0, elle signifie toutes les destinations ; une entrée qui n'est pas un CIDR est ignorée avec un avertissement
reserved Non Octets réservés de l'en-tête de poignée de main WireGuard (par ex. reserved=0,1,2) — analysé, mais le moteur actuel ne l'applique pas et consigne un avertissement

* server et port doivent figurer soit dans la section, soit sur la ligne [Proxy] qui la référence ; sinon la politique est rejetée comme incomplète.

Syntaxe peer de Surge

Une section peut décrire son pair à la manière de Surge :

[WireGuard wg0]
private-key = base64_private_key
self-ip = 10.0.0.2
mtu = 1280
peer = (public-key = base64_peer_public_key, endpoint = example.com:51820, preshared-key = base64_preshared_key, keepalive = 25, client-id = 1/2/3, allowed-ips = "0.0.0.0/0, ::/0")
  • public-key devient peer-public-key, endpoint (host:port, ou [v6]:port) devient server et port, client-id = a/b/c devient reserved, et preshared-key et keepalive gardent leur nom. Une clé écrite directement dans la section l'emporte sur la même valeur dans peer. Le moteur actuel analyse reserved mais ne l'applique pas.
  • Un seul pair est utilisé ; un second est signalé par un avis et ignoré.
  • allowed-ips est compilé et appliqué au TCP et à l'UDP WireGuard : une destination hors des CIDR du pair est refusée ou abandonnée, car ce pair ne peut pas la router en retour. Les clés de section Surge dns-server et prefer-ipv6 restent conservées sans effet et figurent dans l'avis sur les options ignorées.
  • À l'enregistrement de la configuration, la section est réécrite avec les clés ci-dessus au lieu de la ligne peer = (…).

Utilisation

Référencez la section depuis un serveur proxy :

[Proxy]
WG = wireguard, section-name=wg0

[Proxy Group]
WGGroup = select, WG

[Rule]
IP-CIDR,10.0.0.0/8,WGGroup
FINAL,DIRECT

Plusieurs sections [WireGuard] peuvent être définies pour différents tunnels :

[WireGuard us]
private-key = ...
peer-public-key = ...
self-ip = 10.0.1.2

[WireGuard eu]
private-key = ...
peer-public-key = ...
self-ip = 10.0.2.2

Remarque : WireGuard fonctionne sur son propre tunnel UDP avec une pile TCP/IP en espace utilisateur. Les noms (par ex. wg0) sont sensibles à la casse.

Section AmneziaWG

Chute prend également en charge AmneziaWG, une variante de WireGuard avec obfuscation du trafic. Une section [AmneziaWG <name>] accepte les mêmes clés qu'une section [WireGuard], plus les paramètres d'obfuscation suivants :

  • jc, jmin, jmax — nombre de paquets parasites et plage de taille. Avec un jc supérieur à zéro, jmin et jmax doivent tous deux être définis, et jmax ne doit pas être inférieur à jmin, sinon le tunnel est refusé.
  • s1, s2, s3, s4 — données parasites ajoutées en tête des paquets d'initiation/réponse/cookie/transport. s1–s3 ne peuvent pas dépasser 64 octets (s4 32), et s1 + 148 doit différer de s2 + 92, sinon le tunnel est refusé.
  • h1, h2, h3, h4 — valeurs personnalisées d'en-tête de type de message. Chacune est un nombre décimal ou une plage start-end sur 32 bits au plus, et doit être supérieure à 4, puisque 1 à 4 sont les types de message propres à WireGuard ; les quatre ne doivent pas se chevaucher, sinon le tunnel est refusé.
  • i1, i2, i3, i4, i5 — définitions de paquets parasites spéciaux. Une définition qui ne s'analyse pas fait refuser le tunnel.

Une combinaison de paramètres refusée est consignée dans le journal sous la forme WireGuard: AmneziaWG parameters rejected: <raison>, puis le tunnel échoue avec Failed to create BoringTun tunnel.

Une politique référence la section avec le type amneziawg (alias awg) :

[AmneziaWG awg0]
private-key = base64_private_key
peer-public-key = base64_peer_public_key
self-ip = 10.0.0.2
server = example.com
port = 51820
jc = 4
jmin = 40
jmax = 70
s1 = 15
s2 = 60
h1 = 123456
h2 = 67543
h3 = 32345
h4 = 123123

[Proxy]
AWG = amneziawg, section-name=awg0

Règles de validation croisée :

  • Des paramètres AmneziaWG dans une section [WireGuard] ordinaire constituent une erreur de configuration — utilisez plutôt une section [AmneziaWG].
  • reserved ne peut pas être utilisé dans une section [AmneziaWG] : il écrit les mêmes octets d'en-tête que ceux remplacés par h4, la combinaison est donc rejetée comme une erreur.
  • Une section [AmneziaWG] sans aucun paramètre d'obfuscation reçoit un avis — elle se comporte comme du WireGuard ordinaire.
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-30 15:11:19

results matching ""

    No results matching ""