
WS4W是一個桌面應用程序,允許在Windows上運行和管理WireGuard服務器端點。
受亨利·張(Henry Chang)的帖子的啟發,如何在Windows上設置Wineup Vireguard VPN服務器,我的目標是創建一個應用程序,該應用程序自動化並簡化了許多複雜步驟。雖然仍然不是一個插件的解決方案,但這個想法是能夠執行每個先決條件的步驟,一對一,而無需運行任何腳本,修改註冊表或輸入控制面板。
最新版本可在此處找到。下載安裝程序並運行。
注意:該應用程序將要求以管理員的身份運行。由於註冊表,Windows Services,wg.exe呼叫等的所有罰款,因此運行整個應用程序都更容易。
在引入安裝程序之前,將WS4W作為便攜式應用程序分發。便攜式版本(1.5.2及更早)沒有到安裝程序版本的自動升級路徑。要升級,只需刪除下載的便攜式版本並下載安裝程序。不會丟失配置設置。
以下是可以使用此應用程序自動執行的任務。

此步驟從https://download.wireguard.com/windows-client/wireguard-installer.exe下載並運行Windows的最新版本。安裝後,也可以直接從WS4W卸載。

在這裡,您可以配置服務器端點。有關這些字段的每個字段的含義,請參見Vireguard文檔。私鑰和公鑰是通過分別緻電wg genkey和wg pubkey [private key]生成的。 (您可以選擇提供自己的私鑰。)
注意:重要的是,服務器的網絡範圍與主機系統的IP地址或LAN網絡範圍不衝突。
除了為服務器端點創建/udpecration文件外,編輯服務器配置還將更新ScopeAddress註冊表值(在HKLMSYSTEMCurrentControlSetServicesSharedAccessParameters下)。這是使用Internet共享功能時用於VireGuard適配器的IP地址(此處解釋)。因此,服務器配置的地址屬性用於確定客戶端的允許地址,以及Windows執行Internet共享時將分配給WiredGuard適配器的IP。注意,當首次執行Internet共享時,IP地址將從ScopeAddress獲取。這意味著,如果在配置中更改了服務器的IP地址(因此更新了ScopeAddress註冊表值),則VireGuard接口將不再準確地反映所需的服務器IP。因此,WS4W將提示重新共享互聯網。如果被取消,將禁用互聯網共享,並且必須手動重新啟用。
重要的是:您必須在路由器上配置端口轉發。將原本為服務器端點端口(默認
51820)的所有UDP流量轉發到服務器的LAN IP。每個路由器都是不同的,因此很難在此處提供具體的指導。例如,這是端口轉發規則在Verizon Quantum Gateway路由器上的樣子。
您應該將端點屬性設置為公共IPv4,IPv6或域地址,然後將您轉發的任何端口設置為。 Detect Public IP Address按鈕將嘗試使用ipify.org API自動檢測您的公共地址。但是,如果可能的話,建議您使用帶有DDN的域名。這樣,如果您的公共IP地址更改,您的客戶端將能夠在不重新配置的情況下找到服務器端點。

在這裡,您可以配置客戶端。該地址可以根據服務器的網絡範圍手動輸入或計算。例如,如果服務器的網絡為10.253.0.0/24 ,則客戶端配置可以確定10.253.0.2是一個有效的地址。請注意,該範圍內的第一個地址(在此示例中, 10.253.0.1 )是為服務器保留的。 DNS是可選的,但建議使用。您可以添加DNS搜索域(也稱為DNS後綴,閱讀更多)。最後,使用wg genkey , wg pubkey [private key]和wg genpsk生成了私鑰,公鑰和Preshared密鑰。 (您可以指定自己的專用密鑰。預歸功於鍵是可選的,每句話唯一生成,並與服務器的配置共享。有關更多信息,請參見#34。)
由於在Wineguard中有一點怪癖,如果要刪除客戶端的Preshared鍵並同步服務器配置,WireGuard仍會期望客戶端與PSK連接。因此,WS4W不允許您從客戶端清除Preshared關鍵字段。相反,刪除並重新創建客戶端以刪除PSK。
配置後,很容易通過QR代碼或導出.conf文件將配置導入到您選擇的客戶端應用程序中。

為了安全性,您可能不想將客戶端的私鑰放在服務器上。在這種情況下,您可以在保存客戶端配置之前清除私鑰字段。但是,有兩件事要牢記。
配置了服務器和客戶端后,您可以安裝Tunnel Service,該服務將使用wireguard /installtunnelservice命令為WireGuard創建新的網絡接口。安裝後,隧道也可以直接在WS4W中拆除。這使用了wireguard /uninstalltunnelservice命令。
完成此步驟後,Wineguard客戶端應該能夠與服務器進行成功的握手。
注意:如果在安裝隧道服務後編輯了服務器配置,則將通過
wg syncconf命令自動更新隧道服務(如果新保存的服務器配置有效)。客戶端配置也是如此,該更新通常會導致服務器配置更新(例如,如果添加了新客戶端,則服務器配置必須意識到此新對等式)。
即使安裝隧道服務後,某些協議也可能被阻止。建議將網絡配置文件更改為Private ,從而簡化網絡上的窗口限制。
此步驟還創建了一個Windows任務,以使網絡自動在引導上自動私有。您可以通過下拉列表禁用任務。
注意:在共享Internet連接起源於域網絡的系統上,這是不需要的,因為VireGuard Interfaces拾取了共享域網絡的配置文件。
最後一步是允許通過Vireguard接口提出的請求將路由到您的專用網絡或Internet。為此,必須與虛擬Wireguard適配器共享Windows機器上“真實”網絡適配器的連接。這可以通過兩種方式之一來完成。
第一個選項僅在某些系統上可用(請參見下面的更多)。可以根據需要使用第二個選項,但要有一些警告(例如,如果與Wineguard適配器共享Internet連接,則無法與任何其他適配器共享;請參見#18)。互聯網共享也報告了多個問題,因此如果有的話,應使用NAT路由。
這些選項是相互排斥的。
在這裡,您可以在Vireguard接口上創建NAT路由規則,以允許其與您的私人/公共網絡進行交互。具體來說,調用以下命令。
New-NetIPAddress在VireGuard適配器上調用,以在服務器配置的地址屬性範圍內分配靜態IP。New-NetNat被稱為在Vireguard適配器上創建新的NAT規則。New-NetIPAddress 。NAT路由至少需要Windows 10,並且啟用它的選項甚至不會出現在舊版本的Windows上的應用程序中。但是,即使使用Windows 10,NAT路由也不總是可行。有時,它需要啟用Hyper-V,該應用程序將提示該功能,但這還需要Pro或更高的Windows版本(即Home)版本。最終,如果應用程序無法啟用NAT路由,它將建議使用Internet連接共享(下)。有關NAT路由支持的完整討論,請參見#30。

如果NAT路由不可用,則可以使用Internet共享提供與WireGuard接口的網絡連接。配置此選項時,您可以選擇要共享的任何網絡適配器。請注意,它可能僅適用於Connected狀態的適配器,並且僅對提供Internet或LAN訪問的適配器有用。選擇用於共享的適配器時,請懸停在菜單項上以獲取更多詳細信息,包括適配器的IP地址,以確定是否是您要共享的詳細信息。
注意:執行Internet共享時,從
ScopeAddress註冊表值(在HKLMSYSTEMCurrentControlSetServicesSharedAccessParameters下)為VireGuard適配器分配了IP。在更新服務器配置的地址屬性時,將自動設置此值。在這裡查看更多。
窗口中有一些問題會導致互聯網共享在重新啟動後被禁用。如果旨在無人看管的WineGuard服務器,建議啟用持續的Internet共享,以便重新啟動後不需要互動。
啟用此功能時,在Windows中執行兩個操作:
Internet Connection Sharing服務啟動模式從Manual更改為Automatic 。HKLMSoftwareMicrosoftWindowsCurrentVersionSharedAccess在HKLM Software Windows currenaCcess中的EnableRebootPersistConnection regstry值的值設置為1 (如果找不到的話,則創建)。即使使用這些解決方法,重新啟動後,互聯網共享也可能會被禁用。因此,再執行一項動作。創建了一個計劃的任務,該任務在系統啟動時使用WS4W CLI禁用和重新啟用Internet共享。這應該足以確保啟用共享。

一旦安裝了隧道,就可以查看Vireguard接口的狀態。這是通過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選項以指定應共享的網絡WS4W。--network )。--network選項以指定。--network選項,否則無法知道要共享哪個網絡。當啟用持久的Internet共享時,可以創建的計劃任務使用此命令。
ws4w.exe setpathPATH環境變量中。當選擇“添加CLI到路徑”選項時,安裝程序使用此命令。
ws4w.exe setnetipaddress --serverdatapath <PATH_TO_SERVER_CONFIG>Set-NetIPAddress 。該命令是由啟用NAT路由時創建的計劃任務使用的。
ws4w.exe privatenetwork啟用專用網絡時創建的Windows任務使用此命令。
首先,建議使用NAT路由(如果有)。
但是,如果在啟用Internet共享時會遇到以下錯誤消息,請執行以下手動步驟。

wg_server 。注意:在為VM創建新的虛擬開關後,通常會觸發此問題。在此之後只需要一次手動解決方法,並且不會影響虛擬開關。
WS4W已經過測試,眾所周知可以在Windows Server(2012 R2和更新)和Windows Desktop(10及更新)上使用。
Wireguard是Jason A. Donenfeld的註冊商標。
Freepik從www.flaticon.com製作的圖標。