我的家里网络配置 - 交换机篇

开篇废话

感觉是时候可以描述下家里网络了,先从最简单也就是最基本的交换机配置开始说起(

本文介绍的是日本的 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 非常简单的(
  • 想折腾移植闭源 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-ProxyFeature 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 区,这下起夜级网络了。

home-network-topology.svg

配置文件参考

基本上是当二层来用的,这机器三层能力(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

总结

反正你日的这种扭曲网络架构反而萌生出了许多特别的玩法,跟着我操作解锁更多姿势,前提是我还在更新(