Lucky+Stun+EdgeOne实现无公网环境内网穿透转发

写在前面

“家宽有公网”曾是无数玩家、开发者、SOHO用户的默认起手式:NAS挂PT、摄像头远程、树莓派搭博客,一个DDNS就能搞定。
然而从2023年开始,国内三大运营商陆续收回IPv4公网地址——先是悄悄把80/443口封掉,随后直接把“大内网”地址甩给用户。
光猫后台再也看不到“Real IP”,拨号只能拿到100.64/10.0/172.16段;客服口径统一:“上级要求,不再提供公网IPv4,IPv6请自便。”
对于只有单栈IPv4、NAS在卧室、监控在老家、公司又要远程运维的普通人来说,这无异于断网。
买云服务器做FRP?——带宽贵、流量包小,高清一跑就欠费。
掏钱上商业SD-WAN?——节点少、订阅贵,延迟高得怀疑人生。
干脆摆烂用第三方“免费穿透”?——今天能连、明天跑路,数据从人家硬盘过,密码明文躺日志。

本文是一次“穷人版”自救实验的记录:
把家里那台吃灰的D1581主机、腾讯云EdgeOne免费套餐、开源 Lucky(STUN) 模块、以及一段10行不到的Worker脚本拼在一起,
在“没有公网IP、没有备案、没有固定带宽”的三无场景下,硬生生把内网Web服务搬到线上,
还能跑满30 Mbps上行,顺带把“跨网限速”给绕了过去。
如果你也遇到“家宽突然没了公网”,又不想给运营商交“商务专线”保护费,
不妨花十分钟跟着做一遍——最坏的结果只是多学会一个Docker命令,
最好的结果,也许就能让家里的NAS、摄像头、游戏服务器,继续像当年一样“随开随连”。

提醒:本教程流量会经过EO代理,好处是不需要带端口和跳转,并且比较稳定,但速率受到腾讯云的限制。
如果你在找无中转的STUN转发,请阅读《利用STUN+NAT1/UPNP配合重定向实现无公网免中转内网穿透》

转发教程

前提条件

  1. 你家网络必须是NAT1(检测:https://dyebean.com/
  2. 有个域名用于解析Worker和绑定Edgeone转发
  3. 有个设备可以安装Lucky,用于端口转发映射

安装Lucky

安装参考:https://lucky666.cn/docs/install,这里以Linux和Docker为例安装:

docker run -d --name lucky --restart=always --net=host gdy666/lucky

部署Worker

此步骤可选,如果你不想配置可以用我的部署,我不会看别人密钥信息,但不保证绝对安全
地址:https://websdk.524228.xyz/api/eo/zones/update

前往:https://github.com/PIKACHUIM/StunWebHooks,点击部署到EO或者CF平台
QQ20250909-151814.png

EO目前是炸的会提示405,先部署到CF或者用我的吧

这里以EO为例,CF基本流程都一样,EO如果你没有备案域名,就选『全球可用区不含大陆』
注意:EO这里部署命令需要改为:npm run build-eo,否则可能无法正常构建和部署
QQ20250909-152837.png

创建完成后,去项目设置里面,绑定一个域名,根据向导设置CNAME,并开启自动证书申请
QQ20250909-152219.png

部署好了之后可以使用https://你部署Worker的域名/api/eo/zones/update 修改

设置转发

  1. 打开Lucky管理页<IP地址>:16601,默认账号密码都是666,选择STUN内网穿透
    QQ20250909-151310.png
  2. 添加一个穿透设置,填写目标地址目标端口,如果你是旁路由可能要开启UPnP
    QQ20250909-153140.png
  3. 打开Webhook选项,请求方法选POST接口地址请求体需要按下面格式填写
    QQ20250909-153422.png

    • Webhook接口地址:https://你部署Worker的域名/api/eo/zones/update
    • Webhook请求体:
    {
     "secret_uuid": "腾讯云secretId",
     "secret_keys": "腾讯云secretKey",
     "domain_uuid": "zone-*******(EO区域ID)",
     "domain_name": "需要修改的域名",
     "public_host": "{ip}",
     "public_port": "{port}"
    }

    腾讯云secretKey查看:https://console.cloud.tencent.com/cam/overview
    EO区域ID获取地址:https://console.cloud.tencent.com/edgeone/zones

  4. 保存,等穿透生效,穿透会在日志按钮旁边显示地址的,此时已经可以直接使用IP访问
    QQ20250909-153615.png
  5. 如果没问题,右边的WebHook会显示成功,此时你应该可以用域名直接访问内网页面了
    QQ20250909-162652.png

常见问题

穿透的IP:端口无法访问/获取的外网IP不对/显示连通性检查不通过

  1. 关闭梯子或者把Lucky所在的IP排除,否则获取到的IP可能是经过代理的IP
  2. 检查网络类型是否真的是NAT1,并且关闭光猫+路由器的防火墙,开启UPNP

Webhook提醒[当前域名状态下无法进行该操作...]等情况

当前域名状态下无法进行该操作,可能是域名处于部署中,请稍后操作,若无法解决,请联系智能客服或提交工单。
说明这个域名上次更新还没完成,需要等一段时间才能更新

速度测试

测试教程

启动一个Docker镜像,并用前面步骤的STUN设置好穿透和Webhook

docker run -p 80:8080 -d --name speedtest --rm ghcr.io/librespeed/speedtest

直连测试

不经过腾讯云直连的速度测试,这里的下载速度实际上是家宽的上行,反过来上传就是下行
可以看到『上传』速度基本是家宽下载上限,『下载』受限于家宽的上行基本跑不满下载的
QQ20250909-145620.png

转发测试

可以看到,转发测试『上传』速度反而更快了,这可能是因为直连会被跨网限速,EO不限速
『下载』速度大幅下降,因为EO免费版速度有限制,备案域名和付费套餐速度应该会快一些
QQ20250909-161137.png

Last modification:September 9, 2025
If you think my article is useful to you, please feel free to appreciate