|
|
楼主 |
发表于 2024-7-31 11:05
|
显示全部楼层
本帖最后由 bsdcpp 于 2025-1-25 22:43 编辑
已经加入固件,自动解决,以下无需手动处理
-----------------
另外,针对服务端IP变更(如上面配的ddns服务端),wireguard客户端不会自动重联的问题。可以自己添加定时任务切换。
因为ddns是个变量,需要用户从web界面输入一个域名,传给后台,所以目前还没有合并入固件,暂时单独做个定时任务吧。
- #!/bin/bash
- # 配置变量
- WG_INTERFACE="wg0" # WireGuard接口名
- wgconf=/etc/storage/${WG_INTERFACE}.conf
- DDNS_HOST="abc.com" # DDNS域名
- wireguard_enable=`nvram get wireguard_enable`
- if [ "$wireguard_enable" = "1" ]; then
- # 获取DDNS解析的IP地址
- NEW_IP=`nslookup $DDNS_HOST|grep $DDNS_HOST -A1 |awk '/Address/{print $3}'`
- # 获取WireGuard当前连接的IP地址
- CURRENT_IP=`wg show $WG_INTERFACE endpoints |awk '{split($2,a,":"); print a[1]}'`
- # 检查IP地址是否发生变化
- if [ "$NEW_IP" != "$CURRENT_IP" ]; then
- logger -t "WIREGUARD" "IP地址已更改,从 $CURRENT_IP 到 $NEW_IP。重启WireGuard..."
- # 重启WireGuard客户端
- wg-quick down $wgconf
- wg-quick up $wgconf
- else
- logger -t "WIREGUARD" "IP地址未更改。当前IP:$CURRENT_IP"
- fi
- fi
复制代码 保存为/etc/storage/wg_ddns.sh,然后添加定时任务:*/10 * * * * /bin/sh /etc/storage/wg_ddns.sh >/dev/null 2>&1
然后执行mtd_storage.sh save保存到mtd,否者重启后会丢失。
这样就会10分钟检查一次ddns是否和当前连接的一致,不一致就重启wireguard.
|
|