WireGuard 配置指南
配置示例
服务端配置
服务端的参数,私钥是自动生成的,不用自己修改它;
ListenPort 要记得让防火墙放行,不然会连不上的;
Address 里服务端的地址是 10.0.0.1,每个 Peer 对应的客户端 IP 也要对应好
ini
[Interface]
PrivateKey = wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww= # 自动生成的私钥 不用管
ListenPort = 21000 # WireGuard监听的端口 防火墙记得放行
Address = 10.0.0.1/24 # 服务端是 10.0.0.1 的地址
DNS = 8.8.8.8 # 可选,避免隧道内DNS解析问题
[Peer]
PublicKey = wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww= # 客户端 公钥
AllowedIPs = 10.0.0.2/32 # 客户端Peer代表的ip 发往ip的全都进入这个Peer
[Peer]
PublicKey = wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww= # 客户端 公钥
AllowedIPs = 10.0.0.3/32 # 客户端Peer代表的ip 发往ip的全都进入这个Peer
[Peer]
PublicKey = wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww= # 客户端 公钥
AllowedIPs = 10.0.0.4/32 # 客户端Peer代表的ip 发往ip的全都进入这个Peer客户端配置
客户端的配置要和服务端对应好
本地 Address 要跟服务端里对应 Peer 的 AllowedIPs 一致
DNS 选 8.8.8.8 就不容易有解析问题;
Endpoint 要填对服务端的地址和端口, 国内运营商的NAT网络下 25 秒的心跳包能让连接更稳定,不会突然断掉
ini
[Interface]
PrivateKey = wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww= # 自动生成的私钥 不用管
Address = 10.0.0.4/32 # 本地的ip 对应 server
DNS = 8.8.8.8 # 可选,避免DNS问题
[Peer]
PublicKey = wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww= # 服务端公钥
AllowedIPs = 10.0.0.0/24 # 这里表示 只接受来自主机端 10.0.0.1-10.0.0.255 的流量
Endpoint = reinffy.cc:21000 # 服务端的地址:[服务端ListenPort]
PersistentKeepalive = 25 # 25秒一个心跳包✨ 让不同网络的内网设备互相打招呼
如果想让不同地方的内网设备能互相访问,就需要在公网的 Windows Server 上做些小设置,这里用的是 Windows Server 2022 21H2 版本,大家要确认自己的系统版本是不是匹配,根据实际情况处理
- 公网 Windows Server 2022 21H2 开启ip转发
版本 Windows Server 2022 Datacenter
版本号 21H2
安装日期 2025/2/26
操作系统内部版本 20348.2461
🎀 安装路由和远程访问角色
只要安装好这个角色,就能启用 IP 转发和配置路由,步骤一点都不复杂,跟着做就好
- PowerShell 安装 用 PowerShell 安装的时候,直接复制这段代码运行就可以,安装过程可能要等一小会儿,大家耐心等它完成shell
Install-WindowsFeature DirectAccess-VPN -IncludeManagementTools - 启用路由功能
- 先打开「路由和远程访问」控制台(win + r 输入 rrasmgmt.msc )。
- 右键服务器名称 → 配置并启用路由和远程访问 → 选择 自定义配置 → 一定要勾选 LAN 路由 → 完成配置。
- 验证的时候,展开「IPv4 → 常规」,如果能看到网络接口,就说明路由功能已经成功启用
TIP
客户端 Peer 的 AllowedIPs 里,一定要包含另一台内网的 IP 才行!
比如写成AllowedIPs = 10.0.0.0/24,或者把每个需要的 IP 都列出来
像AllowedIPs = 10.0.0.1/32,10.0.0.2/32,10.0.0.3/32...这样,不然设备之间就找不到彼此
🚀 用 PowerShell 快速生成配置吧~
如果需要很多客户端的配置,手动写会很麻烦
可以在网络上使用一些现成的工具处理
这里提供一段 PowerShell 脚本,只要改好服务器的密钥、IP 和端口,还有想要的客户端数量,它就会自动生成所有配置文件,还会把服务器配置也整理好
Details
powershell
# 设置服务器的公私钥
$ServerPrivateKey = "your_server_private_key"
$ServerPublicKey = "your_server_public_key"
$ServerIP = "your_server_ip"
$ServerPort = "51820"
# 客户端数量
$ClientCount = 10
# 配置文件存储路径
$ConfigPath = "C:\Users\Reinforce\Desktop\wireguard\config"
# 创建存储配置文件的目录(如果不存在)
if (-not (Test-Path -Path $ConfigPath)) {
New-Item -Path $ConfigPath -ItemType Directory
}
# 创建服务器配置文件的内容
$ServerConfig = @"
[Interface]
PrivateKey = $ServerPrivateKey
ListenPort = $ServerPort
Address = 10.0.0.1/24
DNS = 8.8.8.8
"@
# 循环生成每个客户端配置文件
for ($i = 1; $i -le $ClientCount; $i++) {
# 生成客户端私钥和公钥
$ClientPrivateKey = & wg genkey
$ClientPublicKey = echo $ClientPrivateKey | wg pubkey
# 分配客户端 IP 地址
$ClientIP = "10.0.0.$($i + 1)"
# 生成客户端配置
$ClientConfig = @"
[Interface]
PrivateKey = $ClientPrivateKey
Address = $ClientIP/32
DNS = 8.8.8.8
[Peer]
PublicKey = $ServerPublicKey
AllowedIPs = 10.0.0.0/24
Endpoint = $ServerIP $ServerPort
PersistentKeepalive = 25
"@
# 保存客户端配置文件
$ClientConfig | Set-Content -Path "$ConfigPath\client_$i.conf"
Write-Host "Generated config for client $i"
# 将客户端公钥和 IP 地址添加到服务器配置中
$ServerConfig += @"
[Peer]
PublicKey = $ClientPublicKey
AllowedIPs = $ClientIP/32
"@
}
# 将最终的服务器配置保存到文件
$ServerConfig | Set-Content -Path "$ConfigPath\server.conf"
Write-Host "Generated server config with all peers"