你的位置:首页 > 互联网IT
WireGuard安装,WireGuard搭建,WireGuard代理,Windows安装Wireguard服务器端,WireGuard VPN,wg代理,wg搭建,wg安装,wg vpn,Windo
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
其它
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
如何在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
客户端配置: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
准备好服务器配置文件后,将其放在一个永久的文件夹中。对于本教程,我将假设服务器配置文件位于C:\wireguard\wg_server.conf
C:\wireguard\wg_server.conf
key说明用法:
需要自己生成key(案例):FSplLYKgyVf29hLz7q7knW1McToUoUB3MM0ImQKZFFc=
用AI生成key,(外网环境打开)AI网站:https://chatgpt.com/
发送AI:FSplLYKgyVf29hLz7q7knW1McToUoUB3MM0ImQKZFFc= 秘钥随机生成5组
显示结果如下:
其中暂时只用2个,服务器端用一个key,客户端用一个key,共享秘钥PresharedKey可以不用配置,演示就配置了
怎么看秘钥解密:
打开windows wireguard客户端-编辑,PrivateKey = N0ZoeNRIot0RE3BdGdk7w2A1z9HlVs5zEhtUwP/xBdE=,上面公钥显示解密公钥:xpqXzWqbV5h88wLRWWd10tG0q6IeBb87bAmEVjgol0E=
服务器端配置: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
步骤2:启动服务器()
我们将使用命令选项来启动服务器,而不是使用GUI。在本教程中,官方GUI一次只允许一个连接。如果我们用它来运行服务器,GUI将被占用,如果不丢弃服务器接口,我们将无法建立新的连接。使用命令行选项运行服务器使我们可以在日常使用中免费使用GUI。如果您不介意GUI被占用,您可以在GUI上启动服务器并跳到步骤3。
使用以下代码启动/停止服务器。不用说,如果文件路径在您的系统上不同,请调整它们。
简单的说:命令运行在后台运行,GUI界面运行在前台界面查看,(命令运行的好处是,服务器也可以用gui界面配置一个客户端,服务器可以网络互通)
第一种:gui界面配置:
客户端,配置C:\wireguard\wg_server.conf导入客户端,启动
第二种: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
关闭防火墙,步骤2.1:(可选)就不用设置了
控制面板\所有控制面板项\Windows 防火墙\自定义设置
步骤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()
}
}
}
注意:shell脚本最初是由伊戈拉夫尔,我做了一些修改,以简化过程,并消除我们的wireguard服务器应用程序的一些错误。
https://gist.github.com/igoravl/db02a8769fd6af3028f7
这个shell脚本是作为自定义函数“Set-NetConnectionSharing”编写的,需要加载到PowerShell中。
将脚本保存在以下位置:
C:\Windows\System32\WindowsPowerShell\v1.0\Modules\wireguard\wireguard.psm1
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)的属性面板时,下面的选项应该被勾选:
其它系统截图
windows 2012 系统截图没有网络名称
另请注意,“家庭网络连接”字段应填入您的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
那就简单的改变ScopeAddress和ScopeAddressBackup我们想要的IP地址(在我们的例子中是10.0.0.1)。
在步骤3中使用powershell命令禁用并重新启用互联网连接共享(NAT ),以确保此更改生效(您可能需要重新启动计算机)。
步骤4:重新启动时启用持续互联网共享(更新于2020年2月12日)
由于windows有一个错误,即互联网连接共享不会在重新启动时自动启动,我们需要更改一些设置,以确保互联网共享已启动。之前的教程使用了一个计划任务来完成这个任务,但是在阅读了windows错误修复之后,我发现了一个更好的方法这里.
打开服务窗口,找到“互联网连接共享”:
将启动类型更改为“自动”:
完成后,最后我们添加一个注册表:
Path: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedAccess
Type: DWORD (32bit)
Setting: EnableRebootPersistConnection
Value: 1
步骤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
解决方法是:
Internet连接共享 先关闭/在开启 代理上网与ping问题解决
问题二:
windows 2012 重启系统,Internet连接共享,共享失效,不能代理上网,连不到网络,客户端也不互通ping
第一步
先按照问题一的:Internet连接共享 关闭/开启
先确认能正常代理上网与ping问题解决
再建立一个关闭共享网络命令:jie.bat
@echo off
powershell -Command "Set-NetConnectionSharing "wg_server" $false"
方法 1:使用组策略设置关机脚本
Windows Server 2012 支持通过 组策略 配置关机脚本来在系统关机时执行命令或脚本。这是服务器环境中更为可靠的做法。
步骤:
打开组策略管理控制台:
按 Win + R 打开“运行”窗口,输入 gpedit.msc,然后按回车,进入 本地组策略编辑器。
导航到关机脚本设置:
jie.bat 脚本导入-关机
在本地组策略编辑器中,导航到以下路径:
Copy code
计算机配置 > Windows 设置 > 脚本(启动/关机)
配置关机脚本:
在右侧窗格中,双击“关机”选项,打开“关机脚本”设置。
点击 添加 按钮,选择你要在关机时运行的 .bat 文件。
你可以直接浏览并选择 .bat 文件,确保文件路径正确。
保存并应用设置:
点击 确定 保存设置。
重新启动计算机:
重新启动计算机,确保组策略设置生效。
方法 2:修改注册表也可以关机执行.bat命令,自行搜索
第二步:
再建立一个开启共享网络命令:kai.bat
@echo off
powershell -Command "Set-NetConnectionSharing "wg_server" $true"
添加开机启动:运行cmd:shell:startup
复制进去文件夹:kai.bat
最后备注:
与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
发表评论: