关于家庭 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 月份有效 之后就修改成其他的了

11705 次点击
所在节点    宽带症候群
54 条回复
Licsber
2022-08-27 17:55:30 +08:00
@duke807 #19 不是的 手机接入的 v6 都有防火墙 都是不允许传入的 所以相对安全
@Bingchunmoli #20 大胆点 方便的文件共享只有 SMB 和 WebDAV 两个 但是最佳实践是暴露组网服务
即暴露 zerotier ovpn 之类的东西在外 其他均通过这里面走 安全系数会提升很多
Bingchunmoli
2022-08-27 17:59:20 +08:00
@Licsber webdev 需要额外客户端,稳定性也稍差(听说),zerotier 的话就不需要 ipv6 了
LnTrx
2022-08-27 21:21:01 +08:00
可以参考稍早前的讨论: https://tanronggui.xyz/t/833550
LnTrx
2022-08-27 21:37:18 +08:00
对于楼主的场景,如果 smb 服务和 PT 下载走不同的 SLAAC IPv6 是不是就可以了?这个是容易实现的。
YAFEIML
2022-08-27 22:26:56 +08:00
openwrt ipv6 全裸奔,能黑了 windows server 和 openwrt 那我也没办法
deorth
2022-08-28 00:30:31 +08:00
广州电信 v6 每半小时强制重拨一次。v4 是 5 天
qbqbqbqb
2022-08-28 01:55:32 +08:00
玩 BT/PT ,无需单独设置防火墙,保持默认的防火墙阻断传入即可。

基于 libutp 这个库的开源 BT 软件(比如说 qBittorrent )很多都支持 UDP 打洞,IPv6 不存在 IPv4 的 Symmetric NAT 的问题,打洞几乎是必然成功的,完全没必要防火墙放行端口。

除非你用比特彗星这个垃圾软件(旧版本不支持打洞)。
Licsber
2022-08-28 05:17:49 +08:00
@Bingchunmoli #22 是的 其实我们不是需要 ipv6 而只是需要“可达性”而已 这种可达性应该是白名单制的
@LnTrx #23 安全与便利是矛盾 考虑大部分互联网用户其实是小白 我观点和你相反 应该默认阻止所有入站
@LnTrx #24 想一下 v4 上有没有很多暴露的 smb 服务 就明白为啥不能冒 v6 这样的风险了 不能假设协议安全
我在这个月前和你说的做法完全一样 然后发现了不能开有状态 DHCPv6 市面上一些路由器实现有安全问题
但是 仅开启无状态 DHCPv6 的话 在路由器又不好拿终端的 v6 地址做 DDNS 了 反而 DDNS 要终端自己来做
这不是脱裤子放屁么 两权相较 我选择不信任终端 毕竟信任终端意味着信任无数的开发者能做好权衡
总之 终端安全和协议安全都不能保证 那我不如回退到 v4 时代 采取现有做法 仅在网关配置 vpn/转发
@deorth #26 缩短 v6 变化的有效期其实是一定的安全手段 但只要在使用就有安全与隐私问题
@qbqbqbqb #27 嗯 我的看法和你一致 需要额外连通性的终端请自行打洞 不要依赖上级设备的配置
wwbfred
2022-08-28 10:00:34 +08:00
OPENWRT 的防火墙默认只开了 IPV6 的 ICMP 吧,UDP 和 TCP 都不会发到下面的设备上的。
Bingchunmoli
2022-08-28 12:34:11 +08:00
@Licsber ipv6 直连 smb 打开文件夹延迟比 zerotier 延迟低很多,反应差距还是有的
Techzero
2022-08-28 13:27:20 +08:00
OpenWRT 的防火墙,转发设为拒绝,然后在通信规则直接加规则就行了啊,内网需要映射的机器关闭隐私,即使用 EUI64 ,配置通信规则 到 IP 范围 ::e61d:2dff:fe61:85c4/0, 就可以针对单台机器配置放过的端口了
LnTrx
2022-08-28 13:53:00 +08:00
@Licsber 我原贴的意思是要有总开关。但对于非小白的家庭用户,更精细的防火墙控制目前还没有比较好的方案。如果有公网入站需求,在权衡利弊之后,SLAAC+全部放通也是一种可选项。
v4 暴露端口的风险很大程度上源自全网 IP 的扫射,这在 v6+SLAAC 下这变得很难。设置 DDNS 可让域名关联到 IPv6 ,但好像没有同样低成本的方法可以遍历各域名。虽然攻击的可能性仍然存在(如证书),但相比 v4 小很多。
既然觉得 DDNS 暴露在公网不安全,那么这种设备多数是使用者可控、可编程的。不一定要沿用 v4 的集中管理策略,每台机器甚至每个虚拟环境都可以有独立的 DDNS 。
UDP 打洞问题我在原贴有讨论。v6+防火墙的打洞比 NAT 要方便不少,但似乎需要没有防火墙的 peer 做中介,如果大家都开防火墙也许会有问题(特别是比较冷的种)。
个人认为 IPv6 下还是要强终端、弱网关。一方面,网关的 IP 是相对容易被探测发现的。如果承载路由、防火墙之外的太多东西,安全弱点造成的风险比终端更大。另一方面,移动互联网时代终端难免跨网移动。外部网关的安全性自己无法掌控,如果终端不加防范,那也会引狼入室再通过内网扩散。无数的开发者无法全部信任,他们既可以向防火墙申请暴露有弱点的端口,也可以不经防火墙自行打洞建立有弱点的 P2P 通信。如果真对安全有很高要求,那么终端的安全更要认真对待。
MNIST
2022-08-28 14:17:21 +08:00
@LnTrx 其实要我说,完全可以组两个 VLAN ,要公网访问的放在一个下发 ipv6 的 vlan 里,公网访问有危险或者不想让这个设备被公网访问的放在 dhcpv6 的 vlan 里,然后这个 vlan 的公网 ipv6 地址只端口映射 openvpn 的端口,这样就解决内网设备安全性不够的问题了
LnTrx
2022-08-28 14:49:02 +08:00
@MNIST 只放通部分 v6 访问的方案一直存在,只不过在实践中都比较麻烦。如果认为增加的麻烦复杂性值得上增加的安全性,符合自身需要就行。
hanguofu
2022-08-29 07:47:51 +08:00
我觉得这个 放通部分 v6 访问的方案 最大的问题是运营商 提供的光猫没有这个功能。要么就是全放通,要不就是全阻断。大家的光猫是这样的吗 ?
erfesq
2022-08-29 17:48:31 +08:00
光猫桥接,反正我的路由器不开 v6 ,只用 v4 ,群晖开 v6 设置强密码,远程回家用 openvpn
plasmetoz
2022-08-29 18:45:29 +08:00
我的话最外层路由是 pfsense,设置好规则就行。 而且我还加了个 suricata (虽然估计没啥用)
Licsber
2022-08-30 11:05:16 +08:00
@wwbfred #29 本站基本上都是 OpenWRT 用户 哪怕不是 也有基本的防火墙意识 但对小白来说就不一定了
特别是在一些路由器厂商没做 /弱化这类选项的时候 就造成了连上来的所有终端都在 v6“裸奔”的问题
比如我碰到的路由器一大半全部放开 v6 开关也不够灵活 甚至于还有“科技博主”教怎么关防火墙访问 NAS
当然 如果终端可以做到可信的认证 只监听必要端口 不留后门 不支持有状态 DHCPv6 那还是很安全的(
@Bingchunmoli #30 感觉延时问题应该出自 Zerotier 上 试试其他方式回来 比如自建 OpenVPN
@Techzero #31 用了 OP 的基本都会防火墙配置 不管是 v4 还是 v6 但还会碰到光猫那端的问题
比如前面提到的 电信和联通的光猫路由模式下在网关就阻断 v6 传入 移动的光猫在路由模式默认放通
而改桥接 由自己负责防火墙 又会碰到现在的 iPOE 改造等各种问题 最近 v2 上井喷的帖子都是互相关联的
@LnTrx #32 是的 全放通和有状态 DHCPv6 不能并存 之外考虑针对特定个人的域名攻击 DDNS 可找前缀
所以我的观点反而是有状态 DHCPv6 应当仅限于 NAT6 的情况使用 或者有合理防火墙策略的时候使用
“每台机器甚至每个虚拟环境都可以有独立的 DDNS” 不太可行 物联网终端还没见过支持 DDNS 的
这就是提到的另一个问题 如果无状态 在常作 DDNS 的网关反而是看不到终端的 v6 的 仍然待解决
对于 UDP 打洞( BT 下载类)需求 最好是全阻断+依赖特定终端去向网关申请 UPnP 来的更实在点
“终端的安全更要认真对待” 很赞同 但是防不胜防 现状只能说是都不值得信任 还是自己挨个检查
@MNIST #33 VLAN 方案就更复杂了 哪怕玩 OP 的估计都没几个人会去搞清楚 tagged/untagged 的区别
@hanguofu #35 路由模式的光猫 真的就是这样 所以最好改桥接 自己做防火墙 不能期待不可控的外部
@erfesq #36 差不多同方案 我是白威联通异地 v4 只映射了网页端口 开了 2FA 远程回家用 OVPN
@plasmetoz #37 家用你这套方案过于先进了 哈哈 本站回帖的安全意识都很棒 应该是都有研究了
Bingchunmoli
2022-08-30 12:24:13 +08:00
OpenWRT 规则我也看不懂,开放了但是连不上,就都开了。v6 SMB 直连很快而且速度也很高,如果用 Zerotier 即使 nas 有 V6 可以直连的情况下,延迟和速度都要差些, 还有就是 OpenWrt 的端口配置,有的是一个 wan 同时 ipv4 和 v6 有的是分成两个 wan 我也不理解
LnTrx
2022-08-30 14:06:54 +08:00
@Licsber 想问一下物联网设备需要 DDNS 的场景是什么?如果是品牌商的物联网设备,那设备间的相互发现应该不劳用户操心。如果是给 DIY 玩家又不可编程的设备,那公网访问能配 TLS 么?不能的话 DDNS 暴露应该不安全,或者要依赖其他设备强化安全才接触公网,抑或是该设备的安全本来也不重要。
IPv6 打破了原来“内网”的安全边界,让每个设备都可被公网连接,恰好可以促使各种联网设备朝“零信任”的方向发展。个人认为,把所有设备一视同仁当作外网设备进行验证和授权是未来的发展趋势,需要公网连入、有安全需求但又缺乏安全机制的设备在 IPv6 下则有点不好处理。

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

https://tanronggui.xyz/t/875719

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

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

© 2021 V2EX