For the complete documentation index, see llms.txt. This page is also available as Markdown.

大规模二层与三层设计

概述

本章给出在 OpenBSD 上扩展二层与三层设计的实用模式:用 vlan(4) 进行 VLAN 规划;用 ifconfig(8)hostname.if(5) 实现路由接入(SVI 风格接口);用 carp(4) 实现首跳冗余;以及任播服务部署(静态 ECMP 或基于 BGP;参见 OpenBGPD)。这些模式用于限制故障域、简化运维,并为客户端与服务提供确定性路径。

设计考量

  • VLAN 策略。 每个故障域或广播范围分配一个 VLAN。名称与 ID 保持层次化(例如 SITE-FLOOR-ROLE)。为基础设施(路由、管理、存储)预留地址段。

  • 路由接入优于桥接接入。 接入层优先采用三层(路由器上的 SVI),而非跨楼宇或楼层扩展二层。仅在确有必要时使用 bridge(4),桥接时按端口启用 STP。

  • 首跳冗余。carp(4) 为每个 VLAN 提供虚拟默认网关。用 pfsync(4) 为防火墙复制状态。

  • VLAN 间策略。 将 VLAN 间路由视为策略边界,并在 pf.conf(5) 中实施。东西向流量默认拒绝,仅放行必要流。

  • 任播部署。 对于需要弹性的本地服务(例如递归 DNS),将相同实例部署在靠近用户处。通过分发路由器上的静态 ECMP 或大型网络中的 iBGP 引导流量(参见 bgpd(8))。

  • MTU 与分片。 若通过封装承载 VLAN,须校验有效 MTU,并在部署期间按需钳制 MSS。

  • 文档与一致性。hostname.if 文件与 PF 策略纳入版本控制,并在冗余节点间保持一致。

配置

示例构建一个路由接入园区网,包含两台冗余路由器(R1R2)。每台路由器的上行 trunk em1 承载 VLAN 10(用户)与 VLAN 20(服务器)。网关由 CARP VIP 提供;VLAN 间策略由 PF 实施。最后,用静态多路径路由部署任播解析器服务。

1) 系统转发(两台路由器)

sysctl(8)sysctl.conf(5) 启用三层转发与持久化设置。

2) VLAN SVI 与 CARP 网关

假定地址分配:

  • VLAN 10(用户):10.10.10.0/24,网关 VIP 10.10.10.1

  • VLAN 20(服务器):10.20.20.0/24,网关 VIP 10.20.20.1

R1 使用 .2,偏好 advskew 0R2 使用 .3advskew 100。CARP 在 VLAN 接口上运行,作为 carpdev

R1

R2

3) PF 中的 VLAN 间策略(两台路由器)

允许用户与服务器 VLAN 到达各自网关,但默认限制东西向流量。按你的策略调整。用 pfctl(8) 管理。

4) 任播解析器部署(静态 ECMP)

发布一个园区本地的任播解析器 IP 10.10.255.53/32,由两台主机提供服务:10.20.20.11(在 VLAN 20 中)与 10.20.20.12。每台解析器还在其环回接口上持有 10.10.255.53/32,使应答以任播地址为源。

在每台解析器主机上

在每台路由器上(R1 与 R2):添加等价路由

route(8) 配合 -mpath 安装多个下一跳。流量将负载分担;撤销即移除一条路径。

大型网络优先采用 iBGP 任播:每台解析器从环回接口发起 10.10.255.53/32,分发路由器通过 BGP 学习。参见 bgpd.conf(5) 与 OpenBGPD 章节。

5) 可选:边缘桥接(受限范围)

桥接不可避免时(例如小型实验室),须限制广播域并在成员端口上启用 STP。用 bridge(4) 管理。

验证

  • SVI 与 VIP 已上线:

  • VLAN 间策略:

  • 任播可达性与路径多样性:

  • 在线:

故障排查

  • 客户端无法到达网关。 核对交换机与路由器上的 VLAN 标签一致、路由器上 vlandev 正确。确认 CARP 在某节点为 MASTER,且 VIP 出现在正确的 VLAN 上。

  • VLAN 间流量绕过策略。 确保路由发生在 OpenBSD 路由器(SVI)上,而非下游设备。用 pfctl -vvsr 复查 PF 规则顺序。

  • CARP 抖动。 检查 net.inet.carp.demotion 与链路稳定性。节点间 advskew 不匹配或缺失 pass sharedsecret 会导致角色频繁切换。

  • 任播黑洞。 若某台解析器宕机但路由仍存在,移除失效下一跳(route delete -host 10.10.255.53 10.20.20.11)或自动化健康检查(参见 ifstated(8))。BGP 任播则依赖会话撤销。

  • STP 未阻止环路。 确认每个网桥成员启用 STP,且网段间仅有一条桥接路径。大型网络应避免桥接,将边界移至三层。

  • 非对称路径与 MTU 问题。 校验所有 trunk 承载相同的 VLAN 集合与 MTU。测试期间可暂时采用保守的 MSS 钳制。

参见

最后更新于