Cisco路由器配置IPv6 Manual隧道IPv6与IPv4共存的方式IPv6与IPv4共存方式大致有三种：双栈：要求网络中所有设备均同时支持IPv4和IPv6转换：转换这种方式将IPv6协议的报头转换成IPv4协议报头。隧道：假定两个IPv6节点要使用IPv6数据包进行交互，但他们是经由中间IPv4路由器互联的。我们将两台IPv6路由器之间的中间IPv4路由器的集合称为一个隧道。借助于该隧道，在隧道发送端的IPv6节点数据可将整个IPv6数据放到一个IPv4数据报的数据（有效载荷）字段中。IPv6隧道类型如上图拓扑所示，当两个IPv6网络需要通信的时候，如果中间穿越IPv4网络，而IPv4网络中的设备只能识别IPv4报文，并不能正常传输IPv6，这时候就需要在IPv4网络中为IPv6创建一条隧道，来提供IPv6在IPv4中的传递。把 IPv6 的数据全部封装在 IPv4 中，将 IPv4 当作链路层来传递的隧道形式，称为覆盖型隧道（Overlay Tunnels ）。由于隧道是建立在 IPv4 基础上的，隧道又必须有起点和终点来明确隧道的路径，所以覆盖型隧道的起点和终点最好是使用 IPv4 地址，有时必须是 IPv4 地址，并且隧道在传输 IPv6 数据时，也应该在隧道的两端添加 IPv6 地址，来完成两端 IPv6 网络的通信。隧道的起点和终点必须同时支持 IPv4 和 IPv6。在当前Cisco IOS中支持的覆盖型隧道有以下几种：名称模式说明Manualipv6ip点对点，只传递IPv6数据包。GRE(Generic routing encapsulation )gre ip点对点，可传递多种协议。IPv4-compatibleipv6ip auto-tunnel点到多点，Cisco不建议使用。6to4ipv6ip 6to4点到多点，使用地址为2002::/16。ISATAP(Intra-Site Automatic Tunnel Addressing Protocol)ipv6ip isatap点到多点。以上隧道中，所有隧道的源均为 IPv4 地址，但是只有点对点隧道的终点为 IPv4 地址，其它都不需要。更多的是，点对点隧道必须要有 IPv6 地址。配置我们还是以该拓扑为例进行配置。初始配置首先来进行一些初始配置，为这些路由器接口配置IP地址，并在部分路由器上开启IPv6功能。对于路由器R1:R1(config)#int f0/0 R1(config-if)#ip address 10.1.1.1 255.255.255.252 R1(config-if)#no shutdown R1(config-if)#exit R1(config)#ip route 0.0.0.0 0.0.0.0 f0/0 R1(config)#ipv6 unicast-routing R1(config)#int loopback 1 R1(config-if)#ipv6 address 3001:1:1:11::1/64 R1(config)#int loopback 2 R1(config-if)#ipv6 address 3002:1:1:11::1/64 R1(config)#int loopback 3 R1(config-if)#ipv6 address 3003:1:1:11::1/64对于R-MID：R-MID(config)#interface FastEthernet0/0 R-MID (config-if)#ip address 20.1.1.1 255.255.255.252 R-MID (config-if)#no shutdown R-MID(config)#interface FastEthernet0/1 R-MID (config-if)#ip address 10.1.1.2 255.255.255.252 R-MID (config-if)#no shutdown这里有必要说明下，由于R1、R2均分别与R-MID直连，所以不用指定R-MID到R1、R2的路由，但是在非直连的情况下请注意这一点。对于R2：R2(config)#int f0/0 R2(config-if)#ip address 20.1.1.2 255.255.255.252 R2(config-if)#no shutdown R2(config-if)#exit R2(config)#ip route 0.0.0.0 0.0.0.0 f0/0 R2(config)#ipv6 unicast-routing R2(config)#int loopback 0 R2(config-if)#ipv6 address 2022:2:2:22::2/64可以在R1上使用ping命令来测试IPv4的连通性：配置Manual类型本文只演示Manual类型。对于R1：R1(config)#int tunnel 0 R1(config-if)#ipv6 address 2012:1:1:11::1/64 R1(config-if)#tunnel source f0/0 R1(config-if)#tunnel destination 20.1.1.2 R1(config-if)#tunnel mode ipv6ip对于R2：R2(config)#int tunnel 0 R2(config-if)#ipv6 address 2012:1:1:11::2/64 R2(config-if)#tunnel source f0/0 R2(config-if)#tunnel destination 10.1.1.1 R2(config-if)#tunnel mode ipv6ip隧道借用地址IP unnumbered端口复用技术，常用来节省IP地址。一个接口如果没有IP地址就无法生成路由也就无法产生IP报文、转发报文。IP unnumbered可以让路由器没有配置IP地址的一个接口，利用本地某接口网络地址，作为该接口的网络地址以使该接口能够正常使用。隧道unnumbered在现有 IPv4 网络上创建覆盖型 IPv6 隧道，隧道的起点和终点都使用了 IPv4 地址来定义，然后要使隧道运行正常，使隧道具有路由协议的连接功能，需要赋予隧道两端 IPv6 地址，从而提供 IPv6 的连通性，而隧道两端的 IPv6 地址可以不属于同一网段，当然属于同一网段是最好的选择。当隧道两端的 IPv6 地址不属于同一网段时，那么两端的地址是无法 ping 通的，但IPv6 路由协议可以照常使用，这时路由协议需要将隧道的地址当作额外路由进行重新通告一次。如上图，我们将隧道两端IPv6地址改为无编号借用地址（unnumbered），就可以让这两个接口处于不同网段。初始配置对于路由器R1r1(config)#int f0/0 r1(config-if)#ip address 10.1.1.1 255.255.255.0 r1(config-if)#exi r1(config)#ip route 0.0.0.0 0.0.0.0 f0/0 r1(config)# r1(config)#ipv6 unicast-routing r1(config)#int loopback 0 r1(config-if)#ipv6 address 2011:1:1:11::1/64对于路由器R2r2(config)#int f0/1 r2(config-if)#ip add 20.1.1.1 255.255.255.0 r2(config-if)#exit r2(config)#ip route 0.0.0.0 0.0.0.0 f0/0 r2(config)#ipv6 unicast-routing r2(config)#int loopback 0 r2(config-if)#ipv6 address 2022:2:2:22::2/64确保IPv4连通后进行以下步骤。配置unnumbered地址的IPv6隧道我们以Manual(ipv6ip)类型隧道为例对于R1r1(config)#int tunnel 0 r1(config-if)#ipv6 unnumbered loopback 0 r1(config-if)#tunnel source f0/0 r1(config-if)#tunnel destination 20.1.1.1 r1(config-if)#tunnel mode ipv6ip对于R2r2(config)#int tunnel 0 r2(config-if)#ipv6 unnumbered loopback 0 r2(config-if)#tunnel source f0/0 r2(config-if)#tunnel destination 10.1.1.1 r2(config-if)#tunnel mode ipv6ip这里就是我们之前提到过的地方了，处于不同网段无法Ping通。为了严谨我们先来查看下隧道的情况。r1#show ipv6 interface brief tunnel 0 Tunnel10 [up/up] FE80::A01:101 unnumbered (Loopback0)同样R2也看看r2#show ipv6 interface brief tunnel 0 Tunnel10 [up/up] FE80::1401:101 unnumbered (Loopback0)然后在R1对R2使用ping命令试试：r1#ping 2022:2:2:22::2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 2022:2:2:22::2, timeout is 2 seconds: ..... Success rate is 0 percent (0/5)不出所料Ping不通！！！这是由于隧道两端地址不属于同一网段，所以没有对端路由信息，无法 ping 通。既然如此，我们就让它们彼此拥有关于对端路由信息，接下来我们开启OSPF v3。开启OSPFv3在R1开启OSPFv3协议：r1(config)#ipv6 router ospf 10 r1(config-rtr)#router-id 1.1.1.1 r1(config)#int loopback 0 r1(config-if)#ipv6 ospf network point-to-point r1(config-if)#ipv6 ospf 10 area 0 r1(config)#int tunnel 0 r1(config-if)#ipv6 ospf 10 area 0同样在R2上开启OSPFv3协议：r2(config)#ipv6 router ospf 10 r2(config-rtr)#router-id 2.2.2.2 r2(config)#int loopback 0 r2(config-if)#ipv6 ospf network point-to-p r2(config-if)#ipv6 ospf 10 area 0 r2(config)#int tunnel 10 r2(config-if)#ipv6 ospf 10 area 0R1查看邻居状态：r1#show ipv6 ospf neighbor Neighbor ID Pri State Dead Time Interface ID Interface 2.2.2.2 1 FULL/ - 00:00:37 15 Tunnel10R2查看邻居状态：r2#show ipv6 ospf neighbor Neighbor ID Pri State Dead Time Interface ID Interface 1.1.1.1 1 FULL/ - 00:00:36 15 Tunnel10从邻居状态可以知道，即使两端网段不一致导致Ping不通，但IPv6路由协议可以使用。我们刚才提到过，这种情况需要路由协议再通告一次。来看看两端路由信息r1#show ipv6 route ospf IPv6 Routing Table - 7 entries Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP U - Per-user Static route I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2 ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2 D - EIGRP, EX - EIGRP external O 2022:2:2:22::/64 [110/11112] via FE80::1401:101, Tunnel10r2#show ipv6 route ospf IPv6 Routing Table - 7 entries Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP U - Per-user Static route I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2 ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2 D - EIGRP, EX - EIGRP external O 2011:1:1:11::/64 [110/11112] via FE80::A01:101, Tunnel10说明学习到的IPv6路由是正常的。即然有了路由信息，那我们尝试Ping一下：r1#ping 2022:2:2:22::2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 2022:2:2:22::2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 120/181/268 ms果然Ping通了！！！来查看下R2到R1的连通性：r2#ping 2011:1:1:11::1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 2011:1:1:11::1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 88/164/284 ms同样也成功了。
Cisco交换机安全配置前提我们以下命令一般都要先进入Config模式S1> enable S1# conf t S1(config)#端口安全保护禁用未使用的端口以关闭fa0/1到fa0/24的端口为例S1(config)# interface range fa0/1-24 S1(config-if-range)# shutdown缓解MAC地址表攻击防止CAM表溢出的最简单有效的方法是启用端口安全，它限制了端口上所允许的有效MAC地址数量。我们以fa0/1为例子S1(config)# interface fa0/1 S1(config-if)# switchport port-security这里你可能会遇到报错，内容如下：Command rejected: FastEthernet0/1 is a dynamic port.这是因为端口安全只能在手动配置的接入模式(access)端口或手动配置的中继(trunk)端口上！我们先将端口切换到access（如果是trunk的话命令中相应部分请改为trunk），然后开启端口安全。S1(config-if)# switchport mode access S1(config-if)# switchport port-security接下来限制端口上MAC地址最大数量，默认值为1S1(config-if)# switchport port-security maximum当然我们可以手动置顶数目，范围在<1-8192>，我们这里以手动设置1为例S1(config-if)# switchport port-security maximum 1手动配置MAC在接口配置模式中，执行以下命令，可手动指定安全MAC：switchport port-security mac-address 这里写MAC地址我们以aaaa.bbbb.1234地址为例S1(config-if)# switchport port-security mac-address aaaa.bbbb.1234动态获取除了手动之外还有动态获取的方式。在执行switchport port-security之后，这个端口直接连接的设备的源MAC地址就会成为安全MAC。但是，这个地址不会添加到启动配置中，也就是说，交换机重启后必须重新学习MAC地址！！动态获取-粘滞(Sticky)管理员可以执行以下命令，将动态获取的MAC地址，写入到运行配置文件中S1(config-if)# switchport port-security mac-address sticky查看端口安全信息我们可以在特权模式#下来查看端口安全的具体信息同样我们以fa0/1为例子S1# show port-security interface fa0/1当然你在config及其子模式下可以用do来执行特权模式下的命令S1(config-if)# do show port-security interface fa0/1大致能看到如下字段（字段对应的值取决于你的配置）S1# show port-security interface fa0/1 Port Security : Enabled Port Status : Secure-up Violation Mode : Shutdown Aging Time : 0 mins Aging Type : Absolute SecureStatic Address Aging : Disabled Maximum MAC Addresses : 4 Total MAC Addresses : 2 Configured MAC Addresses : 1 Sticky MAC Addresses : 1 Last Source Address:Vlan : a41f.7302.375b:2 Security Violation Count : 0还用一条命了可以查看安全MAC地址表S1# show port-security addressS1# show port-security address Secure Mac Address Table ----------------------------------------------------------------------------- Vlan Mac Address Type Ports Remaining Age (mins) ---- ----------- ---- ----- ------------- 1 a41f.7302.375b:2 SecureSticky Fa0/1 - 1 aaaa.bbbb.1234 SecureConfigured Fa0/1 - ----------------------------------------------------------------------------- Total Addresses in System (excluding one mac per port) : 1 Max Addresses limit in System (excluding one mac per port) : 8192端口安全老化通过端口安全老化可对端口上的动态和静态安全地址设置老化时间。端口老化时间有两种：绝对老化时间（Absolute）：老化时间到期后删除MAC地址非活动老化时间（Inactivity）：仅当端口上的安全地址在老化时间内使用老化功能删除安全端口上的安全 MAC 地址，无需手动删除现有安全 MAC 地址。还可增加老化时间限制，确保即使在添加新 MAC 地址时同样保持之前的安全 MAC 地址。可以对每个端口启用或禁用静态配置的安全地址老化。switchport port-security aging { static | time time | type {absolute | inactivity}}下面是各个参数的说明：参数说明static为此端口上静态配置的安全地址启用老化。time time为此端口指定老化时间。范围为 0 至 1440 分钟。如果 时间为 0，则表示这个端口禁用老化。type absolute设置绝对老化时间。所有安全地址 都会在到达设置的时间之后立刻在这个端口上老化，并且从 安全地址列表中被删除。type inactivity设置不活动老化类型。这个端口上的安全地址只有在设定的时间范围内，没有数据流量来自安全地址，安全地址才会老化。我们对把老化类型设置为非活动类型，并且时间为10分钟S1(config-if)# switchport port-security aging time 10 S1(config-if)# switchport port-security aging type inactivity端口安全违规模式连接到端口的设备 MAC 地址与安全地址列表不一致，则会触发端口违规。在默认情况下，这个端口就会进入error-disabled状态。设置端口安全违规模式可以用以下命令：switchport port-security violation { protect | restrict | shutdown}模式说明shutdown（默认）端口会立刻过渡到error-disabled状态，关闭端口LED并且发送一条系统日志消息。它会增加违规计数器的值。当一个安全端口处于error-disabled状态，管理员必须重新启用这个端口，这时需要输入shutdown和no shutdown命令。restrict端口会丢弃携带未知源地址的数据包，直到管理员删除了 足够数量的安全MAC地址，让安全MAC地址的数量降到了 最大值以下，或者管理员增加了最大值。这种模式会让违规计数器的值增加，并生成一条系统日志消息。protect这是最不安全的安全违规模式。端口会丢弃携带未知源地址的数据包，直到管理员删除了足够数量的安全MAC地址，让安全MAC地址的数量降到了最大值以下，或者管理员增加了最大值。不会发送系统日志消息。用一张图来概括缓解VLAN攻击VLAN攻击的方式下列三种方式都可以发起VLAN跳跃攻击：发起攻击的主机伪造DTP消息，使交换机进入中继模式。然后，攻击者可以发送标记为目标 VLAN 的流量，然后交换机向目的地传输数据包。引入非法交换机并启用中继。然后攻击者就可以通过非法交换机访问被攻击交换机上的所有 VLAN。另一种VLAN跳跃攻击是双重标记 (Double-Tagging) 攻击，又称双封装 (double-encapsulated) 攻击。这种攻击方式利用的是大多数交换机的硬件工作原理。缓解VLAN跳跃攻击的步骤实际上很简单，我们就把开启自动的一些端口变为手动模式，然后对中继端口设置下本征VLAN即可。使用switchport mode access接口配置命令禁用非中继端口上的 DTP（自动中继）协商。禁用未使用的端口并将其放在未使用的 VLAN 中。使用switchport mode trunk命令手动启用中继端口上的中继链路。使用switchport nonegotiate命令禁用中继端口上的 DTP（自动中继）协商。使用switchport trunk native vlan 这里写VLAN号命令把本征VLAN设置为VLAN 1之外的其他 VLAN。缓解DHCP攻击什么是DHCP攻击DHCP攻击针对的目标是网络中的DHCP服务器，原理是耗尽DHCP服务器所有的IP地址资源，使其无法正常提供地址分配服务。然后在网络中再架设假冒的DHCP服务器为客户端分发IP地址，从而来实现中间人攻击。DHCP耗竭攻击可以使用端口安全来得到有效地缓解，因为每个发送的DHCP请求消息中使用一个唯一的源MAC地址。但是，缓解 DHCP欺骗攻击需要采取更多保护措施。使用真实的接口 MAC地址作为源以太网地址，在DHCP负载中使用一个不同的以太网地址。这样就有可能导致端口安全无法发挥作用，因为源 MAC地址此时会是合法的。通过在可信端口上使用DHCP监听可缓解 DHCP 欺骗攻击。DHCP监听DHCP监听并不依赖源MAC地址。它的作用是判断 DHCP消息是否来自于管理员配置的可信或不可信源。接下来，它就会对 DHCP消息执行过滤，并且对来自不可信源的DHCP流量执行限速。所有管理员可以管理的设备（如交换机、路由器和服务器）都是可信源。超出防火墙范围或者网络范围之外的设备都是不可信源。另外，所有接入端口一般都会视为不可信源。这张图显示了一个关于可信端口和不可信端口的示例。在启用了 DHCP监听之后，欺诈 DHCP服务器可能连接的是不可信端口。在默认情况下，所有接口都会被视为是不可信端口。可信端口往往是中继链路，以及与合法 DHCP服务器相连的那些端口。这些端口都必须由管理员手动配置为可信端口。在创建 DHCP表时，其中会包含不可信端口上的设备源MAC地址，以及 DHCP服务器分配给这台设备的 IP地址。MAC 地址和IP地址是绑定的。因此，这个表也就称为DHCP监听绑定表。S1(config)# ip config snooping S1(config)# interface f0/1 S1(config-if)# ip dhcp snooping trust S1(config-if)# exit S1(config)# interface range f0/5 - 24 S1(config-if-range)# ip dhcp snooping limit rate 6 S1(config-if-range)# exit S1(config)# ip dhcp snooping vlan 5,10,50-52 S1(config)# end上面的示例显示了如何在S1上配置 DHCP监听。请注意第一次如何启用 DHCP 监听。然后可以明确信任向上连接 DHCP 服务器的接口。接下来，FastEthernet F0/5 到 F0/24 这个范围的端口均保持默认的不可信端口状态，因此这些端口还设置了每秒 6 个数据包的速率限制。最后，在 VLAN 5、10、50、51、和 52 上启用 DHCP监听。缓解ARP攻击什么是ARP攻击攻击方将自己MAC地址与其他人的IP封装成虚假的ARP报文，使被攻击方不停学习伪装条目，当被攻击方与伪装目标通信时，数据会送达攻击方，攻击方再将数据转发给伪装目标，即可实现双方正常通信情况下窃取通信数据。当然这个过程可以简化成攻击方可以不停的发送一个伪装报文，不停的让被攻击方学习一个或多个条目，实现单向的断网攻击。但无论是双向欺骗还是单向攻击都需要攻击者不断发送ARP报文。动态ARP检测（DAI）动态ARP 检测（DAI）需要使用DHCP监听，可以防止ARP攻击，因为这种特性可以：不会向同一 VLAN 中的其他端口转发无效或无故 ARP 应答。在不可信端口上拦截所有的ARP 请求和应答。每个被拦截的数据包都要接受检验，看它是否具有有效的 IP-MAC 绑定。丢弃并记录从无效绑定关系发来的ARP应答，以防止ARP毒化。如果超出了配置的ARP数据包DAI数量，端口就会进入error-disable状态。要缓解 ARP欺骗和ARP毒化，可以执行下列 DAI实施的指导方针：全局启用 DHCP 监听。在选定的 VLAN 上启用 DHCP 监听。在选定的 VLAN 上启用 DAI。为 DHCP 监听和 ARP 检测配置可信端口。通常建议将所有交换机的接入端口配置为不可信，将所有连接到其他交换机的上行链路端口配置为可信。图中的示例拓扑标识了受信任和不受信任的端口:S1(config)# ip dhcp snooping S1(config)# ip dhcp snooping vlan 10 S1(config)# ip arp inspection vlan 10 S1(config)# interface fa0/24 S1(config-if)# ip dhcp snooping trust S1(config-if)# ip arp inspection trust还可以配置 DAI 以检查目的或源 MAC 和 IP 地址：目的 MAC - 根据ARP正文中的目的MAC地址检查以太网报头中的目的 MAC 地址。源 MAC - 根据ARP正文中的发送方MAC地址检查以太网报头中的源 MAC 地址。IP 地址 - 在 ARP 正文中检查无效和意外IP地址，包括地址 0.0.0.0 和 255.255.255.255 以及所有IP组播地址。在Config输入下方命令可以配置 DAI，在IP地址无效时丢弃ARP数据包。它可用于ARP数据包正文中的 MAC 地址与以太网报头中指定的地址不匹配的场合。ip arp inspection validate {[src-mac] [dst-mac] [ip]}缓解STP攻击PortFast和BPDU防护攻击者可以操纵生成树协议（STP），通过伪造根网桥和更改网络拓扑的方式发起攻击。为了缓解生成树（STP）操纵攻击，应该使用 PortFast和BPDU（桥协议数据单元）防护特性：PortFast - 可让配置为接入端口或中继端口的接口直接从阻止状态变为转发状态，绕过侦听和学习状态。适用于所有最终用户端口。PortFast只应该配置在那些连接终端设备的端口上。BPDU 防护（BPDU Guard） - BPDU 防护会立即让接收到 BPDU 的端口进入errordisable状态。BPDU防护也应该只配置在那些连接终端设备的端口上，这一点和PortFast特性相同。配置PortFast防护PortFast会绕过STP侦听（listening）和学习（learning）状态，把接入端口等待 STP收敛的时间降到最低。如果在连接到其他交换机的端口上启用 PortFast，则会产生形成生成树环路的风险。可以使用接口配置命令spanning-tree portfast在接口上启用PortFast。另外，也可以通过全局配置命令spanning-tree portfast default以全局方式在所有接入端口上配置 Portfast。要想验证是否 PortFast已经在全局启用，可以使用命令show running-config | begin span或命令show spanning-tree summary进行查看。要想验证是否PortFast已经在一个接口上启用，可以使用命令show running-config interface type/number进行查看，如下面的示例所示。可以特权模式下使用命令show spanning-tree interface type/number detail进行验证。S1(config)# interface fa0/1 S1(config-if)# switchport mode access S1(config-if)# spanning-tree portfast S1(config-if)# exit S1(config)# spanning-tree portfast default S1(config)# exit配置BPDU防护即使启用了 PortFast，接口仍将侦听 BPDU。偶尔可能会收到意外 BPDU，或发生未经授权尝试将交换机添加到网络的操作。如果在启用 BPDU 防护的端口上收到 BPDU，则该端口将进入错误禁用状态。这表示这个端口已经关闭，必须手动重新启用，或者通过全局命令 errdisable recovery cause psecure_violation让它自动恢复。BPDU防护可以使用接口配置命令spanning-tree bpduguard enable在一个接口上启用。另外，也可以使用全局配置spanning-tree portfast bpduguard default在全部启用了PortFast的端口上启用 BPDU防护。要显示有关生成树状态的信息，可以使用命令show spanning-tree summary 。在这个示例中，针对接入模式的端口，PortFast和BPDU防护都是默认启用的。请始终在所有已启用 PortFast 的端口上启用 BPDU 防护。S1(config)# interface fa0/1 S1(config-if)# spanning-tree bpduguard enable S1(config-if)# exit S1(config)# spanning-tree portfast bpduguard default S1(config)# end
Cisco路由器配置DHCP服务及中继拓扑示意R1 LAN侧的网段为192.168.10.0/24 默认网关为192.168.10.1R2 LAN侧的网段为192.168.20.0/24 默认网关为 192.168.20.1DNS服务器地址为 192.168.10.2R0的G0/0的地址为 10.1.1.1R0的G0/1地址为 10.1.1.2配置从池中排除地址排除IP地址是为了一些保留些固定IP，防止该IP被分配造成冲突等。例如排除R1的前10个IP以及192.168.10.254（注意配置是在R0上）R0(config)#ip dhcp excluded-address 192.168.10.1 192.168.10.10 R0(config)#ip dhcp excluded-address 192.168.10.254此过程对R2同理。创建并配置DHCP地址池在R0上为R1 LAN侧创建地址池R0(config)#ip dhcp pool R1-LAN设置网络地址R0(dhcp-config)#network 192.168.10.0 255.255.255.0指定该网络默认网关R0(dhcp-config)#Default-router 192.168.10.1指定DNS服务器R0(dhcp-config)#dns-server 192.168.10.2配置域名(没有需求可以不配)R0(dhcp-config)#domain-server example.com中继进入R1的G0/0接口配置模式R1(config)#interface g0/0设置helper-address（配置的地址为离R1最近的R0的接口）R1(config-if)#ip helper-address 10.1.1.1注：如果是一台单独的DHCP提供DHCP服务，此时helper-address地址为DHCP服务器地址（如下图所示）此时上图中R1 G0/0接口配置模式下命令为R1(config-if)#ip helper-address 192.168.11.6注意事项Cisco路由器默认开启DHCP服务，要禁用它需执行以下命令Router(config)#no service dhcp
思科SVI配置说明SVI技术与单臂路由和传统VLAN间路由一样，都是解决多个VLAN间通信问题。SVI技术利用了多层交换机（本文以三层交换机为例）。示例拓扑其中S1为三层交换机S2的Fa0/2接口于VLAN 10下S3的Fa0/2接口于VLAN 20下PC 1地址为192.168.10.2/24，默认网关为192.168.10.1PC 2地址为192.168.20.2/24，默认网关为192.168.20.1配置二层交换机配置首先创建划分VLAN：S2的Fa0/2接口于VLAN 10下S2(config)#vlan 10 S2(config-vlan)#name PC1 S2(config-vlan)#exit S2(config)#interface f0/2 S2(config-if)#no shutdown S2(config-if)#switchport mode access S2(config-if)#switchport access vlan 10 S2(config-if)#exitS3的Fa0/2接口于VLAN 20下S3(config)#vlan 20 S3(config-vlan)#name PC2 S3(config-vlan)#exit S3(config)#interface f0/2 S3(config-if)#switchport mode access S3(config-if)#switchport access vlan 20 S3(config-if)#no shutdown S3(config-if)#exit配置Trunk端口：分别对S2和S3的Fa0/1端口进行配置S2(config)#interface f0/1 S2(config-if)#switchport mode trunk S2(config-if)#exit S3(config)#interface f0/1 S3(config-if)#switchport mode trunk S3(config-if)#exit三层交换机配置同样在S1中创建相应的VLAN：（注意，思科模拟器中需要双击3650三层交换机拖动电源模块才能启动它）S1(config)#vlan 10 S1(config-vlan)#vlan 20 S1(config-vlan)#exit给VLAN配置IPv4地址：其中VLAN 10地址为192.168.10.1/24VLAN 20地址为192.168.20.1/24S1(config)#interface vlan 10 S1(config-if)#no shutdown S1(config-if)#ip address 192.168.10.1 255.255.255.0 S1(config-if)#exit S1(config)#interface vlan 20 S1(config-if)#no shutdown S1(config-if)#ip address 192.168.20.1 255.255.255.0 S1(config-if)#exit开启三层功能：这一步很重要S1(config)#ip routing配置PC地址PC 1地址为192.168.10.2/24，默认网关为192.168.10.1PC 2地址为192.168.20.2/24，默认网关为192.168.20.1在模拟器中配置步骤很简单，此处省略验证PingPC1终端中去分别Ping PC1的默认网关、PC2的默认网关以及PC2PC1默认网关：ping 192.168.10.1Reply from 192.168.10.1: bytes=32 time<1ms TTL=255 Reply from 192.168.10.1: bytes=32 time<1ms TTL=255 Reply from 192.168.10.1: bytes=32 time<1ms TTL=255 Reply from 192.168.10.1: bytes=32 time<1ms TTL=255 Ping statistics for 192.168.10.1: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0msPC2默认网关：ping 192.168.20.1Pinging 192.168.20.1 with 32 bytes of data: Reply from 192.168.20.1: bytes=32 time<1ms TTL=255 Reply from 192.168.20.1: bytes=32 time<1ms TTL=255 Reply from 192.168.20.1: bytes=32 time<1ms TTL=255 Reply from 192.168.20.1: bytes=32 time<1ms TTL=255 Ping statistics for 192.168.20.1: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0msPC2：ping 192.168.20.2Pinging 192.168.20.2 with 32 bytes of data: Request timed out. Reply from 192.168.20.2: bytes=32 time<1ms TTL=127 Reply from 192.168.20.2: bytes=32 time<1ms TTL=127 Reply from 192.168.20.2: bytes=32 time<1ms TTL=127 Ping statistics for 192.168.20.2: Packets: Sent = 4, Received = 3, Lost = 1 (25% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0msTracerttracert 192.168.20.2Tracing route to 192.168.20.2 over a maximum of 30 hops: 1 0 ms 0 ms 0 ms 192.168.10.1 2 0 ms 0 ms 0 ms 192.168.20.2 Trace complete.
思科配置VLAN间单臂路由为什么要配置单臂路由路由器上链接不同的VLAN的物理接口数量有限，随着VLAN增加端口很快就被耗尽，然而VLAN中继允许单个路由器物理接口接多个VLAN的流量，即有了单臂路由技术。示例拓扑本文以下图所示拓扑为例配置单臂路由其中Fa0/2在VLAN10下，Fa0/3在VLAN20下配置交换机配置创建VLANS1(config)#vlan 10 S1(config-vlan)#vlan 20 S1(config-vlan)#exit配置Fa0/1为中继端口S1(config)#interface f0/1 S1(config-if)#switchport mode trunk S1(config-if)#exit配置Fa0/2与Fa0/3为接入模式，并设置VLANS1(config)#interface f0/2 S1(config-if)#switchport mode access S1(config-if)#switchport access vlan 10 S1(config-if)#exit S1(config)#interface f0/3 S1(config-if)#switchport mode access S1(config-if)#switchport access vlan 20 S1(config-if)#exit路由器配置路由器一个物理端口接收多个VLAN流量是通过分配子端口来进行的。启用物理端口(这一步很重要，最好先激活父端口再配置子端口防止忘记)R1(config)#interface g0/0 R1(config-if)#no shutdown R1(config-if)#exit配置子端口VLAN号，按802.1q格式封装，并分配ipv4地址。子端口的命名规范为父端口名称.VLAN号 ，尽管VLAN号部分怎么写对最终效果没有影响，但是为了日后维护时能通过名字一眼就知道对应的VLAN，强烈建议按这种格式来R1(config)#interface g0/0.10 R1(config-subif)#encapsulation dot1q 10 R1(config-subif)#ip address 172.17.10.1 255.255.255.0 R1(config-subif)#exit R1(config)#interface g0/0.20 R1(config-subif)#encapsulation dot1q 20 R1(config-subif)#ip address 172.17.20.1 255.255.255.0 R1(config-subif)#exitPC配置对PC配置，无非就是设置一下IPv4地址和子网掩码以及默认网关默认网关地址为所在VLAN下对应路由子端口的IPv4地址。PC0的配置如下图所示PC1的IPv4地址为172.17.20.23/24，默认网关为172.17.20.1，此处省略配置步骤验证检验VLANS1#show vlan该命令输出如下VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 1 default active Fa0/4, Fa0/5, Fa0/6, Fa0/7 Fa0/8, Fa0/9, Fa0/10, Fa0/11 Fa0/12, Fa0/13, Fa0/14, Fa0/15 Fa0/16, Fa0/17, Fa0/18, Fa0/19 Fa0/20, Fa0/21, Fa0/22, Fa0/23 Fa0/24, Gig0/1, Gig0/2 10 VLAN0010 active Fa0/2 20 VLAN0020 active Fa0/3 1002 fddi-default active 1003 token-ring-default active 1004 fddinet-default active 1005 trnet-default active VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ 1 enet 100001 1500 - - - - - 0 0 10 enet 100010 1500 - - - - - 0 0 20 enet 100020 1500 - - - - - 0 0 1002 fddi 101002 1500 - - - - - 0 0 1003 tr 101003 1500 - - - - - 0 0 检验路由表R1#show ip route | begin Gateway输出结果：Gateway of last resort is not set 172.17.0.0/16 is variably subnetted, 4 subnets, 2 masks C 172.17.10.0/24 is directly connected, GigabitEthernet0/0.10 L 172.17.10.1/32 is directly connected, GigabitEthernet0/0.10 C 172.17.20.0/24 is directly connected, GigabitEthernet0/0.20 L 172.17.20.1/32 is directly connected, GigabitEthernet0/0.20Ping测试PC0终端ping默认网关C:\>ping 172.17.10.1PC0终端ping PC2C:\>ping 172.17.20.23成功的话会有Replay from xxx.xxx.xxx.xxx bytes = xx time<xms TTL=xxx格式的字样Tracert测试同样在PC0终端键入如下命令C:\>tracert 172.17.20.23结果如下Tracing route to 172.17.20.23 over a maximum of 30 hops: 1 0 ms 0 ms 0 ms 172.17.10.1 2 0 ms 0 ms 0 ms 172.17.20.23 Trace complete.
思科交换机VLAN基本配置说明S1>为用户模式下命令S1#为特权模式下命令S1(config)#为全局配置下模式命令三种模式进入方式参考之前基本配置的文章创建VLAN创建单个VLAN以创建Vlan 10为例S1(config)#vlan 10然后会进入config-vlan模式下为该vlan命名TestS1(config-vlan)#name Test注意，配置在该模式退出时才生效S1(config-vlan)#exit创建多个VLAN一次性创建多个VLAN可以执行以下命令(这里以20,30,40为例)S1(config)#vlan 20,30,40注意：上述命令在Cisco实际的设备中会生效，但是在模拟器中会报错指定端口到VLAN指定一个端口进入端口，以f0/1为例S1(config)#interface f0/1对于思科交换机端口，默认模式是动态协商模式。如果端口连接终端，建议启用access模式。S1(config-if)#switchport mode access然后执行以下命令将端口指定到VLANS1(config-if)#switchport access vlan 10指定多个端口想要指定多个端口，只需要在interface命令后跟多个端口就行了例如我们把f0/2与f0/3端口都指定到vlan10下S1(config)#interface range f0/2,f0/3 S1(config-if-range)#switchport mode access S1(config-if-range)#switchport access vlan 10如果时指定连续的几个端口，比如f0/4到f0/8，可以这样写S1(config)#interface range f0/4-f0/8 S1(config-if-range)#switchport mode access S1(config-if-range)#switchport access vlan 10检查VLAN配置详细信息S1#show vlan摘要信息S1# show vlan brief端口状态使用以下命令可获取端口的vlan状态S1#show interfaces f0/1 switchport语音VLAN配置网络拓扑可以如下交换机连接IP电话的是F0/1端口，我们接下来创建一个Vlan 150S2(config)#vlan 150 S2(config-vlan)#name VOICE S2(config-vlan)#exit将端口指定到Vlan 150S2(config)#interface f0/1 S2(config-if)#mls qos trust cos S2(config-if)#switchport voice vlan 150mls qos trust cos是指信任数据包带有的COS。Trunk配置模式配置以f0/3端口为例S1(config)#interface f0/3 S1(config-if)#switch mode trunk S1(config-if)#switch nonegotiateswitchport nonegotiate相当于关闭了DTP，减少协商流量，增加安全性配置允许VLAN思科设备默认允许所有VLAN在Trunk链路传输，对应命令如下S1(config-if)#switchport trunk allowed vlan all如果要禁止所有VLAN，则命令如下S1(config-if)#switchport trunk allowed vlan none添加某个VLAN，例如Vlan 10S1(config-if)#switchport trunk allowed vlan add 10删除某个VLAN，例如Vlan 10S1(config-if)#switchport trunk allowed vlan remove 10还有一个命令是除了某个Vlan以外的所有VLAN例如这里配置允许除Vlan 10以外的所有VLANS1(config-if)#switchport trunk allowed vlan except 10指定本征VLAN这里需要注意：本征Vlan不要用Vlan 1使用没有用户的VLAN作为本征VLAN802.1Q两端的本征VLAN要一致假设要把Vlan 10指定为本征Vlan，命令如下：S1(config-if)#switchport trunk native vlan 10
思科路由器及交换机基本配置说明基本配置路由器与交换机类似，此文大部分以路由器为例当控制台提示符为Router>时说明此操作在用户模式下当控制台提示符为Router#时说明此操作在EXEC特权模式下当控制台提示符为Router(config)#或及Router(config-*)时说明此操作在全局配置模式或其子模式下控制台模式当用户进入控制台时，默认为用户模式要进入EXEC特权模式需要输入以下命令enable假设你在用户模式下，要进入全局配置模式，首先应进入特权模式enable configure terminal如果要推出当前模式，则输入以下命令即可exit下文命令举例不再重复上述操作。请根据控制台提示符，自行输入上述命令进入相应的模式，执行下文的命令。(注意：下文中的命令，也就是你要输入的，仅为提示符后面的东西,如Router(config)#hostname R1在思科的CLI中只需要输入hostname R1)设备名称更改设备名称，如将Router修改为R1Router(config)#hostname R1设置标语设置标语为HelloWorldRouter(config)#banner motd 'HelloWorld'配置IPv4地址为路由器端口配置假设我们要为路由器端口g0/0配置的地址为192.168.1.1，其子网掩码为255.255.255.0，并为端口配置描述这时配置ip地址的命令，注意cisco的设备需要no shutdownRouter(config)#interface g0/0 Router(config-if)#ip address 192.168.1.1 255.255.255.0 Router(config-if)#no shutdown为此端口设置描述信息可在后面加一句Router(config-if)#description LAN connection to S1表明这是用于连接到名为S1设备的为交换机vlan1配置假设我们要配置的交换机名为S1，其连接到路由器Router，且交换机自带的vlan要分配的ip为192.168.1.2其子网掩码为255.255.255.0S1(config)#interface vlan 1 S1(config-if)#ip address 192.168.1.2 255.255.255.0 S1(config-if)#no shutdown配置IPv6全局单播地址为路由器配置同上，我们还是为g0/0端口配置，其地址为2001:db8:1::1，后缀为/64Router(config)#interface gigabitEthernet 0/0 Router(config-if)#ipv6 address 2001:db8:1::1/64注意，如果之前没有启用端口，也就是输入no shutdown过，此处一定要执行该命令。此处还可以配置本地链路地址，如地址为FE80::1，后缀默认为/10Router(config-if)#ipv6 address FE80::1 link-local删除端口的ip地址只需要在配置ip地址命令前加no就行了如ipv6地址Router(config-if)#no ipv6 address 2001:db8:1::1/64ipv4的话把上述命令的ipv6改成ip，后跟对应的ipv4地址和子网掩码就行为交换机配置我在cisco packet tracer模拟器上使用的是2960交换机好像不支持此命令，但是网上有人说是可以配置的，此处暂时省略，有知道方法的大佬可以私聊或下方评论留言给我。交换机配置ipv4默认网关由于S1交换机连接路由器Router的端口ipv4地址为192.168.1.1，所以交换机所要配置的默认网关就是这个地址S1(config)#ip default-gateway 192.168.1.1这里注意一点，我们没有去写子网掩码，是因为在之前配置vlan1的ip的时候已经设置过了，交换机会根据之前的配置自动获取子网掩码。加密、限制密码最小长度与登陆次数可限制密码最小长度和登陆次数、加密明文密码，来进一步提高安全性加密明文密码R1(config)#service password-encryption限制最小长度为1security passwords min-length 1三分钟内三次登陆失败的用户，登陆受限四分钟R1(config)#login block-for 180 attempts 3 with 240配置线路此处以路由器R1为例，配置的密码都是aaa。VTY线路连接方式仅允许SSH(另一种为telnet，明文传输，不安全)，并且设置超时时间为10分钟。配置console线路R1(config)#line console 0 R1(config-line)#password aaa R1(config-line)#login注意：login后才生效，其他线路同理配置vty线路vty线路一共16条的情况下此处示例为配置所有vty线路R1(config)#line vty 0 15 R1(config-line)#transport input telnet R1(config-line)#exec-timeout 10 R1(config-line)#password aaa R1(config-line)#login禁用域名查找在终端中输入错误命令，如asd会进入域名查找出现如下情况Router>asd Translating "asd"...domain server (255.255.255.255) % Name lookup aborted需要按ctrl+shift+6取消才能继续输入命令，但这比较繁琐（如果多次输入错误命令的话）。所以就可以输入以下命令将此功能禁用R1(config)#no ip domain-lookup配置域名R1(config)#ip domain-name CCNA.com保存配置R1#copy running-config startup-config该命令将运行配置文件保存到启动配置文件如果没有进行该操作，设备断电后会回到配置之前的状态，用户进行的配置会丢失。查看交换机的MAC地址表S1#show mac-address-table 查看路由表查看ipv4R1#show ip route 查看ipv6R1#show ipv6 route