需求是我希望在外面可以通过域名访问家中的服务器 下面是我做的事情
ipv6 已经准备好了,测试没问题,我可以正确的通过 ip 地址直接访问家中对应的服务(坐标上海移动,话说居然没封掉我的 80 端口,真是不可思议)
我的域名在 Cloudflare, 通过 openWrt 的 ddns-go 将 ipv6 动态绑定在我的域名上,赛博菩萨 Cludflare 还默认给了我 https 证书,在这一步我可以直接通过 https + 域名访问家中的路由器没有问题
我不太希望家里的服务裸奔,并且我不确定 80 端口是否一直都不会被封,所以我希望禁用掉 wan 口的入站数据,使用防火墙端口转发的方式仅开放部分我希望开放的端口,在这一步通过 ip 地址 + 端口号我可以正确的访问家中服务
问题出在这一步,我没办法通过域名 + 端口号的方式访问到我家中的服务(报错 SSL handshake failed )
问题:
为什么我没办法通过域名 + 端口号的方式访问家中服务
我的 openwrt 的管理界面理论上应该是在 80 端口上,Cloudflare 给我提供了 https 证书,那么讲道理应该会访问到我服务的 443 端口,在我什么都没做的情况下为什么还是能正确访问到 80 端口上的服务
手机端运行 surge 或者电脑端的 surge 开启 enhanced mode 似乎都会会影响我直接访问 ipv6 地址,这个有什么解决办法吗
我做的尝试: 我了解 Cloudflare 仅仅会代理部分端口 由于是 https 我特意将防火墙的对外端口设置为 2053 ,但是无论是开启代理还是关闭代理(黄云/灰云)都没办法通过域名 + 端口号访问服务 我在 itdog 使用 tcping 域名 + 端口是全绿的
不是专业的,搞了好几天搞不定,来请教一下大家
下面是各种配置的截图
![]() |
1
Yanel 5 天前 ![]() 端口转发是 V4 服务,而 CF 解析的是 V6
V6 我记得是不需要端口转发的 |
![]() |
2
ik 5 天前 via iPhone
ipv6 已经准备好了,测试没问题,我可以正确的通过 ip 地址直接访问家中对应的服务(坐标上海移动,话说居然没封掉我的 80 端口,真是不可思议)
是怎么测试的呢? 连 wifi 测试? 还是用蜂窝网络? 蜂窝网络是同一家运营商吗? 最好用海外 ipv6 测试试试 |
![]() |
3
crazyBlack OP @ik 服务在 80 上,我自己的手机用 5g 网络还有异地的朋友都是直接输 IP 不加端口号就能连上
|
![]() |
4
ik 5 天前 via iPhone
@crazyBlack 那看起来确实放通了,可能是#1 提到的问题
|
![]() |
5
ae 5 天前
我也在老家能直接输 ipv6 连上 openwrt 软路由,spaceship 注册的域名,前两天把域名 dns 改 CF ,刚开始可用,第二天早上起来就不行了,现在又改回 spaceship 的 dns 直接 CNAME 这个 ipv6 地址(反正这个地址装宽带到现在都没变过)
|
![]() |
6
crazyBlack OP @Yanel 抱歉,不是专业的这里没太看明白,这里说的端口转发是 v4 服务是指什么啊,如果我拒绝 wan 口入站数据的前提下,不开端口转发是没办法 ipv6 地址 + 端口号访问服务的,开了才能,下面这个是配置
![]( https://telegraph-image-92x.pages.dev/file/e35ae003198f6cc83814e-f1041d239ba6dfcf6c.png) |
![]() |
7
zfjdif 5 天前 ![]() 1. 你开启了代理,[Cloudflare 只支持部分端口]( https://developers.cloudflare.com/fundamentals/reference/network-ports/) ,流量都走 Cloudflare 代理了一次,域名+端口应该是无法访问
2. 同样是走了代理,Cloudflare 给套了反代 3. 不了解 “没办法通过域名 + 端口号访问服务”指的是 OpenWrt 的页面吗?如果不是的话,你只开了 2053 端口,肯定无法访问其他服务吧。 我本地是:PVE 开了台虚拟机专门跑 Nginx ,专门来转发内部服务,都走 Cloudflare 代理,使用二级域名 + HTTPS 访问。流量从 Cloudflare -> OpenWrt -> Nginx 虚拟机(你可以试试 OpenWrt 反代内部服务?) -> 内部其他服务。 |
![]() |
8
zfjdif 5 天前
@zfjdif 通过域名走 Cloudflare 代理的好处是:双栈访问,一些服务不需要有 IPv6 才能访问,一些 RDP 等的流量走 IPv6 或者 Zerotier 都可以
|
![]() |
9
crazyBlack OP @zfjdif 有什么解决办法吗,听上去关闭 cf 的代理就可以解决这个问题,但是我关闭代理 cf 仅作 dns 解析的情况下还是没办法访问到服务
这里只开 2053 是因为目前我只是想访问 80 端口的服务,所以我只开了 2053 -> 80 的端口转发 流量进来之后的事情我理解都可以再聊,现在好像流量还进不来呢哈哈 |
10
edcopclub 5 天前 via Android ![]() 浏览器到 cloudflare ,和 cloudflare 到路由器的 https 配置都可以检查一下
|
11
itiao 5 天前 via Android ![]() 有个 smbox,singbox+mosdns,也有回家服务,可以试试,免费的和收费的区别就是限制节点和机场订阅数量而已.
https://smbox.buzheteng.org/ https://t.me/buaizheteng |
12
Vancion 5 天前
我试了一下是不是防火墙规则里的目标区域是未指定?
如果改成 lan 然后指定特定设备的 ip 呢。 |
![]() |
13
zfjdif 5 天前
@crazyBlack 留个 wx 交流下哇,这里不太容易说清楚
|
![]() |
14
yufeng0681 5 天前 ![]() 方案 1 、把 https 证书功能去掉, 只需要 http 服务,那你只开启映射 80 就没问题
方案 2 、把内网 443 端口也开放出去,外网也是 443 ,内网也是 443. 这样 https 才能跑通( 80 重定向到 443 端口鉴权走 https 流程) |
15
kingloong 5 天前 via Android
常用端口肯定要封的,我之前也是运营商都放开的,用了几年,80 ,443 全开的,去年突然在外回不去了,到家一测试运营商升级把端口封了。我的 ipv6 防火墙端口直接全放了,反正我就自己一个人用,也不对外,不用若密码就完了,再说你个人有啥隐私值得人家费劲进去折腾一下。我目前主路由对外,NAS 对外,家里的电脑开起来,自动更新域名的 V6 地址,有需要远程桌面直接就连上了。用的很舒服,再说现在家宽对外那怕是自己用也会被查的。
|
![]() |
16
LnTrx 5 天前 ![]() 1. 先确保 cf 仅作 dns 解析情况的正确性。
本地执行 nslookup 域名,确认结果是你的 IPv6 地址而不是 cf 。 然后在非家庭网络分别测试 http://域名:端口,http://[IPv6]:端口 是否可以访问。 如果还是有区别再做进一步判断。 2. 确认 cf 反代的加密模式,Flexible 模式可能会 80 回源。 如果需要挂 cf ,推荐 CloudFlare Tunnel ,没有公网也可以用,比常规回源方便很多。 |
17
kingloong 5 天前 via Android ![]() op 系统可以直接改 web 服务端口的,不想改就设置防火墙转发,外部访问 A 端口,路由直接把数据包给内部 B 端口也就是 80 端口。第 1 个问题应该是你防火墙规则不对,你说的第 2 个问题,op 系统的 80 ,443 默认全开的,你用 http 就走 80 ,https 就 443 ,不需要你操作啥。第 3 个问题,我的 VPS 是双栈的,但是开了也回不去,再说也没有开着代理回家的需求,没深入研究过,我估摸着开代理回不去大概率是 app 规则设置不对。CF 的代理确实只对部分端口有效,像你用的 2053 ,2096 啥的。去小破站多看看,视频大把
|
![]() |
18
crazyBlack OP @yufeng0681 啊感谢🙏,明知是 https 流量还转发到 80 端口确实是我思想滑坡了,方案 1 确实生效了,方案 2 我尝试了把 https 流量转发到 443 但是被 nginx 拦下来了,报了个 403 但是看起来至少请求进来了,我仔研究下,感谢各位
|
![]() |
19
crazyBlack OP @kingloong 感谢,你的回答是最专业的,我也反应过来了,确实不该把 https 流量转发到 80 ,ban 掉 cf 的 https 就起效了, 然后 op 也确实是对 80 和 443 两个全开,surge 是小问题我再研究研究
|
![]() |
20
muhahaha 5 天前 ![]() 用的 openwrt ?建议用 lucky 实现所需功能。
|
![]() |
21
SenLief 4 天前 ![]() 不要用 cf 的 https ,直接在动态 ddns 把 ipv6 地址更新就可以,如果非要用 https 可以在 openwrt 上配置。
如果你想用一个域名不同的端口来访问不同的服务,最好的办法是利用反代,比如 nginx 或者 caddy ,你有 80 推荐 caddy 。 |