
最近给一家公司做网络改造需求很典型办公室电脑和服务器在内网访客或员工的手机连上WiFi后只能上外网查资料、刷网页不能访问内网里的任何设备包括共享文件夹、OA服务器、数据库还有那台整天被人“薅羊毛”的打印机。当时手头就是一台锐捷的汇聚交换机老板还特意叮嘱了一句“别让WiFi段的设备混到内网里来上次那个共享文件被改得乱七八糟的事儿不能再发生了。”这个需求听起来简单但真正落地的时候有不少门道。锐捷交换机怎么做VLAN隔离、ACL怎么配、AP上联口怎么接、DHCP和DNS怎么设置、甚至内网里的设备需不需要主动访问WiFi段这些都得想清楚。这篇文章我就把整个方案的规划、配置命令、踩坑过程完整记录下来拿锐捷交换机直接抄作业就行。1. 项目需求与方案设计1.1 需求拆解到底要隔离什么做网络隔离之前先把需求掰开看清楚了。很多朋友一上来就问“怎么让WiFi只能上外网”但真正的问题往往不只是“上外网”这三个字。具体到这个项目用户的要求可以拆成三条WiFi段的设备不能访问内网段办公室电脑、服务器、视频监控、打印机。WiFi段设备之间尽量别互访至少要做到基本的隔离防止访客之间互相“串门”。内网设备一般不主动访问WiFi段但内网办公人员偶尔要投屏到客厅所以内网访问WiFi段这个行为我这里选择不限制但会在防火墙上做一条单向策略把风险压低。换句话说“仅能访问外网”并不是只放通一条默认路由就够了它隐含的要求是三层路由要通、ACL策略要拦、DHCP和DNS要正确还得考虑二层广播和ARP表的安全。很多网络“内网被黑”的案子不是黑客多厉害而是访客WiFi和内网在一个广播域里ARP欺骗一条命令就能把内网数据全截走。1.2 网络拓扑锐捷交换机放在哪个位置这个项目里锐捷RG-S5750是作为核心/汇聚交换机使用上联出口防火墙下联AP、办公室电脑和服务器。大概关系是这样出口防火墙或路由器负责NAT上网和内外网策略核心交换机只管VLAN间三层路由和访问控制。无线AP通过网线接到锐捷交换机的普通接入端口SSID绑定到独立的VLAN。办公室电脑、服务器分别划分到两个内网VLAN网关在锐捷交换机上。为什么强调锐捷交换机是三层设备因为只有三层交换机才能直接配VLAN接口地址SVI并且在VLAN接口下挂ACL。如果手头只有二层交换机那就需要用“单臂路由”或者把上联口做成trunk让防火墙通过子接口做VLAN间路由ACL也得挪到防火墙上。后面第4章我会专门讲这个区别。1.3 VLAN与IP地址规划表VLAN规划是整个方案的基石一定要在动手前就用表格把网段列清楚。初始方案里我划分了三个VLAN加一个管理VLAN表格供参考VLAN ID名称网段网关地址用途说明10office192.168.10.0/24192.168.10.1办公电脑、打印机、共享文件20server192.168.20.0/24192.168.20.1服务器、数据库、OA系统100wifi-guest192.168.100.0/24192.168.100.1WiFi接入、访客、手机终端1000manage192.168.1.0/24192.168.1.1设备管理、AP管理特别注意不要让WiFi段和其他段重叠尤其是和防火墙内网口的地址段不能撞。有些同学图省事把WiFi段设成192.168.1.x结果出口防火墙内网口也是192.168.1.x路由一走就乱了。项目里DNS我用了公共DNS因为很多公司内网有私有DNS如果WiFi终端拿着内网的DNS解析不了外网域名那网络表现就是“能上微信、刷不了网页”非常折磨人。2. 锐捷交换机配置实操从VLAN到ACL2.1 准备工作进入配置模式锐捷交换机的命令风格跟主流的网络设备基本一致先通过console线或者SSH登录然后进入特权模式再进全局配置模式enable configure terminal后续修改配置之前建议先在特权模式下执行show running-config | include hostname看看当前设备状态确认自己不是在一台刚被人重置的交换机上操作。配置任何接口前我都习惯先show interfaces status看清端口编号和状态以免配错口导致业务中断。2.2 创建VLAN并规划端口角色创建三个业务VLAN加一个管理VLANvlan 10 name office vlan 20 name server vlan 100 name wifi-guest vlan 1000 name manage然后是端口划分。办公电脑所在的接入交换机端口用access模式划进VLAN 10interface GigabitEthernet 0/1 switchport mode access switchport access vlan 10服务器口划进VLAN 20操作一样。AP的上联口这里要格外注意我推荐直接做成trunk口把管理VLAN和WiFi业务VLAN都放行过去interface GigabitEthernet 0/24 switchport mode trunk switchport trunk allowed vlan 10,20,100,1000为什么不把AP口也做成简单的access口因为通常AP身上跑着两个网段一个管理网段AC管理AP用的一个业务网段用户手机上来的网段。如果只划一个VLAN要么AP管理面直接暴露在WiFi段要么WiFi用户全跑到管理VLAN里去了都是灾难。用trunk口把1000和100两道VLAN同时放行AP自己会通过LLDP或DHCP Option把管理流量和用户流量分开标记。2.3 配置VLAN接口地址SVI有了VLAN还需要一层网关。三层交换机要给每个VLAN配上接口地址才能做VLAN间路由interface vlan 10 ip address 192.168.10.1 255.255.255.0 interface vlan 20 ip address 192.168.20.1 255.255.255.0 interface vlan 100 ip address 192.168.100.1 255.255.255.0 interface vlan 1000 ip address 192.168.1.1 255.255.255.0SVI一配好VLAN之间就有了路由通道。但请注意此刻WiFi段是能ping通内网网关的内网所有网段也“看得到”WiFi段这就等于隔了个寂寞所以第2.4节的ACL才是整个方案的重头戏。2.4 配置ACL核心隔离策略ACL是整个VLAN隔离方案里最关键的一环。锐捷交换机的ACL语法和思科很接近我这里创建一个扩展ACL专门拦截WiFi段访问内网网段ip access-list extended block-to-internal 10 deny ip 192.168.100.0 0.0.0.255 192.168.10.0 0.0.0.255 20 deny ip 192.168.100.0 0.0.0.255 192.168.20.0 0.0.0.255 30 deny ip 192.168.100.0 0.0.0.255 192.168.1.0 0.0.0.255 40 permit ip 192.168.100.0 0.0.0.255 any创建完成之后把ACL挂到VLAN 100的接口下方向是ininterface vlan 100 ip access-group block-to-internal in这里有两个非常容易出错的地方我必须多说几句。第一ACL匹配顺序是从上往下的一旦命中就不再继续。因此必须把精确的deny语句放在permit any之前。如果把permit any放到前面那deny就形同虚设了。实战中经常有人把ACL打开后测试发现还是能访问内网十有八九就是顺序写反了。第二in方向拦的是从WiFi终端进入VLAN 100接口的流量也就是说目标地址是内网网段的包直接被丢弃。如果你把ACL挂成out方向那拦截的就是从内网去往WiFi的流量方向反了完全不解决问题。一个简单的验证方法在WiFi终端上ping内网服务器然后在交换机上执行show access-group statistics如果deny计数在增长说明ACL确实生效了只是可能还有别的放行路径。我还习惯在ACL里把管理VLAN 1000也deny掉。因为AP管理面一般就在这个网段如果不拦截WiFi用户一旦拿到一个跳板还是有可能顺着管理VLAN摸到AP的Web管理界面进而威胁整个无线网络。2.5 开启端口隔离限制WiFi终端互访VLAN隔离只是把WiFi段和内网隔开了但WiFi段内部的设备之间还是二层互通的。访客A可以通过“万能钥匙”类工具获取到访客B的MAC然后发起ARP欺骗攻击因此不少场景要求WiFi终端之间也要隔离。这笔隔离在交换机上的做法有两种一种是把AP上联口设置成protected端口锐捷的命令大概是interface GigabitEthernet 0/24 switchport protectedprotected端口的意思是这个口只能和上联口通信不能和其他protected端口直接通信。但这里有个局限如果AP后面接了很多无线终端所有无线终端都从这个口进来它们之间的通信并不经过交换机二层转发而是由AP自己处理所以单纯在交换机上开protected是不够的。更靠谱的做法是在AP端开启“用户隔离”或“客户端隔离”Client Isolation让AP直接禁止同VLAN内不同无线客户端之间的通信。有些锐捷的瘦AP采用AC集中管理也可以在AC的WLAN模板里打开“用户隔离”开关。如果用的是普通胖AP登录AP的Web管理界面找一下“无线高级设置”里的隔离选项就行。2.6 DHCP分配和DNS设置只有VLAN和ACLWiFi设备还真上不了网因为它们拿不到IP。需要在锐捷交换机上开启DHCP服务或者配置DHCP Relay把请求转发给公司原有的Windows DHCP服务器。小项目直接让交换机当DHCP服务器最省事service dhcp ip dhcp pool wifi_pool network 192.168.100.0 255.255.255.0 default-router 192.168.100.1 dns-server 223.5.5.5 114.114.114.114 lease 0 2两个细节值得留意一是default-router一定要写成192.168.100.1和前面SVI的地址一致否则设备拿到IP却找不到网关会表现为“连上WiFi但没有网络”二是DNS建议填公共DNS尤其不要填公司内部DNS。内部DNS通常只能解析内网域名对外部域名解析能力可能被策略限制WiFi用户拿着它解析外网会非常慢。2.7 默认路由与出口防火墙的联动交换机三层路由配好之后还需要一条指向出口防火墙的默认路由否则WiFi段的包即使被ACL放行也不知道下一步该往哪儿走ip route 0.0.0.0 0.0.0.0 192.168.1.254这里的192.168.1.254是防火墙的内网口地址。注意防火墙端还需要加一条回程路由去往192.168.100.0/24的下一跳指向锐捷交换机的管理地址192.168.1.1。如果防火墙不回指路由外网回来的包就会丢在防火墙那儿表现就是“WiFi能发起连接但网页打不开”。很多项目里出口防火墙本身就支持基于源地址的策略控制所以我一般会在防火墙上再做一道保险允许源地址192.168.100.0/24的流量访问外网禁止访问内网网段。这样即使交换机上的ACL被误删第二层防火墙策略还能兜底。3. 工具选型与设备配置经验3.1 为什么ACL放交换机而不是放防火墙关于这道隔离策略放哪个设备很多老哥在群里争论过。我的观点是如果方案里的内网网关在锐捷交换机上那么ACL放在交换机是最合理的因为它离流量最近转发效率也高不需要把包拐到防火墙再转回来。但如果你用的是基础版二层交换机根本不支持SVI和ACL那就得让防火墙来做VLAN间路由了。做法是二层交换机上联防火墙防火墙内网口上划出多个三层的子接口用VLAN封装的方式对接各个VLAN的网关。比如防火墙的GigabitEthernet 0/0.10对应VLAN 10的网关GigabitEthernet 0/0.100对应VLAN 100的网关然后在防火墙策略里直接写“WiFi段到内网段deny”的规则。这种方式更直观也适合那些运维主要靠防火墙控制的团队。3.2 关于AP上联口的Trunk细节有一种常见情况一个AP同时发放两个SSID一个给员工内部办公绑定VLAN 10一个给访客绑定VLAN 100。这种情况下AP的上联口必须是trunk而且trunk上得同时放行VLAN 10和VLAN 100。有些朋友把AP上联口配成access vlan 10结果访客SSID死活拿不到IP或者一接访客SSID所有终端都掉到VLAN 10里直接进内网这就等于把访客裸奔在办公室里了。所以凡是带有无线AC的部署切记检查trunk allowed vlan里有没有把需要的VLAN全部放行。锐捷交换机trunk口的默认行为可能是放行所有VLAN可以用switchport trunk allowed vlan 10,20,100,1000来收紧。3.3 锐捷常用调试命令速查配置过程里我常打几组命令看状态整理成表方便以后排查场景命令查看VLAN划分show vlan brief查看端口VLAN和模式show interfaces switchport查看SVI接口地址show ip interface brief查看ACL命中计数show access-group statistics查看DHCP地址绑定show ip dhcp binding查看路由表show ip route查看某条ACL的具体规则show access-lists block-to-internal清理端口计数clear counters保存配置write修改完配置一定要write保存不然设备重启配置就全部丢光。我亲眼见过有人调完ACL没保存第二天机房断电整层楼的WiFi直接变“内网裸奔”。4. 常见问题与排查实录4.1 WiFi能连上但上不了网这个现象出现频率最高。我按优先级排一下排查顺序终端IP是否拿对了网段在手机上看看IP是不是192.168.100.x网关是不是192.168.100.1。如果拿到了169.254开头的地址说明DHCP根本没通。交换机上DHCP服务是否开启有的锐捷设备默认没有启动service dhcp地址池配了也不工作全局开一下就好。网关能不能ping通如果ping不通检查SVI是否配置正确端口是否up。防火墙的回程路由有没有没有回程路由的话包出去之后就石沉大海。4.2 能上微信但网页打不开这是DNS问题别提多典型了。WiFi终端从DHCP拿到的DNS如果指向公司内网DNS内网DNS对外部域名解析能力差或者解析被拦截就会出现“微信能发消息、浏览器打不开页面”的怪象。解决办法就是把dhcp pool里的dns-server改成公共DNS比如223.5.5.5、114.114.114.114改完记得让终端断网重连。4.3 ping不通内网服务器但还是能访问内网共享文件ACL在某些设备上默认只匹配新建立的会话如果终端之前已经建立了到内网的TCP连接ACL下发后老连接可能还会存在一段时间。稳妥做法是在配置完ACL后把交换机上对应连接表项清理一下或者让终端重启WiFi。另外检查ACL应用方向我前面强调过别把in搞成out。还有一次我排查到一个项目里内网共享文件还能访问是因为出口防火墙上有一对“内网到任何网段all permit”的规则把防火墙接口上联交换机的流量全放行了交换机ACL拦不住从其它VLAN进来的流量因为ACL只在VLAN 100的in方向生效而用户并不是从VLAN 100进交换机的。这类问题要看数据流从哪个口进来ACL就必须挂在那个入口对应的SVI或物理口上。4.4 内网设备看不到WiFi段的打印机很多公司有“内网打印共享”需求但WiFi段被隔离后手机连访客WiFi想投屏或者打印就发现找不到打印机。怎么办我的建议是把打印机单独放一个VLAN比如VLAN 30然后在ACL里放行WiFi段访问打印机这个特定网段其余内网照旧deny。这样一来投屏打印功能仍然保留核心数据仍然隔离。别想着全放通放通一个打印机就够了。4.5 WiFi段PPPoE或认证拨号冲突还有一个容易忽视的点如果同网段里有人开了PPPoE拨号或者路由器DHCP可能把WiFi终端的网关“抢”走导致流量跑到别人的路由器上网络瞬间瘫痪。排查时可以用手机连上WiFi后看网关MAC是否为锐捷交换机的SVI接口MAC如果发现网关MAC变成了一个小路由器的MAC那就要检查下联口有没有私接路由器。私接路由是WiFi网络卡顿和流量异常的常见元凶。5. 方案之外的几条心得体会5.1 一开始就把管理VLAN和业务VLAN分开做网络规划时所有设备的远程管理、AP管理、上联防火墙管理应该放到单独的VLAN 1000或者专门的带外管理网段。很多初学者喜欢把所有网段塞在一个VLAN里说“反正能通就行”后来做ACL就会发现你根本分不清哪些流量是管理流量哪些是业务流量策略写得跟筛子一样。项目里我把管理VLAN单独摘出来AP和交换机远程管理都走这个网段封闭了来自其他VLAN的访问即使wifi段有内鬼也无法直接摸到设备管理面。5.2 ACL不是越多越好策略要“够用且清晰”有一次接手一套前任留下的配置ACL里十条deny、八条permit互相叠加完全看不出逻辑来。我的习惯是先在纸上把数据流图画一遍哪些网段允许访问什么不允许访问什么再转化成ACL规则。规则数量尽量精简每一条都要有注释或者明确的目的。配置完顺手把ACL导出备份跟配置文件一起存档后续运维的人看着也省心。5.3 排查隔离效果时不要只在PC上测隔离做完很多人拿办公电脑接在WiFi的网口上测试发现ping不通内网就以为大功告成了。但办公电脑的防火墙可能也会阻断ICMP这个结果根本不准。我会带一台手机连上访客WiFi然后先ping内网网关再ping内网服务器最后打开浏览器访问外网三个步骤逐项验证。如果手机在访客SSID下能打开外网但无法访问内网ACL基本就没问题。方案检查完别忘了在出口防火墙上做一次最后的连通性测试用WiFi段IP发起会话看防火墙会话表里有没有出现对应的NAT转换记录。有记录说明数据确实走到了出口设备没记录说明流量在前面就被拦掉了可以再回头查交换机。这次项目做完我最大的感慨是VLAN隔离这件事看起来只是几条命令实际考验的是对整个数据转发路径的把控。从WiFi终端到AP再到交换机接入端口、SVI、ACL、路由表、防火墙策略任何一环脱节表现出来都是“网坏了”。把每个环节的状态都验证一遍网络自然就稳了。最后再提一句给设备配完配置一定要记得write保存不然一切心血都可能随着一次设备重启烟消云散。