医院园区网 · 网络工程实战 01

医院园区网 · 网络工程实战 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 医院园区网总体拓扑,可点击图片查看接口与地址标注

图 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 边界防火墙与双核心区域

图 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 / 9010.162.101.0/24
10.162.109.0/24
10.162.110.0/24
Area 10
住院 / 医技20 / 3010.162.102.0/24
10.162.103.0/24
Area 20
业务服务器 / 备份60 / 6110.162.106.0/24
10.162.107.0/24
Area 30
行政财务 / 运维40 / 16010.162.104.0/24
10.162.120.0/24
Area 40
物联 / 监控100 / 11010.162.111.0/24
10.162.112.0/24
Area 40
员工 / 访客120 / 14010.162.114.0/23
10.162.116.0/22
Area 40
分院5010.162.105.0/24Area 50

各业务 VLAN 的 .1 地址配置在所属汇聚上。两台核心只加入 Area 0,汇聚同时连接骨干区域与对应业务区域,承担 ABR 的作用。员工和访客分别使用 /23、/22,以容纳更多模拟接入终端。

核心 VRRP 地址的具体用途
核心上的 10.162.99.65 是骨干对等网段的虚拟地址,用于本实验的冗余与管理诊断。门诊等业务终端的默认网关仍在所属汇聚,配置时需要分清这两个位置。

04 / 以门急诊为例,把接入、网关与路由串起来

图 3 门诊、急诊和药房分区

图 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 医疗物联、监控、员工与访客分区

图 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 状态

图 5 防火墙故障切换时的 HRP 状态

6.2 NAT 地址池:主备分别使用不重叠的子池

设备主公网地址池备用公网地址池
FW-A12.1.1.10—12.1.1.1913.1.1.10—13.1.1.19
FW-B12.1.1.20—12.1.1.3013.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

图 6 NAT 内侧:源地址为 10.162.101.10

图 7 NAT 外侧:源地址变为地址池中的 12.1.1.19

图 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-RTELEMED-GW
IPsec 底层198.18.0.1/30198.18.0.2/30
受保护网段172.20.1.0/2410.162.121.0/24
流量选择器源医疗外网 → 目的会诊网源会诊网 → 目的医疗外网
备用路由 preference100100

两端的 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 报文

图 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

图 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 修正独立上联端口后检查 OSPF 与生成树状态

10 / DHCP 与测试矩阵:让结果可以重复检查

我将访客终端改为 DHCP 获取地址,观察到 Discover、Offer、Request、ACK 四次交互,终端得到 10.162.119.254/22,网关为 10.162.116.1,与 VLAN 140 的接口地址池一致。

图 11 访客终端获取地址时的 DHCP 四次交互

图 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

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐