找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 2209|回复: 6

[openwrt(x86)] 求问下Wireguard内置的watchdog要怎么设置自动重拔端口了

[复制链接]
发表于 2024-7-9 12:11 | 显示全部楼层 |阅读模式
因公网IP变动时不时就要重拔端口才能连接上,看到WG文件下有带watchdog,求问下有大神知道怎么设置吗



代码如下

#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
#
# Copyright (C) 2018 Aleksandr V. Piskunov <aleksandr.v.piskunov@gmail.com>.
# Copyright (C) 2015-2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
#
# This watchdog script tries to re-resolve hostnames for inactive WireGuard peers.
# Use it for peers with a frequently changing dynamic IP.
# persistent_keepalive must be set, recommended value is 25 seconds.
#
# Run this script from cron every minute:
# echo '* * * * * /usr/bin/wireguard_watchdog' >> /etc/crontabs/root


. /lib/functions.sh

check_peer_activity() {
  local cfg=$1
  local iface=$2
  local public_key
  local endpoint_host
  local endpoint_port
  local persistent_keepalive
  local last_handshake
  local idle_seconds

  config_get public_key "${cfg}" "public_key"
  config_get endpoint_host "${cfg}" "endpoint_host"
  config_get endpoint_port "${cfg}" "endpoint_port"
  persistent_keepalive=$(wg show ${iface} persistent-keepalive | grep ${public_key} | awk '{print $2}')

  # only process peers with endpoints and keepalive set
  [ -z ${endpoint_host} ] && return 0;
  [ -z ${persistent_keepalive} -o ${persistent_keepalive} = "off" ] && return 0;

  # skip IP addresses
  # check taken from packages/net/ddns-scripts/files/dynamic_dns_functions.sh
  local IPV4_REGEX="[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"
  local IPV6_REGEX="\(\([0-9A-Fa-f]\{1,4\}:\)\{1,\}\)\(\([0-9A-Fa-f]\{1,4\}\)\{0,1\}\)\(\(:[0-9A-Fa-f]\{1,4\}\)\{1,\}\)"
  local IPV4=$(echo ${endpoint_host} | grep -m 1 -o "$IPV4_REGEX$")    # do not detect ip in 0.0.0.0.example.com
  local IPV6=$(echo ${endpoint_host} | grep -m 1 -o "$IPV6_REGEX")
  [ -n "${IPV4}" -o -n "${IPV6}" ] && return 0;

  # re-resolve endpoint hostname if not responding for too long
  last_handshake=$(wg show ${iface} latest-handshakes | grep ${public_key} | awk '{print $2}')
  [ -z ${last_handshake} ] && return 0;
  idle_seconds=$(($(date +%s)-${last_handshake}))
  [ ${idle_seconds} -lt 150 ] && return 0;
  logger -t "wireguard_monitor" "${iface} endpoint ${endpoint_host}{endpoint_port} is not responding for ${idle_seconds} seconds, trying to re-resolve hostname"
  wg set ${iface} peer ${public_key} endpoint "${endpoint_host}{endpoint_port}"
}

# query ubus for all active wireguard interfaces
wg_ifaces=$(ubus -S call network.interface dump | jsonfilter -e '@.interface[@.up=true]' | jsonfilter -a -e '@[@.proto="wireguard"].interface' | tr "\n" " ")

# check every peer in every active wireguard interface
config_load network
for iface in $wg_ifaces; do
  config_foreach check_peer_activity "wireguard_${iface}" "${iface}"
done


只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
发表于 2024-7-9 15:12 | 显示全部楼层
添加一个执行/usr/bin/wireguard_watchdog的定时任务即可
例如每5分钟检测一次,即:
echo '5 * * * * /usr/bin/wireguard_watchdog' >> /etc/crontabs/root
也可以在网页上设置:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

ogm
感谢大神,只需设置定时任务就行是吧, /usr/bin/wireguard_watchdog的文件不用动了吧  详情 回复 发表于 2024-7-9 15:52
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2024-7-9 15:52 | 显示全部楼层
1562004423 发表于 2024-7-9 15:12
添加一个执行/usr/bin/wireguard_watchdog的定时任务即可
例如每5分钟检测一次,即:
echo '5 * * * * /usr ...

感谢大神,只需设置定时任务就行是吧,
/usr/bin/wireguard_watchdog的文件不用动了吧

点评

这个不用动,但是你的wg配置文件中的persistent_keepalive要设置  详情 回复 发表于 2024-7-9 16:32
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-7-9 16:32 | 显示全部楼层
ogm 发表于 2024-7-9 15:52
感谢大神,只需设置定时任务就行是吧,
/usr/bin/wireguard_watchdog的文件不用动了吧 ...

这个不用动,但是你的wg配置文件中的persistent_keepalive要设置

点评

大佬,是按默认设置25秒就好了吗  详情 回复 发表于 2024-12-31 15:11
ogm
好的感谢  详情 回复 发表于 2024-7-9 16:44
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2024-7-9 16:44 | 显示全部楼层
1562004423 发表于 2024-7-9 16:32
这个不用动,但是你的wg配置文件中的persistent_keepalive要设置

好的感谢
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-12-31 15:11 | 显示全部楼层
1562004423 发表于 2024-7-9 16:32
这个不用动,但是你的wg配置文件中的persistent_keepalive要设置

大佬,是按默认设置25秒就好了吗

点评

wireguard_watchdog的建议是25秒 但你也可以按自己需要设置,它会自动识别  详情 回复 发表于 2024-12-31 15:40
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-12-31 15:40 | 显示全部楼层
mikey 发表于 2024-12-31 15:11
大佬,是按默认设置25秒就好了吗

wireguard_watchdog的建议是25秒
但你也可以按自己需要设置,它会自动识别
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /2 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2026-8-23 20:19

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 电话:13506125623

快速回复 返回顶部 返回列表