对第一次认真学思科网络基础的兄弟,我想先说句实话:别急着啃路由协议和OSPF,真正让你在工位上卡住的内容,往往是更底层的东西——模拟器装不上、console连不上、交换机的默认VLAN还搞不清是哪个。前几天群里一个同行就在这上面栽了跟头,他在模拟器里折腾了两天NAT,最后发现问题出在VLAN划分和接口类型上,跟NAT本身一点关系都没有。
这篇文章我把从搭建模拟环境、交换机初始化,到源地址策略路由、ACS认证配置这条完整链路串一遍,每个操作都写清楚为什么要这么做,以及我实际踩过的坑。适合刚入行的网络工程师、准备考CCNA的人,也适合那些已经会配VLAN但没系统练过PBR和AAA的朋友。内容不涉及太深的厂商原理,全部是可落地的操作经验。
1. 环境先行:模拟器选型背后的真实逻辑
刚学思科,第一步就是找地方练手。但现在市面上的模拟器选项太多了,Packet Tracer、GNS3、EVE-NG,还有各种企业级虚拟化方案,很多人一开始就选错了工具,导致后面实验做不下去,以为是自己的问题,其实是环境没搭对。
1.1 Packet Tracer、GNS3、EVE-NG到底怎么选
我自己的判断标准很简单:你的目标是学概念,还是练真命令?
Packet Tracer是思科官方的教学工具,优点是真的零门槛,拓扑拖拽就能搭,而且自带配置校验,你配错了它会提示。但如果你以后要面对真机,PT的环境和真实IOS差距不小,很多命令在PT里根本没有,学完会有一种"纸上谈兵"的感觉。我建议PT只用来做最基础的拓扑认知,比如看看三层架构长什么样,别在里面深挖细节。
GNS3的优势是轻量,用真实IOS镜像跑,命令和真机完全一致。缺点是它要自己装镜像、调设备模板,开局配置相对繁琐,而且设备一多,对电脑性能的消耗比较大。
EVE-NG是我现在的主力。它在GNS3的基础上优化了管理方式,所有设备都跑在虚拟机里,通过网页控制台管理,拓扑可以保存成项目文件,特别适合做多设备的大型实验。它支持导入思科IOS、IOSv、ASA镜像,还能跑其他厂商的设备,比如用qemu模拟华为、H3C,功能上比GNS3强很多。
提示:如果电脑内存小于16G,不建议用EVE-NG跑大规模拓扑。EVE-NG每台设备单独占用内存,一个三节点拓扑就可能吃掉4G以上内存。
1.2 EVE-NG部署中的几个关键细节
EVE-NG的安装本身不难,下载OVA文件导入VMware Workstation或VirtualBox,设置好用户名密码,开机后在CLI里配置管理地址,然后通过浏览器打开管理界面。但有几个细节很多人第一次会栽:
第一,虚拟机网络适配器必须桥接模式,NAT模式下你从宿主机访问不到管理界面。如果桥接后还是不通,检查虚拟机防火墙和宿主机网段,最好给EVE-NG固定一个和宿主机同网段的静态IP。
第二,上传镜像必须传到正确目录,而且要用WinSCP或SFTP工具。不同的设备类型对应不同的子目录,最常见的是/opt/unetlab/addons/qemu/下的子文件夹。镜像放错位置,网页端根本识别不到设备模板。
第三,也是最容易漏的:上传完镜像后必须执行一条权限修复命令,否则所有设备都启动不了或中途崩溃:
/opt/unetlab/wrappers/unl_wrapper -a fixpermissions这条命令的作用是调整镜像文件的属主和可执行权限。很多教程只让你上传镜像,没告诉你还要跑这一步,导致设备起不来的情况非常普遍。
1.3 镜像选择与ASA彩蛋
如果你学习用,推荐搞一套IOSv L2镜像和一套IOSv L3镜像。L2版本支持VLAN、trunk、STP这些二层功能,L3版本支持路由、策略路由、ACL、NAT。网上流传的vios镜像文件命名一般带vios-adventerprisek9之类的标识,导入EVE-NG后启动速度很快,比传统3640镜像稳定得多。
顺带说一句,热搜里"思科模拟器5505设备实验"指的就是ASA 5505防火墙实验。在EVE-NG里可以导入ASA 5505的qemu镜像,启动后和真机一样进setup模式,做basic firewall初始化。如果你想提前练防火墙的NAT配置、安全级别调整,这个镜像确实值得折腾,但建议先把交换机基础弄扎实再碰。
2. 交换机初始化的那些默认值陷阱
很多人觉得交换机初始化就是改个主机名、配个IP,简单得很。但日常排障中,真正让人头疼的往往来自那些"出厂默认值",尤其是VLAN相关配置。这一章我把初始化流程一步步理顺,同时把踩过的暗坑标出来。
2.1 首次登录与基础配置
拿到一台思科交换机,第一步是通过console线登录,而不是用网线。USB转console线插上后,电脑可能出现"未知设备COM端口"的问题,最根本的原因是USB转串口芯片驱动没装好。常见的芯片方案是CP210x、CH340、FTDI,你打开设备管理器看是哪个芯片,去对应厂商官网下驱动就行。
终端软件我习惯用SecureCRT,协议选Serial,波特率9600、数据位8、停止位1,其他默认。这里有个细节:把"流控"里的XON/XOFF选项关掉。开着它,以后show命令输出一多,屏幕就会卡住,你以为设备死了,其实只是软件流控在等你按Ctrl+S继续输出。
登录后进入配置模式,先把设备基础信息梳理好:
Switch> enable Switch# configure terminal Switch(config)# hostname CORE-SW01 CORE-SW01(config)# enable secret Cisc0#2024 CORE-SW01(config)# banner motd #Authorized Access Only#重点说下enable secret和enable password的优先级。思科IOS里如果你同时配了这两个,enable secret会优先生效。原因是secret存的是MD5哈希值,password是明文或弱加密,secret安全性更高,老设备上两个都配就会混淆,建议只保留secret。
2.2 VLAN 1的默认短板与本地管理VLAN
很多刚上手的人会把管理IP直接配在VLAN 1上,因为默认所有端口都在VLAN 1里,配置简单省事。但这是一个非常值得警惕的习惯。
VLAN 1是思科交换机的默认VLAN,所有VLAN的trunk链路默认都承载VLAN 1,而且VLAN 1里的广播流量不能被修剪。这意味着如果你把管理地址放VLAN 1,任何接入交换机且处于外网的设备,都可能通过trunk链路直接访问你的管理地址,等于管理面暴露在网络流量里。
我的做法是把本地管理VLAN单独拎出来,比如VLAN 99:
CORE-SW01(config)# vlan 99 CORE-SW01(config-vlan)# name MGMT CORE-SW01(config-vlan)# exit CORE-SW01(config)# interface vlan 99 CORE-SW01(config-if)# ip address 10.10.99.1 255.255.255.0 CORE-SW01(config-if)# no shutdown CORE-SW01(config-if)# exit然后再给VLAN 1的管理地址补一个no ip address或者说干脆不放地址。这样规划之后,只有被划入VLAN 99的端口才能管理交换机。这是很多生产环境的标准做法,实验环境养成这个习惯,以后进了真实网管环境就不会犯低级错误。
2.3 trunk接口和native VLAN的配合
接下来是VLAN落到端口上。这里有一个典型的误区:把VLAN划分和trunk混在一起。简单的划分规则是这样:
- Access口:接终端设备,比如电脑、打印机、服务器,端口只属于单一VLAN。
- Trunk口:接交换机与交换机之间、交换机与路由器之间,承载多个VLAN的流量。
配置方法:
CORE-SW01(config)# interface GigabitEthernet0/1 CORE-SW01(config-if)# switchport mode access CORE-SW01(config-if)# switchport access vlan 10 CORE-SW01(config-if)# exit CORE-SW01(config)# interface GigabitEthernet0/24 CORE-SW01(config-if)# switchport mode trunk CORE-SW01(config-if)# switchport trunk encapsulation dot1q CORE-SW01(config-if)# switchport trunk native vlan 99 CORE-SW01(config-if)# switchport trunk allowed vlan 10,20,99 CORE-SW01(config-if)# exittrunk native vlan的作用是定义trunk端口上不打802.1Q标签的帧属于哪个VLAN。两端交换机的native VLAN必须一致,否则会出现"VLAN不匹配"的日志告警,流量会串到意想不到的VLAN里。这是排障中最常见的问题之一,两边配置看着一样,实际却一个在native VLAN 1,一个在native VLAN 99,整个trunk链路收发混乱。
注意:思科早期设备默认native VLAN是1,很多网工习惯永远不碰native VLAN。但如果你已经调整了管理VLAN,建议把native VLAN也一起改掉,或者保证两端完全一致,二选其一。
3. 实训重点:基于源地址的策略路由PBR实操与查证
热搜词里的"基于源地址策略路由实训指导书"指向一个很典型的实验场景:流量来源不同,走不同的出口路径。比如财务部门的流量走专线,普通办公流量走宽带。传统路由只看目标地址,而策略路由可以先看策略,再看路由表,这个能力在出口网关和防火墙场景中非常实用。
3.1 策略路由与普通路由的本质区别
普通路由转发时,路由器只做一件事:查目标IP在路由表中的最长匹配条目,然后把报文从对应出接口扔出去。它不关心这个报文是哪个网段发出来的,来自哪里无所谓。
策略路由(PBR)则是在查路由表之前,先检查报文特征。你可以按源IP、目的IP、端口号、协议类型来分类,命中策略之后,直接指令设备把报文交给指定下一跳或指定出接口,不再走查路由表流程。
你可以把它理解成一个插队规则:普通员工进门先排队(查路由表),VIP客户进门直接走贵宾通道(PBR)。贵宾通道对应的是set ip next-hop,配置了这条命令后,命中的流量就直接被送往指定位置。
3.2 完整配置过程演示
实验拓扑大概长这样:
PC-A 网段 10.0.1.0/24 PC-B 网段 10.0.2.0/24 | | Gi0/1(入口) | CORE-SW01(三层交换机) | |-- Gi0/3 连出口1(下一跳 192.168.10.2) |-- Gi0/4 连出口2(下一跳 192.168.20.2)需求:让来自10.0.1.0/24的流量走出口1,其他流量默认走出口2。
首先创建ACL,匹配源地址特征。这里有一个非常常见的坑:用标准ACL匹配源地址时,通配符掩码容易写反。比如access-list 10 permit 10.0.1.0 0.0.0.255才是正确的,255.255.255.0这种子网掩码形式在ACL里是无效写法,会被当作非法参数拒绝或匹配错误。
CORE-SW01(config)# access-list 10 permit 10.0.1.0 0.0.0.255然后写route-map:
CORE-SW01(config)# route-map PBR_TEST permit 10 CORE-SW01(config-route-map)# match ip address 10 CORE-SW01(config-route-map)# set ip next-hop 192.168.10.2 CORE-SW01(config-route-map)# exit最后把策略应用到流量进入的接口,这里是Gi0/1:
CORE-SW01(config)# interface GigabitEthernet0/1 CORE-SW01(config-if)# ip policy route-map PBR_TEST CORE-SW01(config-if)# exit注意,PBR策略应用在入口方向,不是出口方向。流量从PC-A进到Gi0/1时立即被检查,如果命中就改走出口1。如果你把ip policy route-map放在Gi0/3上,是没有任何效果的,大部分新手在这里翻车。
另外还有一个关联配置:如果路由器自己发出的流量也要走PBR,比如你在交换机上用ping 8.8.8.8 source 10.0.1.1做测试,此时流量本身由设备产生,入口接口不存在,需要加一条全局策略:
CORE-SW01(config)# ip local policy route-map PBR_TEST3.3 验证与排查顺序
配完之后不要立刻下结论,按下面链路逐项确认:
- 查ACL计数:
show access-lists,看匹配次数是否在上涨。如果计数不变,说明流量根本没匹配上ACL,返过去检查ACL通配符和源网段。 - 查策略应用状态:
show ip policy,确认Gi0/1接口下能看到策略名称。这里显示的是interface output policy还是input policy,一定要确认是input。 - 查route-map命中情况:
show route-map PBR_TEST,输出中会有匹配计数的统计。如果ACL计数涨而route-map计数不涨,说明match语句和ACL之间映射出了问题。 - 查下一跳可达性:
ping 192.168.10.2,下一跳不可达时,即使PBR命中也不会起任何作用,流量会退回普通路由表转发。
还有一个容易被忽略的点:在开启CEF快速转发的设备上,PBR的debug输出不一定实时可见。我建议别用debug ip policy来做验证,它输出量大,而且在高负载环境下会影响数据面性能。用show access-lists的计数器组合show route-map的计数器,足够定位90%的问题。
4. ACS 5.8认证配置:默认密码传闻与AAA落地
热搜词里"思科acs5.8默认密码"被搜得很多,说明不少人在ACS初始化这一步卡住了。我配置ACS的经历比较曲折,这里把真正的坑讲清楚。
4.1 为什么说"默认密码"是个伪命题
思科ACS 5.8并没有一个通用的出厂默认密码。ACS 5.8安装完成后,第一次通过浏览器访问管理界面时,系统会要求你设置管理员账号,这个账号是在安装配置阶段创建的,而不是出厂固定写死在系统里的。
网上流传的"admin/admin"、"admin/acsadmin"等说法,基本都是误传。如果你安装的是VMware虚拟机版本的ACS 5.8,安装过程中会让创建admin账户并设置密码,如果你跳过了这一步或安装中途断掉,登录时看到"用户名密码错误"就再正常不过了。
遇到这种情况,不要在浏览器端反复尝试密码,正确方式是回到ACS的CLI界面,执行:
acs# application configure按提示重新配置网络参数、NTP和管理员账号。这是官方支持的恢复方式,比重装省事得多。真正做到一半找不到密码了,也可以看看安装时是否写了初始化文档,很多项目规范里会把初始admin账号密码写在交付文档中。
4.2 交换机接入RADIUS认证的完整配置
ACS 5.8主要用于RADIUS认证和TACACS+授权。网络设备作为客户端,通过RADIUS协议向ACS做登录认证和命令授权。这里演示最常见的配置场景:交换机把SSH登录认证交给ACS处理。
先定义RADIUS服务器信息:
CORE-SW01(config)# aaa new-model CORE-SW01(config)# radius server ACS58 CORE-SW01(config-radius-server)# address ipv4 10.1.1.100 auth-port 1812 acct-port 1813 CORE-SW01(config-radius-server)# key MySecretKey#2024 CORE-SW01(config-radius-server)# exit然后配置AAA登录认证顺序,注意local参数要放在最后,作为ACS不可达时的逃生通道:
CORE-SW01(config)# aaa authentication login default group radius local CORE-SW01(config)# aaa authorization exec default group radius local CORE-SW01(config)# line vty 0 4 CORE-SW01(config-line)# login authentication default CORE-SW01(config-line)# transport input ssh CORE-SW01(config-line)# exit EVE-SW01(config)# exit这里有一个血泪教训:给console口配置认证之前,一定要确认本地账号存在且可用。曾经有一次我改完AAA配置后,发现ACS服务器还没上线,自己的SSH会话又已经断掉,结果只能去机房用console线登录。避免这个问题的方法之一是先把aaa authentication login default里保留local,并且在本地创建好备用账号:
CORE-SW01(config)# username adminsecret privilege 15 secret LocalAdmin#2024这样即使ACS全程离线,本地admin账号也能保你进门。
4.3 登录验证与鉴权失败排查
配置完成后,在交换机上做本机自测:
CORE-SW01# test aaa group radius user testuser password testpass new-code如果看到User was successfully authenticated,说明RADIUS链路基本通了。接下来用这个ACS账号去SSH登录设备,观察ACS页面的Authentication日志,能看到认证成功或失败的具体原因。
最常见的失败原因有三个:
- 共享密钥不一致:交换机上
key MySecretKey#2024必须和ACS里Network Device配置的共享密钥完全一致,包括大小写和特殊字符。ACS不会告诉你哪边错了,只会记录一个Authentication Failed。 - NAS IP配置错了:ACS里添加网络设备时,填的IP地址必须和交换机发RADIUS请求时用的源地址一致。多数情况交换机只有一个管理地址,不会错;但如果有多个接口地址,就会发生"从A接口发请求,ACS只认识B接口"的诡异问题。
- ACS里没有创建该用户或账号策略限制:ACS 5.8的Identity Store可以是本地用户数据库,也可以是AD域。本地用户需要手动创建,并且启用状态。新装的ACS默认策略可能禁止空密码或简单密码登录。
排查链路我建议从交换机侧向上查:先show radius server-group确认服务器状态可用,再debug radius authentication看收发报文,最后回ACS看日志。不要一开始就在ACS界面里翻,效率很低。
5. 从实验到真机:最常见故障与我的处理习惯
最后分享一些从模拟器转到真机环境后必然会遇到的故障,以及我的处理习惯。这些内容单看很简单,但几乎每个月都能在群里看到新人卡住。
5.1 连不上console的硬件陷阱
USB转console口连不上,九成不是配置问题,是驱动问题。插上USB转串口线后,打开设备管理器,如果看到COM口带黄色感叹号,就是驱动没装好。CH340芯片去搜CH340驱动,CP210x去搜"CP210x VCP driver",FTDI芯片去搜FTDI VCP驱动,识别芯片型号看线材包装或设备管理器里的描述。
驱动装好后,SecureCRT新建连接,协议选Serial,Port选对应COM口,波特率9600。如果屏幕一片空白,敲一下回车,设备如果在线就会出现提示符。仍然空白的话,把波特率切换到4800或115200试试——有的老设备或特定版本控制台波特率不是9600。
5.2 双工不匹配和CRC错误
自我协商不是万能的。当交换机端口配置成duplex auto,而远端设备强制duplex full,就出现了半双工/全双工不匹配。现象是远程管理偶尔通偶尔不通,ping延迟忽高忽低,show interface里计数出现大量runts和CRC errors。
处理方式很简单:两端都强制成同一双工模式,更保险的是直接统一成全双工:
CORE-SW01(config)# interface GigabitEthernet0/2 CORE-SW01(config-if)# duplex full CORE-SW01(config-if)# speed 100 CORE-SW01(config-if)# no shutdown要注意的是,配置完成后看show interface的Last input和Output queue,这类指标如果持续跳变,说明链路已经稳定了。还要去确认远端设备做了相同配置,否则你这边强制,那边还是auto,问题依旧。
5.3 实验操练建议和ASA彩蛋
如果你准备把网工这条路走下去,我的习惯是:每个实验至少做两遍,第一遍看着命令敲,第二遍把配置全删了重新来。第二次才是最锻炼人的,因为你会忘记某个配置细节,从而触发真正的故障,然后被迫学会排查。
最后再说回"思科模拟器5505设备实验"。如果你已经在EVE-NG里导入了ASA 5505镜像,第一次开机后会自动进入System Configuration Dialog。依次设置接口IP、默认网关、启用SSH后,基本就跑起来了。ASA的配置逻辑和交换机不太一样,它基于安全级别,接口必须用nameif命名并设置security-level,比如inside口100,outside口0,然后再做PAT:
ciscoasa(config)# interface vlan1 ciscoasa(config-if)# nameif inside ciscoasa(config-if)# security-level 100 ciscoasa(config-if)# ip address 192.168.1.1 255.255.255.0 ciscoasa(config-if)# no shutdown ciscoasa(config-if)# exit ciscoasa(config)# interface vlan2 ciscoasa(config-if)# nameif outside ciscoasa(config-if)# security-level 0 ciscoasa(config-if)# ip address 200.1.1.1 255.255.255.0 ciscoasa(config-if)# no shutdown ciscoasa(config-if)# exit ciscoasa(config)# object network INSIDE-ALL ciscoasa(config-network-object)# subnet 192.168.1.0 255.255.255.0 ciscoasa(config-network-object)# nat (inside,outside) dynamic interface这段配置跑通后,你对ASA防火墙的接口安全模型会有非常直观的理解——为什么inside可以访问outside,而outside默认无法访问inside。
练到这里再回头看"思科网络基础"这几个字,你会发现其实并没有那么玄乎。环境搭好、命令敲熟、踩过几个坑之后,剩下的就是在大量实验里积累条件反射。真机环境迟早会遇到,早点在模拟器里把故障前置,真正上设备时候你反而不会慌。