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-keydevientpeer-public-key,endpoint(host:port, ou[v6]:port) devientserveretport,client-id = a/b/cdevientreserved, etpreshared-keyetkeepalivegardent leur nom. Une clé écrite directement dans la section l'emporte sur la même valeur danspeer. Le moteur actuel analysereservedmais ne l'applique pas.- Un seul pair est utilisé ; un second est signalé par un avis et ignoré.
allowed-ipsest 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 Surgedns-serveretprefer-ipv6restent 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 unjcsupérieur à zéro,jminetjmaxdoivent tous deux être définis, etjmaxne 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–s3ne peuvent pas dépasser 64 octets (s432), ets1 + 148doit différer des2 + 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 plagestart-endsur 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]. reservedne peut pas être utilisé dans une section[AmneziaWG]: il écrit les mêmes octets d'en-tête que ceux remplacés parh4, 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.