WireGuard-Konfiguration
Chute unterstützt WireGuard als ausgehendes Proxy-Protokoll. Sie können WireGuard entweder inline im Abschnitt [Proxy] konfigurieren oder einen benannten [WireGuard]-Abschnitt definieren und darauf verweisen.
WireGuard-Abschnitt
Ein [WireGuard]-Abschnitt definiert eine vollständige WireGuard-Tunnelkonfiguration, die namentlich von einem WireGuard-Proxy-Server referenziert werden kann.
[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
Parameter
| Schlüssel | Erforderlich | Beschreibung |
|---|---|---|
private-key |
Ja | WireGuard-Privatschlüssel, base64-kodiert |
peer-public-key |
Ja | Öffentlicher Peer-Schlüssel, base64-kodiert |
self-ip |
Nein | Lokale IPv4-Adresse für die WireGuard-Schnittstelle (Standard: 10.0.0.2, für WireGuard wie für AmneziaWG) |
self-ip-v6 |
Nein | Lokale IPv6-Adresse für die WireGuard-Schnittstelle |
preshared-key |
Nein | Pre-Shared-Key für Post-Quanten-Resistenz |
server |
Ja* | Remote-Serveradresse (wird verwendet, wenn die Proxy-Zeile keine angibt; die Proxy-Zeile hat Vorrang) |
port |
Ja* | Remote-Serverport (gleicher Vorrang wie server) |
wg-mtu |
Nein | MTU für die WireGuard-Schnittstelle (Standard: 1420). mtu im Abschnitt wird als wg-mtu gelesen; ein ausdrückliches wg-mtu hat Vorrang |
keepalive |
Nein | Persistentes Keepalive-Intervall in Sekunden. Fehlt es, wird kein Keepalive gesendet |
allowed-ips |
Nein | Die Ziele, die der Peer transportiert, als kommagetrennte CIDRs (z. B. allowed-ips = 10.0.0.0/8, 192.168.1.0/24). Eine Verbindung zu einer Adresse außerhalb davon wird abgewiesen (TCP) oder verworfen (UDP). Fehlt der Schlüssel oder enthält er sowohl 0.0.0.0/0 als auch ::/0, sind alle Ziele gemeint; ein Eintrag, der kein CIDR ist, wird mit einer Warnung ignoriert |
reserved |
Nein | Reservierte Bytes für den WireGuard-Handshake-Header (z. B. reserved=0,1,2) — wird geparst, von der aktuellen Engine aber nicht angewendet; eine Warnung wird protokolliert |
* server und port müssen entweder im Abschnitt oder auf der referenzierenden [Proxy]-Zeile vorhanden sein; andernfalls wird die Richtlinie als unvollständig abgelehnt.
Surges peer-Syntax
Ein Abschnitt kann seinen Peer so beschreiben, wie Surge es tut:
[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")
- Aus
public-keywirdpeer-public-key, ausendpoint(host:portoder[v6]:port) werdenserverundport, ausclient-id = a/b/cwirdreserved;preshared-keyundkeepalivebehalten ihre Namen. Ein direkt im Abschnitt geschriebener Schlüssel hat Vorrang vor demselben Wert inpeer. Die aktuelle Engine parstreserved, wendet es aber nicht an. - Es wird nur ein Peer verwendet; ein zweiter wird als Hinweis gemeldet und ignoriert.
allowed-ipswird kompiliert und für WireGuard-TCP und -UDP durchgesetzt: Ziele außerhalb der CIDR-Netze des Peers werden abgelehnt oder verworfen, weil dieser Peer sie nicht zurückrouten kann. Die Surge-Abschnittsschlüsseldns-serverundprefer-ipv6bleiben ohne Wirkung erhalten und erscheinen im Hinweis zu ignorierten Optionen.- Beim Speichern der Konfiguration wird der Abschnitt mit den obigen Schlüsseln statt der Zeile
peer = (…)zurückgeschrieben.
Verwendung
Referenzieren Sie den Abschnitt aus einem Proxy-Server:
[Proxy]
WG = wireguard, section-name=wg0
[Proxy Group]
WGGroup = select, WG
[Rule]
IP-CIDR,10.0.0.0/8,WGGroup
FINAL,DIRECT
Mehrere [WireGuard]-Abschnitte können für verschiedene Tunnel definiert werden:
[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
Hinweis: WireGuard läuft über einen eigenen UDP-Tunnel mit einem Userspace-TCP/IP-Stack. Die Namen (z. B.
wg0) unterscheiden zwischen Groß- und Kleinschreibung.
AmneziaWG-Abschnitt
Chute unterstützt auch AmneziaWG, eine WireGuard-Variante mit Verschleierung des Datenverkehrs. Ein [AmneziaWG <name>]-Abschnitt akzeptiert dieselben Schlüssel wie ein [WireGuard]-Abschnitt sowie zusätzlich die folgenden Verschleierungsparameter:
jc,jmin,jmax— Anzahl der Junk-Pakete und deren Größenbereich. Istjcgrößer als null, müssenjminundjmaxbeide gesetzt sein, undjmaxdarf nicht kleiner alsjminsein, sonst wird der Tunnel abgelehnt.s1,s2,s3,s4— Junk, der Init-, Response-, Cookie- und Transport-Paketen vorangestellt wird.s1–s3dürfen 64 Byte nicht überschreiten (s432), unds1 + 148muss sich vons2 + 92unterscheiden, sonst wird der Tunnel abgelehnt.h1,h2,h3,h4— benutzerdefinierte Werte für die Nachrichtentyp-Header. Jeder ist eine Dezimalzahl oder ein Bereichstart-endinnerhalb von 32 Bit und muss größer als 4 sein, da 1–4 die eigenen Nachrichtentypen von WireGuard sind; die vier dürfen sich nicht überschneiden, sonst wird der Tunnel abgelehnt.i1,i2,i3,i4,i5— Definitionen spezieller Junk-Pakete. Eine Definition, die sich nicht parsen lässt, führt zur Ablehnung des Tunnels.
Eine abgelehnte Parameterkombination wird als WireGuard: AmneziaWG parameters rejected: <reason> protokolliert, danach scheitert der Tunnel mit Failed to create BoringTun tunnel.
Eine Richtlinie referenziert den Abschnitt mit dem Typ 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
Regeln zur Gegenprüfung:
- AmneziaWG-Parameter in einem einfachen
[WireGuard]-Abschnitt sind ein Konfigurationsfehler — verwenden Sie stattdessen einen[AmneziaWG]-Abschnitt. reservedkann in einem[AmneziaWG]-Abschnitt nicht verwendet werden: Es schreibt dieselben Header-Bytes, dieh4ersetzt, daher wird diese Kombination als Fehler zurückgewiesen.- Ein
[AmneziaWG]-Abschnitt ohne Verschleierungsparameter erzeugt einen Hinweis — er verhält sich wie einfaches WireGuard.
Diese Seite ist eine Übersetzung der englischen Version. Bei Abweichungen ist die englische Version maßgeblich.