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
本拷贝可能不是最新