应对家宽 Web 的收紧,讨论一下在外网控制家庭设备的方案

2020-01-04 15:16:49 +08:00
 LnTrx

在外网控制家庭设备,是一种正常合理的需求。由于可以避免中心服务器的故障和延迟,现代前端技术的发达、便捷,以及跨设备、跨系统兼容等优势,许多网络设备和应用都通过网页方式直接访问、控制。
可是,这样的模式最近面临了新的问题。过去家宽封禁了 80/443 端口,就算禁了 Web。而根据论坛网友的报告,现在似乎只要同时满足以下条件,就很可能会被“关照”:

  1. 上海 /深圳 电信的 家宽 /商宽 用户,且获得了公网 IPv4
  2. 存在任一解析结果指向该 IP 的域名(含子域名),且这对关系未经系统备案
  3. 用户的 IP 存在任意一个向外部开放的端口,且能给出符合 HTTP 特征的响应

随着法制观念的深入,如果规定合理,大家并不会排斥。然而想适应新的变化,目前还存在着不小的问题:

  1. 为避免域名解析,直接用 IP 访问。然而手动查询最新的 IP 地址十分麻烦,也很难实现可被浏览器信任的 HTTPS。(其实 IP 访问严格来讲也要备案)
  2. 为避免网页特征,通过 VPN 进入内网。然而 VPN 类解决方案往往需要安装和开启额外的客户端,为避免所有本地流量都走 VPN 还要进一步的配置,相比能跨设备、跨系统快捷访问的网页麻烦不少。(自建 VPN 也存在着合规的风险)
  3. 为避免合规风险,正式申请备案。这对于有固定 IP 的商宽是可行的。然而家宽是动态 IP,目前不存在合规可行的备案方式。

除了上述提到的几类解决方案,不知道是否还有其他便于 外网控制家庭设备 的思路?欢迎讨论


抛砖引玉一下,个人感觉不依赖域名解析的 IP 地址记录或许是一种解决方案。(不过还是有上述方案的影子)
这个方案包括以下部分:

当用户访问页面时,js 自动查询 IP 地址,然后跳转或在框架里显示网页,亦或者是直接用 jsproxy。
IP 地址在线记录的方式有很多。除了用免费的数据库服务,其实还可以写死在网页里,然后用一个自动化的更新 + git push 维护。

为了防止非用户主动访问 IP,可以用 js 实现类似 port knocking 的机制。这样直接访问网页端口可以做到无任何响应。
为了规避 http 特征,或许也可以进一步发展基于 js 的无客户端代理机制。(服务端在家庭的网络设备)

不过,跳转或框架显示似乎不太好解决 https,而目前 jsproxy 似乎也还不够完善。

14862 次点击
所在节点    宽带症候群
65 条回复
n37r06u3
2020-01-04 15:40:51 +08:00
群晖 nas 装个 windows 虚拟机最简单
Archeb
2020-01-04 15:55:25 +08:00
我觉得 port knocking 就足够了
成功之后就把当前 ip 加入白名单,然后正常访问就是
基于 js 的无客户端代理 可以试试用 webrtc 打洞,这样也不需要中转服务器只需要 stun 服务器
ZRS
2020-01-04 15:56:16 +08:00
nebula 这类组网方案其实比较理想
ETiV
2020-01-04 16:10:52 +08:00
Surge
手机电脑都能用
LnTrx
2020-01-04 16:31:11 +08:00
@n37r06u3 在能找到 IP 的情况下也算是一个折中的方案,不过非 Windows 环境下的客户端还是免不了,要调取文件也不是很方便。

@Archeb 即便有 port knocking,感觉保留 DDNS 解析还是有算作违规的可能。如果纯 IP 访问倒是可以用,而且可以交给公网可访问的带 js 的静态页面实现。

@ZRS 使人想起了像 IPFS 这样的非中心化网络
Mai1me
2020-01-04 16:33:33 +08:00
frp
vpn
explore365
2020-01-04 16:44:26 +08:00
悦 me 智能网关 设备型号 F450G 端口转发后,任何数据都不行
telnet 连接路由,把路由器的防火墙关了,可以连通,但是 http 的还是不行,估计是在电信上层设备的防火墙给拦截了吧
soulzz
2020-01-04 16:53:42 +08:00
非 443 htttps
配置一下 ngnix 就行
0gys
2020-01-04 17:02:55 +08:00
解决不了问题,解决搞出问题的人^_^
ccc008
2020-01-04 17:07:30 +08:00
@talarax7 #5 DDNS 解析应该没事。就算 DDNS 不行了。还可以主动上报 ip 到一个接口。方法总比困难多。
tia
2020-01-04 17:18:12 +08:00
Archeb
2020-01-04 17:22:43 +08:00
> (不知道有没有基于 js 实现的 P2P 模式 NAT 打洞)
就是基于 WebRTC DataChannel 的方式啊,比如说 PeerJS
abbottcn
2020-01-04 17:23:32 +08:00
@ZRS 这个方案,👍。处于可用状态,虽然没达到手册里说的场景。
Archeb
2020-01-04 17:23:49 +08:00
peerjs 可以运行在 node 上(服务器端),客户端只需要浏览器,然后用一个公网 stun 服务器打洞就可以直接建立连接
des
2020-01-04 17:29:29 +08:00
ddns+vpn 就行,ipsec psk 我现在就在用,各个设备都直接支持
有的路由器就有这个功能,不存在需要安装的情况
hlz0812
2020-01-04 17:32:45 +08:00
如果你是用于物联网设备,放心,今后物联网设备都是服务器中转,不需要公网 ip。如果是访问家里内部网络,用 vpn 连回去就行了,至少现在不管,哪天管了再说。现在运营商提供 APP 查询当前 ip 地址,不做 ddns 问题不大
LnTrx
2020-01-04 17:34:31 +08:00
@Archeb 感觉理论上具有一定可行性。(不过万一碰上 Symmetric NAT 能稳定么?)
现在有没有基于这个思路实现在网页中,通过 WebRTC 以 P2P 形式传输内网网页内容的案例?
LnTrx
2020-01-04 17:36:04 +08:00
@hlz0812 推广 IPv6 的原因之一就是避免物联网设备服务器中转带来的各种问题
des
2020-01-04 17:37:40 +08:00
还有 ddns 如果不选国内的,不太可能有人把互联网的所有域名都扫描一遍。
除非 ddns 的那个请求是 http 的,用 ddns 被警告 99%都不是 ddns 本身导致的
除非你用的 ddns 是国内厂商的,因为我也不清楚他们有没有上报
LnTrx
2020-01-04 17:38:38 +08:00
@des 部分地区 500、4500 端口也被封了,你的客户端能支持非标准端口么?

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

https://www.v2ex.com/t/635028

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

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

© 2021 V2EX