การกำหนดค่า 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 ไม่ ที่อยู่ IPv4 ในเครื่องสำหรับอินเทอร์เฟซ WireGuard (ค่าเริ่มต้น: 10.0.0.2 ทั้งสำหรับ WireGuard และ AmneziaWG)
self-ip-v6 ไม่ ที่อยู่ IPv6 ในเครื่องสำหรับอินเทอร์เฟซ WireGuard
preshared-key ไม่ คีย์ที่แชร์ล่วงหน้าสำหรับการต้านทานควอนตัม (post-quantum)
server ใช่* ที่อยู่เซิร์ฟเวอร์ระยะไกล (ใช้เมื่อบรรทัดพร็อกซีไม่ได้ระบุ; บรรทัดพร็อกซีมีความสำคัญกว่า)
port ใช่* พอร์ตเซิร์ฟเวอร์ระยะไกล (ลำดับความสำคัญเดียวกับ server)
wg-mtu ไม่ MTU สำหรับอินเทอร์เฟซ WireGuard (ค่าเริ่มต้น: 1420) mtu ภายในส่วนจะถูกอ่านเป็น wg-mtu โดย wg-mtu ที่เขียนไว้ชัดเจนจะมีผลก่อน
keepalive ไม่ ช่วง keepalive ถาวรเป็นวินาที หากไม่ระบุจะไม่ส่ง 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] ที่อ้างอิง มิฉะนั้นนโยบายจะถูกปฏิเสธเนื่องจากไม่สมบูรณ์

ไวยากรณ์ peer ของ Surge

ส่วนนี้สามารถอธิบายเพียร์แบบเดียวกับที่ 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 ทำงานผ่านทันเนล UDP ของตัวเองพร้อมสแตก TCP/IP แบบ userspace ชื่อ (เช่น wg0) คำนึงถึงตัวพิมพ์เล็กใหญ่

ส่วน AmneziaWG

Chute ยังรองรับ AmneziaWG ซึ่งเป็น WireGuard รูปแบบหนึ่งที่มีการอำพรางทราฟฟิก ส่วน [AmneziaWG <name>] รับคีย์เดียวกันกับส่วน [WireGuard] พร้อมด้วยพารามิเตอร์การอำพรางต่อไปนี้:

  • jc, jmin, jmax — จำนวนแพ็กเก็ตขยะและช่วงขนาดของแพ็กเก็ต เมื่อ jc มากกว่าศูนย์ ต้องตั้งทั้ง 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 — ค่าส่วนหัวชนิดข้อความที่กำหนดเอง แต่ละค่าเป็นเลขฐานสิบหรือช่วง start-end ภายใน 32 บิต และต้องมากกว่า 4 เพราะ 1–4 เป็นชนิดข้อความของ WireGuard เอง ทั้งสี่ค่าต้องไม่ทับซ้อนกัน มิฉะนั้นทันเนลจะถูกปฏิเสธ
  • 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

กฎการตรวจสอบความสอดคล้องระหว่างส่วน:

  • การใส่พารามิเตอร์ AmneziaWG ในส่วน [WireGuard] ธรรมดาถือเป็นข้อผิดพลาดของการกำหนดค่า — ให้ใช้ส่วน [AmneziaWG] แทน
  • ไม่สามารถใช้ reserved ในส่วน [AmneziaWG] ได้ เนื่องจากมันเขียนไบต์ส่วนหัวชุดเดียวกันกับที่ h4 แทนที่ ดังนั้นการใช้ร่วมกันจึงถูกปฏิเสธเป็นข้อผิดพลาด
  • ส่วน [AmneziaWG] ที่ไม่มีพารามิเตอร์การอำพรางเลยจะได้รับคำเตือนเชิงแนะนำ — เพราะมันจะทำงานเหมือน WireGuard ธรรมดา
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-29 21:57:05

หน้านี้เป็นฉบับแปลจากเวอร์ชันภาษาอังกฤษ หากเนื้อหาไม่ตรงกัน ให้ยึดเวอร์ชันภาษาอังกฤษเป็นหลัก

results matching ""

    No results matching ""