你的位置:首页 > 互联网IT

WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windows搭建Wireguard服务器端,如何在Windows上设置Wireguard VPN服务器,Windows Wireguard 服务端搭建,Windows Wireguard 服务端安装

系统:windows/windows 2012

软件:WireGuard安装,WireGuard代理

功能:代理,上网,网络,vpn,代理上网

下载:

Windows客户端下载0.5.3:https://zgdl.lanzouw.com/it4Xe2eig7qj

Windows客户端下载老版本0.1.1:https://zgdl.lanzouw.com/iKSA82dzzxgf

https://download.wireguard.com/windows-client/wireguard-amd64-0.1.1.msi

android客户端下载:https://zgdl.lanzouw.com/i3HIg2eig81a

安卓客户端下载:https://zgdl.lanzouw.com/i0exz2e00irc

其它系统客户端下载:https://www.wireguard.com/install/

必应搜索:《wireguard》


WireGuard项目下载地址:https://www.wireguard.com/install/

WireGuard项目地址:https://github.com/WireGuard

https://www.wireguard.com/


其它

WireGuard安装教材:

https://www.zhuguodong.com/?id=842

https://www.zhuguodong.com/?id=841

https://www.zhuguodong.com/?id=843

https://www.zhuguodong.com/?id=839

WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第1张


如何在Windows上设置Wireguard VPN服务器


本教程介绍了在Windows上设置Wireguard服务器的过程。互联网上的大多数Wireguard教程只让您选择在Linux环境中托管服务器。但是,安装windows服务器是很有可能的。


在搜索了一个教程却一无所获之后,我花了几天时间来找出最好的方法来做这件事,以及如何自动化这个过程。理想情况下,您仍然希望在Linux环境中运行它,但是如果您像我一样有windows服务器的使用案例,您将会体会到Wireguard是多么灵活!


准备条件:

服务器:windows 2012 演示

AI网站:https://chatgpt.com/

最新安装的Wireguard Windows客户端(从官方网站下载)

Windows客户端下载0.5.3:https://zgdl.lanzouw.com/it4Xe2eig7qj

设置防火墙规则(就像Linux服务器设置一样:打开和转发端口UDP:7000,配置ddns等)

放弃:官方不支持在Windows上使用Wireguard作为服务器。使用风险自担。


步骤1:准备Wireguard服务器和客户端配置文件


这一步和其他Linux教程一样。我在下面提供了我自己的服务器端和客户端配置,请根据您自己的使用情况进行调整。


服务器端配置:wg_server.conf


[Interface]

Address = 10.0.0.1/24

ListenPort = 7000

PrivateKey = N0ZoeNRIot0RE3BdGdk7w2A1z9HlVs5zEhtUwP/xBdE=


[Peer]

PublicKey = zJhFkpG1ExY3ZCcy6kVzGZeZkw9Yf/fE6Fr2PPjIcyM=

AllowedIPs = 10.0.0.2/32

PresharedKey = SnSU9bT/Mb6YEu434mfOKkTVNIgvTQCJXl8HAxJjU3w=

PersistentKeepalive = 25


WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第2张


客户端配置:wg0_client-dianlao.conf


[Interface]

PrivateKey = Ez2lgdh53WUzFz+J2VdfYN6zdK2h+5O4PYBGY9hjsyM=

Address = 10.0.0.2/24

DNS = 223.5.5.5,1.1.1.1

MTU = 1420


[Peer]

PublicKey = xpqXzWqbV5h88wLRWWd10tG0q6IeBb87bAmEVjgol0E=

PresharedKey = SnSU9bT/Mb6YEu434mfOKkTVNIgvTQCJXl8HAxJjU3w=

AllowedIPs = 0.0.0.0/0

Endpoint = 服务器IP或者域名:7000

PersistentKeepalive = 25


WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第3张


准备好服务器配置文件后,将其放在一个永久的文件夹中。对于本教程,我将假设服务器配置文件位于C:\wireguard\wg_server.conf

C:\wireguard\wg_server.conf

WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第4张

key说明用法:

需要自己生成key(案例):FSplLYKgyVf29hLz7q7knW1McToUoUB3MM0ImQKZFFc=

用AI生成key,(外网环境打开)AI网站:https://chatgpt.com/


发送AI:FSplLYKgyVf29hLz7q7knW1McToUoUB3MM0ImQKZFFc= 秘钥随机生成5组

显示结果如下:

WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第5张


其中暂时只用2个,服务器端用一个key,客户端用一个key,共享秘钥PresharedKey可以不用配置,演示就配置了


怎么看秘钥解密:

打开windows wireguard客户端-编辑,PrivateKey = N0ZoeNRIot0RE3BdGdk7w2A1z9HlVs5zEhtUwP/xBdE=,上面公钥显示解密公钥:xpqXzWqbV5h88wLRWWd10tG0q6IeBb87bAmEVjgol0E=


WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第6张

WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第7张


服务器端配置:wg_server.conf


[Interface]

Address = 10.0.0.1/24

ListenPort = 7000

PrivateKey = N0ZoeNRIot0RE3BdGdk7w2A1z9HlVs5zEhtUwP/xBdE=     #说明:第一个原始key填入服务器端:PrivateKey = key,解密公钥填入客户端:PublicKey = key


[Peer]

PublicKey = zJhFkpG1ExY3ZCcy6kVzGZeZkw9Yf/fE6Fr2PPjIcyM=      #这里填入客户端:PrivateKey = key,解密公钥填入服务器端:PublicKey = key

AllowedIPs = 10.0.0.2/32

PresharedKey = SnSU9bT/Mb6YEu434mfOKkTVNIgvTQCJXl8HAxJjU3w=   #随便选择一个key,服务器端与客户端一样就可以

PersistentKeepalive = 25


客户端配置:wg0_client-dianlao.conf


[Interface]

PrivateKey = Ez2lgdh53WUzFz+J2VdfYN6zdK2h+5O4PYBGY9hjsyM=     #说明:第二个原始key填入客户端:PrivateKey = key,解密公钥填入服务器端:PublicKey = key

Address = 10.0.0.2/24

DNS = 223.5.5.5,1.1.1.1

MTU = 1420


[Peer]

PublicKey = xpqXzWqbV5h88wLRWWd10tG0q6IeBb87bAmEVjgol0E=      #这里填入服务器端:PrivateKey = key,解密公钥填入客户端端:PublicKey = key

PresharedKey = SnSU9bT/Mb6YEu434mfOKkTVNIgvTQCJXl8HAxJjU3w=   #随便选择一个key,服务器端与客户端一样就可以

AllowedIPs = 0.0.0.0/0                                        #0.0.0.0/0全局代理上网,10.0.0.0/24 同网络互通(这里不能设置/32网络不通,一般故障,10.0.0.2/32))

Endpoint = 服务器IP或者域名:7000                              #服务器IP或者域名:7000

PersistentKeepalive = 25


WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第8张


步骤2:启动服务器()


我们将使用命令选项来启动服务器,而不是使用GUI。在本教程中,官方GUI一次只允许一个连接。如果我们用它来运行服务器,GUI将被占用,如果不丢弃服务器接口,我们将无法建立新的连接。使用命令行选项运行服务器使我们可以在日常使用中免费使用GUI。如果您不介意GUI被占用,您可以在GUI上启动服务器并跳到步骤3。


使用以下代码启动/停止服务器。不用说,如果文件路径在您的系统上不同,请调整它们。


简单的说:命令运行在后台运行,GUI界面运行在前台界面查看,(命令运行的好处是,服务器也可以用gui界面配置一个客户端,服务器可以网络互通)

第一种:gui界面配置:

客户端,配置C:\wireguard\wg_server.conf导入客户端,启动

WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第9张


第二种:cmd命令:

您需要以管理权限运行这些!

#Start server 开始

"C:\Program Files\WireGuard\wireguard.exe" /installtunnelservice "C:\wireguard\wg_server.conf"


#Stop server 结束

"C:\Program Files\WireGuard\wireguard.exe" /uninstalltunnelservice wg_server


您只需运行该命令一次,wireguard的后台服务将在重启后记住运行状态。启动服务器后,wireguard将创建一个与服务器配置文件同名的新网络适配器。因此,对于我们的教程,网络适配器的名称应该是"工作组服务器"检查网络适配器是否已成功创建。

如果您将配置文件命名为“wg_server.conf”,则创建的网络适配器也将相应地命名:wg_server

WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第10张


关闭防火墙,步骤2.1:(可选)就不用设置了

控制面板\所有控制面板项\Windows 防火墙\自定义设置

WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第11张


步骤2.1:(可选)设置适配器配置文件

现在我们有了wireguard适配器设置,建议将其更改为“私有”配置文件,默认情况下,适配器被添加为“公共”。私人配置文件将允许更大的客户端兼容性(比如你想使用一些远程桌面等。).公共配置文件可能会阻止这些端口和服务。


为此,我们使用管理员权限手动运行三个简单的PowerShell命令:


#Open powershell with admin privilege and run the following:


$NetworkProfile = Get-NetConnectionProfile -InterfaceAlias "wg_server"


$NetworkProfile.NetworkCategory = "Private"


Set-NetConnectionProfile -InputObject $NetworkProfile



步骤3:启用服务器路由

现在服务器正在运行,客户端应该能够握手(假设您打开了正确的端口并正确转发)。但是,您会注意到客户端将无法访问互联网或局域网。这是因为默认情况下,windows不会将wireguard接口与您的实际物理互联网接口进行桥接或NAT。在Linux中,这是通过一些PostUp/PostDown防火墙命令来完成的,我们在这里不使用它们。相反,我们使用PowerShell脚本来启用NAT(或者用Windows术语“internet共享”)功能:



新建一个文件,命名为:wireguard.psm1

wireguard.psm1配置文件下载:https://zgdl.lanzouw.com/iE8NQ2f2l2xg

填入一下内容:


Function Set-NetConnectionSharing

{

    Param

    (

        [Parameter(Mandatory=$true)]

        [string]

        $LocalConnection,


        [Parameter(Mandatory=$true)]

        [bool]

        $Enabled        

    )


    Begin

    {

        $netShare = $null


        try

        {

            # Create a NetSharingManager object

            $netShare = New-Object -ComObject HNetCfg.HNetShare

        }

        catch

        {

            # Register the HNetCfg library (once)

            regsvr32 /s hnetcfg.dll


            # Create a NetSharingManager object

            $netShare = New-Object -ComObject HNetCfg.HNetShare

        }

    }


    Process

    {

#Clear Existing Share       

$oldConnections = $netShare.EnumEveryConnection |? { $netShare.INetSharingConfigurationForINetConnection.Invoke($_).SharingEnabled -eq $true}           

foreach($oldShared in $oldConnections)

        {

            $oldConfig = $netShare.INetSharingConfigurationForINetConnection.Invoke($oldShared)

            $oldConfig.DisableSharing()                        

        }        

        # Find connections

        $InternetConnection = Get-NetRoute | ? DestinationPrefix -eq '0.0.0.0/0' | Get-NetIPInterface | Where ConnectionState -eq 'Connected'        

        $publicConnection = $netShare.EnumEveryConnection |? { $netShare.NetConnectionProps.Invoke($_).Name -eq $InternetConnection.InterfaceAlias }

        $privateConnection = $netShare.EnumEveryConnection |? { $netShare.NetConnectionProps.Invoke($_).Name -eq $LocalConnection }


        # Get sharing configuration

        $publicConfig = $netShare.INetSharingConfigurationForINetConnection.Invoke($publicConnection)

        $privateConfig = $netShare.INetSharingConfigurationForINetConnection.Invoke($privateConnection)


        if ($Enabled)

        {

            $publicConfig.EnableSharing(0)

            $privateConfig.EnableSharing(1)

        }

        else

        {

            $publicConfig.DisableSharing()

            $privateConfig.DisableSharing()

        }

    }

}


WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第12张


注意:shell脚本最初是由伊戈拉夫尔,我做了一些修改,以简化过程,并消除我们的wireguard服务器应用程序的一些错误。

https://gist.github.com/igoravl/db02a8769fd6af3028f7

这个shell脚本是作为自定义函数“Set-NetConnectionSharing”编写的,需要加载到PowerShell中。


将脚本保存在以下位置:


C:\Windows\System32\WindowsPowerShell\v1.0\Modules\wireguard\wireguard.psm1


WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第13张


wireguard.psm1需要位于名为wireguard的文件夹中,以便powershell加载该函数


现在,您可以使用管理权限打开PowerShell窗口,并运行以下命令来启用/禁用wireguard服务器接口的NAT。

开启/关闭Internet连接共享

打开:PowerShell管理员运行-开启/关闭如下:


#"wg_server" is the wireguard adapter name, replace it if you have something different.

#Enable NAT 开启

Set-NetConnectionSharing "wg_server" $true


#Disable NAT 关闭

Set-NetConnectionSharing "wg_server" $false


打开:cmd,cmd命令开启/关闭如下:

开启/关闭Internet连接共享

#Enable NAT 开启

@echo off

powershell -Command "Set-NetConnectionSharing "wg_server" $true"


#Disable NAT 关闭

@echo off

powershell -Command "Set-NetConnectionSharing "wg_server" $false"


如果一切顺利,当你打开你的主互联网网络适配器(在我的例子中是以太网3)的属性面板时,下面的选项应该被勾选:

其它系统截图

WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第14张

windows 2012 系统截图没有网络名称

WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第15张


另请注意,“家庭网络连接”字段应填入您的wireguard接口名称(图片显示的是Wireguar_Server,但如果您按照教程进行操作,则应为wg_server)。

从技术上讲,您可以通过windows gui使用properties菜单手动完成此操作,但是使用此脚本将允许您自动执行服务器启动/停止过程,您将在本教程的后面部分看到这一点。

现在一切都应该正常工作了,客户端应该能够访问您允许的互联网和局域网。



3.1这步可以不用设置,默认即可,不设置也不影响使用

步骤3.1:更改默认互联网连接共享IP

默认情况下,当启用internet共享(NAT)时,Windows会将适配器的IP地址更改为其他地址(以避免冲突)。但是,我们已经知道我们想要适配器的IP地址(在wireguard配置的[interface]块中设置),在我们的例子中是10.0.0.1。


要修改默认的IP窗口将切换到,我们可以简单地改变注册表中的设置。打开注册表编辑器并转到以下路径:

注册表打开:运行-输入 regedit 


HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\SharedAccess\Parameters


WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第16张


那就简单的改变ScopeAddress和ScopeAddressBackup我们想要的IP地址(在我们的例子中是10.0.0.1)。


在步骤3中使用powershell命令禁用并重新启用互联网连接共享(NAT ),以确保此更改生效(您可能需要重新启动计算机)。


步骤4:重新启动时启用持续互联网共享(更新于2020年2月12日)

由于windows有一个错误,即互联网连接共享不会在重新启动时自动启动,我们需要更改一些设置,以确保互联网共享已启动。之前的教程使用了一个计划任务来完成这个任务,但是在阅读了windows错误修复之后,我发现了一个更好的方法这里.

https://learn.microsoft.com/en-us/troubleshoot/windows-client/networking/ics-not-work-after-computer-or-service-restart

打开服务窗口,找到“互联网连接共享”:


WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第17张


将启动类型更改为“自动”:


WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第18张


完成后,最后我们添加一个注册表:


Path: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedAccess

Type: DWORD (32bit)

Setting: EnableRebootPersistConnection

Value: 1


WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第19张


步骤4.1(可选)Bat文件,以方便手动启动/停止服务器

为了方便起见,我还创建了两个bat文件来运行这些命令,这样我就不必每次都打开命令提示符或PowerShell来启动和停止服务器。


服务器启动批处理脚本:(另存为“start.bat”并以管理员权限运行)

@echo off

"C:\Program Files\WireGuard\wireguard.exe" /installtunnelservice "C:\wireguard\wg_server.conf"

powershell -Command "Set-NetConnectionSharing "wg_server" $true"


服务器停止批处理脚本:(另存为“stop.bat”并以管理员权限运行)

@echo off

powershell -Command "Set-NetConnectionSharing "wg_server" $false"

"C:\Program Files\WireGuard\wireguard.exe" /uninstalltunnelservice wg_server



5、问题解决篇:

问题一:

windows 2012 重启系统,Internet连接共享,共享失效,不能代理上网,连不到网络,客户端也不互通ping


或者开启NAT Internet连接共享 显示以下内容:


事件无法调用任何订户 (异常来自 HRESULT:0x80040201)

所在位置 C:\Windows\system32\WindowsPowerShell\v1.0\Modules\wireguard\wiregu

+             $privateConfig.EnableSharing(1)

+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : OperationStopped: (:) [], COMException

    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException

WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第20张

解决方法是:

Internet连接共享 先关闭/在开启 代理上网与ping问题解决

WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第21张


问题二:

windows 2012 重启系统,Internet连接共享,共享失效,不能代理上网,连不到网络,客户端也不互通ping


第一步

先按照问题一的:Internet连接共享 关闭/开启

先确认能正常代理上网与ping问题解决

WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第22张


再建立一个关闭共享网络命令:jie.bat

@echo off

powershell -Command "Set-NetConnectionSharing "wg_server" $false"


方法 1:使用组策略设置关机脚本

Windows Server 2012 支持通过 组策略 配置关机脚本来在系统关机时执行命令或脚本。这是服务器环境中更为可靠的做法。


步骤:

打开组策略管理控制台:


按 Win + R 打开“运行”窗口,输入 gpedit.msc,然后按回车,进入 本地组策略编辑器。

导航到关机脚本设置:


jie.bat 脚本导入-关机


在本地组策略编辑器中,导航到以下路径:

Copy code

计算机配置 > Windows 设置 > 脚本(启动/关机)

配置关机脚本:

WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第23张


在右侧窗格中,双击“关机”选项,打开“关机脚本”设置。

点击 添加 按钮,选择你要在关机时运行的 .bat 文件。

你可以直接浏览并选择 .bat 文件,确保文件路径正确。

保存并应用设置:


点击 确定 保存设置。

重新启动计算机:


重新启动计算机,确保组策略设置生效。


方法 2:修改注册表也可以关机执行.bat命令,自行搜索


第二步:

再建立一个开启共享网络命令:kai.bat

@echo off

powershell -Command "Set-NetConnectionSharing "wg_server" $true"


添加开机启动:运行cmd:shell:startup

复制进去文件夹:kai.bat 


WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo 互联网IT 第24张


最后备注:

与Linux相比,设置windows wireguard服务器可能比较棘手。但是,我已经为您完成了大部分基础工作(启用NAT的PowerShell脚本)。以3分钟的延迟在启动时运行PowerShell脚本并不优雅,但它确实有效。在wireguard服务启动并运行后,应该有一种方法来运行该任务,但我无法让它工作。如果你知道如何让它工作,请与我分享。



参考来源:https://www.henrychang.ca/how-to-setup-wireguard-vpn-server-on-windows/

https://gist.github.com/igoravl/db02a8769fd6af3028f7

https://www.skyone.host/2024/wireguard-configure


  • 发表评论
  • 查看评论
【暂无评论!】

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。