
1. 项目概述为什么需要“两层网络”最近在折腾一个内部系统需要把开发、测试和生产环境彻底隔离开同时还得保证它们之间能按需通信。直接用一个大的扁平网络管理起来简直是灾难权限混乱、广播风暴、安全风险一个都跑不了。这时候“两层网络”的架构思路就派上用场了。简单来说它不是一个具体的产品而是一种网络设计模式将网络在逻辑上划分为“核心层”和“接入层”。核心层负责高速、可靠的数据转发和不同区域间的互联接入层则负责连接具体的终端设备并实施基础的访问控制和策略。这种架构在中小型数据中心、企业办公网甚至复杂的家庭实验室里都非常常见。它解决的不仅仅是连通性问题更是关于网络的可管理性、可扩展性和安全性。如果你正在规划一个稍具规模、且对未来增长有预期的网络环境理解并动手搭建一个两层网络会是性价比极高的技术投资。接下来我就结合自己的实操经验拆解一下从设计到落地的全过程。2. 网络架构核心思路与设计考量搭建网络最忌讳的就是拿到设备就开始配配到哪算哪。合理的规划是成功的一半。对于两层网络我们需要先想清楚几个核心问题。2.1 逻辑分层核心与接入的职责分离两层网络的核心思想是“各司其职”。我们来明确一下每一层的任务核心层这是网络的骨干和心脏。它的唯一目标就是“快”和“稳”。所有跨区域、跨网段的数据流最终都要经过这里。因此核心层设备通常是核心交换机不应该处理复杂的策略如ACL、安全过滤或者VLAN间的路由除非是集中式路由模型。它的主要工作是提供高带宽、低延迟的交换能力并确保高可用性比如通过堆叠或MLAG技术。在实际项目中如果规模不大一台性能较强的三层交换机也可以兼任核心层和部分分布层的功能这就是所谓的“核心-接入”两层简化模型也是我们今天讨论的重点。接入层这是网络的“最后一公里”直接面对用户、服务器、摄像头等终端设备。接入层交换机或AP负责将终端接入网络并执行最基础的策略。这里的关键任务包括端口安全防止MAC地址泛洪、VLAN划分基于端口或基于MAC地址将终端划入不同广播域、生成树协议STP/RSTP/MSTP配置以防止环路以及PoE供电如果需要。接入层设备数量通常最多但功能相对单一配置强调一致性和可批量部署。为什么要这么分从运维角度看当网络出现性能瓶颈时你可以快速定位是核心转发能力不足还是接入层策略不当当需要扩容时可以在接入层平滑增加交换机而无需改动核心架构当需要调整安全策略时可以在接入层端口上精细控制避免影响核心转发效率。2.2 关键技术选型VLAN、Trunk与路由确定了架构就要选择实现的技术。对于两层网络以下几项是基石VLAN虚拟局域网这是实现逻辑隔离的核心。我们可以根据部门如研发VLAN 10、财务VLAN 20、功能如服务器VLAN 100、无线用户VLAN 200或安全等级来划分VLAN。VLAN内的设备像在一个独立的交换机上广播帧只在同一VLAN内传播不同VLAN间默认不能通信这极大地提升了安全性和网络效率。Trunk干道链路当多个VLAN的数据需要跨越交换机比如从接入交换机到核心交换机传输时我们需要使用Trunk链路。Trunk链路通过在以太网帧中插入VLAN标签如IEEE 802.1Q标准来区分不同VLAN的数据。配置Trunk时务必遵循“最小权限原则”只允许必要的VLAN通过该Trunk。层间路由Inter-VLAN RoutingVLAN间需要通信怎么办这就需要三层路由功能。在两层网络中通常采用“单臂路由”或“三层交换机SVI路由”。单臂路由在核心路由器的一个物理接口上创建多个子接口每个子接口对应一个VLAN并配置为对应VLAN的网关。所有跨VLAN流量都需经过这个路由器。这种方式适用于早期路由器性能强、交换机性能弱的场景或作为临时过渡方案容易形成单点瓶颈。三层交换机SVI路由这是当前的主流方案。在三层交换机上为每个VLAN创建一个虚拟接口Switch Virtual Interface, SVI并配置IP地址作为该VLAN内设备的默认网关。当VLAN间需要通信时流量在交换机的硬件ASIC芯片中进行高速路由效率远高于单臂路由。我们的实验将采用这种方式。2.3 IP地址规划一切管理的基础混乱的IP规划是运维的噩梦。在动工前必须画好一张IP地址分配表。规划原则包括按VLAN分配网段为每个VLAN规划一个独立的子网。例如192.168.10.0/24给研发192.168.20.0/24给财务。预留地址空间子网划分时考虑未来扩容避免使用过小的子网如/29导致很快耗尽。固定关键设备IP核心交换机管理地址、网关地址、服务器地址等都应采用静态分配并记录在案。规划DHCP范围为终端用户所在的VLAN规划DHCP地址池并排除已静态分配的地址。一个清晰的规划表能让你在配置和排错时事半功倍。3. 实验环境搭建与设备配置详解理论说得再多不如动手配一遍。我以一个典型的“核心-接入”两层网络为例使用两台支持VLAN和三层路由的交换机品牌以行业通用的CLI语法为例原理相通进行演示。假设拓扑是一台作为核心层Core-SW另一台作为接入层Access-SW两者之间通过千兆光纤或网线连接。3.1 基础环境与拓扑初始化首先我们需要对设备进行基础配置包括主机名、管理IP和远程登录。! 在核心交换机上配置 Core-SW enable Core-SW# configure terminal Core-SW(config)# hostname Core-SW Core-SW(config)# interface vlan 99 ! 创建一个管理VLAN 99 Core-SW(config-if)# description Management_VLAN Core-SW(config-if)# ip address 192.168.99.1 255.255.255.0 Core-SW(config-if)# no shutdown Core-SW(config-if)# exit Core-SW(config)# ip default-gateway 192.168.99.254 ! 假设上层路由器地址 Core-SW(config)# line vty 0 4 Core-SW(config-line)# password YourSecurePassword Core-SW(config-line)# login Core-SW(config-line)# transport input ssh ! 启用SSH更安全 Core-SW(config-line)# exit Core-SW(config)# crypto key generate rsa modulus 2048 ! 生成SSH密钥 Core-SW(config)# ip ssh version 2 Core-SW(config)# username admin privilege 15 secret YourAdminSecret接入层交换机也进行类似配置只需将管理IP设为同网段另一个地址如192.168.99.2。注意管理VLAN最好独立于业务VLAN并严格限制访问来源。secret命令会加密密码比password命令更安全。3.2 VLAN创建与端口分配接下来创建业务VLAN并配置接入层端口。假设我们需要三个VLAN研发(VLAN 10)、财务(VLAN 20)、服务器(VLAN 100)。! 在核心和接入交换机上均需创建VLANVLAN信息通常通过VTP或手动同步这里采用手动创建确保一致 Core-SW(config)# vlan 10 Core-SW(config-vlan)# name RD Core-SW(config-vlan)# exit Core-SW(config)# vlan 20 Core-SW(config-vlan)# name Finance Core-SW(config-vlan)# exit Core-SW(config)# vlan 100 Core-SW(config-vlan)# name Servers Core-SW(config-vlan)# exit ! 在接入交换机上配置连接终端的接口为Access模式 Access-SW(config)# interface gigabitEthernet 0/1 Access-SW(config-if)# description To-PC-RD Access-SW(config-if)# switchport mode access ! 端口模式设为接入 Access-SW(config-if)# switchport access vlan 10 ! 将端口划入VLAN 10 Access-SW(config-if)# spanning-tree portfast ! 启用PortFast加速终端接入 Access-SW(config-if)# no shutdown Access-SW(config-if)# exit ! 配置连接财务部门PC的端口 Access-SW(config)# interface gigabitEthernet 0/2 Access-SW(config-if)# description To-PC-Finance Access-SW(config-if)# switchport mode access Access-SW(config-if)# switchport access vlan 20 Access-SW(config-if)# spanning-tree portfast Access-SW(config-if)# no shutdown Access-SW(config-if)# exit3.3 配置Trunk链路与核心层路由现在配置接入交换机与核心交换机之间的互联链路为Trunk。! 在接入交换机上配置上联口为Trunk Access-SW(config)# interface gigabitEthernet 0/24 ! 假设使用24口上联 Access-SW(config-if)# description Uplink-to-Core-SW Access-SW(config-if)# switchport mode trunk ! 端口模式设为干道 Access-SW(config-if)# switchport trunk native vlan 99 ! 设置本征VLAN为管理VLAN Access-SW(config-if)# switchport trunk allowed vlan 10,20,100,99 ! 只允许必要的VLAN通过 Access-SW(config-if)# no shutdown Access-SW(config-if)# exit ! 在核心交换机上配置对应的下联口为Trunk Core-SW(config)# interface gigabitEthernet 0/1 Core-SW(config-if)# description Downlink-to-Access-SW Core-SW(config-if)# switchport mode trunk Core-SW(config-if)# switchport trunk native vlan 99 Core-SW(config-if)# switchport trunk allowed vlan 10,20,100,99 Core-SW(config-if)# no shutdown Core-SW(config-if)# exit最关键的一步在核心交换机上配置SVI接口实现VLAN间路由。! 在核心交换机上为每个VLAN创建SVI并配置网关IP Core-SW(config)# interface vlan 10 Core-SW(config-if)# description Gateway-for-RD Core-SW(config-if)# ip address 192.168.10.1 255.255.255.0 Core-SW(config-if)# no shutdown Core-SW(config-if)# exit Core-SW(config)# interface vlan 20 Core-SW(config-if)# description Gateway-for-Finance Core-SW(config-if)# ip address 192.168.20.1 255.255.255.0 Core-SW(config-if)# no shutdown Core-SW(config-if)# exit Core-SW(config)# interface vlan 100 Core-SW(config-if)# description Gateway-for-Servers Core-SW(config-if)# ip address 192.168.100.1 255.255.255.0 Core-SW(config-if)# no shutdown Core-SW(config-if)# exit ! 启用IP路由功能如果默认未开启 Core-SW(config)# ip routing至此一个最基本的两层网络就搭建完成了。连接到VLAN 10的PC网关设为192.168.10.1已经可以和VLAN 20的PC网关192.168.20.1通信所有路由转发都在核心交换机内部高速完成。3.4 高级优化与安全加固基础连通性实现后我们需要考虑优化和安全性这才是体现网络工程师价值的地方。生成树协议优化为了防止环路但又不想经历50秒的阻塞延迟我们快速配置RSTP。Core-SW(config)# spanning-tree mode rapid-pvst ! 启用快速生成树 Core-SW(config)# spanning-tree vlan 1,10,20,100 root primary ! 指定本机为根桥 Access-SW(config)# spanning-tree mode rapid-pvst Access-SW(config)# spanning-tree vlan 1,10,20,100 root secondary ! 指定本机为备份根桥将核心交换机设为主根桥可以确保流量路径最优。DHCP服务配置为了便于管理可以在核心交换机上为VLAN 10和20配置DHCP服务。Core-SW(config)# ip dhcp excluded-address 192.168.10.1 192.168.10.10 ! 排除前10个地址 Core-SW(config)# ip dhcp excluded-address 192.168.20.1 192.168.20.10 Core-SW(config)# ip dhcp pool VLAN10_POOL Core-SW(dhcp-config)# network 192.168.10.0 255.255.255.0 Core-SW(dhcp-config)# default-router 192.168.10.1 Core-SW(dhcp-config)# dns-server 8.8.8.8 114.114.114.114 Core-SW(dhcp-config)# exit ! 类似配置VLAN20的DHCP池基础安全策略端口安全在接入层交换机的接入端口上限制学习的MAC地址数量防止MAC泛洪攻击。Access-SW(config)# interface gigabitEthernet 0/1 Access-SW(config-if)# switchport port-security maximum 2 ! 最多学习2个MAC Access-SW(config-if)# switchport port-security violation restrict ! 违规时限制并告警 Access-SW(config-if)# switchport port-security mac-address sticky ! 动态学习并粘滞ACL访问控制在核心交换机上通过扩展ACL限制财务VLAN20访问服务器VLAN100的特定端口如仅允许访问HTTP/HTTPS。Core-SW(config)# ip access-list extended FINANCE-TO-SERVER Core-SW(config-ext-nacl)# permit tcp 192.168.20.0 0.0.0.255 192.168.100.0 0.0.0.255 eq 80 Core-SW(config-ext-nacl)# permit tcp 192.168.20.0 0.0.0.255 192.168.100.0 0.0.0.255 eq 443 Core-SW(config-ext-nacl)# deny ip any any log ! 拒绝其他所有并记录日志 Core-SW(config-ext-nacl)# exit Core-SW(config)# interface vlan 20 Core-SW(config-if)# ip access-group FINANCE-TO-SERVER in ! 在VLAN20的SVI入口应用ACL4. 排错实录与核心问题排查指南网络配通了不代表就高枕无忧了更多的时候是在和各种各样的“不通”作斗争。下面是我在搭建和运维这类网络时总结出的高频问题排查清单你可以像查字典一样按顺序排查。4.1 连通性故障排查流程当出现“电脑上不了网”或“A部门访问不了B部门服务器”时别慌按照OSI模型从下往上排查物理层Layer 1症状端口指示灯不亮、闪烁异常。排查检查网线是否插紧、是否损坏换根线试试、光模块是否匹配且发光正常用光功率计、交换机端口是否被shutdown。心得至少50%的“诡异问题”是物理层故障。备一个简易测线器和备用线缆能节省大量时间。数据链路层Layer 2症状同VLAN内不通或获取不到IP地址。排查VLAN匹配在接入交换机上使用show interfaces gigabitEthernet 0/1 switchport确认终端连接的端口模式是access且所属VLAN正确。在Trunk链路两端使用show interfaces trunk确认允许的VLAN列表一致且本征VLAN相同。生成树阻塞使用show spanning-tree interface gigabitEthernet 0/24查看端口状态。如果显示BLK阻塞说明存在环路或根桥配置不当。检查RSTP配置确保核心交换机是根桥。MAC地址表使用show mac address-table interface gigabitEthernet 0/1查看该端口是否学习到了终端设备的MAC地址。如果没学到可能是端口安全阻止或终端网卡故障。网络层Layer 3症状跨VLAN不通或无法访问外网。排查IP配置确认终端IP地址、子网掩码、网关配置正确。网关地址必须是核心交换机上对应VLAN的SVI地址。路由表在核心交换机上使用show ip route确认到各个VLAN直连网段标记为C的路由都存在。SVI状态使用show ip interface brief确认所有VLAN的SVI接口状态都是up/up。如果协议状态down通常是因为该VLAN在交换机上没有活动的access端口或trunk端口。ACL拦截使用show access-lists查看配置的ACL是否有命中计数matches并使用show logging查看是否有被拒绝的日志确认是否是安全策略阻止了通信。4.2 典型问题场景与解决方案问题现象可能原因排查命令与解决方案PC获取不到IP地址1. DHCP服务器未配置或故障。2. 中继DHCP Relay未配置或错误。3. 端口VLAN与DHCP地址池不匹配。4. 防火墙拦截了DHCP报文。1.show ip dhcp pool查看状态debug ip dhcp server packet谨慎使用查看报文。2. 若DHCP服务器在别的网段需在SVI接口下配置ip helper-address。3. 确认PC所在VLAN的网关接口与DHCP地址池网络匹配。4. 检查ACL或防火墙规则是否允许UDP 67/68端口。跨VLAN Ping不通1. 核心交换机未启用ip routing。2. 对端VLAN的SVI接口shutdown。3. 存在ACL禁止了ICMP协议。4. 终端防火墙如Windows防火墙阻止。1. show runTrunk链路不通1. 两端端口模式不匹配一端trunk一端access。2. 两端允许的VLAN列表不一致。3. 本征VLAN不匹配。1.show interfaces gig x/x switchport查看模式。2.show interfaces trunk对比Vlans allowed。3. 确保两端Native VLAN相同通常建议设为不用的VLAN ID。网络时断时续1. 物理链路不稳定劣质网线、光衰过大。2. 网络中存在环路生成树在频繁收敛。3. ARP表不稳定或存在ARP欺骗。1. 查看端口错误计数show interfaces gig x/x看input/output errors。2.show spanning-tree detail查看拓扑变化计数topology changes是否激增。3. 在PC和交换机上查看ARP表使用arp -a或show arp看MAC地址是否频繁变化。4.3 配置备份与版本管理心得网络配置变更后备份是救命的稻草。我强烈建议养成以下习惯定期备份使用脚本通过SSH或TFTP自动备份所有设备的配置文件到专用服务器。变更前备份每次进行可能影响业务的变更前手动执行一次备份并备注变更原因。使用版本控制将配置文件纳入Git等版本控制系统。这样不仅能回溯历史还能清晰对比每次的变更点。你可以写一个简单的Python脚本用Paramiko库登录设备执行show run将输出保存并git commit。一个简单的思路是将网络配置像代码一样管理起来这是走向自动化运维和“基础设施即代码”的第一步。当网络规模变大后你会感谢自己当初这个决定。