找三个人要网络图,你会拿到三张不同的图:一张机柜的照片、一张 IP 地址表格,还有一张云控制台的截图。它们都回答不了评审或故障中会冒出来的问题:有哪些网段,什么能和什么通信,以及流量如何在办公室和云之间往返。
本文为一个典型的小公司画一张逻辑网络拓扑图:带 Wi-Fi 的办公室局域网,以及一条通往云上 VPC 的站点到站点 VPN,并介绍让这类图保持易读的约定。
物理拓扑还是逻辑拓扑
| 物理拓扑 | 逻辑拓扑 | |
|---|---|---|
| 展示 | 设备、端口、线缆、机柜、配线架 | 网段、地址范围、路由、区域之间的策略 |
| 回答 | “接入点接在哪个端口上?” | “访客能访问文件服务器吗?” |
| 读者 | 负责布线和更换硬件的人 | 工程师、安全评审人员、审计人员、新同事 |
| 何时变化 | 硬件搬动时 | 地址规划、路由或规则变化时 |
大多数讨论需要的是逻辑视图。把物理视图留给在机柜旁干活的人,不要把两者混在一页上:防火墙策略旁边写着端口号,两样东西都会更难读。
常见拓扑,简要说明
- 星型。 每台设备都连到一台中心交换机。几乎所有办公室局域网都是星型,或者由多个星型组成的树。
- 网状。 节点与多个其他节点相连,因此流量有不止一条路径。常见于核心交换机之间、数据中心网络架构(fabric)和 Wi-Fi Mesh 系统中。
- 混合型。 真实网络会把两者结合起来:边缘是星型,核心是冗余链路,站点之间用隧道。
总线型和环型拓扑在现代局域网中基本已成为历史。
示例:一间办公室和一个云上 VPC
一家 40 人的公司有一间办公室,里面有员工的笔记本电脑、访客 Wi-Fi、一台文件服务器和几台打印机。公司的内部应用运行在云上的 VPC 中,员工通过站点到站点 VPN 访问它,而不是经过公共互联网。
先做地址规划,因为图是在它的基础上画出来的。所有内部地址范围都取自 RFC 1918 中的私有地址块,公网地址使用 RFC 5737 中专供文档使用的范围:
| 网段 | VLAN | 范围 | 网关 | 里面有什么 |
|---|---|---|---|---|
| 员工 | 10 | 10.10.10.0/24 | 10.10.10.1(防火墙) | 笔记本电脑和桌面电话,有线和 Wi-Fi |
| 访客 | 20 | 10.10.20.0/24 | 10.10.20.1(防火墙) | 连接访客 SSID 的来访者设备 |
| 服务器和打印机 | 30 | 10.10.30.0/24 | 10.10.30.1(防火墙) | 文件服务器、打印机 |
| 云上 VPC | 10.20.0.0/16 | VPC 路由器 | 应用服务器和数据库 | |
| 私有子网 | 10.20.1.0/24 | VPC 路由器 | 应用服务器、托管数据库 | |
| ISP 上行链路 | 203.0.113.10 | ISP | 防火墙的固定公网地址 |
这个规划遵循两条规则。第一,办公室(10.10.0.0/16)和 VPC(10.20.0.0/16)不能重叠,否则 VPN 无法在两者之间路由。第二,办公室要避开 192.168.0.0/24 和 192.168.1.0/24:很多家用路由器使用这两个范围,在家办公的员工连上客户端 VPN 时就会发生冲突。
防火墙负责 VLAN 之间的路由,所以策略也放在那里:
| 来源 | 目标 | 允许 |
|---|---|---|
| 员工 | 服务器和打印机 | 文件共享和打印端口 |
| 员工 | 云上私有子网 | HTTPS;SSH 只允许来自管理员组 |
| 访客 | 任何内部资源 | 不允许;只能访问互联网 |
| 云上私有子网 | 办公室 | 只允许响应(有状态) |
一段话讲清站点到站点 VPN
IPsec VPN 使用 UDP 500 端口上的 IKE 来认证对端并协商密钥,使用 IP 协议号 50 的 ESP 来传输加密流量;路径中有 NAT 时会改用 UDP 4500。在 AWS 上,每个 Site-to-Site VPN 连接都有两条隧道,它们的公网 IP 地址不同,终止于虚拟私有网关或中转网关;在你的防火墙上把两条都配置好,这样一条隧道维护时办公室也不会断网。办公室一侧需要固定公网 IP。路由可以是静态的,也可以通过 BGP 动态学习;VPC 的路由表需要指回 10.10.0.0/16 的路由,可以由虚拟私有网关传播,也可以手动添加。
图
图表内容
- Internet
- Office firewall
- Core switch
- Wi-Fi access point
- VLAN 30 · Servers
- File server
- VLAN 10 · Staff
- Staff laptops
- VLAN 20 · Guests
- Guest devices
- Cloud VPC
- Private subnet
- App server
- Managed database
- Links
- ISP uplink · 203.0.113.10
- trunk: VLAN 10, 20, 30
- PoE + trunk
- SSID Office
- SSID Guest
- IPsec site-to-site VPN · 2 tunnels
这张图的读法如下:
- 左上角,边界。 办公室防火墙拥有固定公网地址,并作为 IPsec 对端。它在三个 VLAN 之间路由,并执行上面的策略表。
- 中间,办公室局域网。 核心交换机以 trunk 方式承载 VLAN 10、20 和 30。接入点从交换机获得供电和一条 trunk,把员工 SSID 映射到 VLAN 10,把访客 SSID 映射到 VLAN 20。
- 右侧,云。 虚线连接是通往 VPC 的 IPsec VPN,包含两条隧道。应用服务器和托管数据库位于一个私有子网中,互联网没有路由可以到达。
- 图例 解释各种线型:以太网、Wi-Fi、以太网供电(PoE)和 WAN。
应该标注什么
- 每个网段的地址范围和 VLAN ID。 一个叫“员工网络”却没写 10.10.10.0/24 的方框,无法与任何东西核对。
- 网关和 VPN 对端。 每个网段由哪台设备路由,哪些公网地址组成了隧道。
- 什么可以跨越边界。 把策略写在连线上,或写在图旁边的表格里,而不只是写在防火墙的配置中。
- SSID 与 VLAN 的对应关系,每个无线网络都要写。
- 连接的发起方向,在重要的地方标出来,例如云上子网只做响应。
应该省略什么
- 每一台笔记本电脑和每一部电话。 每个网段中每类设备一个节点就够了。
- 逻辑图上的线缆颜色和端口号。 它们属于物理图。
- 云服务商的内部细节。 VPN 端点属于虚拟私有网关;你不需要画出隧道的 AWS 一侧。
使用图例
在网络图上,线型是有含义的,所以要解释清楚。一个包含以太网、Wi-Fi、以太网供电、WAN 和 VPN 的小图例,一分钟就能加好,能让每个新读者不用去猜。如果你给网段上了色,也要写明颜色的含义。
保持最新
网络图在第一次未经通知的变更之后就会过时。让图成为变更的一部分:有人新增 VLAN、修改防火墙规则或新增隧道时,变更工单要链接到更新后的图,由评审人同时检查两者。不会过时的架构图介绍的正是这样一套工作流程。想更深入地了解云这一侧,请参阅 AWS VPC 架构图指南;想用基于身份的访问取代扁平的办公室网络,请参阅零信任架构图。
在 Archboard 中构建
- 使用 Google 或 GitHub 登录,并新建一张图。
- 为办公室边界和局域网,从网络节点包中添加 互联网、防火墙、交换机 和 无线 节点。
- 为 VLAN 10、20 和 30 添加三个网络节点包中的 子网 框架,在每个框架的 CIDR 字段中填入地址范围,并在每个框架里放一个 设备 或 服务器 节点:员工笔记本电脑、访客设备、文件服务器。
- 添加一个网络节点包中的 VPC 框架,在里面放一个 子网 框架,再在子网中放一个云节点包中的 计算实例 节点和一个 托管数据库 节点。
- 连接各个节点,并为每条连线设置连接类型(Ethernet、Wi-Fi、PoE 或 WAN)。把 VPN 画成从防火墙到 VPC 的一条虚线。
- 添加一个网络节点包中的 网络图例,用来说明各种连接类型。
这个示例共用 15 个图表节点,在 Free 套餐的限制之内。网络用例页面展示了网络节点包还能做什么。
常见问题
网络图和网络拓扑图有什么区别? 这两个术语经常混用。拓扑图强调网段和设备之间如何连接;逻辑拓扑图还会加上地址范围、路由和策略。
图上应该标出 IP 地址吗? 标出每个网段的地址范围,以及网关和 VPN 对端的地址。单台主机的地址应该放在 IP 地址管理工具里。
为什么要把访客放进单独的 VLAN? 这样防火墙就可以只给他们互联网访问,别的什么都不给。在共享网段中,访客设备可以访问打印机、文件共享,以及任何信任本地网络的东西。
我需要两条 VPN 隧道吗? 在 AWS 上,每个连接都自带两条隧道,两条都应该在你的设备上配置好,这样一条在维护时,另一条仍能承载流量。
网络图应该多久更新一次? 每次涉及地址规划、路由或防火墙规则的变更都要更新。把图和变更流程绑定在一起,而不是和日历绑定。