关于家庭 ipv6 网络的“裸奔”问题之我见

2022-08-26 22:55:29 +08:00
 Licsber

关于最近看到的 ipv6 裸奔帖子:
https://v2ex.com/t/875489
https://v2ex.com/t/875570
https://v2ex.com/t/875608

受制于南京电信不给公网 v4
我其实很早就注意到了这个问题
(其实是 nat4 技术隐藏了在 v4 下的同样问题
在一些群里和群友讨论的结论无非如下:

  1. ipv6 地址空间广大 很难扫
  2. 终端应当自行具备“防火墙”功能

我反驳的理由如下:

  1. 根据域名的 ddns 记录 很容易知道一个有效 v6 地址前缀
  2. 根据有状态的 DHCPv6 服务 很容易遍历整个子网
  3. 如 240e:xxxx:xx:1, :2, :3 其实很有规律
  4. 还没见过物联网等设备有配置 v6 防火墙的
  5. 就连我的 UNRAID 都没有配置自己防火墙的图形化界面

因此得出的结论是最好关闭 ipv6 或者仅开启 SLAAC 来增加安全系数
(仅开启 SLAAC 也是谷歌对安卓系统的坚持
不过想想也是不现实的 当时我的需求很简单 背景如下:

  1. 家里最需要 v6 的是一个 PT 下载机(无公网 v4
  2. 下载机是 UNRAID 系统 不具备自己的防火墙功能(求支持
  3. 进行 PT 下载的时候会主动送出自己的 v6 地址( bt 原理限制
  4. 这个 ip 地址往往有着一堆服务(有意无意的 很常见
  5. smb 服务暴露在公网很不安全(共识
  6. 因此我绝不能暴露这个 NAS 的公网 v6 (结论
  7. 独立给下载容器桥接网络可以缓解暴露宿主机的问题(不长久

又由于我的网络拓扑沿用了我在学校实验室的架构:(懒
爱快作主路由 OP 作旁路由 选用理由也很简单:

  1. OP 的 mwan3 对于多拨同时带 32 路的情况很吃力(别笑 真的需要
  2. 需要爱快的多线多拨功能来负载均衡不同运营商和校园内外网
  3. 多人使用 需要一定的审计功能 比如 qq 终端登录记录
  4. 两套 DHCP 网段 分别给需要科学的设备和不需要科学的
  5. 对这两套网段的用户单独统计流量 合租按流量分配付费

但是爱快在 2022 年 8 月 对于 ipv6 的支持还是一坨屎
它没有防火墙对 v6 的配置就算了
还没有办法从爱快的 v6 地址某端口 转发到 内网 v4 某端口
ddns 还只能解析自己的 v6 或者有状态客户端的 v6
无状态没办法从爱快拿到下面客户端的 v6
而有状态无防火墙的 v6 用 ddns 解析出去非常危险(相当于舍弃 v6 的海量地址空间
也就是说 用爱快最好有公网 v4 不然就别用
得出结论之后我人就傻了 搞了好多折衷的手段都不爽

但是最近上班太闲 就有了折腾的想法(吃得太饱
决定把一切都掌握在自己手中 直面复杂度
决定自己编译一套 openwrt 固件 从 lede 开始定制
背景其实很简单:

  1. 主路由 J4125 四口 2.5G 软路由
  2. 自己 3900x 的主力机用了很久 pve 已经熟练了
  3. 所以在历史惯性下 不用 esxi 还是使用 pve
  4. 也是为了稍微不浪费 J4125 的性能 不裸装 OP
  5. 家里 2.5G 设备越来越多 新购置了 2.5G 交换机
  6. 家里同时有电信移动的千兆宽带 不利用浪费

需求其实也很简单:

  1. 必须的 v6 防火墙 不相信终端自身安全
  2. 支持基础的 Docker 功能 pull run
  3. 科学( HelloWorld )/去广告( AdguardHome )
  4. ddns 需要支持 cloudflare-v4
  5. 需要 kms 服务端功能 激活本地设备
  6. 需要 AirPlay2 功能
  7. ovpn 客户端用于异地组网(徐州
  8. ovpn 服务端用于在外访问( v6
  9. 命令行带 iperf3/python3 跑些简单脚本
  10. 多拨 /负载均衡 根据 ipset 分流

然后就是部署和配置了
最终是仅用 OP 来做路由
采用 OP 阻断了全部的 v6 传入连接
以实现内网安全
有需求被外网访问的 v6 客户端手动在 op 放行即可

附图 1: 目前的主路由网络接口情况( 2.5G 跑满)

附图 2: 家庭整体网络拓扑

所以 我家网速真的很快(?听起来怪怪的

折腾可以互相交流(某绿):TGljc2JlcjIwMDA=
今年 10 月份有效 之后就修改成其他的了

10195 次点击
所在节点    宽带症候群
54 条回复
mikewang
2022-08-26 23:05:54 +08:00
在主交换机或者路由器处开防火墙,不建议每台设备用自己的防火墙,不靠谱的。
我防火墙 v6 只放行了主服务器的传入,其他都禁的。
heiher
2022-08-26 23:11:13 +08:00
我这路由都是 openwrt ,默认的防火墙就是阻止内网终端 ipv6 主动入站的,有需要按终端放通,配置基于 EUI-64 的地址匹配规则才行。

光猫路由模式也难做呀,内部终端分配的 ipv6 是公网,有人需要放通,为此不惜折腾桥接,有人要阻断,要安全。
Licsber
2022-08-26 23:15:03 +08:00
@mikewang #1 是的 然而现在很多猫直接给的 v6 就是裸奔的
还有人教怎么关闭猫的“ipv6 session 保护” 不科普危害简直离谱
市面上大约一半支持 v6 的硬路由默认阻止所有传入连接
(实测华硕的带这个功能 京东云出的路由器往下分 v6 也是裸奔
其余的么 只要服务商使坏 获取所有访问他的 v6 或者通过 bt 网络拿 v6
很容易就挑选 遍历全网的脆弱 v6 终端 加之 NAS 的普及
通过以上方法拿到的下载机地址大概率开了 smb 等高危服务 后果不堪设想
Licsber
2022-08-26 23:17:58 +08:00
@heiher #2 +1 和你方案相同 要有人多做这方面的科普
得跟小白讲清楚这些基础的网络安全知识 不然真的都不安全

hhhh 对于运营商来说确实难做 默认设置怎么都要得罪一部分用户
而且这种高级选项也不适合出现在基础设置里 我认为还是把用户当傻子最好
默认全部阻断 需要的自己折腾桥接 让猫就做猫 光电转换就完事
Bingchunmoli
2022-08-26 23:54:22 +08:00
我的需求是公网方便访问 nas 数据,为了 smb 能访问就放开了 v6 所有防火墙ʘ‿ʘ
lovelylain
2022-08-27 00:07:01 +08:00
看前面还好奇我用 openwrt 有 v6
lovelylain
2022-08-27 00:07:32 +08:00
看前面还好奇我用 openwrt 默认有 v6 防火墙阻止传入连接,怎么会是
Kunmona
2022-08-27 00:11:05 +08:00
ip6tables 也有反向掩码的方法去匹配后 64bit ,从而达到放行某个接口的某个端口,当然 openwrt 也可以通过 web 页面配置
ltkun
2022-08-27 02:07:00 +08:00
家庭用户几天断一次 ipv6 扫描成本太高了 我的 pt 机两条一台在 docker 一台在 lxc 家里就一个 pve 的 all in one 别说 ipv6 开着 ddns 也开着 不过前提是要能猜到我的域名 估计不大可能注册了一堆域名套 cf 自己都记不全哈
szdosar
2022-08-27 06:35:56 +08:00
打字连标点都省,费眼神
jtshs256
2022-08-27 08:41:23 +08:00
每到这种时候就可以顺便喷一下 ROS 的 v6 防火墙规则里不能匹配后缀,按端口一放就是一大堆设备
sdk234
2022-08-27 09:10:54 +08:00
但是用 openwrt 你就不能再进行审计了吧?
Licsber
2022-08-27 09:46:21 +08:00
@Bingchunmoli #5 把 smb 等高危服务直接暴露公网很危险 尽量别这么干 很容易中招
@jobmailcn #7 是的 OP 防火墙策略默认就是阻止所有 wan 传入 这样很安全
@Kunmona #8 很多客户端不具有 ip6tables 的可配置功能 还是依赖家庭网关统一防火墙
@ltkun #9 你没理解本帖 家庭宽带几天变 ip 但你只要 bt 在线就不需要扫描成本 你主动告诉 Tracker 了
换句话说 只要知道你的 v6 前缀 再加上你开了有状态 DHCPv6 只要扫几种常见路由器发的段即可
还有一种安全的方法依赖于终端安全 即监听端口的同时还监听特定域名 那种不在本帖讨论范围内
@szdosar #10 每行都是单独的一句话 而且按照段落组织了 可以试试打开阅读器模式观看
@jtshs256 #11 hhhh 实测华硕路由器也是这种配置方法 好像配一下之后所有 v6 的该端口都会开 迷惑
@sdk234 #12 是呀 帖中也说了这是在学校多人使用的需求 现在上班在家只需要考虑我的需求了
hcwhan
2022-08-27 09:59:15 +08:00
我觉得 在 ipv6 下应该使用白名单模式
在路由器中 只放行 虚拟局域网软件(Zerotier tailscale 等) 和 pt 下载类容器 的入站请求
在外部环境下 通过虚拟局域网 访问家庭内部服务
hcwhan
2022-08-27 10:02:03 +08:00
@hcwhan 一般通过 docker 跑 虚拟局域网软件 和 pt 下载类容器 各自使用独立 IP 不和其他服务跑在一个 ip 上
totoro625
2022-08-27 10:58:58 +08:00
我的路由器默认拒绝 ipv6 入站,为此我特意把群晖接在了运营商光猫下面,这样才能方便用 ipv6 入站

普通人所以只要不玩 PT/BT 下载基本就很安全了

域名的 DDNS 可以弄个垃圾域名塞了一堆垃圾解析进去,自己的 DDNS 弄个复杂前缀隐藏在一堆垃圾里面
然后自建 AdGuard Home 设置仅接受来自这些客户端的请求
弄个 DNS 重写到自己的 DDNS ,比如不用的百度,ddns.baidu.com 指向自己家
bytesfold
2022-08-27 11:39:40 +08:00
openwrt 不是默认阻断吗,我还放行了一部分
Licsber
2022-08-27 12:20:31 +08:00
@hcwhan #14 ipv6 下就应该是白名单模式 万物互联是不可能的 起码在终端安全很难保证的时候
本帖就是推荐这样的做法 仅开放网关的少量接口入站 尽可能使用虚拟局域网软件连回内网

关于通过 docker 跑的独立容器确实会拿到独立的 v6 可是现有软件系统仍然对此兼容性不好
截止今天 2022 年 8 月 27 日 流行 NAS 系统 UNRAID 最新版 6.10.3 下

docker 服务仅在 host 模式下可以同时利用宿主机的所有网络接口 这会暴露宿主机 ip
在 bridge 模式下 仅可选择一个 br 接口 也就是说多路宽带没办法在客户端合理利用

同时 对于 2.5G 的 8125B 网卡来说 最新系统带的驱动还有问题 论坛已经有两篇报道
表现为开启网卡的桥接模式后 出方向可以 2.4G 入方向只有 1.1G 附近带宽
因此最好的 NAS 直接跑 PT 下载机的方案居然是把物理网卡直通给 QBit (笑死

商用的收费 UNRAID 系统都如此 其他开源的还有国产杂牌设备简直不敢想 完全没在意过终端安全

@totoro625 #16 普通人不玩 PT 和 BT 确实会安全很多 但是不排除服务商作恶
或者某些作者在自己博客里加点料 对访问的所有 ip 反向扫一遍 不过能开浏览器的设备一般都安全
域名的解析杂乱确实构成了一定的安全屏障 这方面也是进一步攻击研究的点(真实地址按周期变化

后面这一步就很安全了 在 dns 上设置重写 不过有的运营商检测到 dns 会封宽带 还需要 DoH DoT

@bytesfold #17 在本站应该用 OP 的人占大多数 所以不乱搞都是安全的 可是家用的其他路由器不是
duke807
2022-08-27 13:38:47 +08:00
大家用的手機都是直接暴露在公網上的
Bingchunmoli
2022-08-27 16:24:09 +08:00
@Licsber windows 比较方便的文件共享只能 SMB

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

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

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

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

© 2021 V2EX