admin管理员组

文章数量:1130349

Windows-Wireguard-Watchdog

背景:Wireguard服务端是动态IP,Wireguard客户端配置的服务端地址是域名 Endpoint = xx.xxx:51820,写的DDNS脚本检测到IP变更会自动更新域名解析。每次宽带重拨IP就会变更,由于客户端重连使用的不是域名而是第一次连接时解析的域名对应的IP地址,导致一直连接不上服务端。

使用此PowerShell脚本,服务端ip变更客户端仍可自动重新连接,可以让你的Wireguard保持稳定的连接。
电脑重启开机仍可自动连接,从此不再使用第三方远程桌面控制软件,直接使用Windows自带的远程桌面连接,更快更稳定。
测试结果:DDNS更新域名解析后,脚本能立即获取变更后的IP,能马上重新连接。

阿里云DDNS脚本
https://github/weiangongsi/aliyun-ddns

源码地址

https://github/weiangongsi/windows-wireguard-watchdog

https://gitee/dcssn_weiangongsi/windows-wireguard-watchdog

脚本流程

脚本主要执行了一下的步骤:

  1. 解析配置文件读取连接服务端的域名。
  2. 查询DNS服务器,获取A记录的IP地址。
  3. 循环获取查询DNS,如果IP变更,把原配置文件的Endpoint替换成新的IP,生成新的配置文件,然后重新启动Wireguard服务。
  4. 如果查询DNS服务器失3次,就停止Wireguard服务(防止因为Wireguard连接不上服务端导致查询DNS失败),然后再次执行第3步。

为什么要用新的IP生成配置文件?

Wireguard不会用我们配置的DNS获取IP,我们通过配置的DNS检测到IP变更,但是Wireguard解析域名可能检测不到变化,试过清除本地DNSClient缓存,不起作用,重启Wireguard服务他还是用原来的IP,导致连接失败。

安装步骤

让脚本以Windows服务方式运行 :

  1. 修改脚本中的Wireguard 以下几项配置

    # wireguard 配置文件
    $WireguardConfigFilePath = "C:\Users\admin\Desktop\company.conf" 
    # 检查IP变更时间间隔,秒
    $IntervalSeconds = 10
    # DNS服务器地址,不设置会从 wireguard 配置文件中读取DNS参数。我的域名是阿里的,39.96.153.52是dns9.hichina的ip,用这个IP能立即检测到域名解析的ip变更
    $DNS = "39.96.153.52" 
    
  2. 用powershell终端管理员执行

    .\nssm.exe install MyWireGuardService "powershell.exe" "-ExecutionPolicy Bypass -File C:\Users\admin\Desktop\keep_wireguard_alive.ps1"
    

    替换 C:\Users\admin\Desktop\keep_wireguard_alive.ps1 为你自己的脚本文件路径。

  3. 启动服务

    .\nssm.exe start MyWireGuardService
    

    现在脚本就作为Windows服务运行了,你可以打开Wireguard的UI查看日志,任务管理器查看Wireguard的进程。

关闭脚本服务

停止服务

.\nssm.exe stop MyWireGuardService

移除服务

.\nssm.exe remove MyWireGuardService

停止Wireguard服务

wireguard /uninstalltunnelservice companytemp

替换company为你的Wireguard 配置文件名(company.conf不包含扩展名),或者任务管理器停止服务

Wireguard客户端配置例子


[Interface]
PrivateKey = WCCQic09ih+u/Xr1v4FXDtXKpzgx9JLr59hRo2hX3E=
Address = 10.0.8.3/24
DNS = 114.114.114.114


[Peer]
PublicKey = H1QI7lFziAopeQfMm61ZMSNvxJeus1KGXZMKw/uoCY=
PresharedKey = l/B0jMWfDqpYD2UrK1H0uNlv4/qpthtPtLvt/QIDU8=
AllowedIPs = 0.0.0.0/0,::/0
PersistentKeepalive = 25
Endpoint = xxx.yyy:51820

创作不易,欢迎打赏



1分钱就可以
防火布

Windows-Wireguard-Watchdog

背景:Wireguard服务端是动态IP,Wireguard客户端配置的服务端地址是域名 Endpoint = xx.xxx:51820,写的DDNS脚本检测到IP变更会自动更新域名解析。每次宽带重拨IP就会变更,由于客户端重连使用的不是域名而是第一次连接时解析的域名对应的IP地址,导致一直连接不上服务端。

使用此PowerShell脚本,服务端ip变更客户端仍可自动重新连接,可以让你的Wireguard保持稳定的连接。
电脑重启开机仍可自动连接,从此不再使用第三方远程桌面控制软件,直接使用Windows自带的远程桌面连接,更快更稳定。
测试结果:DDNS更新域名解析后,脚本能立即获取变更后的IP,能马上重新连接。

阿里云DDNS脚本
https://github/weiangongsi/aliyun-ddns

源码地址

https://github/weiangongsi/windows-wireguard-watchdog

https://gitee/dcssn_weiangongsi/windows-wireguard-watchdog

脚本流程

脚本主要执行了一下的步骤:

  1. 解析配置文件读取连接服务端的域名。
  2. 查询DNS服务器,获取A记录的IP地址。
  3. 循环获取查询DNS,如果IP变更,把原配置文件的Endpoint替换成新的IP,生成新的配置文件,然后重新启动Wireguard服务。
  4. 如果查询DNS服务器失3次,就停止Wireguard服务(防止因为Wireguard连接不上服务端导致查询DNS失败),然后再次执行第3步。

为什么要用新的IP生成配置文件?

Wireguard不会用我们配置的DNS获取IP,我们通过配置的DNS检测到IP变更,但是Wireguard解析域名可能检测不到变化,试过清除本地DNSClient缓存,不起作用,重启Wireguard服务他还是用原来的IP,导致连接失败。

安装步骤

让脚本以Windows服务方式运行 :

  1. 修改脚本中的Wireguard 以下几项配置

    # wireguard 配置文件
    $WireguardConfigFilePath = "C:\Users\admin\Desktop\company.conf" 
    # 检查IP变更时间间隔,秒
    $IntervalSeconds = 10
    # DNS服务器地址,不设置会从 wireguard 配置文件中读取DNS参数。我的域名是阿里的,39.96.153.52是dns9.hichina的ip,用这个IP能立即检测到域名解析的ip变更
    $DNS = "39.96.153.52" 
    
  2. 用powershell终端管理员执行

    .\nssm.exe install MyWireGuardService "powershell.exe" "-ExecutionPolicy Bypass -File C:\Users\admin\Desktop\keep_wireguard_alive.ps1"
    

    替换 C:\Users\admin\Desktop\keep_wireguard_alive.ps1 为你自己的脚本文件路径。

  3. 启动服务

    .\nssm.exe start MyWireGuardService
    

    现在脚本就作为Windows服务运行了,你可以打开Wireguard的UI查看日志,任务管理器查看Wireguard的进程。

关闭脚本服务

停止服务

.\nssm.exe stop MyWireGuardService

移除服务

.\nssm.exe remove MyWireGuardService

停止Wireguard服务

wireguard /uninstalltunnelservice companytemp

替换company为你的Wireguard 配置文件名(company.conf不包含扩展名),或者任务管理器停止服务

Wireguard客户端配置例子


[Interface]
PrivateKey = WCCQic09ih+u/Xr1v4FXDtXKpzgx9JLr59hRo2hX3E=
Address = 10.0.8.3/24
DNS = 114.114.114.114


[Peer]
PublicKey = H1QI7lFziAopeQfMm61ZMSNvxJeus1KGXZMKw/uoCY=
PresharedKey = l/B0jMWfDqpYD2UrK1H0uNlv4/qpthtPtLvt/QIDU8=
AllowedIPs = 0.0.0.0/0,::/0
PersistentKeepalive = 25
Endpoint = xxx.yyy:51820

创作不易,欢迎打赏



1分钱就可以
防火布

本文标签: 服务端客户端WireguardWindowsddns