坑边闲话:细心的伙伴可能留意到,我删除了最近一期的视频。大家可能感到疑惑,毕竟标题非常炸裂,效果可以说是杀手级的。这里我解释一下。

1. 视频下架的原因·

  • 首先,这个视频里我的北邮人 ID 没有打码,违反了北邮人社区公约。其实主要是我懒,现在不像 2020 年初疫情在家那么闲,没时间对视频做剪辑,只能尽量用通俗易懂的话表达清楚,同时附上尽可能详尽的博客、视频描述。
  • 其次,虽然通过 ebtables-legacy 命令在以太网层次实现校园网 IPv6 接入很棒,而且我已经用了一周多了,效果非常稳定。但是,这里面存在安全隐患。这相当于把外网接到内网里来,而且是利用了 IPv6 + IPv4 双栈分离的特性,所以 OpenWrt 的防火墙是拦不住的,所有的基于转发的过滤规则都不起作用。这必然给骇客攻击留下了后门,毕竟 LAN Zone 是我们的后花园,允许另一个属性的生物自由出入,肯定不是个好事情。虽然我现在还不清楚有什么隐患,但是我知道这并不是 Best Practice.

主要是因为第二点,我下架了视频。

图 1. 可以看到,对于 IPv6 作用域,特别是频繁的 ICMPv6 流量,防火墙无能为力。

2. 原教程指南·

如果你确实对校园网 IPv6 分配有需求,而且需要用到软路由,那么我把命令提供给你,有需要自己研究即可。同时要特别注意混杂模式和环路问题

首先固件需要支持 ebtables 命令或者 ebtables-legacy 命令。随后,找到你接入到校园网交换机的那个网卡的 id. 因为这套方案基于 ESXi 或者 PVE 虚拟化,所以我先把使用场景描述一下。

  • ESXi 有两个网口,一个接校园网,一个接内网交换机。两个网卡分别配置到两个虚拟交换机上充当上行链路。
  • OpenWrt 软路由要配置两个校园网网卡,如图 2 所示,
    • 其中一个网卡给 OpenWrt 自己用,接在 WAN6 防火墙下;
    • 另一个接入 br-lan,该网卡要主动丢掉所有 IPv4 数据包,这是基于 ebtabls 实现的。ebtables 可以在链路层工作并处理以太网数据帧。命令如下:
1
2
# 务必要把 eth2 改成你自己的网卡 id.
ebtables-legacy -t broute -A BROUTING -i eth2 -p ! ipv6 -j DROP

图 2. OpenWrt 接入了两个虚拟网卡。UCAS 我们学校的英文缩写,这里用来指校园网。

图 3. br-lan 接入的第二个校园网网卡,注意对比图 2 里的 MAC 地址。

最后,ebtables 开机失效,所以要在启动项里添加一行:

图 4. 在 OpenWrt 启动项里添加命令。

如果最后,因为有很多广播包是漫无目的发送的,而且校园网 IPv6 分配是基于 SLAAC(至少我们学校是这样),所以要开启 ESXi 端口组的混杂模式:

图 5. 混杂模式。其他两个可以开也可以不开。

总结·

虽然下架视频扣除两个硬币,但是还是得补上相关内容!

如果你采用了这个方案,那我就不保证网络安全了。之前我说 IPv6 是安全的,那是因为有基于转发的防火墙策略,现在你将裸奔在广阔的 IPv6 世界。