V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
biguokang
V2EX  ›  程序员

关于家用服务器对外服务的免费方案(基于公网 ipv6 和 cloudflare dns proxy)

  •  
  •   biguokang ·
    AlpacaBi · 2022-12-22 15:48:12 +08:00 · 6848 次点击
    这是一个创建于 736 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前我一直用家里的服务器对外服务,不过由于公网 ipv4 不好弄,而且限制颇多,所以一直都是买了一个云服务器用 frp 做中转,后来还换到樱花 frp 这类平台做中转。

    后来我折腾了下 ipv6 ,成功让家里的每台上网设备都获得公网 ipv6 地址,这样我的服务器做个 ipv6 的 ddns ,就不用买云服务器做中转了,家里的服务器直接对外服务。

    不过这样就产生了一个问题,不是所有用户的网络环境都支持 ipv6 ,手机流量上网全面支持 ipv6 那还好说,但是是固网那一块支持度还不高,比如我公司电脑就没有 ipv6 ,而且我了解过城中村的垄断网络都是没有 ipv6 的。

    总而言之,用 ipv6 搭网站对外服务还不是特别完美,会有一部分用户因为没有 ipv6 的上网环境导致我的服务无法访问。

    所以后来我把域名放到 cloudflare 解析了,家里的服务器 ipv6 ddns 到 cloudflare 去,然后再把 cloudflare 的代理开关打开(橙色小云朵),有了 cloudflare 服务器在前面代理,我也不需要管用户的上网环境,v4/v6 用户都能访问我的家里服务器。

    整个流程都是免费的,我也不用花钱买云服务器做中转或者买 frp 服务了,可是发现了一个问题。

    我测试了下,cloudflare 的代理服务器地址固定在美国加州,也就是说国内用户访问我家服务的路径是:

    国内用户-->美国服务器-->我家里的服务器(广州)-->美国服务器-->国内用户

    所以我在想有没有办法,让 cloudflare 的代理服务器设置为 cloudflare 香港或者亚洲区的服务器,走亚洲区中转而不是美国中转。

    或者说,国内有没有类似 cloudflare 的服务商,提供 dns 服务解析的同时还能开 cdn 代理

    ps.国内能满足我这个要求的貌似只有百度云加速,可惜不支持 ipv6 AAAA 解析,对我的使用场景没用。

    49 条回复    2023-05-29 20:25:51 +08:00
    THESDZ
        1
    THESDZ  
       2022-12-22 15:54:35 +08:00
    注意安全防护
    biguokang
        2
    biguokang  
    OP
       2022-12-22 15:55:27 +08:00
    @THESDZ 有 cloudflare 代理在前面顶着,没人知道我公网 ipv6 地址的。
    THESDZ
        3
    THESDZ  
       2022-12-22 16:00:58 +08:00
    @biguokang cloudflare 能进你的机器,如果没有防火墙,fail2ban 等机制,其它的也会进。
    biguokang
        4
    biguokang  
    OP
       2022-12-22 16:03:43 +08:00
    @THESDZ 这个也没办法,毕竟站在平台作恶的情况下,全世界没有一个能跑得掉,特别是国内的。
    THESDZ
        5
    THESDZ  
       2022-12-22 16:06:25 +08:00
    @biguokang #4 我的意思是,你开放了 ipv6 的端口,其它扫描机器的程序也能扫到,如果不做白名单控制,有可能中招(传统的方式是路由器 /光猫会拦截入站流量。)
    jeesk
        6
    jeesk  
       2022-12-22 16:09:26 +08:00
    你电脑或者手机不分配 ipv6 基本没法访问。 代理也不好使。
    jeesk
        7
    jeesk  
       2022-12-22 16:13:01 +08:00
    我的建议是, 手机或者其他访问的地方没有 ipv6. 那么就用 frp 公网 或者 zerotier/局域网 把你家的设备使用前面 2 种暴露出来, 只用 ipv4 的流量。
    biguokang
        8
    biguokang  
    OP
       2022-12-22 16:14:04 +08:00
    @jeesk 我测试过,好使的,在只有 v4 的情况下也能访问到我 v6 的网站,因为这个转发工作 cloudflare 代理已经帮我干了。

    我还特地测试过,纯 v4 去 ping 我的网站,出来的地址是 cloudflare 的 v4 地址,纯 v6 去 ping 则是 cloudflare 的 v6 地址
    biguokang
        9
    biguokang  
    OP
       2022-12-22 16:16:14 +08:00
    @jeesk frp 或者打洞的方案还是得需要一台云服务器的,我之前也是这么干的,我就是因为不想买云服务器才转的 ipv6 ,毕竟乞丐版的云服务器出口带宽太小了,我家宽的出口带宽再高也没用。
    biguokang
        10
    biguokang  
    OP
       2022-12-22 16:20:50 +08:00
    @THESDZ v6 的地址这么多,如果是黑客用程序随机扫到的可能性不大.。。除非是黑客做的钓鱼 v6 网站,记录了访问过的 v6 地址那才有可能,针对用户还能实现,服务器这种就不大可能了。
    jeesk
        11
    jeesk  
       2022-12-22 16:26:55 +08:00
    @biguokang ping 和 http 是不同的协议,建议直接使用 http 的协议测试(如果你要访问 http 服务)。
    6.ipw.cn 是测试是否能够访问 ipv6 的站点。 你可以再次确认一下,没有 ipv6 的情况下面是否真的能够访问 6.ipw.cn
    brader
        12
    brader  
       2022-12-22 16:29:21 +08:00
    啊,虽然我是个程序员,但是我现在对 ipv6 还是一知半解的,我一直有个疑问,如果运营商肯分配一个 ipv4 地址给我们的话,那应该是我们的路由器获得了 ipv4 公网地址,内网其他设备得到的都是路由器分配的 192.168.x.x 地址。

    难道 ipv6 不是这样的嘛?我一直理解的也是路由器获得了一个 ipv6 地址,内网设备都是 192.168.x.x 地址。为啥楼主你说每个内网设备都会得到一个 ipv6 地址啊
    kaedeair
        13
    kaedeair  
       2022-12-22 16:35:16 +08:00   ❤️ 2
    @brader 12# ipv6 地址很多,全世界设备都分配不完,自然不存在 nat 这种东西
    brader
        14
    brader  
       2022-12-22 16:37:19 +08:00
    @kaedeair 那如果不用到 nat 机制,那我家的那 30 多块的水星路由器是不是没办法支持 ipv6 的?想支持还得买过路由器吗?
    locoz
        15
    locoz  
       2022-12-22 16:37:55 +08:00
    @biguokang #10 你不要把黑客理解成一个个只能全网扫描但资源不足的个体或小团队,黑客也是会用工具产生放大效应的。比如说 IP 地址多不代表没人能扫完,总会有大型团队拥有足够的资源去扫的,像那些做网络空间测绘的团队就是专门扫全网设备的。又比如说单纯攻击并不一定需要扫遍全网,也可以是针对特定区间缩小范围,甚至直接根据一些你忽略的点获取到 IP 地址实行精准打击。
    locoz
        16
    locoz  
       2022-12-22 16:41:12 +08:00
    永远不要觉得看起来概率相对较低就不会有问题。工业领域有个常见标语说得就很好:“安全源于持久警惕,事故源于瞬间麻痹”,网络安全也同理。
    biguokang
        17
    biguokang  
    OP
       2022-12-22 16:43:49 +08:00
    @jeesk 我的服务都是 http 服务,纯 v4 使用环境也能访问到我的 v6 服务。

    简单来说我的电脑在纯 v4 环境下,我的电脑和 cloudflare 代理用 v4 协议通讯,然后 cloudflare 代理和我的服务器用 v6 协议通讯。。。我的电脑不是直接和我的服务器通讯的,中间隔了个 cloudflare 代理做转发,而 cloudflare 代理本身支持 v4/v6 双栈协议
    kaedeair
        18
    kaedeair  
       2022-12-22 16:47:01 +08:00
    @brader #14 路由器可以同时支持 nat 和 ipv6,支持哪些功能是路由器决定的,你可以去后台设置看一看有没有相关设置。
    在光猫桥接的情况下所有设备都很容易分配到 ipv6 地址,如果光猫是路由模式可能比较困难(我没有尝试过),可能需要路由器进一步的支持
    0o0O0o0O0o
        19
    0o0O0o0O0o  
       2022-12-22 16:47:16 +08:00 via iPhone   ❤️ 3
    感觉不如 cloudflared ,连公网 IPv6 都不需要
    ooxxcc
        20
    ooxxcc  
       2022-12-22 16:48:59 +08:00
    感觉不如 cloudflared ,连公网 IPv6 都不需要 +1

    在公网 IPv6 上开服务也不安全
    brader
        21
    brader  
       2022-12-22 16:54:52 +08:00
    @kaedeair 喔,明白了,就是还得路由器支持 ipv6 协议,这样的话说明这两个协议分配 ip 的方式是不同的。另外我很确定我那个 30 几块钱的路由不支持 ipv6 了,哈哈,因为我经常进路由管理界面,里面没有任何选项和信息带了切换 iipv6 的东西
    just4id
        22
    just4id  
       2022-12-22 17:16:32 +08:00 via iPhone
    我的理解,走美国绕一圈反而访问更快吧,不是吗?
    biguokang
        23
    biguokang  
    OP
       2022-12-22 17:27:09 +08:00
    @brader ipv6 没有 nat 机制(如果你听说过 nat6 ,那个只是民间的玩意),只要路由器设置下 lan 口的 dhcpv6 ,就能让家里所有上网设备都有公网 ipv6 。

    简单来说,在 ipv6 的环境下,运营商不只是给你分配了一个公网 ipv6 地址,还给你分配了一个公网 ipv6 网段。

    比如我家宽分配到的公网 ipv6 网段是 240e:111:111:111::/60 (乱填的)

    那我家的 n 个上网设备分配到的 IP 就是
    240e:111:111:111::111
    240e:111:111:111::222
    240e:111:111:111::333
    240e:111:111:111::444
    等等等等


    这些全是公网 ipv6 地址,都是可以直接访问的,而且还很多,你自己根本用不完。
    biguokang
        24
    biguokang  
    OP
       2022-12-22 17:43:53 +08:00
    @0o0O0o0O0o 我去了解了下 cloudflared ,果然比 ipv6 ddns 到 cloudflare 好多了。。。折腾下 cf 优选 ip 应该能有不错的速度
    xianwei10000
        25
    xianwei10000  
       2022-12-22 18:10:14 +08:00
    欢迎尝试星空组网,最起码安全,无限速 在我的主页
    findex
        26
    findex  
       2022-12-22 18:10:30 +08:00
    @biguokang 刚刚我也去看了一下 cloudflared 做 tunnel ,直接打洞+cdn 全套了。都不需要公网 IP 的主机,cf 给你全套解决方案。

    这有点刚了。不过这个数据安全有点令人担心,因为 cf 直接进了你的机器了,在你机器里面干啥的时候你也许不知道。
    xxcheng
        27
    xxcheng  
       2022-12-22 18:26:03 +08:00
    试试这个,https://www.v2ex.com/t/879549,不需要额外云服务器,我移动 NAT1 打洞后可以直接 IP+端口访问
    Mitt
        28
    Mitt  
       2022-12-22 18:29:30 +08:00   ❤️ 1
    @findex #26 https://github.com/cloudflare/cloudflared 其实这类需要信任的东西都是开源的,闭源的没人敢用
    tanglu
        29
    tanglu  
       2022-12-22 18:43:53 +08:00
    @biguokang cloudflared 国外网络下确实好用,但是不能优选
    除非你改 hosts 可能对你自己访问有加速效果 但有改 hosts 的时间不如开个富强
    tediorelee
        30
    tediorelee  
       2022-12-22 18:53:00 +08:00
    cloudflared 刚用上,确实不错,我也懒得弄 ipv6 ddns 了
    7890qwaszx
        31
    7890qwaszx  
       2022-12-22 19:27:48 +08:00   ❤️ 1
    @findex https://github.com/cloudflare/cloudflared
    tunnel 客户端程序开源,且在配置通道时,可以选择局域网下其他主机,不一定放在提供服务的本机上。
    Believer
        32
    Believer  
       2022-12-22 19:37:54 +08:00 via iPhone
    要是就自己用换个 wireguard 或者 tailscale vpn 连进去是不是更好一点儿
    zhu327
        33
    zhu327  
       2022-12-22 20:09:09 +08:00
    tailscale 推荐
    killgfat
        34
    killgfat  
       2022-12-22 21:22:58 +08:00 via Android
    cloudflare 这种免费的全世界都绝无仅有,更别说国内了,国内 cdn 没实名备案就别想了
    caomingjun
        35
    caomingjun  
       2022-12-22 22:02:33 +08:00 via Android
    通过代理连接 cloudflare ,可以连到香港或者新加坡的节点。但是似乎访问还是不会直连香港,而是走 客户端->美国 CF->香港 CF->你的服务器。
    heiher
        36
    heiher  
       2022-12-22 22:25:02 +08:00 via Android
    https://github.com/heiher/natmap/wiki/NATMap
    适合你,openwrt 直接 opkg install natmap
    namaketa
        37
    namaketa  
       2022-12-22 22:28:43 +08:00
    biguokang
        38
    biguokang  
    OP
       2022-12-22 22:49:14 +08:00
    @namaketa 哇老哥,你这个正是我想要的,谢谢!!!
    Wovvvv
        39
    Wovvvv  
       2022-12-22 23:51:11 +08:00
    我是使用 openwrt ipk 动态 dns + 阿里 dns 解决,方案也跟 op 你的差不多
    TulvL
        40
    TulvL  
       2022-12-22 23:51:37 +08:00
    @biguokang 可以用 ip.flares.cloud 粗看一下地区分布,然后用本地软件更仔细调查
    Wry666
        41
    Wry666  
       2022-12-23 08:08:50 +08:00
    OP 的 Cloudflare IPv6 DDNS 是用什么实现的,可以分享一下吗?
    THESDZ
        42
    THESDZ  
       2022-12-23 09:07:44 +08:00
    biguokang
        43
    biguokang  
    OP
       2022-12-23 12:39:46 +08:00
    ```bash
    docker run -d \
    -e DDNS_DNS=cloudflare\
    -e DDNS_ID=“你的 cloudflare 邮箱”\
    -e DDNS_TOKEN=“你的 cloudflare token”\
    -e DDNS_IPV6=“你的域名” \
    --network host \
    newfuture/ddns

    ```
    kenvix
        44
    kenvix  
       2022-12-23 20:34:24 +08:00
    @kaedeair 有没有一种可能,运营商给你分了个 /128
    @brader 他说的那种情况是运营商通过 ipv6-pd 给了你一个 /64 段,给一个 /128 就不成立了
    Wry666
        45
    Wry666  
       2022-12-24 14:45:21 +08:00
    @THESDZ 谢谢
    Wry666
        46
    Wry666  
       2022-12-24 14:45:39 +08:00
    @biguokang 谢谢
    ixinshang
        47
    ixinshang  
       2022-12-24 21:02:09 +08:00
    我关了 IPV6 。
    目前是内网穿透。
    AllenDarwin
        48
    AllenDarwin  
       2023-05-17 17:13:10 +08:00
    我很疑惑?为什么 ipv6 公网访问会有安全问题?我只开通 80 和 443 端口,其余端口全都禁掉,也会有安全性问题?
    biguokang
        49
    biguokang  
    OP
       2023-05-29 20:25:51 +08:00
    @AllenDarwin 大部分人不懂这些,有些人啥都没干,装了宽带后家里所有联网设备都拥有独立 ipv6 公网地址了,对于不懂的人来说很危险。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2560 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 04:51 · PVG 12:51 · LAX 20:51 · JFK 23:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.