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를 파싱하지만 적용하지는 않습니다.- 피어는 하나만 사용되며, 두 번째 피어는 권고로 보고되고 무시됩니다.
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— 사용자 지정 메시지 타입 헤더 값. 각각 32비트 안의 십진수 또는start-end범위이며, 1–4는 WireGuard 자체의 메시지 타입이므로 4보다 커야 합니다. 네 값은 서로 겹칠 수 없습니다. 그렇지 않으면 터널 생성이 거부됩니다.i1,i2,i3,i4,i5— 특수 정크 패킷 정의. 파싱되지 않는 정의가 있으면 터널 생성이 거부됩니다.
거부된 매개변수 조합은 로그에 WireGuard: AmneziaWG parameters rejected: <reason>로 기록되며, 이어서 터널이 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가 대체하는 것과 동일한 헤더 바이트를 기록하므로 이 조합은 오류로 거부됩니다.- 난독화 매개변수가 하나도 없는
[AmneziaWG]섹션에는 권고가 표시됩니다 — 일반 WireGuard처럼 동작합니다.
이 페이지는 영어판의 번역본입니다. 내용이 다를 경우 영어판이 우선합니다.