应对家宽 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 似乎也还不够完善。

14907 次点击
所在节点    宽带症候群
65 条回复
xenme
2020-01-04 17:43:00 +08:00
VPN 或者跟翻滚墙一样,开个端口搭建个你客户端支持的服务,然后加一条规则,你家里的 IP 段走对应的服务器就好了。

反正你哥哥电脑必然有你出墙的客户端。
再加上 ssid 或者网络判断规则,即使你回家了,也可以直联。


目前就该这样全自动的使用的
LnTrx
2020-01-04 17:47:28 +08:00
@des 理论上监控 DNS 解析的情况,也可以发现未备案的境外域名-境内 IP 关系。不过如果没有 http 服务,应该还没有被干预的案例。
cwek
2020-01-04 17:57:47 +08:00
简单的做法,装一个绳子,对外端口只开绳子的,所有服务当内网使用。
LnTrx
2020-01-04 18:02:57 +08:00
@soulzz 其实现在非标准端口的纯 https、纯 IPv6 公网网页还都未见被干预的案例,但技术上发现难度应该不大。(毕竟 TLS 的 ESNI 还不是很成熟)
brMu
2020-01-04 18:16:10 +08:00
ZeroTier,轻松搞定。
des
2020-01-04 18:42:41 +08:00
@talarax7
解析情况确实有可能,但是我觉得凭这个就把人封了
真要是这样,我就能让全国人民都上不了网
des
2020-01-04 18:51:12 +08:00
@talarax7 我这里没有,要是端口都要封的话,那就只能转发或者打洞了
Archeb
2020-01-04 19:27:43 +08:00
@talarax7 summetric nat 应该就不行了

目前主要用在 im 视频通话里面,提供 web 我还没见过

不过理论可行 改天有空我造个轮子试试
Archeb
2020-01-04 19:28:30 +08:00
@Archeb *symmetric
cst4you
2020-01-04 19:43:09 +08:00
zerotier 目前还是香
fetich
2020-01-04 21:17:50 +08:00
@brMu
@cst4you 两位老哥,想咨询下 ZeroTier 使用中遇到的问题,谢谢。
部署 ZeroTier 在路由器后的设备上,需要在路由器设置端口转发的规则么?
如果两个内网的设备通过 ZeroTier 连接,可以访问对方内网中的其他设备么?可以的话,如何设置?
133qaz
2020-01-04 23:59:57 +08:00
zerotier 路由器模式有点难以理解,只把 zerotier 部署在 omv 系统中。就目前使用来说,跨营运商高峰期 ping 值过大和丢失严重;速度还可以。移动 to 电信 https://s2.ax1x.com/2020/01/04/l0Lhc9.png
133qaz
2020-01-05 00:09:19 +08:00
@fetich 看介绍是软交换机模式,不需要做端口转发。
alphatoad
2020-01-05 02:01:30 +08:00
ddns 不能用,有没开 web 被搞的 report
wazon
2020-01-05 02:21:24 +08:00
@des
@ccc008
@alphatoad
确实存在没有开 http 域名解析也被提醒的案例(/t/632414 ),但感觉有点奇怪。不是很理解发现的机制是什么,以及如何排除被未知人士恶意解析的情况。
alphatoad
2020-01-05 02:51:21 +08:00
@wazon 布隆过滤器就好了技术上没难度,国内都是有 dpi 的
cst4you
2020-01-05 05:49:17 +08:00
@fetich zt 有些创建出来的 network 就被限速甚至连不上, 重新创建直到打通即可.
我自己只试过上海同市同运营商(电信), 内网直通跑满所有可以用的带宽.
在日本玩, 用 surface pro 连回去上海, 也还勉强可以用.
moon 的话可以尝试自己创建, 但是我在自己的 moon 上也没检测过中转流量在走, 可能我是打通了的关系吧
z7356995
2020-01-05 08:32:42 +08:00
有个服务器的话还是比较简单的,,家里 nas 每隔 5 分钟访问一下股务器报一下 ip, 服务器在根据 ip 生成网址导航页就可以了
xl224
2020-01-05 08:48:45 +08:00
我家目前的方案
1.阿里云一台轻量,然后部署 pptp 打隧道,家里反向链接到阿里云
2.阿里云配置路由把家里内网映射过去,直接配置转发规则
3.阿里云做域名备案
Liuman
2020-01-05 10:06:10 +08:00
我是买的 蜗牛 nas 和阿里云域名,nas 装了虚拟机 ,自己写的 nodejs 服务(开机自启) 10 秒获取一次公网 ip,然后判断是否 变更,如果变更了 ,那么调用 阿里云解析接口,自动修改域名解析的 ip 地址

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

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

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

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

© 2021 V2EX