请教一个 openwrt + ipv6 + cloudflare 路由器回家的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OpenWrt 是一个专门面向嵌入式设备的 Linux 发行版。你可以将 OpenWrt 支持的型号的嵌入式设备,比如各种路由器上的系统,换成一个有更多可能性可以折腾的 Linux 系统。
OpenWrt 官方网站
crazyBlack
V2EX    OpenWrt

请教一个 openwrt + ipv6 + cloudflare 路由器回家的问题

  •  
  •   crazyBlack 342 天前 3907 次点击
    这是一个创建于 342 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这两天放假在家开始折腾路由器,遇到了一些问题没太搞明白想请教一下各位

    需求是我希望在外面可以通过域名访问家中的服务器 下面是我做的事情

    1. ipv6 已经准备好了,测试没问题,我可以正确的通过 ip 地址直接访问家中对应的服务(坐标上海移动,话说居然没封掉我的 80 端口,真是不可思议)

    2. 我的域名在 Cloudflare, 通过 openWrt 的 ddns-go 将 ipv6 动态绑定在我的域名上,赛博菩萨 Cludflare 还默认给了我 https 证书,在这一步我可以直接通过 https + 域名访问家中的路由器没有问题

    3. 我不太希望家里的服务裸奔,并且我不确定 80 端口是否一直都不会被封,所以我希望禁用掉 wan 口的入站数据,使用防火墙端口转发的方式仅开放部分我希望开放的端口,在这一步通过 ip 地址 + 端口号我可以正确的访问家中服务

    4. 问题出在这一步,我没办法通过域名 + 端口号的方式访问到我家中的服务(报错 SSL handshake failed )

    问题:

    1. 为什么我没办法通过域名 + 端口号的方式访问家中服务

    2. 我的 openwrt 的管理界面理论上应该是在 80 端口上,Cloudflare 给我提供了 https 证书,那么讲道理应该会访问到我服务的 443 端口,在我什么都没做的情况下为什么还是能正确访问到 80 端口上的服务

    3. 手机端运行 surge 或者电脑端的 surge 开启 enhanced mode 似乎都会会影响我直接访问 ipv6 地址,这个有什么解决办法吗

    我做的尝试: 我了解 Cloudflare 仅仅会代理部分端口 由于是 https 我特意将防火墙的对外端口设置为 2053 ,但是无论是开启代理还是关闭代理(黄云/灰云)都没办法通过域名 + 端口号访问服务 我在 itdog 使用 tcping 域名 + 端口是全绿的

    不是专业的,搞了好几天搞不定,来请教一下大家

    下面是各种配置的截图

    防火墙

    防火墙

    cf

    23 条回复    2025-02-17 02:10:56 +08:00
    Yanel
        1
    Yanel  
       342 天前   1
    端口转发是 V4 服务,而 CF 解析的是 V6

    V6 我记得是不需要端口转发的
    ik
        2
    ik  
       342 天前 via iPhone
    ipv6 已经准备好了,测试没问题,我可以正确的通过 ip 地址直接访问家中对应的服务(坐标上海移动,话说居然没封掉我的 80 端口,真是不可思议)


    是怎么测试的呢? 连 wifi 测试? 还是用蜂窝网络? 蜂窝网络是同一家运营商吗? 最好用海外 ipv6 测试试试
    crazyBlack
        3
    crazyBlack  
    OP
       342 天前
    @ik 服务在 80 上,我自己的手机用 5g 网络还有异地的朋友都是直接输 IP 不加端口号就能连上
    ik
        4
    ik  
       342 天前 via iPhone
    @crazyBlack 那看起来确实放通了,可能是#1 提到的问题
    ae
        5
    ae  
       342 天前
    我也在老家能直接输 ipv6 连上 openwrt 软路由,spaceship 注册的域名,前两天把域名 dns 改 CF ,刚开始可用,第二天早上起来就不行了,现在又改回 spaceship 的 dns 直接 CNAME 这个 ipv6 地址(反正这个地址装宽带到现在都没变过)
    table cellpadding="0" cellspacing="0" border="0" width="100%"> crazyBlack
        6
    crazyBlack  
    OP
       342 天前
    @Yanel 抱歉,不是专业的这里没太看明白,这里说的端口转发是 v4 服务是指什么啊,如果我拒绝 wan 口入站数据的前提下,不开端口转发是没办法 ipv6 地址 + 端口号访问服务的,开了才能,下面这个是配置

    ![]( https://telegraph-image-92x.pages.dev/file/e35ae003198f6cc83814e-f1041d239ba6dfcf6c.png)
    zfjdif
        7
    zfjdif  
       342 天前   1
    1. 你开启了代理,[Cloudflare 只支持部分端口]( https://developers.cloudflare.com/fundamentals/reference/network-ports/) ,流量都走 Cloudflare 代理了一次,域名+端口应该是无法访问
    2. 同样是走了代理,Cloudflare 给套了反代
    3. 不了解

    “没办法通过域名 + 端口号访问服务”指的是 OpenWrt 的页面吗?如果不是的话,你只开了 2053 端口,肯定无法访问其他服务吧。

    我本地是:PVE 开了台虚拟机专门跑 Nginx ,专门来转发内部服务,都走 Cloudflare 代理,使用二级域名 + HTTPS 访问。流量从 Cloudflare -> OpenWrt -> Nginx 虚拟机(你可以试试 OpenWrt 反代内部服务?) -> 内部其他服务。
    zfjdif
        8
    zfjdif  
       342 天前
    @zfjdif 通过域名走 Cloudflare 代理的好处是:双栈访问,一些服务不需要有 IPv6 才能访问,一些 RDP 等的流量走 IPv6 或者 Zerotier 都可以
    crazyBlack
        9
    crazyBlack  
    OP
       342 天前
    @zfjdif 有什么解决办法吗,听上去关闭 cf 的代理就可以解决这个问题,但是我关闭代理 cf 仅作 dns 解析的情况下还是没办法访问到服务

    这里只开 2053 是因为目前我只是想访问 80 端口的服务,所以我只开了 2053 -> 80 的端口转发

    流量进来之后的事情我理解都可以再聊,现在好像流量还进不来呢哈哈
    edcopclub
        10
    edcopclub  
       342 天前 via Android   1
    浏览器到 cloudflare ,和 cloudflare 到路由器的 https 配置都可以检查一下
    itiao
        11
    itiao  
       342 天前 via Android   1
    有个 smbox,singbox+mosdns,也有回家服务,可以试试,免费的和收费的区别就是限制节点和机场订阅数量而已.
    https://smbox.buzheteng.org/

    https://t.me/buaizheteng
    Vancion
        12
    Vancion  
       342 天前
    我试了一下是不是防火墙规则里的目标区域是未指定?
    如果改成 lan 然后指定特定设备的 ip 呢。
    zfjdif
        13
    zfjdif  
       342 天前
    @crazyBlack 留个 wx 交流下哇,这里不太容易说清楚
    yufeng0681
        14
    yufeng0681  
       342 天前   1
    方案 1 、把 https 证书功能去掉, 只需要 http 服务,那你只开启映射 80 就没问题
    方案 2 、把内网 443 端口也开放出去,外网也是 443 ,内网也是 443. 这样 https 才能跑通( 80 重定向到 443 端口鉴权走 https 流程)
    kingloong
        15
    kingloong  
       342 天前 via Android
    常用端口肯定要封的,我之前也是运营商都放开的,用了几年,80 ,443 全开的,去年突然在外回不去了,到家一测试运营商升级把端口封了。我的 ipv6 防火墙端口直接全放了,反正我就自己一个人用,也不对外,不用若密码就完了,再说你个人有啥隐私值得人家费劲进去折腾一下。我目前主路由对外,NAS 对外,家里的电脑开起来,自动更新域名的 V6 地址,有需要远程桌面直接就连上了。用的很舒服,再说现在家宽对外那怕是自己用也会被查的。
    LnTrx
        16
    LnTrx  
       342 天前   1
    1. 先确保 cf 仅作 dns 解析情况的正确性。
    本地执行 nslookup 域名,确认结果是你的 IPv6 地址而不是 cf 。
    然后在非家庭网络分别测试 http://域名:端口,http://[IPv6]:端口 是否可以访问。
    如果还是有区别再做进一步判断。

    2. 确认 cf 反代的加密模式,Flexible 模式可能会 80 回源。

    如果需要挂 cf ,推荐 CloudFlare Tunnel ,没有公网也可以用,比常规回源方便很多。
    kingloong
        17
    kingloong  
       342 天前 via Android   1
    op 系统可以直接改 web 服务端口的,不想改就设置防火墙转发,外部访问 A 端口,路由直接把数据包给内部 B 端口也就是 80 端口。第 1 个问题应该是你防火墙规则不对,你说的第 2 个问题,op 系统的 80 ,443 默认全开的,你用 http 就走 80 ,https 就 443 ,不需要你操作啥。第 3 个问题,我的 VPS 是双栈的,但是开了也回不去,再说也没有开着代理回家的需求,没深入研究过,我估摸着开代理回不去大概率是 app 规则设置不对。CF 的代理确实只对部分端口有效,像你用的 2053 ,2096 啥的。去小破站多看看,视频大把
    crazyBlack
        18
    crazyBlack  
    OP
       342 天前
    yufeng0681 啊感谢,明知是 https 流量还转发到 80 端口确实是我思想滑坡了,方案 1 确实生效了,方案 2 我尝试了把 https 流量转发到 443 但是被 nginx 拦下来了,报了个 403 但是看起来至少请求进来了,我仔研究下,感谢各位
    crazyBlack
        19
    crazyBlack  
    OP
       342 天前
    @kingloong 感谢,你的回答是最专业的,我也反应过来了,确实不该把 https 流量转发到 80 ,ban 掉 cf 的 https 就起效了, 然后 op 也确实是对 80 和 443 两个全开,surge 是小问题我再研究研究
    muhahaha
        20
    muhahaha  
       342 天前   1
    用的 openwrt ?建议用 lucky 实现所需功能。
    SenLief
        21
    SenLief  
       341 天前   1
    不要用 cf 的 https ,直接在动态 ddns 把 ipv6 地址更新就可以,如果非要用 https 可以在 openwrt 上配置。

    如果你想用一个域名不同的端口来访问不同的服务,最好的办法是利用反代,比如 nginx 或者 caddy ,你有 80 推荐 caddy 。
    poteken
        22
    poteken  
       327 天前 via iPhone
    @muhahaha 不建议用非开源的 lucky ,可以试试 Nginx proxy manager.
    muhahaha
        23
    muhahaha  
       327 天前
    @poteken 这俩实现的功能不同
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2301 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    Word is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 00:56 PVG 08:56 LAX 16:56 JFK 19:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86