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

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

  •  
  •   richchang · 1 天前 · 2765 次点击
    自从换了移动宽带,就告别了公网 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  
       23 小时 35 分钟前 via iPhone
    这个是需要路由器或者设备安装 Lucky ,配合 Lucky 使用的吧
    richchang
        4
    richchang  
    OP
       23 小时 4 分钟前
    @MeiJiayun 是的
    muhahaha
        5
    muhahaha  
       22 小时 59 分钟前
    非常棒,之前一直想有没有类似的功能,一直没有找到,最后无奈用了 Frp 内网穿透
    muhahaha
        6
    muhahaha  
       22 小时 57 分钟前
    请教个问题,如果是安卓的 Clash 客户端,应该如何配合使用呢?
    richchang
        7
    richchang  
    OP
       22 小时 50 分钟前
    @muhahaha 我没有试过,但理论上只要能接受 Shadowsocket 订阅格式的 app 都可以。

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

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

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

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