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

11708 次点击
所在节点    宽带症候群
54 条回复
Licsber
2022-08-30 16:07:43 +08:00
@Bingchunmoli #39 最好看看官方 wiki 开放 smb 在公网就用 slaac + 换一个非标端口是最好
端口配置 拨号的话 一般是 lan 侧显示 v6 wan 侧显示 v4 猫路由模式下是 DHCPv6 客户端 有一个 wan6
@LnTrx #40 终端不光指物联网设备 常见的 NAS 系统也算 现在群晖和威联通有官方 DDNS 对 ipv6 的支持吗
零信任是趋势 到时候应该会有一套成熟的信任标准 最主要的是现在发展的实在不尽如人意
标准是一回事 实现是另一回事 还有奇葩实现 当下只能针对所有的实现来编程
比如前面讨论的 NAT4444 就属于标准外的奇葩实现 这对那些“隐式依赖标准”的协议安全性是个打击
谁能想到七层的流量下来会被二三层的设备做分析呢
LnTrx
2022-08-30 18:22:51 +08:00
@Licsber 威联通不了解,群晖自己提供的 DDNS 是支持双栈的。想用自己的服务商,也有现成的 sh 脚本可以加入计划任务。更不用说 Docker 和 SSH 了。
Bingchunmoli
2022-08-30 20:46:25 +08:00
@Licsber windows 对于非标端口支持有问题,绝了
Licsber
2022-08-31 01:33:08 +08:00
@LnTrx #42 好久没用过群晖了 支持双栈那确实满足要求 就是不知道 https 证书是不是免费提供 威只有国外有 lets
Docker 体验还可以 SSH 只能说体验不甚满意 其实主要还是性能太差(扯远了 本帖主要讨论网络安全问题
不管怎么来看 目前的 v6 架构都太复杂了 不过想想 v4 的发展历程 也算合理 最绝的是还有各种翻译“黑话”
像什么端口映射翻译成虚拟服务器 还有小白搞不懂的 DMZ 主机 UPnP 服务 以为是我们故弄玄虚

如果不查手册 谁知道光猫网关里 v6 配置页面 的 O 和 M 的四种组合状态都是干啥的
更不用说 OP 里 路由通告 NDP 代理 路由模式 混合模式 中继模式 各种排列组合了
我们在这聊 SLAAC 然而各家路由器还有各自不同的叫法 有的就叫“按 PD 前缀下发”
甚至有状态 DHCPv6 一般也是不提供可配置项的 分下去就是固定格式
这些“由实现而定的约定俗成” 实在是拉低了整体的安全性
所以不论是网关安全还是终端安全都应该保持警惕 期待良莠不齐的开发者才是最不现实的
现阶段最好这样 也只能这样 很多人还沉浸在 NAT4 带来的“安全性”中 没准备好“万物互联”
个人倒是期望 IP 网络回归它本身的样子 会迎来 P2P 的春天 真正的开放共享

@Bingchunmoli #43 笑死 我还确实没了解过非标 smb 在 win 下的表现 平时都是 mac
xPKK1qofAr6RR09O
2022-08-31 16:02:08 +08:00
@jtshs256

:local port "bridge";
:local addresslist [/ipv6/address/find interface=$port global];
:local addressid [:pick $addresslist 0 1];
:local address [/ipv6/address/get number=$addressid value-name=address];
:local prefix [:pick $address 0 [:find $address "::/"]];


:local suffixs ("211:32ff:fe60:9c3e");


:local records [/ipv6/firewall/filter/find chain=forward dst-address];

:foreach recordid in=$records do={
:local dst [/ipv6/firewall/filter/get number=$recordid value-name=dst-address];

:foreach suffix in=$suffixs do={
:if ([:find $dst $suffix]>=0) do={
/ipv6/firewall/filter/set $recordid dst-address=($prefix . ":" . $suffix);
:put ($prefix . ":" . $suffix);
};
};
};
seputetto
2022-09-01 20:30:44 +08:00
https://imgur.com/a/s3U3wYs
在 OpenWrt 的防火墙通信规则中,对特定后缀的 IPv6 的特定端口进行放行。其余的默认防火墙规则会拒绝和丢弃
后缀写法
::<需要暴露的主机的后缀>/::ffff:ffff:ffff:ffff
这个应该同样适用于华硕的 IPv6 防火墙。这样可以匹配固定的后缀,而不用担心前缀会变更。
seputetto
2022-09-01 20:33:43 +08:00

贴错图片域名了,重新贴一下
mrzx
2022-09-02 13:25:38 +08:00
我老早家里就 IPV4 公网+ipv6 地址双栈了。

并且默认设置了一条访问控制规则。。。只能是 LAN 区域可以主动向 WAN 区域建立连接。不允许 WAN 向 LAN 区域主动建立连接,设定个方向封锁就行了


小白用户直接用傻瓜产品,无脑设定得了,跟他们讲那么多干嘛

看了下 UP 主的分析,我敢断定肯定不是做网络这行的。

你其实对网络也是一知半解,就自己折腾算啦,别误导小白。很多东西对小白说了也是白说
Mrs4s
2022-09-04 08:22:19 +08:00
其实 SMB 服务默认的 139+445 端口已经被国内运营商最大程度封锁了, 不仅像 80 一样无法接受传入连接, 甚至主动访问公网的相关端口也会被运营商直接掐断, 应该是被永恒之蓝干过一次之后加的规则
Licsber
2022-09-05 12:03:55 +08:00
@mrzx #48 “说了也是白说” 指不定小白乱搞给我们所有人带来不便 复杂不是不管的理由
你还是没看之前的回复 有些傻瓜产品默认全放开了 无脑的默认设定在各个厂商之间都不一样
@Mrs4s #49 目前 ipv6 的封锁很弱 别说 445 了 80 和 443 都可以通 我就是直接用的 443
fejich
2022-11-14 23:27:30 +08:00
根据恩山的贴子: https://www.right.com.cn/forum/thread-8255780-1-1.html

### 爱快物理机 当主路由 然后配合 OP 虚拟机 当梯子跟 ipv6 防火墙

ipv6 流量经过 OP 虚拟机 转发,实现了在 OP 虚拟机 配置 ipv6 的防火墙。
只暴露需要用到的几个端口到 ipv6 公网,大大加强了安全性。

目前发现的缺点是爱快的后台无法监控 ipv6 客户端 的流量,只能看到 vlan 流量

![爱快截图]( https://imgur.com/a/8q3M6Nq)
768952693
2023-02-22 02:18:14 +08:00
我唯一的需求和楼主不一样,不然就单独 ros 挂旁,或单独上 openwrt ,爱快唯一我觉得有用的,只有分流,我也是多线路,家里老人短视频,我走移动,游戏走电信,单独网桥切个 lan 给了需要 IPV6 的设备,只能说相对安全,这样局域网的设备不用都开启 IPV6 ,但是然并卵,如果 V6 的设备和 V4 做隔离就不方便,不做隔离又不安全,爱快感觉在 IPV6 这块没怎么折腾,感觉像极了专门的工程师跑路了的感觉。。。
microka
2023-10-22 08:25:38 +08:00
刚装上 OpenWrt ,之前用光猫做路由拨号以及爱快路由拨号都没太在意 IPv6 防火墙这事,现在认真考虑起来了。
openwrt 做主路由拨号,局域网内有 Windows 做 pt 下载,有 Linux/Android 设备
DHCPv6 已经关了(对 DHCPv6 有所抗拒),仅开启 SLAAC ,现在考虑怎么给 Windows qBittorrent 放行 IPv6 入站连接
①Windows 开启 EUI-64 生成 IPv6 地址后缀,关闭随机隐私后缀生成,这样就可以在 op 防火墙对 qBit 主机的 IPv6 后缀地址精准配置 IPv6 入站连接放行,但是这样会长期暴露 qBit 主机网卡的 MAC 地址。
②不改变 Windows 获取 IPv6 地址后缀方式,op 防火墙 Traffic Rules 对 qBit 连接端口(设定高端口,避免与局域网其他设备端口重复)的入站连接放行(不指定目标设备 IP ,因为没有固定 IPv6 后缀可匹配);
③无需额外设定,保持 op 防火墙对 IPv6 入站连接的默认拒绝,@qbqbqbqb #27 #28 提到 IPv6 打洞成功率很高,但 @LnTrx #32 也提到如果 v6 双方都有防火墙打洞可能会有问题。

不知道 @Licsber 有何建议?也想知道您目前采用的是什么方案?方便的话加个某绿(同 ID )交流下,谢谢~
Licsber
2023-10-27 10:32:29 +08:00
@microka #53 我目前是方案二 匹配入站流量 对特定一个高位端口放行 ipv6 其他方案实在维护起来麻烦

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

https://tanronggui.xyz/t/875719

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

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

© 2021 V2EX