[LUCKY STUN穿透] 在Windows上使用UPnP工具为BT客户端自动添加内外端口号不同的映射规则

[LUCKY STUN穿透] 在Windows上使用UPnP工具为BT客户端自动添加内外端口号不同的映射规则


本教程基于:

在该教程中实现了使用 路由器/光猫 的端口转发功能 处理流量 其效率更高且可以使BT客户端正确的显示其他连入用户的IP地址

但是其使用的是 静态的 端口转发/映射规则 在 stun穿透 端口发生变化后 需要手动修改转发规则 无法实现自动化

可以使用 UPnP 来替代 静态的端口转发规则
但是lucky内置的 UPnP 功能所添加的规则的内部端口和外部端口是相同的

但我们所需要的映射是内外端口不同的
尽管在 v2.5.3 版本中增加了 自定义 UPnP/NAT-PMP 内部端口 的功能但其内部端口号是静态的 无法跟随 外网端口变化

但好在 v2.5.1版本中 已经增加了 在STUN穿透变化时触发自定义脚本的功能 这为使用其他程序实现 自动添加内外端口号不同的UPnP映射规则 提供了极大的方便

lucky更新日志:链接


所以要实现 本教程中的效果 lucky版本要大于等于 2.5.1

还需要下载 UPnP Wizard
官网地址:UPnP Wizard - Port Mapping Tool

建议使用网盘下载 官网下载版本需要安装网盘版解压即可使用
网盘:https://wwm.lanzoul.com/iaut01mmbmuj


网络环境检测

实现穿透并不需要 NAT检测为 全锥型
只需要最外面一层的 NAT 即运营商NAT为全锥型即可光猫/路由器的NA 类型可以为端口受限型

可以参考这篇教程进行网络环境优化
教程:比特彗星-端口阻塞解决方案-2.3网络环境检测和优化 - 哔哩哔哩
优化到只剩一层运营商NAT和 和一层光猫/路由器 NAT
共两层NAT 且NAT类型检查结果不为对称型即可进行穿透


设置方法

关闭 BT软件中的UPnP映射功能 防止其影响自定义规则的添加

BC 在 选项>网络连接>端口映射 取消勾选 添加UPNP端口映射

qb在 选项>连接 取消勾选 使用我的路由器的UPnP/NAT-PMP端口转发

打开路由器/光猫上的UPnP功能


下载并解压 lucky
建议把文件名改短一些 比如将 lucky_2.6.2_Windows_x86_64 改为 lucky_2.6.2
文件路径过长会对接下来的设置造成麻烦

同时下载解压 UPnP Wizard 建议与lucky放在一起

来到 UPnP_Wizard 目录 打开 UPNPWizard.exe 后面没有C
应该可以看到这样的窗口

可以看到本地IP UPnP设备名和地址以及一些映射规则
这些说明光猫/路由器上的UPnP功能已经打开

若弹出 下面这个窗口说明 路由器/光猫上的 upnp 功能 没有开启

UPnP_Wizard对一些设备的兼容性较差如果打开路由器/光猫上的 UPnP 功能后
依然会看到此错误提示请尝试换用 MiniUPnP Client


接下来
双击运行 lucky.exe任务栏会出现一个图标

右键这个图标 弹出菜单 选择打开 lucky 后台
这里也可以设置 开机启动

弹出浏览器 显示lucky 登录界面
使用默认的账户和密码登录 均为 666

点开左侧的STUN内网穿透

点击 添加穿透规则 并参照图中的方式填写

自定义脚本内容如下 部分参数按照实际情况修改

实际目录\UPnPWizardC.exe -remove -extport 穿透通道监听端口 -protocol 穿透类型 -legacy
实际目录\sleep1s.vbs
实际目录\UPnPWizardC.exe -add "rule name" -ip default -intport ${port} -extport 穿透通道监听端口 -protocol 穿透类型 -lease 0

使用的是UPnPWizardC.exe 后面有个C
实际目录为UPnPWizardC.exe和sleep1s.vbs的实际存放的目录
rule name 换成你喜欢的名字 但不要使用中文 “” 要保留

创建 sleep1s.vbs 脚本
使用记事本写入下列内容 表示等待1000毫秒即一秒
写好后命名为sleep1s 扩展名改为.vbs
原先使用的是timeout命令但是效果不佳故改用vbs脚本

WScript.sleep 1000

如果目录中有空格的话要用 英文引号 “” 引起来 不然无法运行
C:\abc\d e f\ (错误)
C:\abc\“d e f”\ (正确)

目录中不能有中文不然会报错
目录中不能有中文不然会报错
目录中不能有中文不然会报错

如果出现 Call Script error: exit status 1 的报错很有可能就是目录写错了


示例

为比特彗星设置 stun 端口映射

穿透类型:IPv4-TCP
穿透通道监听端口:6000
UPnP规则名称 BC-TCP
UPnP_Wizard 程序路径:C:\UPnP_Wizard\

C:\UPnP_Wizard\UPnPWizardC.exe -remove -extport 6000 -protocol TCP -legacy
C:\sleep1s.vbs
C:\UPnP_Wizard\UPnPWizardC.exe -add "BC-TCP" -ip default -intport ${port} -extport 6000 -protocol TCP -lease 0

(这里的图没改还用的是旧的timeout命令)

(UPnPWizardC的更多命令以及参数含义在其自带的帮助文件中)


填写完成后保存一下 打开穿透开关

查看是否能成功获取到外网地址和端口 同时 打开UPNPWizard.exe
刷新一下 看看映射规则是否已经添加 刷新按钮在左上角

如果无法获取到外网端口
请按照 上文链接中的教程继续优化网络环境

如果端口获取成功但 UPnP添加失败
请查看穿透规则日志(在开关后面)

首次添加时用于删除旧端口的命令会报错 这是正常的
主要看 下一行显示是否添加成功

添加成功过一次后 下一次移除端口的命令就可以正常工作了



杀毒软件误报
lucky触发自定义脚本的行为可能会被一些杀毒软件误判
建议提前将lucky加为信任或者排除



在成功获取外网端口和地址获取以及正确添加UPnP规则后
就可以设置bt软件中的监听端口为获取到的外网端口


BC在设置新端口后会自动从新检测端口 如果设置正确端口就能 获得绿灯

qb没有主动端口检测功能只有在 被动接受外部发起的连接后 状态栏才会显示 联机
可以使用在线的端口扫描工具

工具: 传输控制协议端口检查器
输入 穿透获取到的 IP 和端口 点击检查
显示 成功连接到XXX 表明已经成功穿透通 同时qb的状态栏中会显示 联机

高版本显示为地球

低版本则是插头

到此我们就成功的实现了 自动添加内外端口号不同的映射规则
之后每当stun穿透的地址或端口发生变化后 都会自动更新UPnP映射规则
当然 bt软件修改监听端口的部分还未自动化

1個讚

使用 MiniUPnP Client

MiniUPnP 客户端

官方下载
MiniUPnP Project:MiniUPnP download zone

网盘下载:MiniUPnP_Client.zip - 蓝奏云

推荐使用网盘下载


检查 UPnP是否启用

解压文件 运行其中的 UPnP查询.bat 查看输出内容
或者使用 -i -l 参数也是一样的

应该可以显示出"List of UPNP devices found on the network "
或者UPNP映射规则列表即可 规则数量可能会有所不同 说明UPNP已经启用
使用 MiniUPnP 应该不太会遇到兼容问题

如果仍然显示 “No IGD UPnP Device found on the network !”
请再次检查 光猫/路由器上的UPNP功能是否开启


编辑命令

命令

程序目录\MiniUPnP_Client\upnpc-static.exe -i -d 穿透通道监听端口 穿透类型
timeout /t 5
程序目录\MiniUPnP_Client\upnpc-static.exe -i -e "rule name" -a @ ${port} 穿透通道监听端口 穿透类型

程序目录为upnpc-static.exe的实际目录

如果目录中有空格的话要用 英文引号 “” 引起来 不然无法运行
C:\abc\d e f\ (错误)
C:\abc\“d e f”\ (正确)

rule name 换成你喜欢的名字 但不要使用中文 “” 要保留

示例

C:\MiniUPnP_Client\upnpc-static.exe -i -d 6000 TCP
timeout /t 5
C:\MiniUPnP_Client\upnpc-static.exe -i -e "BC-TCP" -a @ ${port} 6000 TCP

日志

MiniUPnP输出日志和UPnP_Wizard不太一样

删除端口时会返回 UPNP_DeletePortMapping() returned : 0
规则创建成功后会返回规则的详细信息

1個讚

支持,很好的教程!希望过程可以更详细一些

是只哪一部分的过程呢?

本教程基于

这个教程中有的内容这里可能就没有再讲了

按照你的教程 LUCKY总是报错如下{“ExtInfo”:{},“level”:“error”,“msg”:“[bc]Call Script error: exit status 1”} 不能自动添加映射

使用的是UPnPWizardC.exe还是MiniUPnP_Client?

有只有这些错误信息吗?
检查一下程序路径是否正确
可以将命令复制到命令提示符中运行一下看看有没有报错

UPnPWizardC.exe 有且只有这一个

在命令提示符中运行一下添加端口映射的命令看看有什么返回结果

「LUCKY STUN穿透」在docker中使用MiniUPnP为BT客户端自动添加内外端口不同的映射规则

在之前的教程中我们已经实现在Windows上使用upnp工具为BT客户端添加端口
LUCKY STUN穿透在Windows上使用UPnP工具为BT客户端自动添加内外端口号不同的映射规则 - 哔哩哔哩

考虑到很多lucky运行在docker容器中(Linux)
本教程中将介绍当lucky运行在docker容器中时通过MiniUPnP来添加映射规则的方法

建议先阅读之前在Windows上进行配置的教程后再阅读本教程
此方法不仅适用于docker容器也适用于lucky直接安装在Linux的情况
不过在其他Linux系统下载安装miniupnp时请自行判断其使用的包管理器类型

网络环境检测和优化

为保证stun穿透的成功 请先探测和优化网络结构
建议先阅读之前的教程 或直接阅读此教程
比特彗星-端口阻塞解决方案-2.3网络环境检测和优化 - 哔哩哔哩

其他要求
lucky所在的docker容器网络为host
关闭BT客户端上的upnp添加功能

配置方法

安装lucky

官方教程
https://www.daji.it:66/docs/install#docker镜像

为容器安装miniupnp
我们可以进入到终端环境中进行安装
但更简单的方法是使用lucky计划任务中的自定义脚本功能

创建计划任务

子规则选择自定义脚本 其他选项任意设置

不填写脚本内容 先保存 计划任务

关闭规则开关 我们只使用手动触发

修改下载源

将下载源修改为 清华大学开源软件镜像站
以防止因为网络问题造成安装失败

sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories

填写命令并保存

按下手动触发按钮并查看日志
此步的输出内容为空白

安装miniupnp

替换为以下命令后 手动触发运行

apk add miniupnpc 2>&1 &

检查日志输出 有显示OK表示安装成功

检查upnp设置

填入以下命令 手动触发命令任务 观察输出结果

upnpc -i -l 2>&1 &

如果有很多输出内容且其中包括 “Status : Connected”
说明路由器/光猫上的upnp功能已经正确打开

如果显示 "No IGD UPnP Device found on the network "
则路由器/光猫上的upnp功能尚未打开
请检查其设置以及docker容器的网络模式

设置STUN穿透规则

编辑命令 其中的参数按照实际情况填写

upnpc -i -d 穿透通道监听端口 穿透类型 2>&1 &
sleep 1
upnpc -i -e "rule name" -a @ ${port} 穿透通道监听端口 穿透类型 2>&1 &

示例

upnpc -i -d 6000 TCP 2>&1 &
sleep 1
upnpc -i -e "TR-TCP" -a @ ${port} 6000 TCP 2>&1 &

如果在自定义脚本区域已经有命令则应按照流程顺序进行排列
并使用sleep命令设置间隔


开启穿透规则并检查日志输出
应该会有 UPNP_DeletePortMapping() returned : 0 表示成功删除旧规则

而规则创建成功后会返回规则的详细信息(由于是演示所以这里的端口号是内外相同的)

示例

检视添加效果

若路由器设备支持查看UPNP映射规 则可以通过网页查看
若不支持查看规则 可通过在计划任务中再次运行下列命令查看添加效果

upnpc -i -l 2>&1 &

应该可以看到刚刚添加的规则

1個讚

「LUCKY STUN穿透」使用 cURL 自动修改 transmission 的监听端口

在之前的教程中我们已经实现了使用lucky自带的webhook功能自动的修改qbittorrent 的端口
在本教程中将讲解如何自动化的更换 transmissionansmission 的监听端口

与之前 qBittorrent 的配置方法相比 transmission 的端口自动化要复杂一些
这主要是由于其强制开启跨站保护所导致的 该功能无法关闭 除对源代码进行修改后再次编译
考虑的transmission 运行在许多不同的平台 从新编译过于麻烦

我们只能想办法通过其的跨站保护认证
这样一来就无法直接通过lucky的webhook来实现了
而需要使用到curl和自定义脚本

其实原理也很简单 就是先通过curl发起访问获取用于通过跨站检测的token
然后将其加载到下一次用于更改端口号请求的头中以通过跨站保护检测

transmission webAPI文档:链接

将分为Windows配置方法和docker配置方法两部分进行讲解
以lucky安装的位置为准

lucky和 transmission可以不在一台机器或IP上
若transmission在docker中运行则其网络必须为host

感谢 泥浆 提供的命令支持

Windows配置方法

安装curl

win10和win11 中应该已经预装了curl

可以在命令提示符中 输入下列命令查看是否安装
应该可以显示出curl的版本号如果(注意V要大写)

curl -V 

如果用的是win7或显示
“‘curl’ 不是内部或外部命令,也不是可运行的程序或批处理文件。”
就需要手动下载curl

下载curl: 链接

解压文件

进入bin文件夹 将curl.exe 复制到到system32文件夹

C:\Windows\System32


完成后重复刚才的命令 有版本号显示即表示安装正确

调整transmission设置

关闭transmission自己的UPnP以防止影响STUN穿透效果

设置自动更新脚本

打开lucky

添加计划任务
在计划任务中测试完命令之后再填写到STUN穿透规则中

子规则选择自定义脚本 其他选项任意设置
不填写脚本内容先保存计划任务

关闭规则开关 我们只使用手动触发

编辑规则并填写下列命令
其中的参数要根据实际情况填写

chcp 65001

set "ip="
set "webport="
set "username="
set "password="
set "port="

set json={""arguments"": {""peer-port"": %port%},""method"": ""session-set""}

for /f "tokens=27 delims=<>" %%a in ('curl -X POST http://"%username%":"%password%"@"%ip%":"%webport%"/transmission/rpc/  -H "%authorization%"') do (
  set token=%%a
)

curl -X POST http://"%username%":"%password%"@"%ip%":"%webport%"/transmission/rpc/ -H "%token%" -d "%json%"

参数解释

ip 表示transmission所在设备的IP
webport 表示transmission webUI的端口号
username 表示登录 transmission 使用的用户名
password 表示登录 transmission 使用的密码
port 表示要更新的端口号 测试时可以使用任意的端口号

示例

chcp 65001

set "ip=127.0.0.1"
set "webport=9091"
set "username=ie12"
set "password=12345678"
set "port=5645"

set json={""arguments"": {""peer-port"": %port%},""method"": ""session-set""}

for /f "tokens=27 delims=<>" %%a in ('curl -X POST http://"%username%":"%password%"@"%ip%":"%webport%"/transmission/rpc/  -H "%authorization%"') do (
  set token=%%a
)

curl -X POST http://"%username%":"%password%"@"%ip%":"%webport%"/transmission/rpc/ -H "%token%" -d "%json%"

填写完成后保存规则

按下手动触发按钮并查看日志
显示 success 即表示成功
不过最好还是去到transmission的设置中检查一下端口后没有变化
若成功变更了端口则表示脚本设置正确

如果有有错误代码 且不显示具体内容
建议 创建一个批处理文件 手动运行 以查看报错内容
记得在最后加上 pause

编辑STUN 穿透规则

将之前测试完成的脚本 复制到STUN的自定义脚本区域
若在自定义脚本区域已经有命令则应按照流程顺序进行排列
并使用vbs脚本设置间隔 详情可以看第一期的教程

并将port选项的值替换为穿透端口变量

set "port=${port}"

示例

打开穿透规则 查看日志 以及 transmission 端口
若显示 success 且端口成功更换 则配置正确

Docker 配置方法

其实思路和在Windows上时一样的主要的区别在安装curl的方法
以及自动更换端口脚本的语法有所不同

安装curl

为容器安装curl
我们可以进入到终端环境中进行安装
但更简单的方法是使用计划任务中的自定义脚本功能

创建计划任务

创建方法和Windows上相同

更换软件包下载源

将下载源修改为 清华大学开源软件镜像站
以防止因为网络问题造成安装失败
填写下列命令并保存

sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories

按下手动触发按钮并查看日志
此步的输出内容为空白


安装curl

替换为以下命令后 手动触发运行

apk add curl 2>&1 &

检查日志输出 有显示OK表示安装成功

验证安装效果

替换为以下命令后 手动触发运行

curl -V

检查日志
看到curl的版本号即表示成功

调整transmission设置

关闭transmission自己的upnp以防止影响STUN穿透效果

测试脚本

docker(Linux)下的命令和Windows下的有较大不同但原理是一样的

host=
webui=
port=
username=
password=

json='{"arguments": {"peer-port": '$port'},"method": "session-set"}'

token=`curl -X POST http://$username:$password@$host:$webui/transmission/rpc/ | awk -F '[<>]' '{print$(NF-4)}'` 
curl -X POST http://$username:$password@$host:$webui/transmission/rpc/  -H "$token" -d "$json"

参数解释

host 表示transmission所在设备的IP
webui 表示transmission webUI的端口号
port 表示要更新的端口号 测试时可以使用任意的端口号
username 表示登录 transmission 使用的用户名
password 表示登录 transmission 使用的密码

注意在docker中 127.0.0.1 可能不起作用
建议直接使用宿主机的IP地址或 host.docker.internal 加以替代
详情:链接

示例

host=192.168.5.107
webui=9091
port=5678
username=ie12
password=12345678

json='{"arguments": {"peer-port": '$port'},"method": "session-set"}'

token=`curl -X POST http://$username:$password@$host:$webui/transmission/rpc/ | awk -F '[<>]' '{print$(NF-4)}'` 
curl -X POST http://$username:$password@$host:$webui/transmission/rpc/  -H "$token" -d "$json"

填写完成后保存规则

按下手动触发按钮并查看日志
显示 success 即表示成功
不过最好还是去到transmission的设置中检查一下端口后没有变化
若成功变更了端口则表示脚本设置正确

编辑STUN 穿透规则

将之前测试完成的脚本 复制到STUN的自定义脚本区域
若在自定义脚本区域已经有命令则应按照流程顺序进行排列
并使用sleep设置间隔

并将port选项的值替换为穿透端口变量

port=${port}

示例

打开穿透规则 查看日志 以及 transmission 端口
若显示 success 且端口成功更换 则配置正确

至此我们完成了使用 cURL 自动修改 transmission 的监听端口

使用UptimeRobot使UPnP映射的TCP规则保持活跃

在之前的教程中我们通过UPnP映射webhook等配合stun穿透
实现了全自动的在无IPv4公网下为BT客户端开放端口

但有一些网友反映UPnP映射规则会在一段时间后自己消失
但stun穿透并没有变化

这应该是由于映射规则不活跃导致的
路由设备会认为这个规则是陈旧的需要清理

当然不同的设备表现不一样 清理的时间应该也是不一样的
一般认为在规则租约期为无限的情况下 只要有流量通过规则其应该就不会被清理

这其实对BT来说不是什么问题几乎一直会有流量和连接
但是PT(当然这也资源有关系)和其他不总是有流量的服务来说就是另外一回事了

当然在我们之前教程中所设置的映射规则租约是无限的
所以我们只需要解决流量问题

我们可以使用 UptimeRobot 这个网站来解决问题
其本身用于网站检测 即检测网站或其他服务是否运行正常
我们需要使用它的端口检测功能

注册 UptimeRobot

访问 https://uptimerobot.com/

注册账户

填写信息

只需填写前三项
分别为 昵称 邮箱和密码


通过邮件激活账户

登录账户

首次使用会弹出设置向导
我们使用向导进行设置 之后会介绍不使用向导的设置方法

创建监视器

点击右侧的箭头弹出菜单
选择 port monitoring

IP or host 这里填写一个已经解析到
BT客户端所在设备IP的(动态)域名

如果还没有设置过可以看看之前的教程
或者其他(动态)域名教程 链接

端口号填写 BT客户端正在监听的端口
填写完成后点击创建

测试通知

其作用是监视的网站或端口离线后发出警告
这里我们用不到这个功能 直接跳过

设置状态页面

其为一个公开的网页可以用来显示多个监视器的状态
这里我们用不到这个功能 直接跳过

完成设置

检视效果

不使用向导设置监视器

与使用向导设置的方法基本相同

填写监控类型 IP和端口
建议取消下面的邮件提醒
免费版扫描间隔最小为5分钟

设置更新API

通过上述的设置 现在网站会每隔5分钟探测一次我们BT客户端的端口
尽管5分钟的间隔有点长 端口扫描所产生的流量也很小
但这足够让UPnP映射规则保持活跃了

不过由于我们使用STUN进行穿透 所以端口是动态的
需要在端口变化后更新在网站监视其中所设置的端口

之所以选择UptimeRobot是因为其提供了更新API
我们可以使用其轻松的更新监视器端口

API文档:API Documentation | UptimeRobot

获取更新KEY

目前UptimeRobot 似乎正在更新界面
我们刚才所看到的都是新界面

像更新API设置这样的高级功能似乎还没有迁移过来
我们需要回到它的旧版页面

点击上方横幅中的 old app

回到旧版界面后
点击右上角的用户名 弹出 菜单 选择 My Settings

滚动页面到底部可以看到 API Settings
创建主更新key



获取监视器ID

有了更新key后我们还需要获取监视器ID
请求方法:链接
这里使用lucky计划任务中的callweb功能进行获取

创建计划任务

任务备注 、执行周期、执行时间等任意填写
子规则选择callweb 并填写下列内容

接口地址:

https://api.uptimerobot.com/v2/getMonitors

请求方法: POST

请求头:

Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache

请求主体:

api_key=你的APIKey&format=json&logs=1

禁用callweb调用成功字符串检测:

保存任务

示例

关闭规则开关 我们只使用手动触发

按下手动触发按钮并查看日志
应该可以看到 stat:ok
在monitors 和 friendly_name 之间的ID就是我们需要的监视器ID

更新端口号

在获取了监视器ID后我们就可以开始更新端口号了
依然是先在计划任务中测试 完成后再填写到STUN规则中

考虑到经过之前教程中的一系列设置
STUN穿透规则中的webhook可能已经被占用
所以这里给出 使用webhook 和 curl配置的两种方法

测试阶段端口号可任意填写

curl在不同平台上的安装方法可以看之前的教程:链接

curl配置方法

请求方法:链接

Linux平台(Docker)

curl -X POST -H "Cache-Control: no-cache" -H "Content-Type: application/x-www-form-urlencoded" -d "api_key=你的APIKey&format=json&id=监视器ID&port=新端口号" "https://api.uptimerobot.com/v2/editMonitor"

示例

Windows平台

Windows 下要额外添加 “–ssl-no-revoke” 参数
不然会出现无法检查证书是否吊销的报错
这可能是Windows下的检查方式和Linux下不太一样导致的

详见:链接

curl --ssl-no-revoke -X POST -H "Cache-Control: no-cache" -H "Content-Type: application/x-www-form-urlencoded" -d "api_key=你的APIKey&format=json&id=监视器ID&port=新端口号" "https://api.uptimerobot.com/v2/editMonitor"

按下手动触发按钮检查输出日志
成功会返回ok 和监视器ID

webhook配置方法

请求地址:

https://api.uptimerobot.com/v2/editMonitor

请求方法: POST

请求头:

Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache

请求主体:

api_key=你的APIKey&format=json&id=监视器ID&port=新端口号

禁用callweb调用成功字符串检测:

示例

按下手动触发按钮
检查输出日志
成功会返回ok 和监视器ID

编辑STUN穿透规则

使用curl

将之前测试完成的脚本 复制到STUN的自定义脚本区域
若在自定义脚本区域已经有命令则应按照流程顺序进行排列
并使用设置间隔

Linux下可以使用sleep命令实现
在Windows下需要使用vbs脚本实现类似效果
可以查看之前的教程:链接

还需将 port 的值替换为 STUN穿透 端口变量即

api_key=你的APIKey&format=json&id=监视器ID&port=${port}

示例

使用webhook

与在计划任务中测试的时候基本相同
要把 port 的值替换为 STUN穿透 端口变量即

api_key=你的APIKey&format=json&id=监视器ID&port=${port}

同时将 禁用Webhook接口调用成功字符串检测 改为 否
并填写 ok 作为判断执行成功的字符串

示例

填写完成后可以按下右上角的 手动触发测试
手动测试会使用固定的参数比如端口号固定为 6666


返回ok和监视器ID即表示更新成功

至此我们便完成了UPnP映射规则的保活设置