关于 "家宽不允许开设 Web 服务" 限制的一些解读

6 天前
 MaverickPLS

TL;DR: 为避免不必要的麻烦,请不要在家宽的任何端口直接暴露 HTTP(S) 服务;请使用 Tailscale / ZeroTier 。


最近看到有些朋友因为使用家宽 v4 / v6 在高端口开 HTTP(S) 服务被运营商掐网,要求签保证书不允许架设网站。

本次以我和广东移动客户经理沟通的内容为基础,简单解读一下该限制到底是如何被执行的。

叠个甲,这些内容可能并不适用于其它省份和 / 或其它运营商,也仅仅是个人意见,仅供参考。本文也并不涉及 BT / PT / PCDN 相关,仅讨论 "架设 Web 服务" 这一行为。


首先上一张截取自广东移动政企 "互联网 ICP 备案需要的资料说明" 的,现时常见需备和不需备案的情况:

这张图里有些术语并没有清晰给出解释,因此以下的内容是根据我和客户经理讨论过后的扩充和规范化解释。

总结来说,对于服务器任意端口发送 HTTP(S) 请求,能获得表示服务器已完成响应的返回码的情况,那么就需要备案。

用大白话讲就是,只要使用浏览器 + HTTP(S) 协议请求该 IP / 域名的任意端口,能获得任意并非浏览器自带错误页面的返回码,那么就需要备案;其余情况则不需要备案。

详细解释:

因此,如果以 "只是暴露路由器面板 / 个人网盘" 等理由尝试去绕过该限制的话,最后的结果大概率还是吃封停。

同时,对于 HTTP(S) 以外的协议,广移方面则几乎不予理会。


补充解释:

备注中的 "不需备案情况申请端口开通,需客提供不涉及网页或网站建设承诺书":这个很难办下来,就算批下来也会监控 HTTP(S) 入站使用情况,不建议钻这个空子。

对于基于 UDP 的 QUIC HTTP/3 ,指南中并没有详细说明,实际上广移政企也没有限制 80 / 443 等端口的 UDP 入站。使用 UDP 入站代替理论上可行,然而考虑到实际使用中 HTTP/3 无法脱离传统的基于 TCP 的协议运行,实际配置成本较高,且可能并不稳定。


个人的一些小想法:

假设你需要从外部公网环境访问家中的内容的话,哪怕没有对于建站方面的限制,直接将内部的服务暴露在外部网络都是有很高风险的。既然已经有一个可以直接暴露在公网的端口了,为什么不考虑下异地组网的方案呢?


(其它想到再补充……)

4937 次点击
所在节点    宽带症候群
49 条回复
mooyo
6 天前
是的,实践中也是,只管 http/https 协议,其他的基本不管
xqzr
6 天前
> 获得任意并非浏览器自带错误页面

返回 4xx 、5xx ,没有 body 也可以得到浏览器自带 4xx/5xx 错误页面

> HTTP/3 无法脱离传统的基于 TCP 的协议运行

DNS HTTPS 记录类型; curl --http3-only
datocp
5 天前
网安的观点非常简单,
不作为,
不要因为方便了别人,
麻烦了他们。
给我停。

说白了就是政 zi 问题。
出问题就要找背锅的。
bluetree2039
5 天前
webdav 是 web 吗?
lovelylain
5 天前
@bluetree2039 是的,webdav 是在 web 上传输的 xml
lns103
5 天前
一个想法,如果把网站的根目录“/”不做任何返回,是不是能规避这个检测
levelworm
5 天前
@mooyo 突然想到 Gopher 协议。。。
kaiveyoung
5 天前
@levelworm 根目录直接 sleep 86400 ,好的,现在就实践
zhleonix
5 天前
自己搞个 VPN tunnel
esrkforward
5 天前
所以,在外部网络,通过 VPS 上部署的 FRP 来访问家宽端口上的 http/https 有风险吗?
slowmist
5 天前
宽带是实名的 为什么要备案😆
bluetree2039
5 天前
把 家宽当做 frp 服务端应该没问题吧
strobber16
5 天前
可以通过 https 记录让浏览器在不访问 tcp 的情况下直接连接 h3 。麻烦的是 chrome 只允许 https 记录指定 443 端口的 h3 。我因为这个原因切换到了基于 ff 的 zen
kevinhwang
5 天前
被发警告的 v 友说一下自己当时的情况吧
RheatiN
5 天前
@slowmist #11 俺的域名也实名了,为什么还要备案😂
PhpBB
5 天前
这两年家宽受到的鞭挞真的给我一种活在申奥前的感觉
昨天备份了 3 个 G 的文件到网盘,上传速度限死了 64KB,传了十多个小时

iperf 连下载都限制,反馈几次,打死不承认

20 块的宽带你说亏本了,可我这接近 300 的宽带,有必要这样吗
baobao1270
5 天前
按照 MIIT 的规定来讲,其实不管是不是 80/443 ,只要网站是「公开」的,那就需要备案;相反用于 API 、需要登录的内部系统等,如果纯按 MIIT 的说法是不需要备案的

但是实操上区分是不是「公开网站」太麻烦,所以大多数采用屏蔽 80/443/HTTP 协议特征等「一刀切」的方法,就比如楼主给的这张图里的规则。

楼主的建议是对的,技术上讲了解运营商的限制方式、作针对性的规避即可。从安全角度上说使用 WireGuard 或者其他内网穿透服务是最佳实践;技术上讲 port knocking 、高位端口的 SSL 双向验证等方式,也是可以的,但是安全性上存在一定的瑕疵。
baobao1270
5 天前
顺带一提,主流的这些组网软件都是基于 UDP 的,而主流的应用都是基于 TCP 的,走这些组网软件其实是存在 MTU/MSS 对性能的影响的。当然考虑大多数人 <100Mbps 的上行带宽其实并没有到需要优化 MTU/MSS 的地步。
MFWT
5 天前
> 发送 HTTP(S) 请求到任意端口,返回 2xx / 3xx / 4xx / 5xx -> 需要备案

我一直担心的一件事是,比如说,OpenConnect 这种基于 HTTPS (或者说需要 HTTPS 协商)的 VPN ,似乎也不能用了?
MaverickPLS
5 天前
@xqzr 没有 Body 的 4xx 5xx 这点确实是我没讲清楚。正文所述 "浏览器自带错误页面" 其实想指代的是服务端没有返回任何有效 HTTP Status Code 的情况。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/1129251

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX