
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制作的图标。