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처럼 동작합니다.
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-29 21:57:05

이 페이지는 영어판의 번역본입니다. 내용이 다를 경우 영어판이 우선합니다.

results matching ""

    No results matching ""