做网络这块最头疼的其实不是设备怎么配而是“需求到底要表达什么”。像“WiFi段仅能访问外网和内网隔离”这句话初看很简单实际动手前你得先想清楚几个层次是访客WiFi不能碰内网还是自己手机连WiFi也不能碰内网内网有哪些网段出口在哪里三层设备是哪台这些不梳理明白配置命令背得再熟也是白搭。这篇文章就围绕这个场景走一遍完整方案用一台锐捷三层交换机通过VLAN把WiFi用户隔离到一个独立网段再配合ACL做单向访问控制——WiFi段只能去外网不能访问内网。文章里给的是能直接抄的配置思路和命令示例同时也把难点和容易踩的坑都点出来。1. 需求拆解与整体方案设计1.1 先搞清楚“隔离”到底是什么很多人一说“隔离”就想着用防火墙其实在中小企业场景里大部分情况根本没有独立防火墙出口就是一台宽带路由器加一台核心交换机。这时候只要核心交换机是三层设备完全可以用VLAN加ACL实现大部分隔离需求。“WiFi段仅能访问外网与内网隔离”这个需求拆开来看包含三层意思WiFi用户之间可以互通或者干脆也不互通看现场要求。WiFi用户可以访问互联网外网。WiFi用户不能访问内网任何服务器、办公电脑、打印机、摄像头等资源。注意这里有个方向容易被忽略需求只是限制“WiFi访问内网”并没有要求“内网不能访问WiFi”。如果运营者希望内网用户远程管理一下WiFi设备或者用手机连WiFi后还要访问内网群晖、NAS那ACL策略方向就要反过来设计。所以做配置前先跟业务方确认清楚到底隔离是单向还是双向我见过太多人把双向隔离做上了结果老板在办公室连WiFi访问不了内网打印机回过头来还得重新改。1.2 为什么推荐“VLAN ACL”而不是换防火墙我在这个项目里的选型逻辑其实很简单现场已经有了一台锐捷三层交换机预算控制得比较紧再上防火墙无论成本还是时间都不现实。VLAN负责把广播域切开ACL负责在三层路由时做访问控制这两个技术是交换机自带的不需要额外费用配置也不算复杂。选用三层交换机做网关有一个先天优势VLAN间路由默认就通。也就是说如果没有ACLVLAN 10的内网和VLAN 20的WiFi之间只要路由可达双方互相就能ping通。我们要做的就是在路由的同时插入一道“检查关卡”告诉交换机来自WiFi网段的流量凡是目的地址是内网网段的一律丢弃只有去外网的才放行。这道关卡就是ACL。对比一下几种常见方案的优劣方案优点缺点二层交换机 路由器VLAN子接口成本低配置简单ACL和流量过滤能力弱性能取决于路由器三层交换机VLAN ACL性能高扩展性好成本可控需要懂CLIACL顺序容易配错独立防火墙 VLAN策略管理直观日志审计强成本高部署周期长无线AP自带访客网络隔离配置最省事只隔离无线端无法覆盖所有接入场景结论很明确在没有新建防火墙预算的前提下锐捷三层交换机的VLAN加ACL是性价比最高、最稳妥的落地方式。1.3 规划一个最小可用的网络架构我在项目里用的是一台锐捷RG-S5750系列交换机出口接的是一条运营商宽带路由器在内网侧负责NAT和拨号交换机负责VLAN间路由。规划如下VLAN 10办公内网网段 192.168.10.0/24网关 192.168.10.1交换机SVI地址。VLAN 20WiFi网段网段 192.168.20.0/24网关 192.168.20.1交换机SVI地址。出口路由器接在交换机VLAN 10的端口上接口地址 192.168.10.254做源NAT和上网拨号。无线AP接入交换机的一个Access口放VLAN 20SSID对应VLAN 20。交换机需要有一条默认路由指向出口路由器否则WiFi段的流量即使出了网关也不知道下一步往哪走。这套架构就是一个非常典型的“单臂路由加VLAN隔离”模型核心点就是三层交换机既是内网网关也是WiFi网关同时通过ACL把WiFi到内网的路径切断。2. 配置前准备与必备命令储备2.1 登录交换机并确认设备信息动手配置前建议先用Console线或SSH登录交换机把当前状态摸清楚。尤其是这台设备如果之前已经被别人配过贸然敲配置容易冲突。我一般先跑几组基础查看命令enable show version show vlan show ip interface brief show running-config这几条命令分别看设备型号版本、现有VLAN表、三层接口地址、当前完整配置。如果你是第一次接管这台设备运维交接又不完整show running-config 基本是救命稻草先看看有没有已存在的ACL、NAT或者管理VLAN避免新配置和旧配置互相覆盖。2.2 锐捷交换机常用命令速记锐捷的CLI整体风格偏向Cisco系但也融合了一些自身习惯。比如进入全局配置模式用的是configure terminal给接口配IP用的是interface vlan 10这种SVI写法创建ACL支持命名ACL。我在下边整理了一份高频命令表新手上手够用了操作目的命令示例进入特权模式enable进入全局配置模式configure terminal创建VLANvlan 20给VLAN起名称name WIFI_GUEST进入物理接口interface GigabitEthernet 0/1切换Access口switchport mode access分配Access VLANswitchport access vlan 20批量进入接口interface range GigabitEthernet 0/2-24创建VLAN三层接口interface vlan 20配IP地址ip address 192.168.20.1 255.255.255.0配置静态路由ip route 0.0.0.0 0.0.0.0 192.168.10.254保存配置write memory注意不同型号和软件版本的锐捷在接口编号上存在差异有些是GigabitEthernet 0/1有些是GigabitEthernet 1/0/1输入命令时按Tab补全即可不必死记硬背。2.3 网络地址规划表是配置之前必须做的功课很多入门工程师拿到需求就开始敲命令结果敲到一半发现网段冲突、网关填错、ACL掩码写反再回头改效率反而低。我建议先把规划表做出来照着表写配置项目规划值说明内网VLAN ID10办公网原有VLAN内网网段192.168.10.0/24服务器、PC、打印机内网网关192.168.10.1配置在交换机VLAN 10上WiFi VLAN ID20新增访客/无线专用VLANWiFi网段192.168.20.0/24无线终端获取地址段WiFi网关192.168.20.1配置在交换机VLAN 20上出口路由器接口192.168.10.254与交换机VLAN 10互通交换机默认路由0.0.0.0/0 - 192.168.10.254提供外网下一跳这里有一个很容易踩的坑有些人觉得WiFi网段用192.168.0.0这类C类地址就行但如果出口路由器本身也用192.168.0.1做内网管理地址WiFi网段一上来就冲突后面各种奇怪故障都会冒出来。规划地址前务必先检查现有所有网段确保新VLAN不会和任何现网网段重叠。3. 核心实操VLAN划分、三层网关与默认路由3.1 创建VLAN并规划端口归属下面这段配置直接对应前面的规划表。假设交换机有24个电口1号口接出口路由器2号口接内网核心服务器3-10号口给无线AP用。那么VLAN划分命令如下configure terminal vlan 10 name NEIWAI_SERVER exit vlan 20 name WIFI_GUEST exit创建完VLAN后需要把物理端口划分到对应VLAN里。接内网服务器的2号口配置成Access口放VLAN 10接无线AP的3-10号口放VLAN 20顺手写上description方便以后排障时看端口用途interface GigabitEthernet 0/2 description TO_SERVER switchport mode access switchport access vlan 10 exit interface range GigabitEthernet 0/3-10 description TO_WIFI_AP switchport mode access switchport access vlan 20 exit这里有一个容易被忽略的点无线AP本身可以支持多SSID多VLAN。如果你给访客WiFi和内网办公WiFi用的是同一台APAP上联口就不能是单纯的Access口而应该是Trunk口把所有需要的VLAN都放行。比如AP需要上线管理VLAN 10同时下发VLAN 20给访客SSID那上联口配置应为interface GigabitEthernet 0/10 switchport mode trunk switchport trunk allowed vlan 10,203.2 配置三层VLAN网关接口VLAN创建完只是完成了二层隔离不同的VLAN之间要路由必须给每个VLAN配置一个三层接口也就是SVISwitch Virtual Interface。这是三层交换机最关键的步骤。interface vlan 10 ip address 192.168.10.1 255.255.255.0 no shutdown exit interface vlan 20 ip address 192.168.20.1 255.255.255.0 no shutdown exit配完之后VLAN 10和VLAN 20之间默认就能路由互访了但此时WiFi网段依然可以访问内网距离我们的目标还差一步。这里我先验证一下三层配置是否生效show ip interface brief如果看到两个VLAN接口都是UP状态并且IP地址正确说明三层部分通了。此时拿一台WiFi终端手动配192.168.20.66这种地址再ping 192.168.10.1理论上应该通因为还没有加ACL。3.3 配置默认路由让WiFi流量能找到出口三层交换机要访问外网必须知道自己这个“网段”之外的世界怎么走。当前出口路由器在下行侧接口是192.168.10.254所以交换机要写一条默认路由指过去ip route 0.0.0.0 0.0.0.0 192.168.10.254这条路由写完之后WiFi用户理论上已经可以上网了因为路由器会做NAT把私网地址转换成公网地址。但此时WiFi用户依然能访问192.168.10.0/24所以ACL配置就成了整个项目里真正决定成败的一步。4. ACL配置亲手把“仅能访问外网”落到实处4.1 ACL的顺序和执行逻辑先说透ACLAccess Control List本质是一串自上而下逐条匹配的规则。交换机拿到一个数据包后会从第一条规则开始往下比一旦匹配就执行对应动作后面的规则不再检查。如果所有规则都不匹配末尾还有一个隐含的deny all。这个“顺序优先”的特点决定了ACL条目的摆放顺序不能乱。很多刚上手的朋友喜欢把permit ip 192.168.20.0/24 any写在第一条然后又加一条deny去封内网结果deny永远不会生效因为permit已经把流量全部放行了。正确思路是把“需要禁止的”放在前面“需要放行的”放在后面。同时要注意ACL里写的是反掩码。因为锐捷沿用的是Cisco的wildcard mask写法/24网段对应的是0.0.0.255不是255.255.255.0这个概念错了整个ACL全废。我用表格对比一下子网掩码反掩码255.255.255.00.0.0.255255.255.0.00.0.255.0255.0.0.00.255.255.2554.2 锐捷交换机配置ACL的两种风格锐捷交换机创建ACL有编号和命名两种方式。编号方式类似Cisco经典写法命名方式更直观排障时一眼就能看出这条ACL是干嘛的。我推荐用命名ACL。下面这段配置的逻辑是拒绝WiFi网段访问内网VLAN 10网段。拒绝WiFi网段访问其他内网保留网段比如未来新增的服务器段。放行WiFi网段访问所有外网。ip access-list extended WIFI_ONLY_WAN deny ip 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255 deny ip 192.168.20.0 0.0.0.255 10.0.0.0 0.255.255.255 deny ip 192.168.20.0 0.0.0.255 172.16.0.0 0.15.255.255 deny ip 192.168.20.0 0.0.0.255 192.168.0.0 0.0.255.255 permit ip 192.168.20.0 0.0.0.255 any exit注意最后一条permit ip 192.168.20.0 0.0.0.255 any放行的是所有目的地址包括去公网的流量。但由于前面已经deny了所有私网段所以实际效果就是“只能去公网”。如果你的内网地址是192.168.50.0/24请在deny规则里替换成192.168.50.0 0.0.0.255千万不要把整个192.168.0.0/16无脑封掉因为有些WiFi终端需要通过私网地址访问AP管理界面或者路由器管理页也在私网段里。我还想提醒一点这几条deny规则顺序敏感。把deny ip ... 192.168.0.0 0.0.255.255写在permit之前顺序是对的如果把permit写在前面所有的deny就都白写了。ACL配置完成后务必用show命令检查一下顺序。4.3 在VLAN 20接口上应用ACLACL建好不应用就是一张废纸。这里要把ACL绑定到VLAN 20的三层接口上指定入方向也就是从WiFi终端进入交换机的流量先过一遍ACLinterface vlan 20 ip access-group WIFI_ONLY_WAN in exit这个“in”方向非常关键。它控制的是从VLAN 20里的终端发出来的流量在交换机做路由之前先被检查。如果配成out方向语义就完全不同了排障时容易把自己搞晕。应用完成后验证show ip access-group show access-lists WIFI_ONLY_WAN正常情况下第一条ACL的匹配计数器会随着WiFi流量访问内网而增长。如果dDeny计数持续增长说明确实在拦截访问内网的流量。4.4 双向隔离or单向隔离按需求补一条反向ACL在前面我特别提到要确认隔离方向。我们当前方案只限制了“WiFi访问内网”内网访问WiFi段在默认路由下仍然是通的。如果你想做得更彻底让内网也不能访问WiFi可以再建一条ACL绑到VLAN 10接口的in方向或者VLAN 20接口的out方向。我个人建议如果不是敏感场景内网访问WiFi端这一段保持放开因为运维人员排查问题、管理AP时往往需要从内网侧访问WiFi设备。彻底双向隔离听着安全但会给日常维护添不少麻烦。4.5 无线AP自带的访客隔离还需要保留吗这里有一层容易被忽略的二层问题ACL是在三层路由器上生效的同一VLAN内的二层互访三层ACL管不到。举个例子两台手机连上同一个SSID都拿到了192.168.20.x的地址它们之间的通信不经过三层接口ACL拦截不到。如果现场要求“WiFi终端之间也不能互相访问”就需要在二层做隔离。通常有几种办法无线控制器/AP开启Client Isolation客户端隔离、交换机端口开启端口隔离特性或者干脆每个SSID对应一个独立VLAN再通过ACL限制VLAN间互访。很多办公访客WiFi场景“WiFi用户之间互访”其实是可以禁止的能有效防止同一无线网段内的ARP欺骗和恶意扫描。具体用什么命令要看设备型号锐捷部分交换机支持端口保护模式配置前查官方手册或在线帮助最稳妥。5. DHCP服务配置与上网最后的“临门一脚”5.1 在交换机上直接开DHCPWiFi终端要拿到IP地址才能上网最简单的方式是让交换机本身提供DHCP服务省去单独架设DHCP服务器的成本和麻烦。锐捷交换机支持基础DHCP服务器功能配置如下service dhcp ip dhcp pool WIFI_GUEST network 192.168.20.0 255.255.255.0 default-router 192.168.20.1 dns-server 223.5.5.5 114.114.114.114 lease 0 4 exit这里default-router必须指到VLAN 20的网关地址192.168.20.1不能写192.168.10.1否则终端拿到的网关不对直接断网。dns-server建议用公网DNS不建议使用内网DNS或路由器地址否则WiFi用户可能通过DNS服务器地址反向嗅探到内网网络结构。公网DNS选择看地区阿里223.5.5.5和腾讯119.29.29.29都是比较稳的选择。lease 0 4表示租期4小时访客网络设短一点比较合理避免地址长期被占用导致地址池耗尽。5.2 如果公司已有Windows/Linux DHCP服务器如果公司内网已经存在企业级DHCP服务器可以不在交换机上开DHCP而是通过DHCP中继把VLAN 20的请求转发给内网DHCP服务器。锐捷配置中继的命令思路是interface vlan 20 ip helper-address 192.168.10.50 exit不过要注意DHCP服务器上需要建好对应作用域地址池范围是192.168.20.0/24网关选项填192.168.20.1DNS选项填公网DNS。使用独立DHCP服务器的好处是集中管理、日志可查适合多VLAN环境。5.3 检查DHCP分配结果配置完DHCP之后可以让手机连上WiFi实际测试一下。也可以通过交换机的命令查看地址分配情况show ip dhcp binding如果看到192.168.20.1到192.168.20.254范围内陆续出现绑定记录说明DHCP工作正常如果一张表空空的优先检查交换机到DHCP服务器的路由是否可达或者有没有配置了地址冲突导致接口起不来。5.4 上外网的最后一步出口路由器的回程路由和NATWiFi用户拿到的地址是192.168.20.x这个网段是从三层交换机上分出来的。出口路由器默认只知道192.168.10.0/24这个网段如果路由器没有配置到192.168.20.0/24的回程路由或者没有开启“从接口进来的流量做源NAT”那么WiFi用户发出的数据包到了路由器路由器一看目的地址是公网会把包转发出去但返回的流量到达路由器后路由器不知道192.168.20.x这个网段往哪里送数据包就丢了。所以出口路由器的NAT规则需要覆盖192.168.20.0/24网段。如果路由器支持“源接口NAT”或“源地址池NAT”记得把VLAN 20的网段加进去。这一步是整个项目里最容易漏的一个环节也是“WiFi能连上但死活打不开网页”的高发原因。6. 常见问题与故障排查实录6.1 WiFi能上外网却仍然能访问内网资源这是ACL没有生效的典型表现。排查步骤如下show ip access-group确认ACL是否已经绑定到VLAN 20接口方向是否为in。show access-lists WIFI_ONLY_WAN查看ACL内容确认deny规则排在permit规则之前。核对反掩码是否写错。192.168.10.0/24写成了255.255.255.0的话ACL根本匹配不上。如果ACL绑在VLAN 10接口而不是VLAN 20接口规则匹配方向可能完全反了。建议统一绑在WiFi侧接口上。6.2 WiFi无法获取IP地址优先查看DHCP配置和交换机接口状态show ip dhcp binding看是否有地址分配记录。show interfaces status看AP上联口是否有物理链接。如果AP上联口划错VLAN或者状态是down终端自然拿不到地址。确认交换机没有开启DHCP Snooping的非法DHCP拦截有些安全特性会自动丢弃非信任接口上的DHCP报文导致终端拿不到地址。6.3 WiFi能ping通网关但外网全部不通这时先别怀疑ACLACL封的是内网不会拦外网。优先排查两条交换机上有没有默认路由show ip route看有没有S* 0.0.0.0/0 [1/0] via 192.168.10.254这样的路由条目。出口路由器是否做了NAT以及NAT是否包含192.168.20.0/24网段。很多人只NAT了192.168.10.0/24结果WiFi上不了网路由器日志里一堆NAT转换失败的记录。6.4 WiFi能打开网页但某些App提示网络异常网页能打开通常说明基本连通没问题App异常大概率是DNS解析或特定端口被拦截。先检查交换机ACL有没有限制协议端口。如果ACL是按IP段写的没有动端口那问题多半在出口路由器或者运营商侧。如果DNS用了内网地址且故障持续把DHCP里的dns-server改成公网DNS再测试。6.5 无线漫游掉线、切换VLAN后获取不到原网段地址这个问题在办公网多AP场景经常出现。无线终端的地址是DHCP分配的漫游时如果切换了AP新AP上联口如果VLAN配置不一致终端会发现网关变了导致短暂断网。解决办法是统一所有AP上联口Trunk放行VLAN并确保无线控制器里SSID到VLAN的映射全局一致。如果现场有多台AP采用本地转发模式各AP上联口务必要做统一规划。6.6 排障时的几条救命命令排障过程中我觉得最有用的几个命令是show running-config interface vlan 20 show access-lists WIFI_ONLY_WAN show log debug ip packet其中debug ip packet可以看到交换机实时收到的数据包和匹配结果信息量很大但生产环境慎用优先级高且会刷屏。用完之后立刻undebug all关闭避免影响设备性能。再补充一个经验在排查ACL的时候可以用终端从WiFi侧主动ping内网服务器IP同时开着show access-lists WIFI_ONLY_WAN观察deny计数是否增长。如果计数不增长说明流量根本没有走到三层ACL这一步或者ACL绑错了接口方向。如果计数增长说明ACL确实在干活那问题就出在ACL规则顺序或掩码上了。7. 踩坑总结与个人心得这个项目做完之后我对VLAN隔离这件事最大的体会是配置命令真不难难的是在动手之前把需求、网段规划、流量方向和回程路由全部想清楚。ACL规则顺序、反掩码、接口方向任何一环错了结果都是“看似隔离了实际漏得一塌糊涂”或者“该通的也不通了”。最后分享一个我自己的习惯每次配完ACL我都会用一台手机连WiFi分别测三个动作——ping一下内网服务器预期不通、ping一下公网IP预期通、打开一个网页预期通。这三个动作能覆盖整个链路的关键环节比你在电脑前面看十分钟配置都管用。再补一条小技巧配置过程中建议每隔几步就执行一次write memory把配置保存下来。我曾经遇到客户在调试中途突然断电没保存的配置全部丢失花了半天时间重新排查重配那种感觉很糟糕。改前备份改后保存网络工程师的手不要懒。