使用 ebtables 接入 IPv6 公网
坑边闲话:细心的伙伴可能留意到,我删除了最近一期的视频。大家可能感到疑惑,毕竟标题非常炸裂,效果可以说是杀手级的。这里我解释一下。
1. 视频下架的原因·
- 首先,这个视频里我的北邮人 ID 没有打码,违反了北邮人社区公约。其实主要是我懒,现在不像 2020 年初疫情在家那么闲,没时间对视频做剪辑,只能尽量用通俗易懂的话表达清楚,同时附上尽可能详尽的博客、视频描述。
- 其次,虽然通过
ebtables-legacy
命令在以太网层次实现校园网 IPv6 接入很棒,而且我已经用了一周多了,效果非常稳定。但是,这里面存在安全隐患。这相当于把外网接到内网里来,而且是利用了 IPv6 + IPv4 双栈分离的特性,所以 OpenWrt 的防火墙是拦不住的,所有的基于转发的过滤规则都不起作用。这必然给骇客攻击留下了后门,毕竟 LAN Zone 是我们的后花园,允许另一个属性的生物自由出入,肯定不是个好事情。虽然我现在还不清楚有什么隐患,但是我知道这并不是 Best Practice.
主要是因为第二点,我下架了视频。
2. 原教程指南·
如果你确实对校园网 IPv6 分配有需求,而且需要用到软路由,那么我把命令提供给你,有需要自己研究即可。同时要特别注意混杂模式和环路问题。
首先固件需要支持 ebtables
命令或者 ebtables-legacy
命令。随后,找到你接入到校园网交换机的那个网卡的 id
. 因为这套方案基于 ESXi 或者 PVE 虚拟化,所以我先把使用场景描述一下。
- ESXi 有两个网口,一个接校园网,一个接内网交换机。两个网卡分别配置到两个虚拟交换机上充当上行链路。
- OpenWrt 软路由要配置两个校园网网卡,如图 2 所示,
- 其中一个网卡给 OpenWrt 自己用,接在 WAN6 防火墙下;
- 另一个接入 br-lan,该网卡要主动丢掉所有 IPv4 数据包,这是基于
ebtabls
实现的。ebtables
可以在链路层工作并处理以太网数据帧。命令如下:
1 | # 务必要把 eth2 改成你自己的网卡 id. |
最后,ebtables
开机失效,所以要在启动项里添加一行:
如果最后,因为有很多广播包是漫无目的发送的,而且校园网 IPv6 分配是基于 SLAAC(至少我们学校是这样),所以要开启 ESXi 端口组的混杂模式:
总结·
虽然下架视频扣除两个硬币,但是还是得补上相关内容!
如果你采用了这个方案,那我就不保证网络安全了。之前我说 IPv6 是安全的,那是因为有基于转发的防火墙策略,现在你将裸奔在广阔的 IPv6 世界。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Peng Liu's blog!
评论