本文基于《OpenWrt/WSL下利用nftables修改向Tracker汇报的端口,实现BT下载的全自动STUN内网穿透》
细节内容请查看以上链接,建议阅读完「前言」部分。
原文内容较为繁琐,很多用户可能不习惯 BT文 NATMap 的配置方式。
本文展示更为流行的 STUN 工具 :?的配置方法。
本文针对无 IPv4 公网,且宽带为全锥形 NAT(即 NAT1)的用户。
一般来说,即使检测工具显示端口受限锥形?NAT(即 NAT3),实际上运营商提供的是全锥形,也可实现穿透。
1. 使用电信、联通、移动以外的二级运营商宽带,广电宽带未确认
2. PCDN 严打地区,可能提供对称形?NAT(即 NAT4)
3. 公司或出租屋等多层 NAT 拓扑,且用户无管理权限
本文示例使用 OpenWrt 主路由,但适用与任何使用 nftables 的网关。
未持有 OpenWrt 网关,且使用 Windows 的用户,可配置?WSL2 作为旁路由实现穿透。
运行在 OpenWrt 旁路由,且主路由 UPnP 组件开启安全模式时,需要配置代理服务器。
关于 WSL2 与 UPnP 安全模式请查看原文
本文省略 Lucky 的安装过程,详细请访问官网?
1. 确认防火墙框架
本文的方案基于 nftables,虽然使用 iptables 也可实现同样的效果,但不在考虑范围内。
浏览器访问路由器,Web 管理页中,打开 “状态 --?防火墙”
确认浏览器地址栏的 URL 结尾是否显示
若使用 WSL2 或其他 Linux 发行版,可执行以下命令确认是否安装了 nftables
显示版本信息则已安装
2. 安装所需软件包
除?Lucky 外,还需要使用几个软件包
Web 管理页中,打开?“系统?--?软件包”,点击 “更新列表”
更新列表可能需要一些时间
,操作方法建议搜索 "openwrt 清华"
Lucky 运行在旁路由,且主路由 UPnP 组件开启安全模式时,还需要安装?proxychains,详细内容请查看原文
3. 配置 Lucky
浏览器访问 Lucky 页面,默认地址为?
规则名称:任意,不能留空且不能重复
NAT-PMP:,同上
不使用Lucky内置端口转发:,
APPPORT?指定下载设备上运行的 BT 程序的监听端口,请查看并正确设置?BT 软件中的监听端口
配置完成点击 “添加”
鼠标停留在 “日志” 按钮上,等待约 30 秒左右,显示将会显示运行结果
4.配置端口映射
本脚本BT文不再自动配置端口映射,请手动操作
建议使用路由器的端口映射(或叫“虚拟服务器”),本文档示例使用
OpenWrt
大多数情况下,外部端口与内部端口允许一致
但在路由器上运行 BT 应用程序时,建议穿透端口与监听端口设为不同值
配置 TCP + UDP 穿透
上面已经添加了一个 TCP 穿透规则,如需要对同一 BT 程序添加 UDP 穿透,如图
与上面的 TCP 穿透规则相比,需要注意以下地方
规则名称:STUN_BT_UDP
穿透类型:IPv4-UDP
L4PROTO=udp
Lucky 要求穿透规则名称唯一不重复,需作修改加以区分
穿透类型为 BT文 IPv4-UDP 时,脚本中的?L4PROTO 需要同步,
效果图如下
配置多个网卡
本脚本支持多 WAN,包括多条入户宽带,单线多拨及隧道协议等
需要指定网卡,通常 Lucky 运行在主路由上才有意义
配置如下
规则名称:不留空且不重复
操作模式:定制模式
穿透通道方式:指定网卡
若 Lucky 运行在旁路由上,由主路由进行多线上网,可以选择?“指定IP”?的方式
网卡列表:PPPoE 拨号上网的,请选择 pppoe- 开头的网卡
pppoe- 后面的接口名称为自定义,请选择你实际的
IFNAME=pppoe-wanct
示例如图
配置多个程序
除了 TCP + UDP,以及多 WAN 外,本脚本同时支持配置多个 BT 程序的穿透
包括不同下载设备上,以及同一下载设备上的不同 BT 程序,以下载设备地址与程序监听端口为依据区分
同一设备(192.168.8.168)下不同 BT 程序(12345 / 23456)的穿透
需要区分 规则名称、穿透通道本地端口(即 LANPORT)、APPPORT
不同设备(192.168.8.168 / 192.168.8.169)下不同 BT 程序(12345 / 23456)的穿透
需要区分?规则名称、穿透通道本地端口(即 LANPORT)、APPADDR、APPPORT
清理规则
如果不想重启,可使用 nft 命令手动删除
Web 管理页中,打开?“系统?--?软件包”,过滤器中搜索 ttyd 并安装?luci-i18n-ttyd-zh-cn
安装完成后,
rm /tmp/stun_bt_*.info 删除脚本保存的穿透信息
nft delete table ip STUN 删除脚本创建的流量表
/etc/init.d/lucky restart 重启 Lucky,若有启用的穿透规则,将重新创建流量表
若使用旧版固件 / 插件,可尝试手动安装 nftables
Web 管理页中,打开 “系统 -- 软件包”,点击 “更新列表”
列表更新完成后,搜索 nftables?并安装
安装 nftables 会自动安装依赖包?kmod-nft-core
如无特别需要,安装?mbedtls 即可
若 nftables 的版本太老,部分规则可能因语法或功能不支持而报错
若 BusyBox 的版本太老,可能无法支持 sh <() 的语法,获取并执行脚本部分改为如下
若使用 wget,获取并执行脚本部分改为如下
若频繁出现穿透通道失效的提示,请尝试开启定制模式,找到下图设置项
把 “穿透心跳&通道检测时间间隔” 设置为 2500 毫秒
若仍无改善,一般是运营商的问题