eNSP 医院园区网实战:58 台设备实现双核心、业务隔离与故障切换

医院园区网 · 网络工程实战 01
NETWORK ENGINEERING / PROJECT 01
门诊要访问 HIS,住院部要连接业务服务器,访客需要上网,医疗物联和运维管理又各有自己的访问范围。把这些终端接在一起并不难,难的是让它们按业务通信、按边界隔离,并在链路故障后仍有可用路径。
这是我在计算机网络实践中完成的一套医院园区网项目,也是我的第一篇 CSDN 项目复盘。我想把配置背后的原因写清楚:为什么要放这台设备,策略应该配置在哪里,以及配置完成后怎样用报文和故障实验检查结果。
先看项目规模
58 台设备 · 92 条物理链路 · 34 台网络设备 · 24 个模拟终端
双核心 / 七个业务汇聚 / 十八台接入 / 双防火墙 / 双公网接入 / 医疗专线与 IPsec 备用通道
项目地址:ScyPolit/eNSP_HospitalNetwork
完整工程、34 份设备配置、实验报告和测试记录均已开源。本文中的拓扑与协议截图来自该项目;HIS、PACS、无线用户和公网测试节点通过 eNSP 终端模拟。
| 阅读路线 | 本文要解决的问题 |
|---|---|
| 需求与拓扑 | 从医院业务出发,确定分层结构和区域边界 |
| 地址与路由 | 把 VLAN、网关位置和 OSPF 区域对应起来 |
| 关键配置 | 串联链路聚合、访问控制、NAT、DHCP 与 IPsec |
| 验证与排障 | 用故障注入、抓包和路由状态检查设计是否有效 |
01 / 先明确业务,再选择协议
我没有从“需要用到哪些协议”开始堆配置,而是先列出各类终端要访问什么,再确定转发位置和安全边界。医院网络中,连通性与访问限制需要同时成立。
| 业务场景 | 网络设计 | 配置目的 |
|---|---|---|
| 门诊、急诊、药房 | 独立业务 VLAN + 汇聚 ACL | 访问指定业务地址,同时控制跨科室通信 |
| 住院、影像、检验 | 按业务划分网段 + 三层路由 | 组织终端接入,集中连接数据中心 |
| HIS / PACS 与备份 | 服务器 VLAN 60、备份 VLAN 61 | 分开业务与备份广播域 |
| 行政财务与运维 | 办公 VLAN 40、管理 VLAN 160 | 将办公访问与设备管理权限分开 |
| 员工与访客 | 员工 VLAN 120、访客 VLAN 140 | 员工按策略访问业务,访客经 NAT 访问模拟公网 |
| 医疗外联与会诊 | 医疗专线 + NQA + IPsec | 主路径故障时使用备用加密链路 |
一个决定后续配置的位置问题
业务网关放在汇聚层。因此,科室之间的流量可能在汇聚与核心之间完成转发,跨科室访问控制也需要在这条路径上生效。
02 / 全网拓扑:双核心与七个业务区域

图 1 eNSP 医院园区网总体拓扑,可点击图片查看接口与地址标注
| 设备层次 | 数量与型号 | 承担的工作 |
|---|---|---|
| 核心与汇聚 | 2 台核心 + 7 台业务汇聚,S5700 | 骨干路由、区域互联、业务网关与 ACL |
| 接入交换 | 18 台接入,S5700 | 连接科室、服务器及管理终端 |
| 辅助二层 | WAN-L2、DMZ-SW,S5700 | 隔离外联广播域,连接 DMZ 终端 |
| 边界防护 | 2 台 USG5500 | 安全域、访问规则、NAT 与 HRP |
| 外联路由 | 4 台 AR2220 | 双运营商、医疗专线及远程会诊 |
| 模拟终端 | 24 台 eNSP PC | 产生测试流量,表示业务与服务节点 |
七个业务汇聚区分别是门急诊、住院、医技、数据中心、办公运维、物联无线和分院。每台汇聚分别连接两台核心;接入交换机到所属汇聚、两台核心之间使用双成员 LACP。各区域设置不同底色,设备系统名与配置文件保持对应,便于定位和排错。

图 2 边界防火墙与双核心区域
几台容易被忽略的设备,为什么要放在这里?
WAN-L2:把主运营商、备运营商和医疗专线分别划入 VLAN 901、902、903,让两台防火墙接入相应的外联网段,同时保持外联广播域隔离。
DMZ-SW:把对外服务终端放入 VLAN 70,跨区域访问通过防火墙规则控制。
FW-A / FW-B:前者承担正常的边界过滤与 NAT,后者通过 HRP 与其形成主备关系,用于边界故障后的接管。
03 / 地址规划:让业务、VLAN 和 OSPF 区域对应
院内业务使用 10.162.0.0/16 范围内的独立网段,骨干连接集中安排在 10.162.99.0/24。每条核心到汇聚的连接使用独立 /30,避免把所有上联放入同一个二层广播域。
| 业务 | VLAN | 业务网段 | OSPF |
|---|---|---|---|
| 门诊 / 急诊 / 药房 | 10 / 80 / 90 | 10.162.101.0/24 10.162.109.0/24 10.162.110.0/24 | Area 10 |
| 住院 / 医技 | 20 / 30 | 10.162.102.0/24 10.162.103.0/24 | Area 20 |
| 业务服务器 / 备份 | 60 / 61 | 10.162.106.0/24 10.162.107.0/24 | Area 30 |
| 行政财务 / 运维 | 40 / 160 | 10.162.104.0/24 10.162.120.0/24 | Area 40 |
| 物联 / 监控 | 100 / 110 | 10.162.111.0/24 10.162.112.0/24 | Area 40 |
| 员工 / 访客 | 120 / 140 | 10.162.114.0/23 10.162.116.0/22 | Area 40 |
| 分院 | 50 | 10.162.105.0/24 | Area 50 |
各业务 VLAN 的 .1 地址配置在所属汇聚上。两台核心只加入 Area 0,汇聚同时连接骨干区域与对应业务区域,承担 ABR 的作用。员工和访客分别使用 /23、/22,以容纳更多模拟接入终端。
核心 VRRP 地址的具体用途
核心上的 10.162.99.65 是骨干对等网段的虚拟地址,用于本实验的冗余与管理诊断。门诊等业务终端的默认网关仍在所属汇聚,配置时需要分清这两个位置。
04 / 以门急诊为例,把接入、网关与路由串起来

图 3 门诊、急诊和药房分区
4.1 接入交换机:明确终端属于哪个业务
门诊接入 ACC-OPD 把终端接口划入 VLAN 10,两条上联加入 Eth-Trunk1。这样既能固定终端的业务归属,也能在一条成员链路中断时保留另一条转发链路。
ACC-OPD:接入口与聚合上联配置节选
system-view
vlan batch 10
interface Eth-Trunk1
port link-type trunk
port trunk allow-pass vlan 10
mode lacp-static
quit
interface GigabitEthernet0/0/1
port link-type access
port default vlan 10
quit
interface GigabitEthernet0/0/23
eth-trunk 1
quit
interface GigabitEthernet0/0/24
eth-trunk 1
quit
return
4.2 汇聚交换机:在业务入口配置网关和地址分配
AGG-CLINIC 汇聚门诊、急诊和药房,分别设置 VLAN 10、80、90。以门诊网关为例,VLANIF 负责三层转发,DHCP 接口地址池负责新增终端的地址分配;.2—.49 留给静态终端。
AGG-CLINIC:门诊网关与 DHCP 配置节选
system-view
dhcp enable
interface Vlanif10
ip address 10.162.101.1 255.255.255.0
dhcp select interface
dhcp server excluded-ip-address 10.162.101.2 10.162.101.49
quit
return
4.3 两条 /30 上联:把业务路由接入双核心
门急诊汇聚的两条上联分别是 10.162.99.96/30 和 10.162.99.124/30。汇聚地址为 .98 和 .126,两台核心对应地址为 .97 和 .125。正常情况下两侧都建立 OSPF 邻居,一侧上联故障时由路由重新选择可达路径。
AGG-CLINIC:多区域 OSPF 配置节选
ospf 1 router-id 10.255.254.1
silent-interface Vlanif10
silent-interface Vlanif80
silent-interface Vlanif90
area 0.0.0.0
network 10.162.99.96 0.0.0.3
network 10.162.99.124 0.0.0.3
area 0.0.0.10
network 10.162.101.0 0.0.0.255
network 10.162.109.0 0.0.0.255
network 10.162.110.0 0.0.0.255
业务终端不需要建立 OSPF 邻居,所以相关 VLANIF 配置为 silent-interface。配置完成后,我重点检查邻居是否达到 Full,以及目标业务网段是否进入路由表。
运行状态检查命令
display ospf peer brief
display ip routing-table
display eth-trunk 1
display ip interface brief
05 / 访问控制:把 ACL 放到流量经过的位置
边界防火墙控制公网、DMZ、医疗专线与院内之间的通信。科室之间的流量则可能直接经过三层汇聚和核心,因此我在业务 VLAN 的入口绑定 ACL,按来源业务控制其能访问的目标。

图 4 医疗物联、监控、员工与访客分区
访客的目标很明确:获取地址、访问公网、隔离院内
访客使用 VLAN 140。规则先允许 DHCP 和网关诊断,再拒绝三个私网地址范围,最后允许其余流量,由边界 NAT 完成模拟公网访问。规则顺序直接影响结果,因此 DHCP 放在拒绝私网之前。
AGG-IOT:访客 ACL 与绑定配置
acl number 3140
rule 5 permit udp source-port eq bootpc destination-port eq bootps
rule 10 permit icmp destination 10.162.116.1 0
rule 15 deny ip destination 10.0.0.0 0.255.255.255
rule 20 deny ip destination 172.16.0.0 0.15.255.255
rule 25 deny ip destination 192.168.0.0 0.0.255.255
rule 30 permit ip
quit
traffic-filter vlan 140 inbound acl 3140
| 流量 | 设计预期 | 观察重点 |
|---|---|---|
| 门诊 → HIS 诊断地址 | 允许 | 终端回复、路由与业务入口规则 |
| 门诊 → 行政网段 | 禁止 | 跨区拒绝规则 |
| 访客 → HIS | 禁止 | 入口请求与 ACL 作用位置 |
| 访客 → 模拟公网 | 允许 | 终端回复与边界 NAT 会话 |
| 堡垒机 → 管理诊断地址 | 允许 | 管理来源与 VTY ACL |
我在这里踩过的坑
本实验使用的 S5700 镜像中,VLANIF 下的 traffic-filter 配置影响了骨干通信。最终采用全局视图中的 traffic-filter vlan <VLAN> inbound acl <编号>,把作用范围限定到业务 VLAN。该写法按本项目镜像配置。
06 / 双防火墙与 NAT:安全边界和出口转发
FW-A 和 FW-B 分别连接 Trust、DMZ、公网、医疗专线与心跳区域。安全域用于表达访问边界,具体规则再约束源地址、目标地址和服务。院内私网流量访问模拟公网时,由对应出口的 NAT 地址池转换源地址。
6.1 HRP 主备:用独立心跳链路交换状态
FW-A:心跳接口及 HRP 配置节选
interface GigabitEthernet0/0/6
ip address 172.31.255.1 255.255.255.252
quit
hrp interface GigabitEthernet0/0/6
hrp enable
display hrp state
display hrp interface
FW-B 的心跳地址为 172.31.255.2/30。测试时关闭 FW-A 上受监控的 Trust 接口,观察 FW-B 的角色变化,再从门诊重新发起公网访问,检查其是否能建立 NAT 会话。

图 5 防火墙故障切换时的 HRP 状态
6.2 NAT 地址池:主备分别使用不重叠的子池
| 设备 | 主公网地址池 | 备用公网地址池 |
|---|---|---|
| FW-A | 12.1.1.10—12.1.1.19 | 13.1.1.10—13.1.1.19 |
| FW-B | 12.1.1.20—12.1.1.30 | 13.1.1.20—13.1.1.30 |
最初两台防火墙在同网段使用重叠地址池时出现竞争 ARP。将地址池拆为互不重叠的子池后,再通过公网请求、会话表和返回报文检查,通信恢复正常。以下为旧版 USG5500 镜像中的主出口配置节选。
FW-A:源 NAT 配置节选
nat address-group 1 12.1.1.10 12.1.1.19
nat-policy interzone trust untrust outbound
policy 1
action source-nat
policy source 10.162.0.0 0.0.255.255
address-group 1
6.3 两侧抓包,把地址转换过程看清楚
门诊终端 10.162.101.10 访问模拟公网 203.0.113.10。我在接入侧和 WAN-L2 到 ISP1 的链路上观察同一组流量:内侧使用私网源地址,外侧源地址变为 12.1.1.19,返回报文的目的地址也与转换地址对应。

图 6 NAT 内侧:源地址为 10.162.101.10

图 7 NAT 外侧:源地址变为地址池中的 12.1.1.19
本次边界故障测试的检查对象是切换后新建的 NAT 会话。角色变化、会话建立和终端收到回复分别对应设备状态、转发状态和实际通信结果,把它们串起来才能解释切换过程。
07 / 医疗专线与 IPsec:为会诊流量准备另一条路
医疗外网 172.20.1.0/24 与会诊网段 10.162.121.0/24 正常经专线和园区骨干通信;我另外连接 HEALTH-R 与 TELEMED-GW 的 GE0/0/2,使用 198.18.0.0/30 作为备用底层,并绑定 IPsec 策略。
| 项目 | HEALTH-R | TELEMED-GW |
|---|---|---|
| IPsec 底层 | 198.18.0.1/30 | 198.18.0.2/30 |
| 受保护网段 | 172.20.1.0/24 | 10.162.121.0/24 |
| 流量选择器 | 源医疗外网 → 目的会诊网 | 源会诊网 → 目的医疗外网 |
| 备用路由 preference | 100 | 100 |
两端的 ACL 要方向对应,IKE 和 IPsec 提议要匹配;实验镜像采用 AES-256、SHA-1 和 DH group14。NQA 用来跟踪主路径,并结合静态路由控制备用路径何时生效。
TELEMED-GW:受保护流量与策略绑定节选
acl number 3500
rule 5 permit ip source 10.162.121.0 0.0.0.255 destination 172.20.1.0 0.0.0.255
quit
ipsec policy HOSP 10 isakmp
security acl 3500
ike-peer HOSP
proposal HOSP
quit
interface GigabitEthernet0/0/2
ip address 198.18.0.2 255.255.255.252
ipsec policy HOSP
quit
关闭医疗专线主接口后,我同时检查会诊终端回复、备用路由和 IPsec SA 计数。Wireshark 中出现 198.18.0.1 与 198.18.0.2 之间的双向 ESP 报文,说明会诊流量已进入备用加密路径。

图 8 主专线中断后的双向 ESP 报文
备用路径验证命令
display ip routing-table 10.162.121.10
display ipsec sa
08 / 冗余是否有效,要主动断一次链路
配置完成后,我按“记录状态 → 注入故障 → 检查路由与业务 → 恢复接口”的顺序测试。每次只改变一个故障条件,避免多个变化同时发生时无法判断原因。
| 测试对象 | 故障动作 | 检查结果 |
|---|---|---|
| 核心 VRRP | 关闭第一核心 Vlanif4094 | 检查第二核心角色与虚拟地址接管 |
| 核心 LACP | 关闭一条聚合成员 | Eth-Trunk 保持 up,另一成员继续转发 |
| 防火墙 HRP | 关闭主防火墙受监控接口 | 备用设备接管,新的 NAT 会话可建立 |
| IPsec 备用路径 | 关闭医疗专线主接口 | 备用路由生效,产生双向 ESP 与终端回复 |
| 汇聚双核心上联 | 关闭门诊汇聚主上联 | HIS 下一跳转到第二核心,3 个测试报文均回复 |

图 9 门诊主上联关闭后,经第二核心访问 HIS
门诊汇聚主上联关闭后,到 HIS 网段的路由改为经 Vlanif1201、下一跳 10.162.99.125。这个结果把前面规划的第二条 /30 上联与实际业务转发联系起来,也说明只画出双上联还不够,两侧路由邻居必须真正建立。
09 / 一次最有价值的排障:备用上联为什么不工作?
工程冷启动后,我发现部分汇聚不能与第二核心建立 OSPF 邻居。接口地址没有写错,物理链路也已连接,继续检查才发现相关端口被默认 MSTP 实例置为 DISCARDING。
| 排查顺序 | 检查内容 | 得到的判断 |
|---|---|---|
| 物理层 | 接口 up/down、对端与端口编号 | 确认线路和端口对应关系 |
| 二层 | VLAN、Trunk 与 STP 状态 | 发现独立上联受到生成树阻塞 |
| 三层 | /30 地址、OSPF 区域与邻居 | 确认问题不只是路由配置语法 |
| 修正后 | 邻居 Full、路由及故障转发 | 两条骨干上联均能建立邻居 |
这些端口用于独立三层点到点网段,不承担需要通过生成树阻断的二层冗余环路。我在对应的核心—汇聚承载端口配置 stp disable,接入聚合和核心互联仍保留生成树。
AGG-CLINIC:独立骨干上联端口配置节选
interface GigabitEthernet0/0/23
port link-type access
port default vlan 1101
stp disable
quit
interface GigabitEthernet0/0/24
port link-type access
port default vlan 1201
stp disable
quit
display ospf peer brief
这条命令的使用范围
只用于本拓扑中已经确认用途的独立 /30 三层承载端口。业务网关、二层接入与核心互联各有不同职责,配置要结合实际转发结构判断。

图 10 修正独立上联端口后检查 OSPF 与生成树状态
10 / DHCP 与测试矩阵:让结果可以重复检查
我将访客终端改为 DHCP 获取地址,观察到 Discover、Offer、Request、ACK 四次交互,终端得到 10.162.119.254/22,网关为 10.162.116.1,与 VLAN 140 的接口地址池一致。

图 11 访客终端获取地址时的 DHCP 四次交互
| 检查项目 | 实验记录 |
|---|---|
| 连通性与隔离 | 30 / 30 项符合矩阵预期 |
| 重启后业务复测 | 7 / 7 项符合预期 |
| 设备启动标识 | 34 / 34 台网络设备核对一致 |
| 核心 OSPF 邻居 | 两台核心各有 14 个 Full 邻居 |
| 完整配置 | 34 份最终配置,去除分隔符后 2,793 行有效内容 |
测试包含允许和禁止两类场景。允许场景检查回复与路由;禁止场景则结合入口请求、ACL 配置及其他正常通信结果分析。对首次 ARP 学习引起的超时,我保留终端统计,再等待学习完成后复测。
eNSP PC:部分验证命令
ipconfig
ping 10.162.106.10 -c 2
ping 203.0.113.10 -c 2
同一条 ping 命令在不同来源终端上可能有不同预期,复测时需要同时核对源终端、目的地址和业务规则。公网测试地址指向拓扑内的模拟外联终端。
11 / 复现入口:先打开工程,再按业务验证
| 环境 | 本实验使用版本 |
|---|---|
| 系统 | Windows |
| 仿真平台 | 经典 eNSP 1.3.00.100 |
| 虚拟化 | VirtualBox 5.2.26 |
| 设备 | S5700 / AR2220 / USG5500 |
| 报文分析 | Wireshark |
获取项目
git clone https://github.com/ScyPolit/eNSP_HospitalNetwork.git
cd eNSP_HospitalNetwork
在 eNSP 中打开 output/hospital-network/工程/hospital-network.topo。保留其旁边的 34 个设备编号目录,设备启动配置需要从这些目录加载。启动后等待协议收敛,先检查核心邻居与防火墙角色,再从门诊、访客、分院和堡垒机终端逐项复测。修改设备后先执行 save,再保存 eNSP 工程。
| 想查看什么 | GitHub 入口 |
|---|---|
| 完整项目与说明 | 项目首页 |
| 工程与启动配置 | 工程目录 |
| 34 台设备完整配置 | 最终运行配置 |
| 测试目的地址与预期 | 30 项测试矩阵 |
| 完整实验报告 | PDF 报告 |
| 协议报文 | PCAPNG 原始抓包 |
12 / 写在最后:配置背后要有业务和验证
这次项目让我把分散学习的 VLAN、OSPF、链路聚合和安全策略放进同一个业务场景中。防火墙需要知道保护哪些区域,ACL 需要部署在流量经过的位置,备用链路也需要通过路由状态和真实流量来确认。
我最深的体会是:画出链路只是起点,能解释每一跳为什么这样走,并能在出问题时逐层定位,才算理解这张拓扑。从医院业务需求出发,到地址与区域规划,再到故障注入和 Wireshark 分析,这个过程也逐渐形成了我自己的网络实验方法。
项目已开源
如果你正在做 eNSP 园区网课程设计,可以从这套拓扑开始,结合自己的业务需求调整地址与策略。
GitHub:ScyPolit/eNSP_HospitalNetwork
复现中遇到问题,欢迎在评论或 GitHub Issues 中交流,附上设备系统名、环境版本和相关命令输出,便于一起定位。
ScyPolit · 网络工程实战 · 01
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)