
前两篇默认你至少有一个公网 IP。但现实是:大量家庭宽带(尤其移动)拿不到公网 IPv4,WAN 口是 100.x 开头的大内网地址。是不是就没法从外面访问家里设备了?未必。如果你的 NAT 类型是 Fullcone(NAT1)/ Endpoint-Independent,Lucky 的 STUN 内网穿透 可以「打洞」拿到一个临时公网 IP:端口,照样能连。
一、先确认你的 NAT 类型
下载 NatTypeTester,按 RFC 3489 测试,结果要是 Fullcone;或按 RFC 5780 测试,结果要是 Endpoint Independent。如果测试出来是 Port/Address Restricted,说明运营商 NAT 太严,本篇方案不适用,建议改用异地组网(Tailscale 之类)或内网穿透服务。
二、把 NAT 调到 NAT1
家用路由默认防火墙较严。进路由器后台开启 DMZ(填你跑 Lucky 那台设备的静态内网 IP),或开启 UPnP。光猫若是桥接、自己路由器拨号,就开自己路由器的 UPnP。这一步是打洞能否成功的关键。
三、在 Lucky 里添加 STUN 穿透规则
- 左侧 STUN 内网穿透 → 添加穿透规则。
- 操作模式:简易模式。
- 穿透类型:IPv4-TCP(Web 类服务)或 IPv4-UDP(WireGuard、BT 等)。
- 穿透通道本地端口:填一个未占用的端口,如
26667。 - 目标地址 / 目标端口:填你要暴露的内网服务,如 NAS 的
192.168.1.100:16666(通常就是上一篇反向代理的监听端口)。 - 勾选 防火墙自动放行 和(若需要)UPnP。
点添加后等几秒,界面会显示获取到的 公网 IP:公网端口。用手机流量(非同一 WiFi)访问这个地址,能打开就说明穿透成功。
四、用 Cloudflare 重定向隐藏端口
公网IP:端口 这种地址又长又难记,而且 IP 一变就失效。更好的办法是配合 Cloudflare 的「重定向规则」:
- 在 Cloudflare DNS 里给域名加一条 A 记录(IP 随便填,如
8.8.8.8),代理状态打开。 - 建一条重定向规则,把
你的域名301 跳转到http://#{ipAddr}(动态变量)。 - 在 Lucky 的 STUN 规则里开启 WebHook(PATCH 方式调用 Cloudflare API),IP/端口一变就自动更新这条重定向。
这样你只需记域名,背后的 IP:端口由 Lucky 自动维护。注意 Cloudflare 免费版重定向规则上限约 10 条,一个公网映射对应一个项目。
五、IP 变了怎么知道?
开启 Lucky 的 全局 WebHook,接 pushplus(微信推送)或其他推送服务。地址一变,微信立刻收到最新 IP:端口,方便 APP / TV 端直接用 IP 访问(这类客户端往往不吃域名跳转)。
六、务必知道的局限
- IP 和端口不固定:路由器重启、网络波动都会变,好在会自动更新 + 推送。
- 不适合几秒一变的线路:那种 ISP 频繁重映射,体验会很差。
- 速度看宽带:穿透是 P2P 直连,速率取决于你家上传带宽,不是中继转发。
- 暴露风险:任何公网映射都等于把服务摆上公网,务必改密码、开 TLS、限制访问。
至此,本系列三篇覆盖了 Lucky 三大核心能力:DDNS(稳定地址)、反向代理(优雅暴露)、STUN 穿透(无公网 IP 也能连)。三者常常组合使用——用 STUN 拿到公网入口,再用反向代理把内网服务收口加密。把这几招吃透,一台 Lucky 容器基本能顶替过去 N 个独立工具。