在Docker中使用MiniUPnP为BT客户端自动添加内外端口不同的映射规则


前言

前面我们已经在Windows上实现了使用UPnP工具为BT客户端自动添加端口

但是我还有一个NAS设备运行,本文将介绍当lucky运行在docker容器中或者直接运行在Linux中时通过MiniUPnP来添加映射规则的方法。

配置方法

docker安装的lucky要把容器网络设置为 host

安装lucky

我使用的NAS系统为飞牛私有云 fnOS,基于最新 Linux 内核(Debian 发行版)深度开发。应用商店里可以直接下载安装,商店安装的lucky是直接安装到系统里的,要安装docker版参考lucky官方文档
image

安装MiniUPnP

MiniUPnP有两种安装方法,飞牛nas应用商店和docker安装的lucky可以直接使用命令安装,其中docker安装的需要进入容器进行安装。另外,也可以使用lucky自带的计划任务进行安装。

  1. 直接安装

使用SSH工具连接nas,推荐使用Tabby - a terminal for a more modern age,然后使用 sudo -i切换到root用户。
image

安装

1
sudo apt install miniupnpc

检测

1
upnpc -i -l

image

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

  1. 在lucky中安装

点击lucky左侧计划任务添加
image

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

重新编辑规则填写自定义脚本

1
apk add miniupnpc 2>&1 &

检查日志输出
image

接着检查检查UPnP设置,同样编辑自定义脚本填入命令并触发,检查日志

1
upnpc -i -l 2>&1 &

设置穿透规则

如图所示

image

自定义脚本内容填入一下命令,具体参数可修改

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

注意!如果lucky和BT客户端不在同一IP上则需要将此处的@换成BT客户端所使用的IP地址

检查日志输出

image

或者SSH输入upnpc -i -l查看日志

至此我们就实现了在Docker或者Linux中使用MiniUPnP为BT客户端自动添加内外端口不同的映射规则