STUN 是打洞 P2P 穿透,不需要公网服务器,但必须是 NAT1(Full‑Cone 全锥形 NAT),对称 NAT 基本无法成功;公网映射端口会动态变化,不会固定不变。

前置条件

  1. 网络必须是 NAT1 (Full‑Cone 全锥形 NAT);移动宽带大多是对称 NAT,打洞成功率很低。
  2. Lucky 优先部署在主路由(OpenWrt/iStoreOS);如果装在 NAS/Docker 内网设备上:
    • 方案 A:路由器开启 UPnP/NAT‑PMP
    • 方案 B:路由器做 DMZ 指向 Lucky 设备 IP
    • 方案 C:路由器手动端口转发穿透通道监听端口 → Lucky 主机:同端口
  3. 光猫拨号:光猫设置 DMZ 指向路由器;路由器拨号不用处理光猫。

⚠️注意:STUN 仅做体验,不保证端口稳定不变,运营商重拨号、断网后公网端口就会改变。

基础配置步骤

进入 Lucky 后台 → STUN内网穿透穿透规则列表添加穿透规则

  1. 名称:随便写,如 nas‑web

  2. 操作模式:简易模式(普通用户不要用定制模式)

  3. 穿透类型IPv4‑TCPIPv4‑UDP一次只能选一种协议,不能同时 TCP+UDP

  4. 穿透通道监听端口

    • 填一个本机未占用端口,建议 > 10240,多条规则端口不能重复;
    • 路由器开 UPnP 可以填0,使用随机端口。
  5. 防火墙自动放行:Lucky 跑在路由器上打开;跑在 NAS/Docker 就关闭。

  6. NAT‑PMP:Lucky 在内网设备,路由器开启 UPnP 时打开;跑主路由可以关闭。

  7. 目标地址、目标端口:填写你要暴露的内网服务 IP 和端口。

    示例:NAS 的服务 192.168.1.100:8080

  8. 启用使用内置转发

    • ✅打开:Lucky 软件层转发,简单,但拿不到真实客户端 IP;
    • ❌关闭:由路由器防火墙端口转发,能拿到真实 IP,性能更好,需要路由器手动配置端口转发;UDP 穿透不能关闭内置转发

保存启用规则。

查看公网访问地址

规则列表中会显示得到的公网地址,格式:公网IP:公网映射端口

外网就用 http://公网IP:公网映射端口访问你的内网服务。

重点:这个公网映射端口会变,断线重连、拨号后端口就更新。

进阶处理端口动态变化

  1. Webhook 回调:STUN 规则里填写 webhook 地址,端口发生变化时 Lucky 会 POST 推送新公网 IP + 端口,可写脚本自动更新 DDNS、Cloudflare Origin Rules、路由器防火墙端口转发等。
  2. Web 服务场景:搭配 Lucky 内置 DDNS+Cloudflare Origin Rules,域名自动指向变化后的公网端口。
  3. 非 Web 服务(PT、游戏):需要脚本同步更新防火墙 / 客户端监听端口。

常见踩坑

  1. 打洞不成功:90% 是不是 NAT1 全锥形 NAT;iStoreOS/OpenWrt 防火墙打开 Full‑Cone NAT 选项。
  2. UDP 穿透:不能关闭内置转发,关闭后 UDP 直接失效。
  3. Docker 部署 Lucky:网络模式必须用host,桥接模式 STUN 打洞大概率失败。
  4. 外网访问不通:检查路由器防火墙、光猫防火墙,不要拦截 3478 (STUN 服务器端口) 以及你的监听端口。
  5. 不要同时多条 STUN 规则用同一个本地监听端口。

STUN 对比 FRP

  • STUN:无服务器、直连速度等于家庭宽带上行;端口动态、NAT 类型强依赖,稳定性一般。
  • FRP:需要公网 VPS 服务器;端口固定,不依赖 NAT 类型,流量经过服务器带宽受限。

如果你需要长期稳定对外提供服务,优先 FRP;临时体验、PT 下载,优先 STUN。

官方文档链接

https://lucky666.cn/docs/modules/stun/

如果你告诉我你的部署环境(OpenWrt/iStoreOS/NAS Docker),我可以给你一份直接抄的配置参数。

相关视频

img

iStoreOS + Lucky STUN内网穿透(主路由运行Lucky)

iStoreOS上Lucky是iStore商店一键安装,跑在主路由,不是Docker旁路由,条件优先把NAT调成Full‑Cone(NAT1全锥形),否则打洞大概率失败。

一、路由器前置必做(iStoreOS设置)

  1. 开启Full‑Cone‑NAT(全锥形NAT) 网络 → 防火墙 → 区域设置 启用FullCone‑NAT:选择 高性能模式,保存应用。

移动宽带很多是运营商侧对称NAT,就算开了路由器FullCone,也打不通STUN。

  1. 光猫处理
  • ✅路由器拨号(iStoreOS拨号):光猫桥接,无需DMZ。
  • ⚠️光猫拨号:光猫后台设置DMZ指向iStoreOS路由器IP
  1. 开启UPnP:服务 → UPnP,启动并启用,保存。
  2. Lucky安装:iStore商店搜索Lucky安装,服务菜单打开Lucky后台,端口默认16601

二、Lucky STUN规则配置(简易模式,直接抄)

进入Lucky后台 → STUN内网穿透 → 添加穿透规则

参数 设置
名称 自定义,如nas-web
操作模式 简易模式
穿透类型 IPv4‑TCP(网页用TCP;PT游戏选IPv4‑UDP)
穿透通道监听端口 填大于10240空闲端口,例40000;填0使用UPnP随机端口
防火墙自动放行 ✅打开(iStoreOS主路由,Lucky可操作防火墙)
NAT‑PMP ❌关闭
目标地址 你内网服务IP,如192.168.1.100
目标端口 内网服务端口,如8080
启用使用内置转发 ✅打开

⚠️UDP穿透必须开启内置转发,关闭直接失效。 ❗不要关闭内置转发:iStoreOS主路由上关闭内置转发需要你手动添加iStoreOS防火墙端口转发,新手不要碰。

保存,启用规则。等待几秒,规则列表会出现:公网IP:动态映射端口,外网直接用这个地址访问服务。

⚠️重点:公网映射端口会变,断网、重拨号之后端口更新,不是固定端口。

三、解决端口动态变化(进阶)

STUN打洞端口每次会变,两种方案:

  1. Webhook回调:规则填写webhook,端口变更时Lucky推送新IP+端口,可写脚本更新DDNS、Cloudflare Origin Rules,实现域名访问,不用记端口。
  2. Cloudflare Origin Rules:域名自动映射STUN返回的公网IP+端口,实现不带端口域名访问。

iStoreOS终端安装依赖(脚本需要)

opkg update
opkg install curl jq

四、高频踩坑排查(iStoreOS)

  1. 一直获取不到公网端口,打洞失败

    • 确认防火墙Full‑Cone‑NAT高性能模式已开启,重启防火墙。
    • 运营商网络是对称NAT(移动宽带常见),路由器再怎么设置也打不通STUN。
    • 检查光猫是否拦截3478STUN服务器端口。
    • 点规则右侧📋日志,看报错信息。
  2. 内网能访问,外网打不开

    • 防火墙自动放行必须打开;如果关闭内置转发,需要iStoreOS手动添加端口转发。
    • 光猫拨号必须设置光猫DMZ指向iStoreOS。
  3. UDP完全不通 UDP穿透不支持关闭内置转发,必须保持开启。

  4. 如果你是Docker部署Lucky在iStoreOS容器魔王

    Docker网络模式必须为host,桥接模式STUN直接失效。

五、选型建议

  • STUN:无服务器,直连速度等于家庭上行;端口动态,NAT依赖强,适合临时用
  • FRP:VPS服务器,端口固定,稳定性强,不依赖NAT,长期对外服务优先FRP。

官方文档:https://lucky666.cn/docs/modules/stun/

如果你告诉我:运营商(电信/移动/联通)、是路由器拨号还是光猫拨号,我可以给你一套适配你网络的完整参数。

stun打洞+cloudflare回源规则,将本地服务放进公网 - 久光本光的主页

stun 打洞+cloudflare 回源规则,将本地服务放进公网 - V2EX

正确的使用lucky,彻底告别IPV4,DDNS+反向代理+SSL证书自动续签-cqchen-86-cqchen-86-哔哩哔哩视频