WireGuard設定
ChuteはアウトバウンドプロキシプロトコルとしてWireGuardをサポートしています。WireGuardを[Proxy]セクションでインライン設定するか、名前付き[WireGuard]セクションを定義して参照することができます。
WireGuardセクション
[WireGuard]セクションは、WireGuardプロキシサーバーから名前で参照できる完全な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
パラメータ
| キー | 必須 | 説明 |
|---|---|---|
private-key |
はい | WireGuard秘密鍵、base64エンコード |
peer-public-key |
はい | ピア公開鍵、base64エンコード |
self-ip |
いいえ | WireGuardインターフェースのローカルIPv4アドレス(デフォルト: 10.0.0.2。WireGuardとAmneziaWGのどちらも同じ) |
self-ip-v6 |
いいえ | WireGuardインターフェースのローカルIPv6アドレス |
preshared-key |
いいえ | 耐量子性のための事前共有鍵 |
server |
はい* | リモートサーバーアドレス(プロキシ行に指定がない場合に使用。プロキシ行が優先されます) |
port |
はい* | リモートサーバーポート(serverと同じ優先順位) |
wg-mtu |
いいえ | WireGuardインターフェースのMTU(デフォルト: 1420)。セクション内のmtuはwg-mtuとして読み込まれ、明示的なwg-mtuが優先されます |
keepalive |
いいえ | 永続的キープアライブ間隔(秒)。書かなければキープアライブは送信されません |
allowed-ips |
いいえ | ピアが運ぶ宛先。カンマ区切りのCIDRで指定します(例: allowed-ips = 10.0.0.0/8, 192.168.1.0/24)。範囲外のアドレスへの接続は拒否(TCP)または破棄(UDP)されます。指定なし、または0.0.0.0/0と::/0の両方を含む場合はすべての宛先を意味し、CIDRでないエントリは警告を出して無視されます |
reserved |
いいえ | WireGuardハンドシェイクヘッダーの予約バイト(例: reserved=0,1,2)。解析されますが、現在のエンジンでは適用されず、警告がログに出ます |
* serverとportは、セクション内または参照元の[Proxy]行のいずれかに存在する必要があります。そうでない場合、ポリシーは不完全として拒否されます。
Surgeのpeer構文
セクションでは、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はpeer-public-keyに、endpoint(host:port、または[v6]:port)はserverとportに、client-id = a/b/cはreservedになり、preshared-keyとkeepaliveは名前がそのまま使われます。セクションに直接書いたキーは、peer内の同じ値より優先されます。現在のエンジンはreservedを解析しますが、適用はしません。- 使われるピアは1つだけです。2つ目はアドバイザリとして報告され、無視されます。
allowed-ipsはコンパイルされ、WireGuardのTCPとUDPで適用されます。対向ピアのCIDR外にある宛先は、そのピアから戻り経路を持たないため拒否または破棄されます。Surgeのセクションキーdns-server・prefer-ipv6は保持されますが効果はなく、無視されたオプションの通知に表示されます。- 設定を保存すると、セクションは
peer = (…)の行ではなく上記のキーで書き戻されます。
使用方法
プロキシサーバーからセクションを参照します:
[Proxy]
WG = wireguard, section-name=wg0
[Proxy Group]
WGGroup = select, WG
[Rule]
IP-CIDR,10.0.0.0/8,WGGroup
FINAL,DIRECT
異なるトンネルに対して複数の[WireGuard]セクションを定義できます:
[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
注意: WireGuardはユーザースペースのTCP/IPスタックを備えた独自のUDPトンネル上で動作します。名前(例:
wg0)は大文字小文字が区別されます。
AmneziaWGセクション
Chuteはトラフィック難読化機能を備えたWireGuardの派生であるAmneziaWGもサポートしています。[AmneziaWG <name>]セクションは[WireGuard]セクションと同じキーに加えて、以下の難読化パラメータを受け付けます:
jc、jmin、jmax— ジャンクパケットの数とサイズ範囲。jcが0より大きい場合、jminとjmaxの両方を指定する必要があり、jmaxはjminより小さくてはいけません。そうでなければトンネルは拒否されます。s1、s2、s3、s4— init/response/cookie/transportパケットの先頭に付加するジャンク。s1〜s3は64バイトを超えられません(s4は32)。またs1 + 148はs2 + 92と異なっている必要があり、そうでなければトンネルは拒否されます。h1、h2、h3、h4— カスタムのメッセージタイプヘッダー値。それぞれ10進数か32ビット以内のstart-end範囲で、4より大きくなければなりません(1〜4はWireGuard自身のメッセージタイプです)。4つが重なるとトンネルは拒否されます。i1、i2、i3、i4、i5— 特殊なジャンクパケットの定義。解析できない定義があるとトンネルは拒否されます。
拒否されるパラメータの組み合わせは WireGuard: AmneziaWG parameters rejected: <理由> としてログに記録され、その後トンネルは Failed to create BoringTun tunnel で失敗します。
ポリシーはamneziawg(エイリアス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
相互検証ルール:
- 通常の
[WireGuard]セクションにAmneziaWGパラメータを記述するのは設定エラーです。代わりに[AmneziaWG]セクションを使用してください。 [AmneziaWG]セクションではreservedを使用できません。h4が置き換えるのと同じヘッダーバイトを書き込むため、この組み合わせはエラーとして拒否されます。- 難読化パラメータを1つも持たない
[AmneziaWG]セクションにはアドバイザリが出ます。通常のWireGuardと同じ動作になります。
本ページは英語版からの翻訳です。内容に相違がある場合は、英語版が優先されます。