
WS4W เป็นแอปพลิเคชั่นเดสก์ท็อปที่อนุญาตให้ทำงานและจัดการจุดสิ้นสุดเซิร์ฟเวอร์ Wireguard บน Windows
แรงบันดาลใจจากโพสต์ของ Henry Chang วิธีการตั้งค่า Wireguard VPN Server บน Windows เป้าหมายของฉันคือการสร้างแอปพลิเคชันที่อัตโนมัติและทำให้ขั้นตอนที่ซับซ้อนหลายขั้นตอน ในขณะที่ยังไม่ได้เป็นโซลูชันแบบปลั๊กและเล่น แต่แนวคิดก็คือสามารถดำเนินการตามขั้นตอนที่จำเป็นสำหรับแต่ละขั้นตอนหนึ่งต่อหนึ่งโดยไม่ต้องใช้สคริปต์ใด ๆ ปรับเปลี่ยนรีจิสทรีหรือเข้าสู่แผงควบคุม
มีการเปิดตัวล่าสุดที่นี่ ดาวน์โหลดตัวติดตั้งและเรียกใช้
หมายเหตุ : แอปพลิเคชันจะขอให้ทำงานเป็นผู้ดูแลระบบ เนื่องจาก finagling ทั้งหมดของรีจิสทรี, บริการ Windows, การโทร wg.exe ฯลฯ จึงง่ายต่อการเรียกใช้แอปพลิเคชันทั้งหมดที่สูงขึ้น
ก่อนที่จะแนะนำตัวติดตั้ง WS4W ถูกแจกจ่ายเป็นแอปพลิเคชันแบบพกพา เวอร์ชันพกพา (1.5.2 และก่อนหน้านี้) ไม่มีเส้นทางการอัพเกรดอัตโนมัติไปยังเวอร์ชันติดตั้ง หากต้องการอัพเกรดให้ลบเวอร์ชันพกพาที่ดาวน์โหลดมาแล้วและดาวน์โหลดตัวติดตั้ง จะไม่มีการตั้งค่าการกำหนดค่าหายไป
ด้านล่างนี้เป็นงานที่สามารถดำเนินการโดยอัตโนมัติโดยใช้แอปพลิเคชันนี้

ขั้นตอนนี้ดาวน์โหลดและเรียกใช้ WireGuard เวอร์ชันล่าสุดสำหรับ Windows จาก https://download.wireguard.com/windows-client/wireguard-installer.exe เมื่อติดตั้งแล้วจะสามารถถอนการติดตั้งโดยตรงจาก WS4W ได้เช่นกัน

ที่นี่คุณสามารถกำหนดค่าจุดสิ้นสุดของเซิร์ฟเวอร์ ดูเอกสาร Wireguard สำหรับความหมายของแต่ละฟิลด์เหล่านี้ คีย์ส่วนตัวและคีย์สาธารณะถูกสร้างขึ้นโดยการโทร wg genkey และ wg pubkey [private key] ตามลำดับ (คุณสามารถเลือกรหัสส่วนตัวของคุณเองได้)
หมายเหตุ : เป็นสิ่งสำคัญที่ช่วงเครือข่ายของเซิร์ฟเวอร์ไม่ขัดแย้งกับที่อยู่ IP ของระบบโฮสต์หรือช่วงเครือข่าย LAN
นอกเหนือจากการสร้าง/udpating ไฟล์การกำหนดค่าสำหรับจุดสิ้นสุดเซิร์ฟเวอร์การแก้ไขการกำหนดค่าเซิร์ฟเวอร์จะอัปเดตค่ารีจิสทรี ScopeAddress (ภายใต้ HKLMSYSTEMCurrentControlSetServicesSharedAccessParameters ) นี่คือที่อยู่ IP ที่ใช้สำหรับอะแดปเตอร์ Wireguard เมื่อใช้คุณสมบัติการแชร์อินเทอร์เน็ต (อธิบายที่นี่) ดังนั้นคุณสมบัติที่อยู่ของการกำหนดค่าเซิร์ฟเวอร์ทำหน้าที่เพื่อกำหนดที่อยู่ที่อนุญาตสำหรับลูกค้ารวมถึง IP ที่ Windows จะกำหนดให้กับอะแดปเตอร์ WireGuard เมื่อทำการแชร์อินเทอร์เน็ต หมายเหตุที่อยู่ IP จะถูกคว้าจาก ScopeAddress ในเวลาที่ทำการแชร์อินเทอร์เน็ตเป็นครั้งแรก นั่นหมายความว่าหากที่อยู่ IP ของเซิร์ฟเวอร์มีการเปลี่ยนแปลงในการกำหนดค่า (และทำให้ค่ารีจิสทรี ScopeAddress ได้รับการปรับปรุง) อินเตอร์เฟส WireGuard จะไม่สะท้อน IP เซิร์ฟเวอร์ที่ต้องการอย่างถูกต้องอีกต่อไป ดังนั้น WS4W จะพร้อมที่จะแบ่งปันอินเทอร์เน็ตอีกครั้ง หากยกเลิกการแชร์อินเทอร์เน็ตจะถูกปิดใช้งานและจะต้องเปิดใช้งานอีกครั้งด้วยตนเอง
สำคัญ : คุณต้องกำหนดค่าการส่งต่อพอร์ตบนเราเตอร์ของคุณ ส่งต่อทราฟฟิก UDP ทั้งหมดที่กำหนดไว้สำหรับพอร์ตปลายทางเซิร์ฟเวอร์ของคุณ (ค่าเริ่มต้น
51820) ไปยัง LAN IP ของเซิร์ฟเวอร์ของคุณ เราเตอร์ทุกตัวแตกต่างกันดังนั้นจึงเป็นเรื่องยากที่จะให้คำแนะนำที่เฉพาะเจาะจงที่นี่ ตัวอย่างเช่นนี่คือสิ่งที่กฎการส่งต่อพอร์ตจะมีลักษณะเหมือนเราเตอร์เกตเวย์ควอนตัม Verizon
คุณควรตั้งค่าคุณสมบัติปลายทางเป็นที่อยู่ IPv4, IPv6 หรือโดเมนสาธารณะของคุณตามด้วยพอร์ตใดก็ตามที่คุณส่งต่อ ปุ่ม Detect Public IP Address จะพยายามตรวจจับที่อยู่สาธารณะของคุณโดยอัตโนมัติโดยใช้ ipify.org API โดยอัตโนมัติ อย่างไรก็ตามถ้าเป็นไปได้ขอแนะนำให้คุณใช้ชื่อโดเมนกับ DDNS ด้วยวิธีนี้หากที่อยู่ IP สาธารณะของคุณเปลี่ยนแปลงลูกค้าของคุณจะสามารถค้นหาจุดสิ้นสุดเซิร์ฟเวอร์ของคุณได้โดยไม่ต้องกำหนดค่าใหม่

ที่นี่คุณสามารถกำหนดค่าไคลเอนต์ ที่อยู่สามารถป้อนด้วยตนเองหรือคำนวณตามช่วงเครือข่ายของเซิร์ฟเวอร์ ตัวอย่างเช่นหากเครือข่ายของเซิร์ฟเวอร์คือ 10.253.0.0/24 การกำหนดค่าไคลเอนต์สามารถกำหนดได้ว่า 10.253.0.2 เป็นที่อยู่ที่ถูกต้อง โปรดทราบว่าที่อยู่แรกในช่วง (ในตัวอย่างนี้ 10.253.0.1 ) สงวนไว้สำหรับเซิร์ฟเวอร์ DNS เป็นตัวเลือก แต่แนะนำ คุณสามารถเพิ่มโดเมนการค้นหา DNS (หรือที่เรียกว่าคำต่อท้าย DNS อ่านเพิ่มเติม) สุดท้ายคีย์ส่วนตัวคีย์สาธารณะและคีย์ preshared ถูกสร้างขึ้นโดยใช้ wg genkey , wg pubkey [private key] และ wg genpsk (คุณอาจระบุคีย์ส่วนตัวของคุณเองคีย์ preshared เป็นตัวเลือกสร้างขึ้นไม่ซ้ำกันและแชร์กับการกำหนดค่าของเซิร์ฟเวอร์ดู #34 สำหรับข้อมูลเพิ่มเติม)
เนื่องจากการเล่นโวหารใน Wireguard หากคุณต้องลบคีย์ไคลเอนต์ล่วงหน้าและซิงค์การกำหนดค่าเซิร์ฟเวอร์ Wireguard จะยังคงคาดหวังว่าไคลเอนต์จะเชื่อมต่อกับ PSK ดังนั้น WS4W ไม่อนุญาตให้คุณล้างฟิลด์คีย์ล่วงหน้าจากลูกค้า ให้ลบและสร้างลูกค้าใหม่เพื่อลบ PSK
เมื่อกำหนดค่าแล้วมันง่ายที่จะนำเข้าการกำหนดค่าไปยังแอปไคลเอนต์ที่คุณเลือกผ่านรหัส QR หรือโดยการส่งออกไฟล์. .conf

เพื่อความปลอดภัยคุณอาจไม่ต้องการเก็บกุญแจส่วนตัวของลูกค้าไว้บนเซิร์ฟเวอร์ ในกรณีนี้คุณสามารถล้างฟิลด์คีย์ส่วนตัวก่อนที่จะบันทึกการกำหนดค่าไคลเอนต์ อย่างไรก็ตามมีสองสิ่งที่ต้องจำไว้
เมื่อกำหนดค่าเซิร์ฟเวอร์และไคลเอนต์แล้วคุณสามารถติดตั้งบริการ Tunnel ซึ่งสร้างอินเทอร์เฟซเครือข่ายใหม่สำหรับ Wireguard โดยใช้คำสั่ง wireguard /installtunnelservice หลังจากการติดตั้งอุโมงค์อาจถูกลบออกโดยตรงภายใน WS4W สิ่งนี้ใช้คำสั่ง wireguard /uninstalltunnelservice
หลังจากเสร็จสิ้นขั้นตอนนี้ไคลเอนต์ Wireguard ควรจะได้รับการจับมือกับเซิร์ฟเวอร์ที่ประสบความสำเร็จ
หมายเหตุ: หากการกำหนดค่าเซิร์ฟเวอร์ได้รับการแก้ไขหลังจากติดตั้ง Tunnel Service บริการ Tunnel จะได้รับการปรับปรุงโดยอัตโนมัติผ่านคำสั่ง
wg syncconf(หากการกำหนดค่าเซิร์ฟเวอร์ที่บันทึกไว้ใหม่นั้นถูกต้อง) นี่เป็นความจริงของการกำหนดค่าไคลเอนต์การอัปเดตซึ่งมักจะทำให้การกำหนดค่าเซิร์ฟเวอร์ได้รับการอัปเดต (เช่นหากมีการเพิ่มไคลเอนต์ใหม่การกำหนดค่าเซิร์ฟเวอร์จะต้องตระหนักถึงเพียร์ใหม่นี้)
แม้หลังจากติดตั้งบริการอุโมงค์แล้วโปรโตคอลบางอย่างอาจถูกบล็อก ขอแนะนำให้เปลี่ยนโปรไฟล์เครือข่ายเป็น Private ซึ่งช่วยลดข้อ จำกัด ของ Windows บนเครือข่าย
ขั้นตอนนี้ยังสร้างงาน Windows เพื่อให้เครือข่ายส่วนตัวโดยอัตโนมัติในการบูต คุณอาจปิดการใช้งานงานผ่านทางดรอปดาวน์
หมายเหตุ : ในระบบที่การเชื่อมต่ออินเทอร์เน็ตที่ใช้ร่วมกันมีต้นกำเนิดมาจากเครือข่ายโดเมนขั้นตอนนี้ไม่จำเป็นเนื่องจากอินเตอร์เฟส Wireguard จะเลือกโปรไฟล์ของเครือข่ายโดเมนที่ใช้ร่วมกัน
ขั้นตอนสุดท้ายคือการอนุญาตให้มีการร้องขอผ่านอินเทอร์เฟซ Wireguard ที่ถูกส่งไปยังเครือข่ายส่วนตัวหรืออินเทอร์เน็ตของคุณ ในการทำเช่นนั้นการเชื่อมต่อของอะแดปเตอร์เครือข่าย "ของจริง" บนเครื่อง Windows จะต้องแชร์กับอะแดปเตอร์ Wireguard เสมือนจริง สามารถทำได้ในหนึ่งในสองวิธี
ตัวเลือกแรกมีให้เฉพาะในบางระบบ (ดูเพิ่มเติมด้านล่าง) ตัวเลือกที่สองอาจใช้ตามความจำเป็น แต่มีข้อแม้บางอย่าง (เช่นหากการเชื่อมต่ออินเทอร์เน็ตแชร์กับอะแดปเตอร์ Wireguard มันไม่สามารถแชร์กับอะแดปเตอร์อื่น ๆ ได้ดู #18) นอกจากนี้ยังมีการรายงานหลายประเด็นเกี่ยวกับการแบ่งปันอินเทอร์เน็ตดังนั้นการกำหนดเส้นทาง NAT ควรใช้หากมี
ตัวเลือกเหล่านี้มีความพิเศษร่วมกัน
ที่นี่คุณสามารถสร้างกฎการกำหนดเส้นทาง NAT บนอินเทอร์เฟซ Wireguard เพื่อให้สามารถโต้ตอบกับเครือข่ายส่วนตัว/สาธารณะของคุณได้ โดยเฉพาะคำสั่งต่อไปนี้จะถูกเรียกใช้
New-NetIPAddress ถูกเรียกใช้อะแดปเตอร์ Wireguard เพื่อกำหนด IP แบบคงที่ในช่วงของคุณสมบัติที่อยู่ของเซิร์ฟเวอร์การกำหนดค่าNew-NetNat ถูกเรียกให้สร้างกฎ NAT ใหม่บนอะแดปเตอร์ WireguardNew-NetIPAddress ในการบูตการกำหนดเส้นทาง NAT ต้องใช้อย่างน้อย Windows 10 และตัวเลือกในการเปิดใช้งานจะไม่ปรากฏในแอปพลิเคชันบน Windows รุ่นเก่า อย่างไรก็ตามถึงแม้จะมี Windows 10 การกำหนดเส้นทาง NAT ก็ไม่ได้ผลเสมอไป บางครั้งมันต้องเปิดใช้งาน Hyper-V ซึ่งแอปพลิเคชันจะแจ้งให้ทราบ แต่ก็ต้องใช้ Windows รุ่น Pro หรือสูงกว่า (ไม่ใช่บ้าน) ของ Windows ในที่สุดหากแอปพลิเคชันไม่สามารถเปิดใช้งานการกำหนดเส้นทาง NAT ได้จะแนะนำให้ใช้การแบ่งปันการเชื่อมต่ออินเทอร์เน็ตแทน (ด้านล่าง) ดู #30 สำหรับการสนทนาเต็มรูปแบบเกี่ยวกับการสนับสนุนการกำหนดเส้นทาง NAT

หากไม่มีการกำหนดเส้นทาง NAT คุณสามารถใช้การแชร์อินเทอร์เน็ตเพื่อให้การเชื่อมต่อเครือข่ายกับอินเตอร์เฟส WireGuard เมื่อกำหนดค่าตัวเลือกนี้คุณสามารถเลือกอะแดปเตอร์เครือข่ายใด ๆ ของคุณเพื่อแชร์ โปรดทราบว่ามีแนวโน้มที่จะใช้งานได้เฉพาะกับอะแดปเตอร์ที่มีสถานะ Connected และจะเป็นประโยชน์สำหรับอะแดปเตอร์ที่ให้การเข้าถึงอินเทอร์เน็ตหรือ LAN เมื่อเลือกอะแดปเตอร์ที่จะแบ่งปันให้เลื่อนเมนูไปที่รายการเมนูเพื่อรับรายละเอียดเพิ่มเติมรวมถึงที่อยู่ IP ที่ได้รับมอบหมายของอะแดปเตอร์เพื่อตรวจสอบว่าเป็นที่ที่คุณต้องการแบ่งปันหรือไม่
หมายเหตุ: เมื่อทำการแชร์อินเทอร์เน็ตอะแดปเตอร์ Wireguard จะได้รับการกำหนด IP จากค่ารีจิสทรี
ScopeAddress(ภายใต้HKLMSYSTEMCurrentControlSetServicesSharedAccessParameters) ค่านี้ถูกตั้งค่าโดยอัตโนมัติเมื่ออัปเดตคุณสมบัติที่อยู่ของการกำหนดค่าเซิร์ฟเวอร์ ดูเพิ่มเติมที่นี่
มีปัญหาใน Windows ที่ทำให้การแบ่งปันอินเทอร์เน็ตปิดการใช้งานหลังจากรีบูต หากเซิร์ฟเวอร์ Wireguard มีจุดประสงค์เพื่อให้ไม่ได้รับการดูแลโดยไม่มีใครดูแลขอแนะนำให้เปิดใช้งานการแชร์อินเทอร์เน็ตแบบถาวรเพื่อให้ไม่จำเป็นต้องมีการโต้ตอบหลังจากรีบูต
เมื่อเปิดใช้งานคุณสมบัตินี้การกระทำสองอย่างจะดำเนินการใน Windows:
Internet Connection Sharing จะเปลี่ยนจาก Manual เป็น AutomaticEnableRebootPersistConnection ใน HKLMSoftwareMicrosoftWindowsCurrentVersionSharedAccess ถูกตั้งค่าเป็น 1 (มันถูกสร้างขึ้นหากไม่พบ)แม้จะมีวิธีแก้ปัญหาเหล่านี้การแบ่งปันอินเทอร์เน็ตก็สามารถปิดการใช้งานได้หลังจากรีบูต ดังนั้นการดำเนินการอีกครั้งจะดำเนินการ งานที่กำหนดไว้ถูกสร้างขึ้นเพื่อปิดการใช้งานและเปิดใช้งานการแบ่งปันอินเทอร์เน็ตอีกครั้งโดยใช้ WS4W CLI เมื่อทำการบูตระบบ สิ่งนี้ควรเพียงพอที่จะรับประกันว่าการแบ่งปันยังคงเปิดใช้งาน

เมื่อติดตั้งอุโมงค์แล้วสถานะของอินเทอร์เฟซ Wireguard อาจถูกดู สิ่งนี้สามารถทำได้ผ่านคำสั่ง wg show มันจะได้รับการปรับปรุงอย่างต่อเนื่องตราบใดที่มีการตรวจสอบ Update Live
ตั้งค่าการล่าช้างานสำหรับการบูต
การตั้งค่านี้อนุญาตให้กำหนดค่าความล่าช้าสำหรับงานบูต สิ่งนี้มีประโยชน์สำหรับงานที่ขึ้นอยู่กับอะแดปเตอร์ที่โหลดช้า โปรดทราบว่างานจะต้องปิดใช้งานและเปิดใช้งานอีกครั้งหลังจากเปลี่ยนค่านี้

นอกจากนี้ยังมี CLI ที่รวมอยู่ในการดาวน์โหลดแบบพกพาที่เรียกว่า ws4w.exe ซึ่งสามารถเรียกใช้จากเทอร์มินัลหรือเรียกจากสคริปต์ นอกเหนือจากข้อความที่เขียนถึงมาตรฐานแล้ว CLI จะตั้งรหัสออกตามความสำเร็จของการดำเนินการคำสั่งที่กำหนด ตัวอย่างเช่นใน PowerShell รหัสทางออกสามารถพิมพ์ด้วย echo $lastexitcode
หมายเหตุ : CLI จะต้องทำงานเป็นผู้ดูแลระบบด้วยเหตุผลเดียวกับข้างต้น
CLI ใช้คำกริยาหรือคำสั่งระดับบนสุดซึ่งแต่ละคำสั่งมีชุดตัวเลือกของตัวเอง คุณสามารถเรียกใช้ ws4w.exe --help สำหรับรายการคำกริยาทั้งหมดหรือ ws4w.exe verb --help เพื่อดูรายการตัวเลือกสำหรับคำกริยาเฉพาะ
ws4w.exe restartinternetsharing [--network <NETWORK_TO_SHARE>]--network ตัวเลือก Network อาจถูกส่งผ่านเพื่อระบุเครือข่าย WS4W ที่ควรแบ่งปัน--network จะผ่านไป)--network จะต้องส่งผ่านเพื่อระบุ--network จะต้องผ่านไปมิฉะนั้นจะไม่มีวิธีที่จะรู้ว่าเครือข่ายใดที่จะแบ่งปันคำสั่งนี้ใช้โดยงานที่กำหนดเวลาที่สร้างขึ้นเมื่อเปิดใช้งานการแบ่งปันอินเทอร์เน็ตแบบถาวร
ws4w.exe setpathPATH ของระบบคำสั่งนี้ใช้โดยตัวเลือกเมื่อเลือกตัวเลือก "เพิ่ม CLI to Path"
ws4w.exe setnetipaddress --serverdatapath <PATH_TO_SERVER_CONFIG>Set-NetIPAddress บนอินเตอร์เฟส WireGuard โดยใช้ที่อยู่เครือข่ายตามที่กำหนดไว้ในไฟล์การกำหนดค่าเซิร์ฟเวอร์ WireGuard ที่กำหนดคำสั่งนี้ใช้โดยงานที่กำหนดเวลาที่สร้างขึ้นเมื่อเปิดใช้งานการกำหนดเส้นทาง NAT
ws4w.exe privatenetworkคำสั่งนี้ใช้โดยงาน Windows ที่สร้างขึ้นเมื่อเปิดใช้งานเครือข่ายส่วนตัว
ก่อนอื่นขอแนะนำให้ใช้การกำหนดเส้นทาง NAT หากมี
อย่างไรก็ตามหากคุณได้สัมผัสกับข้อความแสดงข้อผิดพลาดต่อไปนี้เมื่อเปิดใช้งานการแชร์อินเทอร์เน็ตโปรดดำเนินการตามขั้นตอนด้วยตนเองต่อไปนี้

wg_serverหมายเหตุ: ปัญหานี้มักจะถูกทริกเกอร์หลังจากสร้างสวิตช์เสมือนจริงใหม่สำหรับ VM ควรจำเป็นต้องใช้วิธีแก้ปัญหาด้วยตนเองเพียงครั้งเดียวหลังจากนั้นและไม่ส่งผลกระทบต่อสวิตช์เสมือนจริง
WS4W ได้รับการทดสอบและเป็นที่รู้จักกันว่าทำงานบน Windows Server (2012 R2 และใหม่กว่า) และ Windows Desktop (10 และใหม่กว่า)
Wireguard เป็นเครื่องหมายการค้าจดทะเบียนของ Jason A. Donenfeld
ไอคอนผลิตโดย FreePik จาก www.flaticon.com