CISCO常用配置命令

无论在国内市场还是国际市场,CISCO交换机、路由器在网络设备领域都占据了主导地位。本文主要总结交换机、路由器等网络设备相关的概念以及CISCO设备常用配置命令,以便记录和学习。

一、基础概念

(一) 交换机与集线器

交换机工作在链路层或网络层,这和工作在物理层的集线器有本质上的区别:

  • 集线器 (Hub):内部本质是总线型拓扑,数据转发只能通过广播的形式,端口之间通道为半双工通信,所有端口存在于同一个冲突域
  • 二层交换机 (Switch):通过自学习建立“MAC-端口”对应表,从而可以实现单播,端口之间为全双工通信,这样得以将每个端口冲突域相隔离
  • 三层交换机 (Router):具有路由功能的交换机,可以简单理解为在二层交换机的基础上添加了路由模块

尽管交换机有“MAC-端口”对应表,而且端口间为全双工通信,但这只是隔离了冲突域,并不能隔离广播域,对于ARP、DHCP等广播包一样会广播到所有端口,所以当链路复杂时一样容易产生广播风暴,对此有效的解决方法就是配置VLAN,每个VLAN都是一个独立的广播域,可以有效避免广播风暴。

(二) VLAN标签

要使交换机能够分辨不同的VLAN报文,需要在报文中添加标识VLAN信息的字段,即VLAN标签 (VLAN Tag) ,这个过程需要使用IEEE 802.1Q协议封装帧头,只能由交换机、路由器等网络设备实现。协议规定在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的VLAN Tag,用以标识VLAN信息,如下图所示:
在这里插入图片描述
主机、集线器收发的数据包中无VLAN Tag,交换机、路由器等设备收发的数据包中可以有,也可以没有VLAN Tag。VLAN Tag是二层的概念,如果需要三层设备处理VLAN Tag,就需要配置其二层功能,否则收到携带VLAN Tag的数据包无法正常识别和处理,例如路由器的三层接口如果不配置虚拟子接口,或者在三层交换机上关闭接口二层、开启三层功能,这些情况下接口都无法正常处理携带VLAN Tag的数据包。

CISCO交换机不同类型的接口 (链路) 在收发Tag/Untag报文时处理方式不同:

  • Access接口:一般用于和不能识别Tag的用户终端(如用户主机、服务器等)相连,只能收发Untag帧,且只能为Untag帧添加唯一VLAN的Tag
  • Trunk端口:一般用于连接交换机、路由器等可同时收发Tag和Untag报文的设备,可以允许多个VLAN的报文携带Tag通过

在这里插入图片描述

(三) 管理方式

对于交换机、路由器等CISCO设备,很多配置命令都是通用的,这两类网络设备管理的模式也是相同的:

  • Console接口:设备的控制台接入端口,一般为RJ45接口,管理员通过“Console转串口”或“Console转USB”数据线,一端接交换机另一端接PC控制端,在本地进行管理
  • AUX接口:辅助接口,用于远程配置,很少使用
  • 虚拟终端 (vty):通过Telnet、SSH等远程连接交换机时分配,需要先通过Console接口配置才能使用
  • WEB界面:通过WEB界面管理设备,需要先通过Console接口或其他方式将WEB服务启用

(四) 工作模式

CISCO设备四种基本的工作模式,分别如下:

  • 用户模式 >:低权限用户接入交换机的初始工作模式
  • 特权模式 #:用户模式下输入命令 enable 进入特权模式
  • 全局配置模式 (config)#:特权模式下输入命令 configuration terminal 进入全局配置模式
  • 接口配置模式 (config-if)#:全局配置模式下选择具体接口进入接口配置模式,如:int f0/1-4

CISCO设备特权级别范围 0-15,级别≥3时,用户登入交换机即特权模式,不用输入enable命令和特权模式的密码。当用户处于较低权限级别,通过enable命令默认进入15级最高权限。

(五) 加密级别

不同系列的设备支持的加密方式不同,常见如下:

  • 0:不加密,显示密码本身
  • 5:MD5哈希加密
  • 7:CISCO加密,可以逆转破解,安全性低
  • 8:PBKDF2哈希加密
  • 9:SCRYPT哈希加密

二、配置命令

(一) 基本配置

[<command>] ? —> 帮助命令,常用于查看子命令
no <command> —> 取消command相应的配置
include —> 结合管道符|使用,提取信息
exit —> 退出当前模式

SW> enable <level>                // 提升权限至level,默认进入15级特权模式

SW# show users                    // 查看当前登陆用户,主要包括console和vty
                                  // 有*标注的代表自己当前登录用的模式 
                                  
SW# show privilege                // 显示当前用户权限等级

SW# show running-config           // 显示当前设备所有配置

SW# show version                  // 显示设备版本、系统等信息

SW# show vlan brief               // 简洁显示所有VLAN状态、名称

SW# show ip interface brief       // 简洁显示所有接口(包括虚拟接口)分配IP和激活状态

SW# show ip route                 // 查看路由表(三层设备)

SW# show ip protocols             // 查看IP路由协议配置参数和运行情况

SW# show arp                      // 查看“ARP-IP-Interface”对应表(三层设备)

SW# show access-lists             // 查看ACL规则(三层设备)

SW# show vtp status               // 查看VTP状态信息

SW# show monitor                  // 查看端口镜像配置(交换机)

SW# show mac address-table        // 查看交换机“MAC-接口”对应表
                                  // 可以以此判断接口下接主机情况,但注意转换表有过期时间,信息可能不完整

SW# show cdp neighbors detail     // CDP(Cisco Discovery Protocol)是CISCO专有协议,用于查看相邻设备的配置信息
                                  // 查看与交换机连接设备的主机名、型号、接口、IP等详细信息

SW# config terminal               // 进入全局配置模式

SW# write                         // 保存配置信息
                                  // 配置信息保存在运行配置中,而重启后是按照启动配置运行的,所以配置后要保存

SW# debug                         // 进入debug调试模式,可以查看通过设备的相关数据包的收发情况

SW(config)# hostname <hostname>   // 配置设备名称

SW(config)# service password-encryption // 开启加密服务,采用CISCO私有算法加密存储密码

SW(config)# username <name> privilege <level> {secret|password} <num> <pass> //配置设备名称
                                  // privilege有16个等级:0-15,等级越高权限越大
                                  // secret代表加密,<num>代表不同的加密算法
                                  // password代表不加密,在show run时直接可见密码明文
                                  // 如果开启password-encryption服务,则password设置的密码会被加密
                                  // secret命令优先级大于password,若同时设置则secret命令生效

SW(config)# enable {secret|password} <num> <pass> // 设置低权限用户进入特权模式的密码

SW(config)# line console 0        // line表示接入交换机的线路,通常包括console和vty
                                  // 对控制台接口进行配置,0代表console端口号
                                  // 命令执行后进入SW(config-if)#配置模式

SW(config)# line vty 0 4          // 对虚拟终端进行配置,0-4代表5个虚拟终端     
                                  // 命令执行后进入SW(config-if)#配置模式      

SW(config-line)# password <pass>  // 配置进入当前模式(console/vty)需要的密码

SW(config-line)# login            // 登录时启用密码检查,只需要输入密码
 
SW(config-line)# login local      // 登录时启用密码检查,需要输入用户名和密码

SW(config-line)# no login         // 当前line不允许登录

SW(config)# interface <interface> // 进入接口配置模式 SW(config-if)#
                                  // <interface>可以是VLAN、物理接口、虚拟子接口

SW(config-if)# no shutdown        // 激活端口

SW(config-if)# ip address <addr> <mask> // 为接口(SVI、物理接口、虚拟子接口)配置静态IP

SW(config-if)# ip address dhcp    // 为接口(SVI、物理接口、虚拟子接口)配置DHCP

SW(config-if)# no switchport      // 关闭三层交换机物理接口的二层功能,启用三层功能
                                  // 这样就可以为三层交换机物理接口配置IP地址

SW(config)# ip route <dst_addr> <mask> <gw_addr> // 配置静态路由(三层设备)

SW(config)# router <protocol>     // 进入动态路由协议配置(三层设备),包括rip/ospf/eigrp/bgp

SW(config-router)# default-information originate  // 配置默认路由(三层设备) 
                                                  // 使默认路由配置可以在动态路由协议域内所有路由器上传播

注意:配置命令支持缩略表示,如:username root privi 15 pass asdfshow run

(二) 配置DHCP

在二层或三层设备上配置DHCP服务,为使VLAN间可以正常路由,三层设备上为VLAN实现路由的IP地址 (路由器物理接口或虚拟子接口的IP / 三层交换机SVI的IP) 必须和DCHP服务分配的默认网关地址一致。

Router(config)# service dhcp               // 开启DCHP服务

Router(config)# ip dhcp pool <name>        // 进人dhcp地址池进行配置

Router(dhcp-config)# network <addr> <mask> // 配置dhcp地址池

Router(dhcp-config)# default-router <addr> // 配置网关地址

Router(dhcp-config)# dns-server <addr>     // 配置dns服务器地址

Router(dhcp-config)# exit

Router(config)# ip dhcp excluded-address <addr> // dhcp不分配的地址

Router(config)# exit

Router# show ip dhcp binding              // 查看dhcp地址分配情况

(三) 划分VLAN

1.创建VLAN

VLAN数据库模式全局模式下都可以实现对VLAN信息进行配置,但推荐在全局模式下进行配置,因为VLAN数据库模式正在被弃用,下面对VLAN的配置统一在全局模式下进行。

SW(config)# vlan <id>                // 创建vlan并对其进行配置
       
SW(config-vlan)# name <name>         // 为vlan命名name

2.配置端口

SW(config)# interface <interface_phy>        // 进入物理接口进行配置,如fa0/1、gi0/1、gi0/0/1
                                             // 可以一次配置多个接口,如 interface range fa0/1-2
                                             // fa代表Fast百兆以太网接口
                                             // gi代表Gigabit千兆以太网接口
                                             // 接口代码的完整表示为x/y/z,代表第x台设备,第y个插槽板卡,第z个端口

SW(config-if)# switchport mode access        // 配置接口为access模式,只允许指定vlan数据包通过
                                               
SW(config-if)# switchport access vlan <id>   // 配置交换机接口,将其分配给vlan id,且只允许vlan id数据包通过
                                             // 只有交换机设备有此命令

SW(config-if)# switchport trunk encapsulation dot1q  
// 配置接口封装为dot1q,不然可能会出现报错:"An interface whose trunk encapsulation is 'Auto' can not be configured to 'trunk' mode"

SW(config-if)# switchport mode trunk         // 配置接口为trunk模式,可以允许多个vlan数据包通过

SW(config-if)# switchport trunk allowed vlan all // 允许所有vlan数据包通过

注意:交换机默认存在VLAN 1(本征VLAN),所有端口初始都划分在VLAN 1中。

3.配置SVI

交换机虚拟接口 (Switch Virtual Interface, SVI) 是VLAN的虚拟接口,为SVI配置IP,通常作用如下:

  • 实现对设备进行远程管理
  • 作为网关实现不同VLAN间路由

不同设备 (交换机) 如果需要通过同一个VLAN进行管理,需要为VLAN在不同设备上的SVI配置不同的IP,例如:在SW1和SW2上都配置有VLAN10的信息,想要通过VLAN10对这两个设备进行管理,可以在SW1上配置VLAN10的IP为10.1.1.1,在SW2上配置VLAN10的IP为10.1.1.2。

SW(config)# interface vlan <id>                // 针对Vlan的SVI进行配置

SW(config-if)# descryption demo test           // 对SVI添加描述

SW(config-if)# ip address <address> <mask>     // 为SVI分配IP

4.配置路由

在成功划分VLAN后,要使VLAN间可以正常路由需要在三层设备上配置,一般有三种方式:

(1) 多臂路由:即普通路由,为每个Vlan分配一个物理端口,每个物理端口配置为相应Vlan的网关,但是这种方式需要耗费大量路由器端口,在实际实施中基本行不通。

Router(config)# interface <interface_phy> // 进入物理接口配置,如fa0/1

Router(config-if)# no shutdown            // 激活端口

Router(config-if)# ip address 192.168.100.1 255.255.255.0 // 分配IP

Router(config-if)# exit

(2) 单臂路由:在一个物理端口上划分多个虚拟子接口,每个虚拟子接口分配一个VLAN,并作为VLAN的网关,这样解决了路由器物理端口需求量过大的问题,但由于所有VLAN数据包都通过一条链路,所以性能上限会受到单链路的局限。

交换机和路由器之间链路是中继链路,交换机连接路由器的接口配置为trunk口,允许多个VLAN的数据帧通过,默认封装格式为802.1Q,只有路由器接口同样封装为802.1Q,才能保证打上VLAN标签的数据帧能够被交换机区分,从而实现跨越VLAN通信,所以交换机在配置虚拟子接口时要封装802.1Q协议。

Router(config)# interface <interface_phy>  // 进入物理接口配置,如fa0/1
    
Router(config-if)# no shutdown             // 激活接口
     
Router(config-if)# exit 

Router(config)# interface <sub_interface> // 进入虚拟子接口配置,如fa0/0.1 
                                          // 虚拟子接口并不是实际存在的物理接口,但是功能和物理接口相同
                                      
Router(config-subif)# encapsulation dot1q <vlan_id>          // 接口配置802.1Q协议(vlan封装方式)

Router(config-subif)# ip address 192.168.100.1 255.255.255.0 // 为该接口划分网关地址,针对虚拟接口设置ip是为了分配网关

Router(config-subif)# exit

(3) 三层交换机:在二层交换机的基础上添加路由模块,为每个VLAN分配一个物理接口,每个物理接口配置为相应的Vlan的网关,解决了物理端口需求量大和链路局限的问题,是解决VLAN间路由的首选。三层交换机默认只开启了二层功能,如果需要使用三层功能需要手动开启。

在交换机接口上配置VLAN间路由有两种思路,第一种是利用交换机接口二层功能+路由

SW(config)# vlan <id>                  // 和连接的二层交换机配置相同的vlan信息
       
SW(config-vlan)# name <name>           // 为vlan命名

SW(config-vlan)# exit

SW(config)# interface <interface_phy>  // 进入物理接口配置,如fa0/1,配置三层功能      

SW(config-if)# no shutdown             // 激活接口

SW(config-if)# switchport mode access  // 允许单个VLAN通过配置接口为access模式
                                       // 允许多个VLAN通过配置接口为trunk模式

SW(config-if)# switchport access vlan <id>  // 配置允许通过的vlan id

SW(config-if)# exit

SW(config)# interface vlan <id>        // 进入SVI配置

SW(config-if)# ip address <addr> <mac> // 为SVI配置IP,与网关IP一致

SW(config-if)# exit

SW(config)# ip routing                 // 开启IP路由功能

第二种是利用交换机接口三层功能+路由

SW(config)# vlan <id>                  // 和连接的二层交换机配置相同的vlan信息
       
SW(config-vlan)# name <name>           // 为vlan命名

SW(config-vlan)# exit

SW(config)# interface <interface_phy>  // 进入物理接口配置,如fa0/1,配置二层功能      

SW(config-if)# no shutdown             // 激活接口

SW(config-if)# no switchport           // 关闭接口二层功能,开启三层功能
                                       // 三层功能接口配置方法和路由器接口相同,但是不能配置虚拟子接口
                                
SW(config-if)# ip address <addr> <mac> // 配置接口IP,与网关IP一致

SW(config-if)# exit

SW(config)# ip routing                 // 开启IP路由功能

注意:
① 路由器自动开启路由功能,而三层交换机默认没有开启,需要ip routing命令
② 对三层交换机物理接口配置IP需要先使用no switchport命令关闭接口二层功能,开启三层功能
③ 出现Native VLAN mismatch discovered...警告信息,可以关闭VTP来解决,在全局配置模式输入命令 no cdp run,或者在相应接口关闭VTP no cdp enable

(四) 配置VTP

VTP (Vlan Trunk Protocol) 是CISCO私有的VLAN中继协议,通过同步交换机上VLAN的配置信息简化和统一网络管理。在VTP域中建立VTP Server和VTP Client,在一台VTP Server上配置VLAN时,VLAN信息将自动通过域中所有VTP Server/Client进行分发。

VTP中交换机有Server、Client、Transparent三种模式:

  • Server:维护VTP域中所有VLAN 信息,可以建立、删除或修改VLAN,可以同步VLAN配置,并把配置保存在NVRAM存储器中
  • Client:从VTP Server学习VLAN配置信息,不能建立、删除或修改VLAN,但可以同步VLAN配置,不保存配置到NVRAM存储器中
  • Transparent:独立于VTP域的交换机,仅维护本机上的VLAN信息,不参与VTP的信息同步和自学习机制,可以建立、删除和修改本机上的VLAN信息,并把配置保存在NVRAM存储器中

通常一个VTP域内的设置一个VTP Server和多个VTP Client,交换机之间必须要用中继链路Trunk模式,具体配置如下:

1.VTP Server

SW(config)# vtp mode server       // 配置交换机为VTP Server

SW(config)# vtp version <ver>     // 配置vtp版本

SW(config)# vtp domain <name>     // 配置VTP域

SW(config)# vtp password <pass>   // 配置VTP密码

SW(config)# interface <interface_phy>   // 配置交换机相连的物理接口为trunk模式
SW(config-if)# switchport mode trunk
SW(config-if)# switchport trunk allowed vlan all
SW(config-if)# exit

2.VTP Client

SW(config))# vtp mode client      // 配置交换机为VTP Client

SW(config)# vtp version <ver>     // 配置vtp版本,必须与VTP Server一致

SW(config)# vtp domain <name>     // 配置VTP域,必须与VTP Server一致

SW(config)# vtp password <pass>   // 配置VTP密码,必须与VTP Server一致

SW(config)# interface <interface_phy>   // 配置交换机相连的物理接口为trunk模式
SW(config-if)# switchport mode trunk
SW(config-if)# switchport trunk allowed vlan all
SW(config-if)# exit

(五) 配置ACL

访问控制列表 (Access Control Lists, ACL) 可以根据在三、四层设定的条件 (源IP、目的IP、源端口、目的端口等) 对接口上的数据包进行过滤,允许其通过或丢弃,从而限制网段、VLAN间互访。ACL需要在三层设备上进行配置,所有规则都是基于出/入两个方向:

  • 出:表示已经由设备处理完毕,正离开设备接口的数据包
  • 入:表示已经到达设备接口的数据包,将要被设备处理

ACL按照优先生效的原则,数据包先匹配到的规则直接生效,不会继续向下寻找匹配。CISCO默认在ACL规则结尾添加deny any规则,即默认丢弃所有没有匹配到规则的数据包,因此如果要正常转发数据包,需要手动添加permit any规则。

分为标准ACL、扩展ACL和命名ACL三类:

1.标准ACL

对三层数据包中的源IP地址进行过滤,使用访问控制列表号1-99来创建相应的ACL,命令为:

SW(config)# access-list <num> {permit|deny} <addr> <r_mask>
// 标准ACL --> num: 1-99
// CISCO规定ACL中用反向掩码表示子网掩码,比如:192.168.1.1 0.0.0.255 表示192.168.1.1/24
// <addr> <r_mask>替换成any,相当于 0.0.0.0 255.255.255.255
// <addr> <r_mask>替换成host <addr>,如:host 192.168.1.1,相当于:192.168.1.1 0.0.0.0

SW(config)# access-list <num> permit any
// CISCO的ACL默认在规则结尾添加deny any的命令,即丢弃所有不符合匹配规则的数据包
// 因此在配置完限制规则后要加上这一句,否则匹配不到的规则包默认被丢弃

SW(config)# ip access-list standard <num>

SW(config-std-nacl)# <seq_num> {deny|permit} <addr> <r_mask>
// 可以指定添加ACL中具体规则的序号,如果不指定,默认序号按照10,20,30...递增

SW(config-std-nacl)# no <seq_num>
// 只删除ACL中序号为seq_num的规则

SW(config)# exit

SW(config)# interface <interface>

SW(config-if)# ip access-group <num> {in|out}
// 接口类型可以是物理端口、SVI和虚拟子接口
// 针对接口入/出端口应用ACL规则

SW(config)# no access-list <num>
// 删除ACL规则

2.扩展ACL

对三层、四层数据包的源IP地址、端口以及目的IP地址、端口信息进行过滤,使用访问控制列表号100-199来创建相应的ACL,命令为:

SW(config)# access-list <num> {permit|deny} <protocol> <src_addr> <r_mask> <dst_addr> <r_mask> <operator> <service|port>
// 扩展ACL --> num: 100-199
// operator具体包括:It小于,gt大于,eq等于,neq不等于
// 如:access-list 1 deny tcp any host 192.168.1.1 eq www --> 将所有主机访问192.168.1.1的www(80)服务的tcp数据包丢弃

SW(config)# no access-list <num>
// 删除整个ACL规则

SW(config)# ip access-list extend <num>

SW(config-std-nacl)# <seq_num> {deny|permit} <addr> <r_mask>
// 可以指定添加ACL中具体规则的序号,如果不指定,默认序号按照10,20,30...递增

SW(config-std-nacl)# no <seq_num>
// 只删除ACL中序号为seq_num的规则

SW(config)# exit

SW(config)# interface <interface>

SW(config-if)# ip access-group <num> {in|out}

3.命名ACL

基于名称建立标准/扩展ACL规则,或是选择相应的规则对其进行编辑,序号可以当成是一种特殊的名称,所以也可以针对序号规则进行编辑,命令为:

SW(config)# ip access-list {standard|extended} <name>
// 建立一个名为name的标准/扩展ACL

SW(config-std-nacl)# <seq_num> {deny|permit} <addr> <r_mask>
// 可以指定ACL中具体规则的序号,如果不指定,默认序号按照10,20,30...递增

SW(config-std-nacl)# no <seq_num>
// 只删除ACL中序号为seq_num的规则

SW(config-std-nacl)# exit

SW(config)# no ip access-list standard <name>
// 删除整个ACL规则

SW(config)# interface <interface>

SW(config-if)# ip access-group <name> {in|out}

注意:CISCO规定ACL中用反向掩码表示子网掩码,比如用 192.168.1.1 0.0.0.255 表示 192.168.1.1/24

(六) 端口镜像

端口镜像即把交换机源端口 (一个或多个) 的流量完全拷贝一份,然后从目的端口 (一个或多个) 发出,目的端口通常接IDS、Sniffer PC等流量分析设备,以便网络流量监控和故障诊断。在CISCO设备上通过SPAN (Switched Port ANalyzer) 和RSPAN (Remote Switched Port ANalyzer) 技术做端口镜像。

1.SPAN

本地设备端口监控,所有被监听的源端口与镜像目的端口同处于一台交换机上:

SW(config)# monitor session <id> source <interface> {tx|rx|both} 
// 配置span镜像源接口
// interface既可以是物理接口,如fa0/1,也可以是SVI,如vlan 100
// tx: 接口发送流量,rx: 接口接收流量,both: 接口收发流量 (默认)
  
SW(config)# monitor session <id> destination <interface_phy> 
// 配置span镜像目的接口
// interface_phy是连接流量分析设备的物理接口

镜像目的接口配置后,只能接收镜像流量,无法收发正常流量。

2.RSPAN

远端设备端口监控,被监听的源端口与镜像目的端口不在同一台交换机上,这时要在中间经过所有的交换机上配置相同的RSPAN VLAN用于传递镜像流量,交换机之间为Trunk连接。

(1) 在源端口交换机上配置,使镜像端口流量 interface —> rspan vlan

SW(config)# vlan <id>          // vlan id不能和已配置正常vlan相同

SW(config-vlan)# name <name>   

SW(config-vlan)# remote-span   // 配置RSPAN模式,专用于传递镜像流量
    
SW(config-vlan)# exit

SW(config)# monitor session <id> source <interface> {tx|rx|both}    
// 配置rspan镜像源接口
// interface既可以是物理接口,如fa0/1,也可以是SVI,如vlan 100

SW(config)# monitor session <id> destination remote vlan <id> reflector-port <interface> 
// 镜像目的端口配置为rspan vlan
// 反射端口(reflector-port)负责将镜像流量转发到rspan vlan

(2) 在中间交换机上配置 (如果存在的话) RSPAN VLAN,使镜像端口流量 rspan vlan —> interface

SW(config)# vlan <id>          // vlan id要与镜像源端口所在交换机的vlan一致

SW(config-vlan)# name <name>      

SW(config-vlan)# remote-span   // 配置RSPAN模式,专用于传递镜像流量

SW(config-vlan)# exit

SW(config)# monitor session <id> source remote vlan <id>   
// 镜像源端口配置为rspan vlan

SW(config)# monitor session <id> destination <interface_phy>    
// 配置rspan镜像目的端口的流量
// session id不需要和源交换机一致
// interface_phy是连接下一个交换机的物理接口

(3) 在目的端口交换机上配置,使镜像端口流量 rspan vlan —> interface

SW(config)# vlan <id>          // vlan id要与镜像源端口所在交换机的vlan一致

SW(config-vlan)# name <name>      

SW(config-vlan)# remote-span   // 配置RSPAN模式,专用于传递镜像流量

SW(config-vlan)# exit

SW(config)# monitor session <id> source remote vlan <id>   
// 镜像源端口配置为rspan vlan

SW(config)# monitor session <id> destination <interface_phy>    
// 配置rspan镜像目的端口的流量
// interface_phy是连接流量分析设备的物理接口

(七) GRE隧道

通用路由封装 (General Routing Encapsulation, GRE) 通过对三层数据报文进行封装,使被封装的报文可以在另一种三层网络协议中传输,从而连接两个不同的网络,为数据传输提供一个透明的隧道。在路由器R1和R2之间建立一条GRE (IP-over-IP) 隧道,R1、R2两路由器配置命令相似,基本过程为:

  • 创建隧道,配置IP,作为隧道源IP地址
  • 指定隧道源接口和目的接口IP,建立隧道
  • 为隧道配置路由 (目的地址是隧道对端可以访问的网段,路由地址是隧道对端IP)

以R1为例:

R1(config)# interface <interface>        // 配置接口,作为隧道源接口,如fa0/1

R1(config-if)# ip address <addr> <mask>  // 配置接口IP

R1(config-if)# exit

R1(config)# interface tunnel <id>	   	 // 创建隧道

R1(config-if)# tunnel mode gre ip        // 在IP协议上封装GRE

R1(config-if)# ip address <addr> <mask>  // 配置隧道IP,隧道IP是虚拟IP

R1(config-if)# tunnel source <interface> // 配置隧道源接口,如fa0/1

R1(config-if)# tunnel destination <addr> // 配置隧道目的接口IP,注意与隧道IP (虚拟IP) 相区分
                                         // 如果源接口IP和目的接口IP之间能正常通信,通道开启

R1(config-if)# exit

R1(config)# ip route <dst_addr> <mask> <forward_ip>   // forward_ip 是隧道对端IP
                                                      // 通过指定隧道IP的方式,路由通向某一网段的流量
                                                      // 注意参数 dst_addr 应是网络号 (IP地址与掩码相与的结果,如 192.168.1.0),否则会报错 "%Inconsistent address and mask"                                             

理解隧道两端为什么除了接口IP还需要隧道IP,因为通过GRE隧道的包外层协议IP地址是接口IP,而内层协议IP地址是隧道IP。

GRE具有配置简单、便于维护、包头小、效率高的优势,但不对数据进行加密,通常可结合IPSec协议以保证通信安全性。

(八) NAT配置

网络地址转换 (Network Address Translation, NAT) 提供了一种将内网地址转换成外网地址的方法,让内网计算机通过有限的外网IP访问外网资源,从而节省了IP资源。内网的私有IP如果想访问外网资源,在边界路由器上就必须配置NAT,因为外网主机无法对私有IP进行路由。

NAT常见三种类型:

  • 静态地址转换:将内网IP一对一地转换为外网IP,内网IP地址对应唯一的外网地址
  • 动态地址转换:将内网IP随机地转换为合法外网IP池中的地址,内网IP地址对应多个外网地址
  • 端口地址转换:即PAT (Port Address Translation),内网所有主机均可共享一个合法外网IP,采用端口多路复用,改变出网数据包的源端口并进行端口转换,从而可以最大限度地节约IP地址资源,目前使用的NAT技术一般都是PAT

NAT一般是针对边界路由设备进行配置,分为三类:

1.静态地址转换

Router(config)# interface <interface_inside>  // 配置连接内网的接口,如fa0/1
Router(config-if)# ip address <addr> <mask>  
Router(config-if)# ip nat inside              // 配置内网NAT接口,启用NAT
Router(config-if)# exit

Router(config)# interface <interface_outside> // 配置连接外网的接口,如fa0/1
Router(config-if)# ip address <addr> <mask>  
Router(config-if)# ip nat outside             // 配置外网NAT接口,启用NAT   
Router(config-if)# exit

Router(config)# ip route <dst_addr> <mask> <forward_ip> // 配置路由

Router(config)# ip nat inside source static <in_addr> <out_addr> // 配置内网IP与外网IP的静态NAT                                                                                      
                                                                 // 外网IP是ISP分配的合法IP                                    

2.动态地址转换

动态NAT配置需要定义ACL和NAT地址池,然后将ACL映射到NAT地址池:

Router(config)# interface <interface_inside>  // 配置连接内网的接口,如fa0/1
Router(config-if)# ip address <addr> <mask>  
Router(config-if)# ip nat inside              // 配置内网NAT接口,启用NAT
Router(config-if)# exit

Router(config)# interface <interface_outside> // 配置连接外网的接口,如fa0/1
Router(config-if)# ip address <addr> <mask>  
Router(config-if)# ip nat outside             // 配置外网NAT接口,启用NAT   
Router(config-if)# exit

Router(config)# access-list <num> {permit|deny} <addr> <r_mask>   // 创建ACL

Router(config)# ip nat pool <name> <start_addr> <end_addr> netmask <mask> // 创建NAT地址池
// 地址池中地址为ISP分配的合法IP

Router(config)# ip route <dst_addr> <mask> <forward_ip>           // 配置路由

Router(config)# ip nat inside source list <number> pool <name>    // 将NAT地址池中地址和ACL规则相关联                              

3.端口地址转换

PAT是动态的,配置也需要定义ACL,如果想要所有内网IP在出网时映射到单一IP地址做PAT,则ACL规则关联出网接口,如果想要所有内网IP在出网时映射到多个IP地址做PAT,则需要建立NAT地址池,ACL规则关联NAT地址池:

Router(config)# interface <interface_inside>  // 配置连接内网的接口,如fa0/1
Router(config-if)# ip address <addr> <mask>  
Router(config-if)# ip nat inside              // 配置内网NAT接口,启用NAT
Router(config-if)# exit

Router(config)# interface <interface_outside> // 配置连接外网的接口,如fa0/1
Router(config-if)# ip address <addr> <mask>  
Router(config-if)# ip nat outside             // 配置外网NAT接口,启用NAT   
Router(config-if)# exit

Router(config)# access-list <num> {permit|deny} <addr> <r_mask>  // 创建ACL

Router(config)# ip nat pool <name> <start_addr> <end_addr> netmask <mask> // 创建NAT地址池
// 地址池中地址为ISP分配的合法IP

Router(config)# ip route <dst_addr> <mask> <forward_ip>          // 配置路由

Router(config)# ip nat inside source list <number> interface <interface_outside> overload // 将外网接口和ACL规则相关联 

// 除了将外网接口和ACL规则相关联外,也可以将NAT地址池中地址和ACL规则相关联
// 这样内网IP出网时就可以转换为NAT地址池中的多个IP,在多个IP上做PAT
Router(config)# ip nat inside source list <number> pool <name> overload 

版权声明:本文为Captain_RB原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。