开篇废话
感觉是时候可以描述下家里网络了,先从最简单也就是最基本的交换机配置开始说起(
本文介绍的是日本的 NTT 系的光宽带(以下称 Flet’s )如果您在中国可以不用参照了,没有什么意义。
我是今年家里的拖拉机问题太多,最近忍不了才改的:
- 目前主路由兼 AP 使用的是 Netgear WAX202 (MT7621) 性能太烂,然后加上开源驱动的影响,无线 300-400Mbps 顶天(甚至是 AX)
- Netgear WAX202 提供 1 个 WAN 和 3 个 LAN 口,实际使用中端口数量不够,常常需要外挂傻瓜交换机。
- PPPoE 可能因连接数过多,造成 WAN 接口经常掉线,也就是不止 PPPoE 断了,IPv6 也中断了,重启 ONU 无效,必须重启路由器才能恢复。
- 重启路由器导致服务器区也断网,然后 @Pixiv_bot 之类的服务就嗝屁了
- 朋友送给了我一个 NTT 的猫棒(PON stick)
- 此部分教程不公开,有兴趣的可以自己从 「Yahooオークション」之类的フリマ买,关键词
SFP-GE-PON
,然后自己连 UART 改 mac 非常简单的(
- 此部分教程不公开,有兴趣的可以自己从 「Yahooオークション」之类的フリマ买,关键词
- 想折腾移植闭源 Wi-Fi 驱动进去,但是因为 路由器+AP 在一起,所以不能总是重启
于是要解决这些痛点,差不多就是只能多准备点灵车,用来分担 MT7621 的工作。
在这里最核心的就是交换机了,于是这系列教程也从交换机开始配。
我目前家里的交换机是很久前收来的 Mikrotik CRS112-8G-4S ,凑合用。
当然说是配置,不过好像整篇文章都在讲配置的背景了,不过还好,不懂的多问 AI
正文
架构思路 & 坑点解析
由于 Flet’s 的奇妙设计,我们常见的“双网口软路由”在日本其实不太有用。
国内那种架构是因为必须让流量经过一次 PPPoE 拨号,所以需要通过软路由处理后才能上网(中国的 IPv6 是外挂在 PPPoE 上的 PD)。
而日本 Flet’s 的网络是 PPPoE / IPv6 IPOE + IPv4 over IPv6 技术,因此 IPv6 是连上网线基本可以上网(光电话或者 10G 的情况下可能只能拿到 PD ,需要自己手动分个前缀)。
鉴于这个特性,比如在服务器区,其实可以完全不经过软路由,直接桥接到上游网络(固定 IPv6 + SLAAC)。
然后 IPv6 部分,如果交换机具备三层路由能力,可以直接在交换机内部转发内网 IPv6 流量。
无需软路由中转,进一步提升效率。,这部分流量就不需要走软路由再走一遍了,效率自然更高。
因此个人推荐是 v4 走软路由,v6 部分在交换机内完成直通就好了。
不过日本还有个特色问题,在没有光电话的情况下只能拿到 /64
的 IPv6 地址,
众所周知如果拿到的是 /64
的情况下不能再分配子网,因此我们需要交换机支持 NDP-Proxy
(relay mode) 来中继 v6 的地址分配与网关。
本文因为 Mikrotik
截止2025年3月还是仍不支持 NDP-Proxy
(Feature request: ND Proxy (RFC 4389) ),因此此部分内容暂时掠过,等我后面捡垃圾捡到支持3层和 ND Proxy
的时候我会再更新这篇文章。
当然有 /56
的自己分配内网就可以了,就可以不使用 NDP-Proxy 。
这样瓶颈就不是路由器了,而且不会因为软路由故障导致双栈都断网。
具体规划
有了这些想法后我们就能开始为目标构思了。
先从 VLAN 开始分起,因为是普通家用网络,我们就以最低限度的 VLAN 开始分:
UPLINK:
- 101 Flet’s 运营商是
iijmio
, PPPoE 走IIJ
IPoE 走transix
(还是 IIJ) - 102 * 如果你有多线的情况(策略路由后续还会写个教程)
LAN:
- 1001 lan zone
- 1011 iot zone (当然我目前还没有什么 iot 设备,所以本文没有配这个)
- 1021 xxx zone
SERVER LAN:
- 2001 server zone
- 2011 xxx zone
OTHER:
- 888 MGNT 管理
然后我这破交换机有 8电口 + 4光口,于是端口设计成这样了:
- lan zone (untagged 1001)
- ether1
- ether2
- ether3
- ether4
- server zone (untagged 2001)
- ether5
- ether6
- trunk only
- ether7
- ether8
- wan flets (untagged 101)
- sfp10 UPLINK
当然几乎所有口都是设定成了 hybrid port ,反正凑合用,设计理念就是够用就好,不过不同 vlan 的端口最好连起来以及命名下省的记错。
于是最后是大概想的拓扑图,当然 v4 NAT 内网凭心情分段即可,因此不展示网络分段。
如果想搞点,估计还会弄个 DMZ
区,这下起夜级网络了。
— huggy | @h@kuu.moe (@wosign) March 17, 2025
配置文件参考
基本上是当二层来用的,这机器三层能力(NAT)能力太弱,不能承担什么。
然后 MGNT (172.22.5.1/30) 分的广播域太小了,根据实际情况扩容或者换段
最后是 Mikrotik 的产品日常,这玩意不是 Disco 风格的语法,而是 Linux 的,所以你会觉得有些东西很奇妙。
/export show-sensitive
# 2025-03-27 14:22:09 by RouterOS 7.18
# software id = SWQP-QPJF
#
# model = CRS112-8G-4S
/interface bridge
add name=bridge
/interface ethernet
set [ find default-name=ether1 ] name=lan-1
set [ find default-name=ether2 ] name=lan-2
set [ find default-name=ether3 ] name=lan-3
set [ find default-name=ether4 ] name=lan-4
set [ find default-name=ether5 ] name=server
set [ find default-name=ether6 ] name=server-6
set [ find default-name=sfp9 ] disabled=yes
set [ find default-name=sfp11 ] disabled=yes
set [ find default-name=sfp12 ] disabled=yes
set [ find default-name=ether7 ] name=trunk-7
set [ find default-name=ether8 ] name=trunk-8
set [ find default-name=sfp10 ] name=wan-flets
/interface vlan
add interface=bridge name=v-888-MGNT vlan-id=888
add interface=bridge name=v-101-wan vlan-id=101
add interface=bridge name=v-1001-lan vlan-id=1001
add interface=bridge name=v-2001-server vlan-id=2001
/port
set 0 name=serial0
/interface bridge port
add bridge=bridge interface=lan-1
add bridge=bridge interface=lan-2
add bridge=bridge interface=lan-3
add bridge=bridge interface=lan-4
add bridge=bridge interface=server-5
add bridge=bridge interface=server-6
add bridge=bridge interface=trunk-7
add bridge=bridge interface=trunk-8
add bridge=bridge disabled=yes interface=sfp9
add bridge=bridge interface=wan-flets
/ip firewall connection tracking
set enabled=no loose-tcp-tracking=no
/ip neighbor discovery-settings
set discover-interface-list=all
/interface ethernet switch egress-vlan-tag
add tagged-ports="switch1-cpu,lan-1,lan-2,lan-3,lan-4,server-5,server-6,trunk-7,trunk-8" vlan-id=888
add tagged-ports="lan-1,lan-2,lan-3,lan-4,server-5,server-6,trunk-7,trunk-8" vlan-id=101
add tagged-ports=lan-1,lan-2,lan-3,lan-4,trunk-7,trunk-8 vlan-id=2001
add tagged-ports=server-5,server-6,trunk-7,trunk-8 vlan-id=1001
/interface ethernet switch ingress-vlan-translation
add customer-vid=0 new-customer-vid=101 ports=wan-flets
add customer-vid=0 new-customer-vid=1001 ports=lan-1,lan-2,lan-3,lan-4
add customer-vid=0 new-customer-vid=2001 ports=server-5,server-6
/interface ethernet switch vlan
add ports="switch1-cpu,lan-1,lan-2,lan-3,lan-4,server-5,server-6,trunk-7-ushio,trunk-8" vlan-id=888
add ports="lan-1,lan-2,lan-3,lan-4,server-5,server-6,trunk-7,trunk-8,wan-flets" vlan-id=101
add ports="lan-1,lan-2,lan-3,lan-4,server-5,server-6,trunk-7,trunk-8" vlan-id=1001
add ports="lan-1,lan-2,lan-3,lan-4,server-5,server-6,trunk-7,trunk-8" vlan-id=2001
/ip address add address=172.22.5.1/30 disabled=yes interface=v-888-MGNT network=172.22.5.0
总结
反正你日的这种扭曲网络架构反而萌生出了许多特别的玩法,跟着我操作解锁更多姿势,前提是我还在更新(
完