logo
0
0
WeChat Login
feat: 添加 WireGuard Peer 动态解析服务基础实现

WireguardReresolve

WireGuard Peer 端点动态解析服务 - 自动检测并更新 WireGuard Peer 的端点 IP 地址。

功能特性

  • DDNS 域名解析:支持监控使用 DDNS 的 WireGuard Peer,当域名 IP 变化时自动更新
  • Lucky STUN 隧道支持:支持从 Lucky 获取 STUN 隧道信息,自动更新 Peer 端点
  • DNS-over-HTTPS:支持使用 DoH 进行域名解析,保护 DNS 查询隐私
  • 间隔检查:可配置检查间隔,持续监控 Peer 端点变化
  • 测试模式:提供 --test / -t 参数用于测试 DNS 解析和 API 连接

系统要求

  • .NET 10.0 Runtime
  • WireGuard 已安装(wg.exe 位于 C:\Program Files\WireGuard\wg.exe

配置说明

配置文件为 appsettings.json,主要配置项如下:

WireGuard 配置

"WireGuard": {
  "WgExePath": "C:\\Program Files\\WireGuard\\wg.exe",
  "CheckIntervalSeconds": 60,
  "DnsResolveMode": "DoH",
  "DoHServerUrls": [
    "https://223.5.5.5/dns-query",
    "https://doh.pub/dns-query",
    "https://120.53.53.53/dns-query"
  ]
}
配置项说明默认值
WgExePathwg.exe 可执行文件路径C:\Program Files\WireGuard\wg.exe
CheckIntervalSeconds检查间隔(秒)60
DnsResolveModeDNS 解析模式:SystemDoHDoH
DoHServerUrlsDoH 服务器地址列表阿里、腾讯、腾讯 DNSPod

DDNS Peer 配置

"DdnsPeers": [
  {
    "PublicKey": "Peer公钥",
    "Domain": "ddns域名",
    "Port": WireGuard端口
  }
]

Lucky Peer 配置

"LuckyPeers": [
  {
    "PublicKey": "Peer公钥",
    "LuckyBaseUrl": "Lucky服务地址",
    "OpenToken": "Lucky的OpenToken",
    "TunnelName": "STUN隧道名称"
  }
]

构建

dotnet build -c Release

运行

正常运行

dotnet run

测试模式

测试 DNS 解析和 Lucky API 连接:

dotnet run -- --test
# 或
dotnet run -- -t

安装为 Windows 服务

使用 Windows Service Wrapper 或 NSSM 将程序安装为后台服务运行。

工作原理

  1. 服务启动后每 CheckIntervalSeconds 秒执行一次检查
  2. 获取当前 WireGuard 所有接口的 Peer 信息
  3. 对每个配置的 DDNS Peer,解析其域名并与上次结果比较
  4. 对每个配置的 Lucky Peer,从 Lucky API 获取隧道信息并与上次结果比较
  5. 当 IP 地址发生变化时,执行 wg set <interface> peer <publicKey> endpoint <ip:port> 更新端点

项目结构

src/
├── Program.cs              # 程序入口
├── Workers/
│   └── Worker.cs          # 后台工作服务
├── Services/
│   ├── WireGuardService.cs  # WireGuard 命令执行
│   ├── DdnsResolver.cs      # DDNS 域名解析
│   ├── LuckyClient.cs       # Lucky API 客户端
│   └── ServiceTester.cs     # 服务测试器
├── Models/
│   └── Config.cs          # 配置模型
└── appsettings.json       # 配置文件

依赖

  • DnsClientX - DNS-over-HTTPS 客户端
  • Microsoft.Extensions.Hosting - .NET 通用主机
  • Microsoft.Extensions.Http - HTTP 客户端工厂

About

WireGuard Peer 端点动态解析服务 - 自动检测并更新 WireGuard Peer 的端点 IP 地址。

Language
C#100%