Skip to content

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 转发和配置路由,步骤一点都不复杂,跟着做就好

  1. PowerShell 安装 用 PowerShell 安装的时候,直接复制这段代码运行就可以,安装过程可能要等一小会儿,大家耐心等它完成
    shell
     Install-WindowsFeature DirectAccess-VPN -IncludeManagementTools
  2. 启用路由功能
    • 先打开「路由和远程访问」控制台(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"