协会局域网的一些细节

Site-to-Site VPN

协会虚拟大局域网相关信息

涉及工具

  • Zerotier-One :承载链路层包转发
  • WireGuard :承载单播流量
  • OpenWRT :协会唯一指定路由器OS
  • Debian @ Taishan Server :配置启用了从ZT到校园网的NAT

背景概述

商业街工坊与208+之间目前不在同一校园网网段下,但校园网配置了静态路由使得两端可以互连,之间没有NAT。

商业街工坊争取到过一段时间的千兆接入,但截至目前又被降级回百兆接入。208+通过两路光纤连接至二基楼3楼网络设备井,目前一条千兆链路一条万兆链路。其中千兆链路拥有教育网IPv6。但是两路上行链路的真正可用瓶颈带宽未知。

核心实现

网段定义

10.20.40.0/21

支持广播、多播,支持ICMP,支持WoL等链路层包转发。

商业街工坊物理网络使用 10.20.40.0/24 段,即为协会路由器DHCP所直接管辖的段。保留IP:

  • 10.20.40.1 路由器,网关IP
  • 10.20.40.2 WG Peer IP

208+物理网络使用 10.20.41.0/24 段,即为208+ 路由器DHCP所直接管辖的段。保留IP:

  • 10.20.41.1 路由器,网关IP
  • 10.20.41.2 WG Peer IP

除开以上两个物理网段外的其它网段都归协会 ZT Controller 进行分配。

包滤过规则

IPv4多播、广播包在两地之间通过ZT收发,IPv4单播包通过效率更高的WireGuard收发,IPv6包目前只通过ZT收发。

IPv4的ZT链路上过滤了DHCP的udp 67、68两个端口的流量。

IPv6的ZT链路上只放行了link local地址的流量,且过滤了DHCP6的udp546、547两个端口,以及IPv6 RS/RA所使用的icmp 133与134包。

以上规则确保来自不同区域的网络自动配置协议不会互相干扰。

区域流量路由

工作带宽负载主要来自IPv4单播(Unicast),因此在两地的两台OpenWRT上配置了WireGuard以及配套的路由表条目实现单播流量高效转发。

WireGuard的工作模式为Layer3隧道,因此不支持直接像ZT那样当作Layer2交换机进行桥接。

配置完毕的WG链路,在两台设备的接口之间可以互相在Layer3通信。

208+路由器给WG接口分配了10.20.41.2,商业街分配的则为10.20.40.2

分别在路由器上配以路由表(表为208+这边的):

Target Gateway
10.20.40.2/32 dev WG if
10.20.40.0/24 10.20.40.2

再分别通过路由器的DHCP下发额外的路由规则(208+的):

Target Gateway
10.20.40.0/24 10.20.41.1

实现端末设备流量通过路由表优先分流。

此时来自208+路由器下所有发往商业街的IPv4单播包都会通过路由表转发给208+路由器,路由器上再通过静态路由表将包传给WG接口,到达商业街的路由器WG接口上。再经过商业街路由器原本的路由表规则,把包转发给商业街工坊的物理网络。

而广播包等需要链路层支持的包,如果发送方设备上有ZT,则会同时从ZT和物理网络上发出。两地的路由器也使用ZT桥接了物理网络与虚拟局域网,因此用户设备上没有ZT也可以正常与协会大局域网内任意设备通信。

物理网络优先级

由于用户设备上的ZT会建立一个跃点为0的10.20.40.0/21段路由规则,因此物理网络通过DHCP下发的默认路由被短路,所有流量将会使用ZT进行转发。这显然是没有效率的。

因此在两地的OpenWRT上都通过配置DHCP下发额外的路由表条目实现物理网络的高优先级。原理为路由表条目的最佳匹配原则。即:10.20.40.0/24的优先级永远比10.20.40.0/21高。这样可以使物理网络流量不走ZT。

DHCP下发的路由规则样例

附带一个样例。来自208+路由器。

121,0.0.0.0/0,10.20.41.1,10.20.41.0/24,0.0.0.0,10.20.40.0/24,10.20.41.1

该样例综合实现了上述两条所介绍的方案。

物理网络链路配置

参阅目录下两地的VLAN配置文档。

备注

原文链接:https://gitlab.scumaker.org/scu-maker-core/maintenance_guide/-/tree/master/networks

本拷贝可能不是最新

补充一些内容

“真局域网”的实现要点

  • 合理规划IP分配,使不同sites的DHCP池之间互相独立,但共享某一更大的IP段
  • sites之间屏蔽互相的自动配置协议,防止配置污染
  • 手动强制site内路由优先级

性能优化考量

Zerotier是Layer2交换机,属于TAP型设备,但其本身效率不高,也无法在低算力设备上实现大带宽。

因此引入了WireGuard这个TUN型设备,作为真正工作负载所使用的流量通道。实测WG能够在同硬件配置下提供最高的L3吞吐。

正常运作时,Wake-on-LAN,V4的udp广播等L2类型的包都会走ZT转发给其它设备,而其它所有TCP、UDP单播流量都服从路由表规则,通过高效的WG隧道传至对端。