V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
richchang
V2EX  ›  宽带症候群

写了个自动更新内网打洞 IP 和端口服务,没有公网 IP 的宽带用户也可以全自动全速连回家

  •  
  •   richchang · 1 天前 · 2996 次点击
    自从换了移动宽带,就告别了公网 IP 。试过很多连回家的方法,包括:IPV6 ,ZeroTier ,Wireguard……全都因为要么是 IPV6 ,要么是 UDP ,而导致高峰期 QoS 严重。遇到跨网(比如用联通手机访问)或者晚间,基本没法用。

    最后终于找到了一个可以像公网 IP 时代一样速度连回家的方法:Lucky 提供的内网 STUN 打洞,配合基于 TCP 的 SS 服务。然而由于打洞得到的 IP 和端口都会经常变化,所以隔三差五就要手动修改。

    写了个小服务,自动根据 Lucky 的 Webhook 上报的最新 IP 和端口,更新订阅 URL ,利用 SS 的订阅功能,自动更新手机代理 APP (比如小火箭)里的服务器地址和端口。

    功能特点

    ✅ 适合没有公网 IP 的家庭宽带用户,远程访问家庭局域网
    ✅ 支持 Lucky Webhook 自动更新 SS 订阅
    ✅ 支持动态配置 SS method (加密方式)和 password (密码)
    ✅ 基于 Cloudflare Workers + KV ,无需自建服务器
    ✅ 支持 API Key 认证,确保数据安全
    ✅ 支持 Cloudflare 自有域名访问,绕过 workers.dev 的屏蔽

    详细方法见这里: https://github.com/kanshurichard/GoHomeEasy/tree/main

    欢迎 Star 和在 Github 上报 Issues
    33 条回复    2025-03-17 12:01:49 +08:00
    wtks1
        1
    wtks1  
       1 天前
    这个打洞是不是要求 nat1 ?
    richchang
        2
    richchang  
    OP
       1 天前
    @wtks1 理论上只要不是 NAT4 (全对称),应该都可以。反正测试了好几条移动宽带都没有问题。
    MeiJiayun
        3
    MeiJiayun  
       1 天前 via iPhone
    这个是需要路由器或者设备安装 Lucky ,配合 Lucky 使用的吧
    richchang
        4
    richchang  
    OP
       1 天前
    @MeiJiayun 是的
    muhahaha
        5
    muhahaha  
       1 天前
    非常棒,之前一直想有没有类似的功能,一直没有找到,最后无奈用了 Frp 内网穿透
    muhahaha
        6
    muhahaha  
       1 天前
    请教个问题,如果是安卓的 Clash 客户端,应该如何配合使用呢?
    richchang
        7
    richchang  
    OP
       1 天前
    @muhahaha 我没有试过,但理论上只要能接受 Shadowsocket 订阅格式的 app 都可以。

    另外,Clash 也有自己的 YAML 订阅格式,你可以简单改一下代码,让输出格式为 Clash 的 YAML 就行。
    richchang
        8
    richchang  
    OP
       1 天前
    @muhahaha 写了个对应 Clash YAML 格式订阅的代码,传到 Github 了
    w7938940
        9
    w7938940  
       1 天前
    要求有点高,需要支持 stun tcp 打洞
    muhahaha
        10
    muhahaha  
       1 天前
    @w7938940 我这陕西联通,也是支持的,感觉好多地区的都支持 Fullcone Nat ,这样的话是没有问题的,可以用软路由拨号测试一下。
    muhahaha
        11
    muhahaha  
       1 天前
    @richchang 谢谢,回头有空测试
    SenLief
        12
    SenLief  
       1 天前
    有 ipv6 还是 ipv6 好用,stun 的打洞要频繁的更新。
    richchang
        13
    richchang  
    OP
       1 天前
    @SenLief 我这个代码解决的就是 stun 打洞频繁更新的问题。

    ipv6 并非理想的连回家的方式。即使不考虑很多地方没有 ipv6 的问题,经我的测试,ipv6 起码在移动宽带跨网访问的时候,QoS 非常严重,跟 v4 完全不一样。
    SenLief
        14
    SenLief  
       1 天前 via iPhone
    @richchang 我这联通没有 TCP Qos , 一直 ipv6 挺稳定的。stun 有时候更新的很频繁,客户端就需要频繁的请求更新,另外更新了地址不出意外也需要重连。
    huguadao
        15
    huguadao  
       1 天前 via iPhone
    可以在群晖上部署么?目前用的 frp 到一个 vps 上这么用的
    richchang
        16
    richchang  
    OP
       1 天前
    @huguadao Lucky 有群晖的套件,没问题
    wanderNeng
        17
    wanderNeng  
       1 天前
    可以直接用 tailscale
    qingshengwen
        18
    qingshengwen  
       1 天前
    @richchang #2 还真是可以的,我之前用其他工具测试过显示是 NAT3 ,移动的,但是 lucky 能内网穿透成功
    guoguobaba
        19
    guoguobaba  
       1 天前
    lucky 持续报告“STUN 穿透获取的公网地址有效性检测失败",是不是说明我这个是 nat4 的

    但是我用 python stu 检测说是 nat3 的。
    richchang
        20
    richchang  
    OP
       1 天前
    @guoguobaba 你是不是给装 lucky 的机器开个全局梯子?那样会导致获取的公网地址是梯子的地址。

    另外需要打开路由器的 UPNP ,以及去掉其他可能影响连接的防火墙
    guoguobaba
        21
    guoguobaba  
       1 天前
    @richchang 我的光猫是路由模式,需要在光猫上把路由器设置为 dmz
    richchang
        22
    richchang  
    OP
       1 天前 via iPhone
    @guoguobaba 建议尽量改桥接。如果改不了桥接,就光猫拨号,路由器只当交换机。家里两层 NAT 可能有未知影响。
    MoeDisk
        23
    MoeDisk  
       21 小时 21 分钟前
    码住,下班回家有空试一下~
    shane511
        24
    shane511  
       21 小时 17 分钟前
    starred ,晚上回去试试
    latteczy
        25
    latteczy  
       21 小时 9 分钟前
    请教一下,你是如何测试得出移动宽带 IPv6 被 QoS 严重的结论的?
    richchang
        26
    richchang  
    OP
       20 小时 48 分钟前
    @latteczy 之前用过一阵子。在( 1 )联通手机/宽带访问;( 2 )外地移动访问;( 3 )晚高峰访问,都遇到了严重的降速和延迟爆炸,连 300kb/s 的家庭监控都看不了。
    dreamage
        27
    dreamage  
       20 小时 17 分钟前
    之前想过这个事 奈何有公网 IP 一直没搞 没想到被大佬实现了 哈哈哈
    Awes0me
        28
    Awes0me  
       19 小时 42 分钟前
    能不能用 wireguard
    XuanYuan
        29
    XuanYuan  
       19 小时 21 分钟前
    是不是可以替代 WG 了?
    xuromky
        30
    xuromky  
       19 小时 19 分钟前
    能跑满家宽的上传速度?
    richchang
        31
    richchang  
    OP
       18 小时 32 分钟前
    @xuromky 目前测试是可以的
    richchang
        32
    richchang  
    OP
       18 小时 31 分钟前
    @xuromky 这个方法可以用于任何需要暴露端口的 tcp/udp 服务。但我不建议用 wg ,是因为 udp 协议在我这里测试 QoS 严重。尽可能用基于 TCP 的协议,比如 SS 。
    Remawater
        33
    Remawater  
       18 小时 28 分钟前
    从市里搬到县里 都是联通直接变 nat4 魔改了一下用上了 ipv6 也挺好 能跑满上行 不过我这 ipv6 的延迟巨高 100ms+ 跟中转差不多了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1038 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:30 · PVG 06:30 · LAX 15:30 · JFK 18:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.