网络参考模型
OSI 模型(Open Systems Interconnection Model),由国际化标准组织ISO (The International Organization for Standardization ) 收录在ISO 7489标准中并于1984年发布。
OSI参考模型又被称为七层模型,由下至上依次为:
应用层:HTTP(Hypertext Transfer Protocol,超文本传输协议):用来访问在网页服务器上的各种页面。80(TCP)
FTP(File Transfer Protocol,文件传输协议):为文件传输提供了途径,它允许数据从一台主机传送到另一台主机上。20、21 (TCP)文件传输协议,提供互联网文件资源共享服务
DNS(Domain Name Service,域名称解析服务):用于实现从主机域名到IP地址之间的转换。
Telnet 23 (TCP)远程登陆协议,提供远程管理服务
SMTP 25 (TCP)简单邮件传输协议,提供互联网电子邮件服务
TFTP 69 (UDP)简单文件传输协议,提供简单的文件传输服务
传输层
TCP (Transmission Control Protocol,传输控制协议) :为应用程序提供可靠的面向连接的通信服务。目前,许多流行的应用程序都使用TCP。
UDP(User Datagram Protocol,用户数据报协议):提供了无连接通信,且不对传送数据包进行可靠性的保证。
网络层
IP(Internet Protocol,互联网协议):将传输层的数据封装成数据包并完成源站点到目的站点的转发,提供无连接的、不可靠的服务。
IGMP(Internet Group Management Protocol,因特网组管理协议):负责IP组播成员管理的协议。它用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
ICMP(Internet Control Message Protocol,网际报文控制协议):基于IP协议在网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。
数据链路层
PPP(Point-to-Point Protocol,点对点协议):一种点对点模式的数据链路层协议,多用于广域网。
Ethernet( 以太网协议 ):一种多路访问广播型数据链路层协议,是当前应用最为广泛的局域网技术。
PPPoE(Point-to-Point Protocol over Ethernet,以太网承载PPP协议):PPPoE提供通过简单桥接访问设备(接入设备)把一个网络的多个主机连接到远程访问集中器的功能。常见的应用有家庭宽带拨号上网。
v
关于TCP和UTP的报文格式,这个挺好【收藏】TCP/UDP/IP 报文格式 - 知乎 (zhihu.com)
TCP和UDP-端口号
端口号长度16bit,取值0-65535,源端口:是未知端口,随机产生,取值1024-65535
目的端口:是已知端口,表示应用层协议类型1-1023
在传输层如何识别一个会话,sip+dip+spot+dport+tcp/utp(源ip,目的ip,源端口,目的端口,tcp或utp协议)当这五个参数有其中一个不同时,则认为时不同会话
TCP的建立-三次握手
在TCP三次握手过程中,"seq"和"ack"是两个关键字段。
“seq”(Sequence Number)序列号:用于标识发送方发送的数据字节流的首个字节的序号。
“ack”(Acknowledgment Number)确认号:用于确认接收方期望收到的下一个字节序号。
如上在tcp三次握手与传输数据的过程,其中flags后的ack=1是表示对前一条报文的确认。
上面可以知道:TCP三次握手的过程及其变化:
1、第一次握手(SYN=1,seq=a):
客户端发送一个SYN(同步)包给服务器,指定客户端的初始序列号为a(第一次握手中的"seq"是客户端生成的随机初始序列号,用来唯一标识客户端发送数据的起始位置),表明客户端想要建立连接。
客户端还会设置ACK为0(表示没有确认号即客户端还未收到服务器的响应。
2、第二次握手(SYN=1,ACK=1,seq=b,ack=a+1):
服务器收到客户端的SYN包后,会发送一个SYN/ACK包作为响应。服务器设置自己的序列号为b(第二次握手中的"seq"是服务器生成的随机初始序列号,用来唯一标识服务器发送数据的起始位置),确认号为客户端的序列号+1,并置位ACK,表示已经收到了客户端的请求。
3、第三次握手(ACK=1,seq=a+1,ack=b+1):
客户端收到服务器的SYN/ACK包后,会发送一个确认包给服务器。客户端设置自己的序列号为客户端的初始序列号+1(刚好也是上一次握手时服务器的确认号)表示客户端发送数据的起始位置,确认号为服务器的序列号+1(表示服务器期望接收的下一个字节序号。),并置位ACK,表示已收到服务器的响应。
当服务器和客户端都确认对方已经收到了自己的序列号,且各自期望接收的下一个字节序号也都确认后,连接建立成功,可以进行数据传输。
TCP支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。在传输数据之前,TCP通过三次握手建立的实际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭。
TCP的关闭 - 四次挥手
如上图过程
1、由PC1发出一个FIN字段置”1 ”的不带数据的TCP段;
2. PC2收到PC1发来的FIN置位的TCP报文后,会回复一个ACK置位的TCP报文。
3. 若PC2也没有需要发送的数据,则直接发送FIN置位的TCP报文。假设此时PC2还有数据要发送,那么当PC2发送完这些数据之后会发送一个FIN置位的TCP报文去关闭连接。
4. PC1收到FIN置位的TCP报文,回复ACK报文,TCP双向连接断开。
ARP (Address Resolution Protocol)地址解析协议
作用:将IP地址解析为MAC地址;维护IP地址与MAC地址的映射关系的缓存,即ARP表项;实现网段内重复IP地址的检测。
网络设备一般都有一个ARP缓存(ARP Cache)(或者说,具备路由功能的以太网接口(能配置ip地址的接口)都会有自身的ARP缓存信息)。ARP缓存用来存放IP地址和MAC地址的关联信息。在发送数据前,设备会先查找ARP缓存表。如果缓存表中存在对方设备的ARP表项,则直接采用该表项中的MAC地址来封装帧,然后将帧发送出去。如果缓存表中不存在相应信息,则通过发送ARP Request报文来获得它。
(学习到的IP地址和MAC地址的映射关系会被放入ARP缓存表中存放一段时间(有效期内(缺省:180s),过了这段有效期,ARP表项会被自动删除。)
ARP工作原理:
如上图,由于主机1不知道主机2的MAC地址,所以目的MAC地址为广播地址FF-FF-FF-FF-FF-FF。ARP Request报文中包含发送端MAC地址、发送端IP地址、目的端MAC地址、目的端IP地址,其中目的端MAC地址的值为0。ARP Request报文会在整个网络上传播,该网络中所有主机包括网关都会接收到此ARP Request报文。所有的主机接收到该ARP Request报文后,都会检查它的目的端IP地址字段与自身的IP地址是否匹配。如果不匹配,则该主机将不会响应该ARP Request报文。如果匹配,则该主机会将ARP请求报文中的发送端MAC地址和发送端IP地址信息记录到自己的ARP缓存表中,然后通过ARP Reply报文进行响应。
当PC2发现接收到的ARP Request报文的目的端IP地址字段与自身的IP地址匹配,所以会向主机1回应ARP Reply报文。ARP Reply报文中的发送端IP地址是主机2自己的IP地址,目的端IP地址是主机1的IP地址,目的端MAC地址是主机1的MAC地址,发送端MAC地址是自己的MAC地址,同时操作类型被设置为Reply。ARP Reply报文通过单播传送。
最后,主机1收到ARP Reply以后,会检查ARP报文中目的端IP地址字段与自身的IP地址是否匹配。如果匹配,ARP报文中的发送端MAC地址和发送端IP地址会被记录到主机1的ARP缓存表中。
在电脑的cmd中可以用arp -a命令查看arp缓存表。在ensp中使用dis arp查询
免费ARP:在ARP请求报文中当源ip和目的ip都是自己时,为免费ARP,其作用是用于检测地址冲突(一般在接口获取ip地址后(手动配置IP、DHCP动态获取地址),或者地址变更,接口关闭重启启动时)
我们知道一开始时的arp缓存表可能只包含自己接口的ip地址及其物理地址的映射,但是通过同通信会慢慢知道更多除自己外的ip及其mac,从而丰富arp缓存表。
代理ARP(分为以下两种):
1、vlan间的代理arp
2、vlan内的代理arp
ARP查询在以下情况下使用:
1、当设备需要发送数据包到直连网络上的另一台设备时(即两台设备在同一子网内)。
2、设备需要解析目标IP地址对应的MAC地址,以便在数据链路层发送数据包。
3、如果ARP表中没有目标IP地址对应的MAC地址条目,设备会发送ARP请求并等待ARP响应来更新ARP表。
注意:当主机需要知道某个IP地址的MAC地址时,它会发送一个ARP请求广播到本地网络段。这个ARP请求确实会被本地网络段上的所有设备接收,但是即使本地网络段上有去往目的地址的条目(即有其他设备知道目的IP地址对应的MAC地址),这些设备也不会回应ARP请求,除非它们的IP地址与ARP请求中的IP地址完全匹配。
物理层:数据到达物理层之后,物理层会根据物理介质的不同,将数字信号转换成光信号、电信号或者是电磁波信号。物理层的PDU被称为比特流(Bitstream)。
双绞线的类型及线序
目前,双绞线可分为非屏蔽双绞线(UTP网线)和屏蔽双绞线(STP网线)
网线制作线序标准:
T568A线序标准:白绿、绿、白橙、蓝、白蓝、橙、白棕、棕。
T568B线序标准:白橙、橙、白绿、蓝、白蓝、绿、白棕、棕。
数据通信过程
数据封装
数据封装过程
当数据在应用层进行封装时,它会按照协议格式添加应用层头部和尾部,其中包含特定的信息和控制机制,以便于数据的传输和解析。例如,HTTP请求或FTP数据块等应用协议都有自己的头部和尾部格式。
接下来,在传输层,TCP协议会对应用层数据进行封装,添加TCP头部和尾部。TCP头部包含了用于控制传输过程的重要信息,如序列号、确认号、窗口大小等。TCP尾部则包含了用于校验整个TCP段完整性的校验和信息。
然后,在网络层,IP协议会对TCP段进行封装,添加IP头部和尾部。IP头部包含了用于标识发送和接收设备的重要信息,如源IP地址和目标IP地址。IP尾部则包含了用于校验整个IP数据报完整性的校验和信息。
最后,在数据链路层,以太网协议会对IP数据报进行封装,添加以太网头部和尾部。以太网头部包含了用于标识数据链路层设备的MAC地址信息。以太网尾部则包含了用于校验整个以太网帧完整性的校验和信息。
通过这样的封装过程,数据被封装为一个TCP/IP协议的数据单元,以便在网络中进行传输。需要注意的是,实际的数据封装和解封装过程可能因不同的协议和应用场景而有所差异,但上述描述提供了一种常见的封装结构示例。
一般情况下:网络中的二层设备(如以太网交换机)只会解封装数据的二层头部,根据二层头部的信息进行相应的“交换”操作。网络中的三层设备(如路由器)只会解封装到三层头部,并且根据三层头部的信息进行相应的“路由”操作。
网络层协议(IP、ICMP、IPX)
IP是Internet Protocol的缩写。 Internet Protocol本身是一个协议文件的名称,该协议文件的内容非常少,主要是定义并阐述了IP报文的格式。
作用:为网络层的设备提供逻辑地址、负责数据包的寻址和转发
ip版本分为IPV4和IPV6,下面是ipv4报文格式
IP地址是网络设备接口的属性,不是网络设备本身的属性。当我们说给某台设备分配一个IP地址时,实质上是指给这台设备的某个接口分配一个IP地址。如果设备有多个接口,通常每个接口都至少需要一个IP地址。
ip地址的构成
网络掩码 (Netmask),又称子网掩码 (Subnet Mask):网络掩码为32 bit,与IP地址的位数一样,通常也以点分十进制数来表示。网络掩码不是一个IP地址,在二进制的表示上是一堆连续的1、后面接一堆连续的0。
通常将网络掩码中1的个数称为这个网络掩码的长度。如:掩码0.0.0.0的长度是0,掩码252.0.0.0的长度是6。
网络掩码一般与IP地址结合使用,其中值为1的比特对应IP地址中的网络位;值为0的比特对应IP地址中的主机位,以此来辅助我们识别一个IP地址中的网络位与主机位。即网络掩码中1的个数就是IP地址的网络号的位数,0的个数就是IP地址的主机号的位数。
ip地址的基本配置
ip寻址
网络寻址:
二层网络寻址:可直接通过IP地址,找到对应的主机接口。三层网络寻址:利用网关转发来自不同网段之间的数据包。
网关:
报文转发过程中,首先需要确定转发路径以及通往目的网段的接口。如果目的主机与源主机不在同一网段,报文需要先转发到网关,然后通过网关将报文转发到目的网段。
网关是指接收并处理本地网段主机发送的报文并转发到目的网段的设备。为实现此功能,网关必须知道目的网段的IP地址。网关设备上连接本地网段的接口地址即为该网段的网关地址。
ip地址分类
只关注A、B、C三类地址即可,
网络地址:网络号为X,主机号的每个比特都为0。不能分配给具体的主机接口使用。
广播地址:网络号为X,主机号的每个比特都为1。不能分配给具体的主机接口使用。
可用地址:又称主机地址,可用分配给具体的主机接口使用。
一个网段可用地址数量计算:一个网段的主机位为n位,则IP地址数为:2ⁿ,可用IP地址数为:2ⁿ-2 (减去网络地址和广播地址)。
私网地址
(私有网络连接到Internet:私有网络由于使用了私网IP地址,是不允许连接到Internet的。后来在实际需求的驱动下,许多私有网络也希望能够连接到Internet上,从而实现私网与Internet之间的通信,以及通过Internet实现私网与私网之间的通信。私网与Internet的互联,必须使用网络地址转换 (NAT)技术实现。)
特殊ip地址
(255.255.255.255和192.168.1.255/24一样都是广播地址,后者是子网广播地址,主机位全为1,而前者称为有限广播地址,它可以作为一个IP报文的目的IP地址使用。路由器接收到目的IP地址为有限广播地址的IP报文后,会停止对该IP报文的转发。
只要是广播ip报文,DMAC地址均为FF-FF-FF-FF-FF-FF。
关于泛洪和广播,泛洪是广播的表现形式)关于169.254.0.0/16 如果一个网络设备获取IP地址的方式被设置成了自动获取方式,但是该设备在网络上又没有找到可用的DHCP服务器,那么该设备就会使用169.254.0.0/16网段的某个地址来进行临时通信。
子网划分
因此可以利用子网划分来减少地址浪费,即VLSM (Variable Length Subnet Mask),可变长子网掩码。将一个大的有类网络,划分成若干个小的子网,使得IP地址的使用更为科学。
例如:给出指定网段192.168.1.0/24,要求公司5个部门,每个部门规划到不同的网络,每个部门至少能满足20台主机的接入。怎么划分子网
1、先确定需要用的主机数量,上述说20
则2^n-2=可用地址数,即2^n-2>=20,则n=5
2、向主机位借位,知道掩码长度
我们知道主机位至少有5位,则网络号有24+8-5=27位
3、计算子网网络地址
2^5=32,即每个子网会有32个网络地址
得子网划分为,192.168.1.0/27、192.168.1.32/27、192.168.1.64/27、192.168.1.96/27、192.168.1.128/27、192.168.1.160/27、192.168.1.192/27、192.168.1.224/27、192.168.1.256/27
即子网范围为:192.168.1.0/27~192.168.1.31/27、192.168.1.32/27~192.168.1.63/27……等
(192.168.1.000 00000~192.168.1.000 11111即第三段的前3为000,后面5位为0的为网络号即192.168.1.0,后面5位全为1的为广播地址,有效地址在这个范围之间)
CIDR无类域间路由2种
精确的CIDR (精确路由汇总) : CIDR的之后的网络号和CIDR之前的子网地址范围完全一致, 要求有良好的地址规划,实现项目往往可能无法精确的做CIDR例如:192.168.0.0/24、192.168.1.0/24、192.168.2.0/24、192.168.3.0/24,可以汇总成192.168.0.0/22很精确的涵盖了上述四条路由
不精确的CIDR(精确路由汇总) : CIDR的之后 的网络号和CIDR之前的子网地址范围不完全一致 ,不好的地址规划,导致无法精确做CIDR。
例如:192.168.0.0/24、192.168.1.0/24、192.168.2.0/24、192.168.3.0/24、192.168.6.0/24、192.168.7.0/24 这五条路由,前面四条可以汇总为192.168.0.0/22,后两条可以汇总为192.168.6.0/23,这五条路由没法通过一条路由精确的汇总。
精确的CIDR可能会增加路由的条目的数量,但是路由表精确度提高。不精确的CIDR路由条目的数量减少,但路由表的精确度降低。在路由汇总时,可能会因为精确匹配和最长掩码匹配的问题而导致路由错误。
例如:考虑一个网络拓扑,其中有两个子网,192.168.1.0/24和192.168.2.0/24。
假设路由器R1和R2之间有一条直连路由,并且R1已经从上游路由器接收到了汇总路由192.168.0.0/16。现在有一个目标IP地址为192.168.1.5的数据包从R1的某个接口发送到R2。
根据最长掩码匹配原则,R1应该在路由表中查找与目标IP地址最匹配的条目。
在这种情况下,R1会选择汇总路由192.168.0.0/16而不是精确匹配的子网路由192.168.1.0/24。因此,数据包将被发送到R2,但R2可能无法正确解析该数据包,因为它实际上应该发送到另一个子网。(由于汇总路由的掩码长度为16位,而子网路由的掩码长度为24位,因此根据最长掩码匹配原则,路由器会选择掩码长度更长的子网路由。但是,在本例中,由于汇总路由已经覆盖了子网路由,因此汇总路由将被优先选择。即使子网路由与目标IP地址更精确匹配,但由于汇总路由的存在,它也会被忽略。)
这个问题出现的原因是汇总路由的选择优先于精确匹配的子网路由。为了避免这种情况,管理员需要仔细规划和管理网络中的路由汇总,确保汇总路由不会覆盖到不应该覆盖的子网。
推荐做法:
能精确汇总的路由尽量精确汇总。
在没有路由黑洞风险的情况下,可以做不精确的路由汇总。无法汇总的路由,直接发布路由本身。(补充:可变长子网掩码(VLSM)和无类域间路由(CIDR)技术的区别)
CIDR是把几个标准网络合成一个大的网络
VLSM是把一个标准网络分成几个小型网络(子网)
CIDR是子网掩码往左边移了,VLSM是子网掩码往右边移了
ICMP协议
关于路由
路由:是指导报文转发的路径信息,通过路由可以确认转发IP报文的路径。
路由设备:是依据路由转发报文到目的网段的网络设备。路由设备维护着一张路由表,保存着路由信息。路由设备主要包括路由器和交换机这两种.
(路由器和交换机的主要区别在于它们工作的网络层次不同:路由器工作在网络层,主要处理IP地址和路由: 而交换机工作在数据链路层,主要处理MAC地址和数据帧的转发。)
路由表:中间节点选择路径所依赖的表项(包含明确的出接口以及下一跳)
路由转发:在路径中的最后一跳路由器二层寻址将报文转发给目的主机的过程
路由信息
路由表由路由条目组成,但不代表路由表中保存了所有路由,路由表中只会保存“最优的”路由
路由器通过各种方式发现路由:
直连路由:
1、直连接口所在网段的路由,由设备自动生成。
2、直连路由的下一跳地址并不是其他设备上的接口地址,因为该路由的目的网段为接口所在网段,本接口就是最后一跳,不需要再转发给下一跳,所以在路由表中的下一跳地址就是接口自身地址。
3、直连路由只能在源设备和目标设备直接相连且IP地址在同一网段时生效。
4、使用直连路由进行路由转发时,转发的动作不是交给下一跳路由器处理,而是查询ARP表项以获取目标设备的MAC地址,并将报文直接发送到目标设备的MAC地址。(ARP(Address Resolution Protocol,地址解析协议)用于将网络层的IP地址解析为数据链路层的MAC地址。路由表信息不包含mac地址),•
5、并不是所有接口生成的直连路由都会出现在路由表中,前提是该接口的物理状态、协议状态都为UP。
路由器通过动态路由协议(如OSPF、IS-IS、BGP等)学习到的路由)
最优路路由条目优先流程如下图
优先级比较过程:
当路由去往同一个目的网络(即网络号相同,掩码也相同),存在多种路由来源时,选择优先值较小的。优先级取值0-255,表示路由可信度,越小可信度越高。当路由来源相同时,选择度量值(cost)较小的。
如下常见路由类型的默认优先级
RIP为100,is-is为15,BGP为255,除了直连路由的优先级无法修改外,其它都可修改,但是如果将不同来源的优先级都修改成一样,则相当于没有修改。
当报文目的地址匹配多条路由时,选择掩码最大的那条路径进行转发(最长匹配原则)
静态路由配置
注意:如果静态路由下一跳出口是以太网接口,则一定要写下一跳地址。如果下一跳出口接口是PPP、HDLC接口,则可以写下一跳也可以写出接口
关联下一跳IP的方式 ip route-static 目标网络 子网掩码(也可用掩码长度)下一跳IP地址 [r2]ip route-static 1.1.1.0 24 1.1.12.1 关联出接口的方式 ip route-static 目标网络 子网掩码(也可用掩码长度) 出接口 [Huawei] ip route-static ip-address { mask | mask-length } interface-type interface-number (以太网接口要指定下一跳,不能只指定出接口) 关联出接口和下一跳IP方式 [Huawei] ip route-static ip-address { mask | mask-length } interface-type interface-number [ nexthop-address ] [r2]ip route-static 1.1.1.0 24 g0/0/0 1.1.12.1
缺省路由(ip route-static 0.0.0.0 0 下一跳ip)
用于转发给未知网段的报文,即报文无法匹配明细路由的时候。
路由转发流程(如下PC7pingPC8,如何将报文发送给PC8)
1、判断sip和dip是否在同一个网段(即sip和sip分别与自己主机掩码做与运算,结果相同则在同一个网段),如果在同一个网段,则查询arp缓存得到目的mac直接进行封装(查到一开始没有查到则做arp解析后可以得到)。在不同网段时则查询网关地址(网关就是链路上的下一跳),在arp缓存中查询网关地址的mac信息,将网关接口的mac地址封装到dmac的数据帧中(如果缓存中没有网关mac地址,则对网关地址发起ARP解析)
一开始PC7发送报文,源地址sip为1.1.1.1/24,目的地址dip为2.2.2.1/24,sip和掩码24做与运算(1.1.1.1和255.255.255.0与运算的结果为1.1.1.0)得到所在网段为1.1.1.0,dip和掩码做与运算(2.2.2.1和255.255.255.0与运算结果为2.2.2.0)得到所在网段为2.2.2.0。二者网段不相等,位于不同网段。所以会把报文发送给网关1.1.1.254。查询arp缓存中网关的mac,并封装目的地址为网关地址的mac数据帧中,smac:a dmac:b sip:1.1.1.1 dip:2.2.2.1,封装好后将报文发给1.1.1.254。
2、判断dip是不是自己的ip。如果不是则解封装后根据dip查路由表,查不到则查找到下一跳
网关mac、和出接口的mac进行二层封装(sip和dip不变),转发给下一跳,直到转发到目的地。
1.1.1.254接收到报文后,进行二层解封装(拆掉smac、dmac),发现dip为2.2.2.1,不是发给自己的(自己时1.1.1.254)。则查找路由表发现找不到相关条目,则查找网关,即下一跳的地址,查照arp缓存表,封装dmac为网关的mac,封装smac为出接口的mac,smac:c,dmac:d sip:1.1.1.1 dip:2.2.2.1。后面也是进行这样的转发操作,直到发送到路由器4时,匹配直连路由2.2.2.1。查看arp缓存表直接封装dmac,即smac:i dmac:j sip :1.1.1.1 dip:2.2.2.1,转发给目的主机完成通信。
上图代码配置如下:
[r1]int g0/0/0 [r1-GigabitEthernet0/0/0]ip add 1.1.1.254 24 [r1-GigabitEthernet0/0/0]int g0/0/1 [r1-GigabitEthernet0/0/1]ip add 1.1.12.1 24 [r1-GigabitEthernet0/0/1]q [r1]ip route-static 1.1.23.0 255.255.255.0 1.1.12.2 配置去往1.1.23.0/24网段的下一跳 [r1]ip route-static 1.1.34.0 255.255.255.0 1.1.12.2 配置去往1.1.34.0/24网段的下一跳 [r1]ip route-static 2.2.2.0 255.255.255.0 1.1.12.2 配置去往2.2.2.0/24网段的下一跳 r1只要配置去往PC8方向的静态路由即可 [r2]int g0/0/0 [r2-GigabitEthernet0/0/0]ip add 1.1.12.2 24 [r2-GigabitEthernet0/0/0]int g0/0/1 [r2-GigabitEthernet0/0/1]ip add 1.1.23.1 24 [r2-GigabitEthernet0/0/1]q [r2]ip route-static 1.1.34.0 255.255.255.0 1.1.23.2 [r2]ip route-static 2.2.2.0 255.255.255.0 1.1.23.2 [r2]ip route-static 1.1.1.0 255.255.255.0 1.1.12.1 因为非直连路由去往PC7和PC8两个方向都有,所以为实现互通,都要配置 [r3]int g0/0/0 [r3-GigabitEthernet0/0/0]ip add 1.1.23.2 24 [r3-GigabitEthernet0/0/0]int g0/0/1 [r3-GigabitEthernet0/0/1]ip add 1.1.34.1 24 [r3-GigabitEthernet0/0/1]q [r3]ip route-static 2.2.2.0 255.255.255.0 1.1.34.2 [r3]ip route-static 1.1.12.0 255.255.255.0 1.1.23.1 [r3]ip route-static 1.1.1.0 255.255.255.0 1.1.23.1 [r4]int g0/0/0 [r4-GigabitEthernet0/0/0]ip add 1.1.34.2 24 [r4-GigabitEthernet0/0/0]int g0/0/1 [r4-GigabitEthernet0/0/1]ip add 2.2.2.254 24 [r4-GigabitEthernet0/0/1]q [r4]ip route-static 1.1.23.0 255.255.255.0 1.1.34.1 [r4]ip route-static 1.1.12.0 255.255.255.0 1.1.34.1 [r4]ip route-static 1.1.1.0 255.255.255.0 1.1.34.1
注意:要实现全网互通,是既要接收报文也要发送报文(通信时双向的),所以非直连路由要全部配置去往该网段的路由,但是也可以使用动态路由实现。
路由递归
路由必须有直连的下一跳才能够指导转发,但是路由生成时下一跳可能不是直连的,因此需要计算出一个直连的下一跳和对应的出接口,这个过程就叫做路由递归(路由迭代)。
路由表中存在等价路由之后,前往该目的网段的IP报文路由器会通过所有有效的接口、下一跳转发,这种转发行为被称为负载分担。
浮动路由
配置静态路由优先级,越小越优先。所以,如下由状态处于inactive的静态路由
[r2]ip route-static 1.1.1.0 255.255.255.0 1.1.12.1 ? description Add or delete description of unicast static route inherit-cost Inherit the cost of the iterated route permanent Specifies route permanent preference Specifies route preference tag Specifies route tag track Specify track object <cr> Please press ENTER to execute command [r2]ip route-static 1.1.1.0 255.255.255.0 1.1.12.1 preference 120 [r2]dis ip routing-table protocol static Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Public routing table : Static Destinations : 3 Routes : 4 Configured Routes : 4 Static routing table status : <Active> Destinations : 3 Routes : 3 Destination/Mask Proto Pre Cost Flags NextHop Interface 1.1.1.0/24 Static 60 0 D 1.1.12.1 GigabitEthernet 0/0/0 1.1.34.0/24 Static 60 0 RD 1.1.23.2 GigabitEthernet 0/0/1 2.2.2.0/24 Static 60 0 RD 1.1.23.2 GigabitEthernet 0/0/1 Static routing table status : <Inactive> Destinations : 1 Routes : 1 Destination/Mask Proto Pre Cost Flags NextHop Interface 1.1.1.0/24 Static 120 0 R 1.1.12.1 GigabitEthernet 0/0/0
动态路由
稍微了解一下概念和使用场景
OSPF(开放最短路径优先):一种基于链路状态的协议,它会告诉路由器网络中所有的链路状态,然后路由器会计算出到达目的地的最短路径。就像在地图上找路线,知道每条路的情况后,你会选择最短的路线。OSPF适用于网络规模较大、拓扑复杂的网络环境。
IS-IS(中间系统到中间系统):一种链路状态协议,和OSPF类似,但它使用不同的消息格式。IS-IS把网络分成不同的区域,每个区域内的路由器只关心自己区域内的链路状态,这样可以减少路由信息的传输量。IS-IS适用于大型、复杂的网络拓扑结构。
BGP(边界网关协议):这是不同自治系统之间交换路由信息的协议。就像不同国家之间需要协商如何运输货物一样,BGP让不同的网络运营商能够协商如何交换数据包。BGP适用于多自治系统间的路由选择,特别是在互联网服务提供商之间。
VRP
通用路由平台VRP(Versatile Routing Platform)是华为公司数据通信产品的通用操作系统平台。(理解成用在网络通信设备上的操作系统即可)
![]()
设备管理
用户对设备的常见管理方式主要有命令行方式和Web网管方式两种。
(web网管方式,通过图形化的操作界面,可以通过HTTP和HTTPS方式登录设备。
接入设备上的网管口,下下下图左边的web圈着的),根据说明书上默认的ip地址在浏览器去访问,得到类似如下界面(注意我们的主机上的网络号和其网络号需要相同)
关于密码和账号,可以去查产品手册。
命令行方式,需要用户使用设备提供的命令行对设备进行管理与维护,命令行方式可以通过Console口、Telnet或SSH方式登录设备。
图中提到的三种命令行方式(console口登录、telnet登录、ssh登录)
如下console口登录,将如下右边的console口用console线连接到设备。
在xshell上操作的配置:
然后在连接的模拟主机上操作,如下图打开串口的命令行就可进行配置,
如下我在mobaxterm想去连接。
发现我没有真的去连接,所以也没有再电脑的设备管理器查到连接的是哪个端口(com口)吧。
下图为连接的console线
如果是电脑的话,没有如上插的接口(上图右边DB9母头接到电脑的com口上),可以用如下的转接头
telnet登录
[r1]telnet server enable 启用Telnet服务器(下面报错说明已经默认开启) Error: TELNET server has been enabled [r1]user-interface vty 0 4 用于进入虚拟终端(VTY)接口的配置模式。VTY接口是Telnet或其他远程登录协议使用的接口。0 4表示这是一个范围,通常指的是从VTY 0到VTY 4这5个接口 [r1-ui-vty0-4]authentication-mode password 设置了认证模式为密码认证(有两种认证模式) Please configure the login password (maximum length 16):12 配置一个登录密码。密码的最大长度是16个字符。在这我输入的密码是“12”。 (等价于[r1-ui-vty0-4]set authentication password cipher 12 [r1-ui-vty0-4]user privilege level 3 设置了用户权限级别为3
user-interface vty 0 4 一般会设置0到4,5个终端线路去进行登录设置(也可单独为一个虚拟终端(vty)去设置单独的密码),设置密码时也可用命令set authentication password cipher 。为什么要设置权限为3呢,因为0,1,2权限较小,3以上权限都可以满足使用需求,拥有完整的管理权限)
同理设置console口的登录方式为密码登录,(用串口线和设备相连去做实验)提高网络设备的安全性。通过密码登录,可以确保只有知道密码的用户才能访问和配置设备,
如下图所示,其实有两种认证模式
通过账号密码方式登录(即aaa模式)
[r1]aaa [r1-aaa]local-user wang service-type telnet ssh web [r1-aaa]local-user wang password cipher 123 [r1-aaa]local-user wang privilege level 3 [r1-aaa]q [r1]user-interface vty 0 4 [r1-ui-vty0-4]authentication-mode aaa 设置0-4的虚拟终端登录设备时的认证模式为aaa [r1-ui-vty0-4]protocol inbound telnet
[r1-aaa]local-user wang service-type telnet ssh web 在AAA模式下,创建一个本地用户名为“Wang”,并指定该用户可以通过的服务类型为Telnet、SSH和Web。表示用户“Wang”可以通过Telnet、SSH和Web界面这三种方式进行登录。
[r1-ui-vty0-4]authentication-mode aaa 设置VTY 0到4接口的认证模式为AAA。这意味着当用户尝试通过这些VTY接口登录时,设备将使用AAA模式进行认证。
[r1-ui-vty0-4]protocol inbound telnet 允许入站的Telnet协议流量通过VTY接口。这确保了用户可以通过Telnet远程登录到设备。
如上参数所示protocol inbound指定VTY用户界面所支持的协议参数(all即包括ssh和telnet)
注意:
用户服务类型配置(
service-type
)定义了用户可以使用哪些协议登录,而VTY接口配置(protocol inbound
)定义了哪些协议的数据流可以被设备接收。如上设置可以解释为:
用户“Wang”如果尝试通过Telnet登录,他的请求会首先被VTY接口接收(因为Telnet协议是被允许的),然后设备会根据AAA模式下的配置进行用户认证和授权检查。
所以尝试ssh登录,(创建密钥对,如下密钥长度越长保护强度越大,默认512)
如下设置ssh登录的过程
(如上过程)首先需要创建一个密钥对(包括公钥和私钥),在aaa模式下创建用户并设置只能在ssh下登录,并开启ssh服务功能,然后指定用户为密码登录,然后在0-4虚拟终端的登录的认证模式为aaa,并设置只允许ssh登录。
[r1]rsa local-key-pair create 创建RSA密钥对,用于SSH连接的加密。 % RSA keys defined for Host already exist. 名为“Host”的密钥对已经存在, The key name will be: Host 所以系统提示是否要替换它们。 Confirm to replace them? (y/n)[n]:n 这里我尝试了不替换,发现可以使用ssh正常登录 [r1]aaa [r1-aaa]local-user haha password cipher 123 Info: Add a new user. [r1-aaa]local-user haha privilege level 3 [r1-aaa]local-user haha service-type ssh [r1-aaa]q [r1]stelnet server enable 启用STELNET服务器。STELNET是华为设备上的SSH实现,用于提供安全的远程登录服务。 Info: Succeeded in starting the STELNET server. [r1]ssh user haha authentication-type password 为用户“haha”设置SSH认证类型为密码认证,即用户“haha”将使用密码进行SSH登录。 Authentication type setted, and will be in effect next time [r1]user-interface vty 0 4 [r1-ui-vty0-4]authentication-mode aaa [r1-ui-vty0-4]protocol inbound ssh
如上,在设备上配置了AAA认证模式,创建了一个名为“haha”的本地用户,设置了密码和权限级别,并指定该用户只能通过SSH协议登录。同时,启用了SSH服务器,并配置了VTY接口以允许SSH登录请求。之后用户“haha”将能够使用SSH协议和密码安全地远程登录到设备。
注意:系统提示已经存在名为“Host”的RSA密钥对,询问是否要替换时,应该都可以y或n,输入“y”将删除现有的“Host”密钥对并创建新的密钥对。输入“n”(将保持现有的“Host”密钥对不变。替换现有密钥对可能会导致之前依赖于这些密钥对的配置或连接失效。但是看具体情况把,这里我输入n时可以的,
根据提示输入ssh client等内容,可能是因为第一次登录。并按照提示保存公钥。下一次登录则直接输入用户和密码即可。
如下其实对ssh的认证类型有几种
补充:
AAA原理和配置
OSPF(Open Shortest Path First,开放式最短路径优先)
关于ospf
a、针对IPv4协议使用的是OSPF Version 2(RFC2328);
针对IPv6协议使用OSPF Version 3(RFC2740)
b、运行OSPF路由器之间交互的是LS(Link State,链路状态)信息,而不是直接交互路 由。LS信息是OSPF能够正常进行拓扑及路由计算的关键信息。
c、OSPF支持VLSM(Variable Length Subnet Mask,可变长子网掩码),支持手工路由汇 总。
(ospf在园区网络中的应用,在核心交换机与汇聚交换机上运行OSPF,实现园区网络内的
路由可达。)
ospf基本术语
区域
Router-ID
(在实际项目中,通常会通过手工配置方式为设备指定OSPF Router-ID。请注意必须保证在OSPF域中任意两台设备的Router-ID都不相同。通常的做法是将Router-ID配置为与该设备某个接口(通常为Loopback接口)的IP地址一致。)
度量值
动态路由协议的分类
(静态路由需要手动配置和维护路由条目,且无法适应大规模网络和无法动态响应网络变化,无法自动收敛网络)
距离矢量路由协议
链路状态路由协议
•链路状态通告,可以简单的理解为每台路由器都产生一个描述自己直连接口状态(包括接口的开销、与邻居路由器之间的关系等
•每台路由器都会产生LSAs,路由器将接收到的LSAs放入自己的LSDB(Link State DataBase,链路状态数据库)。路由器通过LSDB,掌握了全网的拓扑。
•每台路由器基于LSDB,使用SPF(Shortest Path First,最短路径优先)算法进行计算。每台路由器都计算出一棵以自己为根的、无环的、拥有最短路径的“树”。有了这棵“树”,路由器就已经知道了到达网络各个角落的优选路径。
•最后,路由器将计算出来的优选路径,加载进自己的路由表(Routing Table)。
链路状态路由协议有四个步骤:
第一步是建立相邻路由器之间的邻居关系。
当一台OSPF路由器收到其他路由器发来的首个Hello报文时会从初始Down状态切换为Init状态。当OSPF路由器收到的Hello报文中的邻居字段包含自己的Router ID时,从Init切换2-way状态。
第二步是邻居之间交互链路状态信息和同步LSDB。邻居状态机从2-way转为Exstart状态后开始主从关系选举:
R1向R2发送的第一个DD报文内容为空,其Seq序列号假设为X。
R2也向R1发出第一个DD报文,其Seq序列号假设为Y。
选举主从关系的规则是比较Router ID,越大越优。R2的Router ID比R1大,因此R2成为真正的主设备。
主从关系比较结束后,R1的状态从Exstart转变为Exchange。
R1邻居状态变为Exchange后,R1发送一个新的DD报文,包含自己LSDB的描述信息,其序列号采用主设备R2的序列号。R2收到后邻居状态从Exstart转变为Exchange。
R2向R1发送一个新的DD报文,包含自己LSDB的描述信息,序列号为Y+1。
R1作为从路由器需要对主路由R2发送的每个DD报文进行确认,回复报文的序列号与主路由R2一致。
发送完最后一个DD报文后,R1将邻居状态切换为Loading。
邻居状态转变为Loading后,R1向R2发送LSR报文,请求那些在Exchange状态下通过DD报文发现的,但是在本地LSDB中没有的LSA。
R2收到后向R1回复LSU。在LSU报文中包含被请求的LSA的详细信息。R1收到LSU报文后,向R2回复LS ACK报文,确认已接收到,确保信息传输的可靠性。
此过程中R2也会向R1发送LSA请求。当两端LSDB完全一致时,邻居状态变为Full,表示成功建立邻接关系。
第三步是进行优选路径计算。
第四步是根据最短路径树生成路由表项加载到路由表。
ospf协议报文类型
OSPF三大表项 - 邻居表(display ospf peer)
如图所示输入display ospf peer命令之后,各项参数含义如下: OSPF Process 1 with Router ID 1.1.1.1:本地OSPF进程号为1与本端OSPF Router ID为1.1.1.1 Router ID:邻居OSPF路由器ID Address:邻居接口地址 GR State:使能OSPF GR功能后显示GR的状态(GR为优化功能),默认为Normal State:邻居状态,正常情况下LSDB同步完成之后,稳定停留状态为Full Mode:用于标识本台设备在链路状态信息交互过程中的角色是Master还是Slave Priority:用于标识邻居路由器的优先级(该优先级用于后续DR角色选举) DR:指定路由器 BDR:备份指定路由器 MTU:邻居接口的MTU值 Retrans timer interval:重传LSA的时间间隔,单位为秒 Authentication Sequence:认证序列号
OSPF三大表项 - LSDB表(display ospf lsdb)
OSPF三大表项 - OSPF路由表(display ospf routing)
OSPF表和路由表在网络中各自扮演着重要的角色,它们的主要差异在于所表示的信息以及使用的时机。
OSPF表(OSPF链路状态数据库):
OSPF(开放最短路径优先)是一种内部网关协议(IGP),用于在IP网络中交换路由信息。OSPF表包含了网络拓扑信息,也就是整个网络的地图或图表。这个表是通过OSPF协议从其他OSPF路由器收集到的链路状态通告(LSA)信息构建而成的。OSPF表中的信息包括网络中所有路由器和链路的状态,如接口的IP地址、网络类型(点对点、广播等)、接口的开销等。当路由器需要计算到达某个目的地的最短路径时,就会使用OSPF表。通过Dijkstra算法,路由器可以确定到达每个网络的最短路径。
路由表:
路由表是路由器根据各种路由协议(如OSPF、BGP、RIP等)以及静态路由配置计算得出的转发表。路由表包含了路由器如何转发数据包的信息。对于每个目标网络,路由表中都有一个对应的条目,包括目标网络的IP地址、下一跳路由器的IP地址以及出口接口等信息。当路由器收到一个数据包时,它会查找路由表以确定如何转发该数据包。路由器会根据目标IP地址在路由表中查找最匹配的条目,并将数据包转发到指定的下一跳路由器或出口接口。
总结:
OSPF表主要用于存储网络拓扑信息,帮助路由器计算最短路径。这些信息是通过OSPF协议从其他OSPF路由器收集到的。
路由表主要用于指导路由器如何转发数据包。它是根据各种路由协议以及静态路由配置计算得出的转发表。当路由器收到一个数据包时,它会查找路由表以确定如何转发该数据包。
(display ip routing-table protocol ospf命令用于查看整个网络的OSPF路由表信息,而ip route ospf [process-id] [network-id]命令用于查看特定接口的OSPF路由表信息。)
ospf网络类型(Broadcast、NBMA、P2MP、P2P)
一般情况下,链路两端的OSPF接口网络类型必须一致,否则双方无法建立邻居关系。
DR和BDR
(选举规则:OSPF DR优先级更高的接口成为该MA的DR,如果优先级相等(默认为1),则具有更高的OSPF Router-ID的路由器(的接口)被选举成DR,并且DR具有非抢占性。)
ospf路由器类型
区域内路由器(Internal Router):该类路由器的所有接口都属于同一个OSPF区域。
区域边界路由器ABR(Area Border Router):该类路由器的接口同时属于两个以上的区域,但至少有一个接口属于骨干区域。
骨干路由器(Backbone Router):该类路由器至少有一个接口属于骨干区域。
自治系统边界路由器ASBR(AS Boundary Router):该类路由器与其他AS交换路由信息。只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR。
ospf配置
配置过程分为三个步骤:配置设备接口、配置OSPF和验证结果。
[r3]int lo 0 [r3-LoopBack0]ip add 3.3.3.3 32 [r3-LoopBack0]int g0/0/0 [r3-GigabitEthernet0/0/0]ip add 10.1.13.3 24 [r3-GigabitEthernet0/0/0]q [r3]ospf 1 [r3-ospf-1]area 1 [r3-ospf-1-area-0.0.0.1]network 10.1.13.3 0.0.0.0 [r3-ospf-1-area-0.0.0.1]network 3.3.3.3 0.0.0.0 [r3-ospf-1-area-0.0.0.1]dis this [V200R003C00] # area 0.0.0.1 network 3.3.3.3 0.0.0.0 network 10.1.13.3 0.0.0.0 # return [s1]ospf router-id 1.1.1.1 [s1-ospf-1]area 1 [s1-ospf-1-area-0.0.0.1]network 10.1.13.1 0.0.0.0 [s1-ospf-1-area-0.0.0.1]network 1.1.1.1 0.0.0.0 [s1-ospf-1-area-0.0.0.1]area 0 [s1-ospf-1-area-0.0.0.0]network 10.1.12.1 0.0.0.0 [s1-ospf-1-area-0.0.0.0]dis this [V200R003C00] # area 0.0.0.0 network 10.1.12.1 0.0.0.0 # return [s1-ospf-1-area-0.0.0.0]area 1 [s1-ospf-1-area-0.0.0.1]dis this [V200R003C00] # area 0.0.0.1 network 1.1.1.1 0.0.0.0 network 10.1.13.1 0.0.0.0 # return [r2]int g0/0/0 [r2-GigabitEthernet0/0/0]ip add 10.1.12.2 24 [r2-GigabitEthernet0/0/0]ospf router-id 2.2.2.2 [r2-ospf-1]area 0 [r2-ospf-1-area-0.0.0.0]network 10.1.12.2 0.0.0.0 [r2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0 [r2-ospf-1-area-0.0.0.0]dis this [V200R003C00] # area 0.0.0.0 network 2.2.2.2 0.0.0.0 network 10.1.12.2 0.0.0.0 # return
(在对s3配置中,我是先为环回口配置了ip,虽然可以知道router-id后面也是3.3.3.3。关于环回口和router-id的联系,可以通过router-id的选举来体现
在OSPF中的router id选举规则如下:
1、优选手工配置的router id;
①OSPF进程手工配置的router id具有最高优先级
②在全局模式下配置的公用router id的优先级仅次于直接给OSPF进程手工配置router id,即它具有第二优先级
2、在没有手工配置的前提下,优选loopback接口地址中最大的地址作为router id;
3、在没有配置loopback接口地址的前提下,优选其他接口的IP地址中选择最大的地址作为router id (不考虑接口的Up/Down状态)。
(关于loopback,
loopback接口创建后物理层状态和链路层协议永远处于up状态。loopback接口可以配置ip地址,为了节约ip地址,系统会自动给loopback接口的ip地址配置32位的子网掩码。loopback接口下也可以使用路由协议,可以收发路由协议报文。
环回口是用来为OSPF进程生成本地Loopback地址的虚拟接口,它们的主要作用是提供唯一的IP地址,以避免在配置OSPF进程时出现IP地址冲突的问题。可以根据实际需求选择静态分配、动态分配或使用私有IP地址等方式来分配环回口的地址。)
关于ospf network命令的配置方式有四种
关于第四种,首先要把router-id、进程、存在的区域创建好,再接口下加入对应区域和进程即可,这种方式在接口ip改变后不影响原来的配置,而其它三种方法则在接口地址改变后network的命令要做出相应的变化。
[s1]ospf 1 router-id 1.1.1.1 [s1-ospf-1]int lo 0 [s1-LoopBack0]ospf enable 1 area 1 [s1-LoopBack0]dis this [V200R003C00] # interface LoopBack0 ip address 1.1.1.1 255.255.255.255 ospf enable 1 area 0.0.0.0 # return [s1-LoopBack0]ospf enable 1 area 1 [s1-LoopBack0]dis this [V200R003C00] # interface LoopBack0 ip address 1.1.1.1 255.255.255.255 ospf enable 1 area 0.0.0.1 # return [s1-LoopBack0]int g0/0/0 [s1-GigabitEthernet0/0/0]ospf enable 1 area 1 [s1-GigabitEthernet0/0/0]int g0/0/1 [s1-GigabitEthernet0/0/1]ospf enable 1 area 0 [s1-GigabitEthernet0/0/1] [s1-GigabitEthernet0/0/1]dis this [V200R003C00] # interface GigabitEthernet0/0/1 ip address 10.1.12.1 255.255.255.0 ospf enable 1 area 0.0.0.0 # return
如上是第四种的配法
我配置的是同一进程不同区域的情况,如果是不同进程相同区域的情况下,不同进程间不能能ping通,此时为了实现不同区域之间的通信,需要在区域边界路由器上进行配置,将不同区域的路由信息导入到对方区域内,用import-route ospf x导入即可
以太网协议
早期的以太网:以太网是建立在CSMA/CD机制上的广播型网络。冲突的产生是限制以太网性能的重要因素,早期的以太网设备如集线器HUB是物理层设备,不能隔绝冲突扩散,限制了网络性能的提高。
交换机组网:交换机做为一种能隔绝冲突的二层网络设备,极大的提高了以太网的性能,并替代HUB成为主流的以太网设备。但是交换机对网络中的广播数据流量不做任何限制,这也影响了网络的性能。
在共享网络,以太网络使用CSMA/CD技术,避免冲突问题。CSMA/CD的基本工作过程如下:终端设备不停的检测共享线路的状态。如果线路空闲则发送数据。如果线路不空闲则一直等待。CSMA/CD的工作原理可简单总结为:先听后发,边发边听,冲突停发,随机延迟后重发。
STP生成树协议
在以太网中,二层网络的环路会带来广播风暴,MAC地址表震荡,重复数据帧等问题,为解决交换网络中的环路问题,提出了STP。STP通过构造一棵树来消除交换网络中的环路。运行STP算法,判断网络中存在环路的地方并阻断冗余链路,将环路网络修剪成无环路的树型网络,从而避免了数据帧在环路网络中的增生和无穷循环。
常见环路
(一般生成树协议应用于园区网络的二层网络中,进行链路备份和消除环路。
在STP中会涉及的基本概念
桥ID(BID),由16位的桥优先级(Bridge Priority)和48位的MAC地址构成。
取值范围是0~65535,默认值为32768,可以修改但是修改值必须为4096的倍数。优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。(如上图在桥优先级相同的情况下SW3的mac地址小为BID
根桥
(对于一个STP网络,根桥在全网中只有一个,它是整个网络的逻辑中心,但不一定是物理中心。根桥会根据网络拓扑的变化而动态变化。网络收敛后,根桥会按照一定的时间间隔产生并向外发送配置BPDU,其他设备仅对该报文进行处理,传达拓扑变化记录,从而保证拓扑的稳定。)
Cost开销
(交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口在STP中的开销值。默认情况下端口的开销和端口的带宽有关,带宽越高,开销越小。华为交换机支持多种STP的路径开销计算标准,缺省情况下,华为交换机使用IEEE 802.1t标准来计算路径开销。例如如下标准的cost计算方法
根路径开销RPC
非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开销被称为RPC,并生成无环树状网络。根桥的根路径开销是0。
(从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有接收BPDU端口的端口开销总和(即BPDU的入方向端口),称为路径开销。)
Port ID
(运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。缺省情况下,端口优先级是128。端口ID可以用来确定端口角色。
BPDU
为了计算生成树,交换机之间需要交换相关的信息和参数,这些信息和参数被封装在BPDU
(配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU)
配置BPDU的报文格式
在运行STP时就会传递BPDU,如下比较原则在运行协议时,让BPDU达成一致。而后面通过如下端口角色的定义,进一步了解STP的运行。
BPDU的比较原则
STP中定义了三种端口角色:指定端口,根端口和预备端口。
a、指定端口:是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口总是指定端口。
b、根端口:是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。
c、如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞。
STP的计算过程:
交换机在刚启动时都认为自己是根桥,互相发送配置BPDU进行STP运算。
1.选举一个根桥
(根据不断交替传递的BPDU,对BID等信息进行比较,选举根桥)
注意:根桥的角色可抢占。当有更优的BID的交换机加入网络时,网络会重新进行STP计算,选出新的根桥。
2.每个非根交换机选举一个根端口
首先比较根路径开销(RPC)--->当RPC相同时,比较上行交换机的BID --->当上行交换机BID相同时,比较上行交换机的PID --->当上行交换机的PID相同时,则比较本地交换机的PID(即接口g0/0/1这种标识) 以上比较内容都是越小越优先
(为了保证从某台非根桥设备到根桥设备的工作路径是最优且唯一的,就必须从该非根桥设备的端口中确定出一个被称为“根端口”的端口,由根端口来作为该非根桥设备与根桥设备之间进行报文交互的端口)
注意:一个非根桥设备上,最多只能有一个根端口。
3.每个网段选举一个指定端口
首先比较根路径开销(RPC)--> 若RPC相等,则比较链路两端交换机的BID --> 若BID相等,则比较链路两端端口的PID. 以上内容比较也是值越小,越优先
(每个链路(Link)选举一个指定端口,用于向这个链路发送BPDU。)
4.阻塞非根、非指定端口(预备端口)
阻塞非指定端口:
STP会对这些非指定端口进行逻辑阻塞,即这些端口不能转发由终端计算机产生并发送的帧(用户数据帧)。一旦非指定端口被逻辑阻塞后,STP树(无环路工作拓扑)就生成了。
注意:非指定端口可以接收并处理BPDU,但不能转发。根端口和指定端口既可以接收和发送BPDU,也可以转发用户数据帧。
如下示例,识别根桥及接口下的不同角色
如图,首先选举根桥,四台交换机的桥优先级相同,则比较桥MAC地址,谁小谁优先,最终选举SW1为根桥;
其次选举根端口,SW2上GE0/0/1距离根桥最近,RPC最小,所以SW2的GE0/0/1为根端口,同理SW3的GE0/0/2也为根端口,SW4的两个端口RPC相同,然后比较SW4的G0/0/1对应的交换机SW2的BID与G0/0/2对应的交换机SW3的BID,谁小谁优先,最终选举出SW4的GE0/0/1端口为根端口;
然后选举指定端口,SW1为根桥,所以SW1上的GE0/0/0和GE0/0/1端口为指定端口,SW2的GE0/0/2端口接收到SW4的配置BPDU,比较BID,SW2比SW4的BID更优,所以SW2的GE0/0/2端口为指定端口,同理可得SW3的GE0/0/1端口为指定端口;
最终非根端口,非指定端口的SW4的GE0/0/2端口为预备端口。
如图,首先选举根桥,两台交换机的桥优先级相同,则比较桥MAC地址,谁小谁优先,最终选举SW1为根桥;
其次选举根端口,SW2上两个端口RPC相同,再比较两个接口对端的BID也相同,然后比较两个端口对端的PID,SW2的G0/0/1的对端PID:128.1,SW2的G0/0/2的对端PID:128.2,越小越优先,所以SW2的G0/0/1为根端口;
然后选举指定端口,SW1为根桥,所以SW1上的GE0/0/1和GE0/0/2端口为指定端口;
最终非根端口,非指定端口的SW2的GE0/0/2端口为预备端口。
在区分角色时记得一条链路上只有一个指定端口,根桥的接口都是指定端口,非根桥才有根端口,且每个非根桥都有一个根端口。
通过如上学习,我们知道STP作用下防环拓扑的形成,但是当遇到路径出现问题时,我们还要再学习生成树下不同的接口状态来思考网络拓扑后续的动态变化
STP的接口状态
虚拟局域网 (VLAN, Virtual LAN)
以太网是一种基于CSMA/CD的数据网络通信技术,其特征是共享通信介质。当主机数目较多时会导致安全隐患、广播泛滥、性能显著下降甚至造成网络不可用。
在这种情况下出现了VLAN (Virtual Local Area Network)技术解决以上问题。
VLAN标签 (VLAN Tag)识别接收到的数据帧属于哪个VLAN
IEEE 802.1Q协议规定,在以太网数据帧中加入4个字节的VLAN标签,又称VLAN Tag,简称Tag。
VLAN的划分方式(一般都是基于接口划分)
基于接口的VLAN划分
基于MAC地址的VLAN划分
以太网二层接口类型
Access接口
(access和trunk相比,就是允许通行的vlan更多,所以在接收时会出现一些不同,a不用看允许通过的有哪些,和自己的vlan不同则直接丢弃,如果是没有标签的就接收打上自己的tag,相同的标签则剥离发出)而trunk则是和自己允许通行的vlan比较,不符合直接丢弃,如果是没有标签打上自己的tag,和自己不同但允许的标签就不剥离发出,相同则剥离发出。
Trunk接口
基于接口的配置(缩写为每个词组的首字母
如上配置中
port default vlan 10在接口视图下,配置接口的缺省VLAN并同时加入这个VLAN
vlan-id:配置缺省VLAN的编号。整数形式,取值范围是1~4094
如下场景
首先要先创建vlan
配置完1.2两个接口后发现
所以可以发现在未配置的g0/0/3接口类型默认是hybrid,且默认vlan1
[SW1-GigabitEthernet0/0/3]port link-type trunk
配置结果为
同vlan可达,不同vlan无法通信。
Hybrid接口(在trunk基础上的不同为,在发送帧时多了可自行决定是否脱离标签发送)
基于接口的配置
如下场景配置
[SW3]vlan batch 10 20 1 [SW3]int g0/0/1 [SW3-GigabitEthernet0/0/1]p l h [SW3-GigabitEthernet0/0/1]p h p v 10 [SW3-GigabitEthernet0/0/1]p h u v 1 10 100 [SW3-GigabitEthernet0/0/1]dis this # interface GigabitEthernet0/0/1 port hybrid pvid vlan 10 port hybrid untagged vlan 10 100 # return [SW3-GigabitEthernet0/0/1]int g0/0/2 [SW3-GigabitEthernet0/0/2]p l h [SW3-GigabitEthernet0/0/2]p h p v 20 [SW3-GigabitEthernet0/0/2]p h u v 1 20 100 [SW3-GigabitEthernet0/0/2]dis this # interface GigabitEthernet0/0/2 port hybrid pvid vlan 20 port hybrid untagged vlan 20 100 # return [SW3-GigabitEthernet0/0/3]p l h [SW3-GigabitEthernet0/0/3]p h p v 1 [SW3-GigabitEthernet0/0/3]p h t v 10 20 100 [SW3-GigabitEthernet0/0/3]dis this # interface GigabitEthernet0/0/3 port hybrid tagged vlan 10 20 100 # return [SW3]dis port vlan active g0/0/1 T=TAG U=UNTAG ------------------------------------------------------------------------------- Port Link Type PVID VLAN List ------------------------------------------------------------------------------- GE0/0/1 hybrid 10 U: 1 10 100 [SW3]dis port vlan active g0/0/2 T=TAG U=UNTAG ------------------------------------------------------------------------------- Port Link Type PVID VLAN List ------------------------------------------------------------------------------- GE0/0/2 hybrid 20 U: 1 20 100 [SW3]dis port vlan active g0/0/3 T=TAG U=UNTAG ------------------------------------------------------------------------------- Port Link Type PVID VLAN List ------------------------------------------------------------------------------- GE0/0/3 hybrid 1 U: 1 T: 10 20 100
[SW4]vlan batch 10 20 100 [SW4]int g0/0/1 [SW4-GigabitEthernet0/0/1]p l h [SW4-GigabitEthernet0/0/1]p h p v 1 [SW4-GigabitEthernet0/0/1]p h t v 10 20 100 [SW4-GigabitEthernet0/0/1]dis this # interface GigabitEthernet0/0/1 port hybrid tagged vlan 10 20 100 # return [SW4-GigabitEthernet0/0/1]int g0/0/2 [SW4-GigabitEthernet0/0/2]p l h [SW4-GigabitEthernet0/0/2]p h p v 100 [SW4-GigabitEthernet0/0/2]p h u v 1 10 20 100 [SW4-GigabitEthernet0/0/2]dis this # interface GigabitEthernet0/0/2 port hybrid pvid vlan 100 port hybrid untagged vlan 1 10 20 100 # return [SW4]dis port vlan active g0/0/1 T=TAG U=UNTAG ------------------------------------------------------------------------------- Port Link Type PVID VLAN List ------------------------------------------------------------------------------- GE0/0/1 hybrid 1 T: 10 20 100 [SW4]dis port vlan active g0/0/2 T=TAG U=UNTAG ------------------------------------------------------------------------------- Port Link Type PVID VLAN List ------------------------------------------------------------------------------- GE0/0/2 hybrid 100 U: 1 10 20 100
如上配置采用缩写形式,验证可用dis vlan命令查看vlan配置情况
基于MAC的VLAN划分
创建vlan: [SW]vlan 10 [SW-vlan10]q 加入VLAN: [SW]int g0/0/1 [SW-GigabitEthernet0/0/1]port link-type hybrid [SW-GigabitEthernet0/0/1]port hybrid tagged vlan 10 [SW-GigabitEthernet0/0/1]int g0/0/2 [SW-GigabitEthernet0/0/2]p l h [SW-GigabitEthernet0/0/2]p h u v 10 [SW-GigabitEthernet0/0/2]int g0/0/3 [SW-GigabitEthernet0/0/3]p l h [SW-GigabitEthernet0/0/3]p h u v 10 [SW-GigabitEthernet0/0/3]q 关联MAC地址和VLAN: [SW]vlan 10 [SW-vlan10]mac-vlan mac-address 54-89-98-D3-26-38 ^ Error: Wrong parameter found at '^' position. 可以知道mac地址要如下表示来进行配置 [SW-vlan10]mac-vlan mac-address 5489-98D3-2638 [SW-vlan10]mac-vlan mac-address 5489-98E6-777D [SW-vlan10]mac-vlan mac-address 5489-98A8-2E6B 使能接口的基于MAC地址划分VLAN功能: [SW-GigabitEthernet0/0/1]mac-vlan enable [SW-GigabitEthernet0/0/2]mac-vlan enable [SW-GigabitEthernet0/0/3]mac-vlan enable 验证配置: [SW-vlan10]dis this # vlan 10 mac-vlan mac-address 5489-98d3-2638 priority 0 mac-vlan mac-address 5489-98e6-777d priority 0 mac-vlan mac-address 5489-98a8-2e6b priority 0 # return [SW-vlan10]q [SW]dis vlan The total number of vlans is : 2 -------------------------------------------------------------------------------- U: Up; D: Down; TG: Tagged; UT: Untagged; MP: Vlan-mapping; ST: Vlan-stacking; #: ProtocolTransparent-vlan; *: Management-vlan; -------------------------------------------------------------------------------- VID Type Ports -------------------------------------------------------------------------------- 1 common UT:GE0/0/1(U) GE0/0/2(U) GE0/0/3(U) GE0/0/4(D) GE0/0/5(D) GE0/0/6(D) GE0/0/7(D) GE0/0/8(D) GE0/0/9(D) GE0/0/10(D) GE0/0/11(D) GE0/0/12(D) GE0/0/13(D) GE0/0/14(D) GE0/0/15(D) GE0/0/16(D) GE0/0/17(D) GE0/0/18(D) GE0/0/19(D) GE0/0/20(D) GE0/0/21(D) GE0/0/22(D) GE0/0/23(D) GE0/0/24(D) 10 common UT:GE0/0/2(U) GE0/0/3(U) TG:GE0/0/1(U) VID Status Property MAC-LRN Statistics Description -------------------------------------------------------------------------------- 1 enable default enable disable VLAN 0001 10 enable default enable disable VLAN 0010
也可以先关联mac地址再加入vlan,如果想要撤销类型设置,在接口视图下执行undo port link-type即可。
vlan间的通信
使用路由器(物理接口、子接口)实现VLAN间通信
物理接口实现
如下图,vlan间通信为例
(下面是AR1的配置)
interface GigabitEthernet0/0/0 ip address 10.1.1.254 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 10.1.2.254 255.255.255.0
下面则是对应图中报文转发的大概过程(10.1.1.1 PC7pingPC8 10.1.2.1)
首先PC7(ip为10.1.1.1)拿PC8(10.1.2.1)和自己的子网掩码255.255.255.0做与运算得到10.1.2.0网络号,发现和自己不在同一个网段(自己是10.1.1.0/24),是属于不同的子网,此时PC7(10.1.1.1)会检查是否配有默认网关地址,因为我们配置了网关为10.1.1.254
所以PC7会以广播形式发送ARP请求报文,寻找网关的mac,当交换机收到收到ARP请求报文时,首先会检查FCS,判断是否是一个完整的数据帧,接着会抓取数据帧中的目的MAC与CAM(MAC地址表)中的条目信息进行匹配,发现没有相应MAC则会采取泛洪操作,交换机往除接收接口以外的所有接口发送ARP请求报文,但是因为我们配置了vlan,有些接口不能接收(即上上图的1、5接口可以接收vlan10标签的报文),该ARP请求报文的目的MAC为广播地址,源MAC是PC7的MAC地址,源ip为PC7ip(10.1.1.1),目的ip为网关ip(10.1.1.254)
路由器接收到ARP请求,发现目的地址是自己,则路由器接收接口会以单播形式给PC7回送一个ARP响应报文(报文信息包含路由器接口的MAC地址,请求路由器所在接口的MAC地址(00e0-fc52-141a)
(上图一开始没有匹配的mac地址,后来经过泛洪学习到相关地址)
PC7收到ARP响应报文,获得路由器接口的MAC地址后,就可以正常封装数据帧(即目的MAC为路由器接口的MAC地址(上上上图的gw1即路由器响应ARP的接口),而不是广播地址),PC7pingPC8时发送数据帧到路由器,收到后先校验FCS,查看目的MAC是发给自己的,则路由器继续拆三层的包头信息,发现目的ip是10.1.2.1,不是自己的ip,则路由器会查找路由表,
(上图一开始查不到10.1.2.1的相关信息,如下经过ARP请求,后收到PC8的单播应答,得到PC8的mac地址与对应的发送接口)
如果存在,则根据相应表项往相应的接口进行转发,如下查到10.1.2.1对应接口是g0/0/1,在转发前对数据进行封装,三层的sip,dip不变,二层的帧头中的dmac(目的MAC地址)为PC8的mac地址,smac则是路由器连接PC8接口的mac地址(即00e0-fc52-141b)
完成数据帧的封装后,将数据发送给PC8。(ping是一个双向的过程,所以后面PC8给PC7回应也是和PC7给PC8发送数据是类似的过程)
子接口实现vlan间通信
R1使用一个物理接口(GE0/0/1)与交换机SW1对接,并基于该物理接口创建两个子接口:GE0/0/1.10及GE0/0/1.20,分别使用这两个子接口作为VLAN 10及VLAN 20的默认网关。(一般情况下,为了方便记忆,子接口ID与所要终结的VLAN ID相同。)
由于三层子接口不支持VLAN报文,当它收到VLAN报文时,会将VLAN报文当成是非法报文而丢弃。因此,需要在子接口上将VLAN Tag剥掉,也就是需要VLAN终结(VLAN Termination)。(子接口发送报文时携带配置的termination vid )
上图我们可以发现子接口的取值(1-4096)和vlan数量的取值(1-4094)
子接口终结VLAN的实质包含两个方面:对接口接收到报文,剥除VLAN标签后进行三层转发或其他处理。对接口发出的报文,又将相应的VLAN标签添加到报文中后再发送。
子接口配置
AR3的配置如下
[AR3]vlan batch 10 20 [AR3]int g0/0/0.1 [AR3-GigabitEthernet0/0/0.1]dot1q termination vid 10 将vlan 10和接口0.1相关联,说明接口0.1是vlan 10的终结路由器。即作为vlan 10的网关,处理对应vlan 10的数据帧 [AR3-GigabitEthernet0/0/0.1]ip address 10.1.1.254 24 [AR3-GigabitEthernet0/0/0.1]arp broadcast enable 默认是关闭的,所以要打开(在真机中式开启的) [AR3-GigabitEthernet0/0/0.1]int g0/0/0.2 [AR3-GigabitEthernet0/0/0.2]dot1q termination vid 20 [AR3-GigabitEthernet0/0/0.2]ip address 10.1.2.254 24 [AR3-GigabitEthernet0/0/0.2]arp broadcast enable [AR3-GigabitEthernet0/0/0]int g0/0/0.1 [AR3-GigabitEthernet0/0/0.1]dis this [V200R003C00] # interface GigabitEthernet0/0/0.1 dot1q termination vid 10 ip address 10.1.1.254 255.255.255.0 arp broadcast enable # return [AR3-GigabitEthernet0/0/0.1]int g0/0/0.2 [AR3-GigabitEthernet0/0/0.2]dis this [V200R003C00] # interface GigabitEthernet0/0/0.2 dot1q termination vid 20 ip address 10.1.2.254 255.255.255.0 arp broadcast enable # return
dot1q termination vid命令用来配置子接口Dot1q终结的单层VLAN ID。缺省情况,子接口没有配置dot1q终结的单层VLAN ID。arp broadcast enable命令用来使能终结子接口的ARP广播功能。缺省情况下,终结子接口没有使能ARP广播功能。终结子接口不能转发广播报文,在收到广播报文后它们直接把该报文丢弃。为了允许终结子接口能转发广播报文,可以通过在子接口上执行此命令。
可以发现子接口的mac地址和物理接口是一致的
(如上子接口是基于二层交换机的vlan之间通信-(单臂路由)
使用VLANIF技术实现VLAN间通信
interface vlanif vlan-id命令用来创建VLANIF接口并进入到VLANIF接口视图。vlan-id表示与VLANIF接口相关联的VLAN编号。VLANIF接口的IP地址作为主机的网关IP地址,和主机的IP地址必须位于同一网段。
配置
当PC20pingPC22时,在存在arp或时mac表项的情况下,PC20通过本地ip,掩码对PC22地址进行与运算,发现处于不同网段,则判断该通信为三层通信,将去往PC22的流量发给网关,即我们配置的vlanif 10,交换机收到后解封装,发现目的ip不是本地vlanif 10配置的ip,需要对该报文进行三层转发,查找路由表后匹配vlanif 20产生的直连路由(如果没有匹配的,则会发送ARP请求去寻找),查找mac地址找到出接口,并携带vlan 20的标签,在发送前将数据封装(三层的sip、dip不变,二层数据帧中的smac为vlanif 20的mac地址,目的mac则是PC22的mac)
如下是上图交换机的配置
[SW13]vlan batch 10 20 [SW13]int g0/0/1 [SW13-GigabitEthernet0/0/1]p l a [SW13-GigabitEthernet0/0/1]p d v 10 [SW13-GigabitEthernet0/0/1]int g0/0/2 [SW13-GigabitEthernet0/0/2]p l a [SW13-GigabitEthernet0/0/2]p d v 10 [SW13-GigabitEthernet0/0/2]int g0/0/3 [SW13-GigabitEthernet0/0/3]p l a [SW13-GigabitEthernet0/0/3]p d v 20 [SW13]dis port vlan active g0/0/1 T=TAG U=UNTAG ------------------------------------------------------------------------------- Port Link Type PVID VLAN List ------------------------------------------------------------------------------- GE0/0/1 access 10 U: 10 [SW13]dis port vlan active g0/0/2 T=TAG U=UNTAG ------------------------------------------------------------------------------- Port Link Type PVID VLAN List ------------------------------------------------------------------------------- GE0/0/2 access 10 U: 10 [SW13]dis port vlan active g0/0/3 T=TAG U=UNTAG ------------------------------------------------------------------------------- Port Link Type PVID VLAN List ------------------------------------------------------------------------------- GE0/0/3 access 20 U: 20 配置vlanif [SW13]int vlanif 10 与vlan 10同名 [SW13-Vlanif10]ip address 10.1.210.254 24 [SW13-Vlanif10]int vlanif 20 [SW13-Vlanif20]ip address 10.1.220.1 24
由下图可以发现配置vlanif的mac地址相同
(如上vlanif是基于三层交换机的vlan之间通信 链路聚合技术原理和配置
链路聚合
基本原理
以太网链路聚合Eth-Trunk(一般以2的幂次方个接口聚合)
链路聚合基本术语
实现链路聚合的两种方式手工模式和ACP模式
手工模式
手工模式的缺陷
且手工模式下,设备只能通过物理层状态判断对端接口是否正常工作
默认的模式就是就是手动的负载分担,且要满足两端都是相同的使用手工负载分担模式。
LACP模式
LACP模式:采用LACP协议的一种链路聚合模式。设备间通过链路聚合控制协议数据单元(Link Aggregation Control Protocol Data Unit,LACPDU)进行交互,通过协议协商确保对端是同一台设备、同一个聚合接口的成员接口。
LACPDU报文中包含设备优先级、MAC地址、接口优先级、接口号等。
LACP模式下,两端设备所选择的活动接口数目必须保持一致,否则链路聚合组就无法建立。此时可以使其中一端成为主动端,另一端(被动端)根据主动端选择活动接口。
1、通过系统LACP优先级确定主动端,值越小优先级越高。
(系统LACP优先级(即设备优先级)默认32768,越小越优,通常保持默认。当优先级一致时LACP会通过比较MAC地址选择主动端,MAC地址越小越优。)
(如上图,根据系统默认优先级为32768,相同则比较MAC地址,越小优先级越高)
2、选出主动端后,两端都会以主动端的接口优先级来选择活动接口,优先级高的接口将优先被选为活动接口。接口LACP优先级值越小,优先级越高。
(接口LACP优先级默认为32768,越小越优,通常保持默认,当优先级一致时LACP会通过接口编号选择活动接口,越小越优。)
(后来,
SW1通过LACPDU将本端活动端口选举结果告知对端。
SW2 依据 SW1 的选举结果,明确本端的活动接口,同时对应的链路成为活动链路。至此, Eth-Trunk 的活动链路选举过程完成。)最大活动接口数
当活动链路中出现链路故障时,可以从非活动链路中找出一条优先级最高(接口优先级、接口编号比较)的链路替换故障链路,实现总体带宽不发生变化、业务的不间断转发。
负载分担(防止单一链路带宽瓶颈,充分利用带宽资源;冗余功能,防止单点故障。)
(基于包的负载分担已经很少使用,默认主流的是基于流的负载分担方式,根据报文的5元组来判断是否在同一个流(sip+dip+sport+dport+tcp/udp),这五个时一样时,则认为是相同的流走相同的链路,同一个流往往代表同一种应用,在确定的路径上转发,网络质量相对比较稳定)
负载分担模式
如果报文的IP地址变化较频繁,那么选择基于源IP、目的IP或者源目IP的负载分担模式更有利于流量在各物理链路间合理的负载分担;如果报文的MAC地址变化较频繁,IP地址比较固定,那么选择基于源MAC、目的MAC或源目MAC的负载分担模式更有利于流量在各物理链路间合理的负载分担。
(一般是基于源ip+目的ip的算法,下图是判断流量由哪个口发出的方式
(在交换机中将日志功能关掉则不会过一会出弹出信息,打断命令输入
操作为在系统视图下执行 undo info-center enable关闭日志功能
下图表示支持64个聚合组(即支持64个Eth-trunk接口,编号(trunk-id)为0-64)
配置下图,实现全网互通,(下面先给出链路聚合配置,然年在给vlan等其它配置代码,
对交换机3的链路聚合配置
[sw3]int Eth-Trunk 1 [sw3-Eth-Trunk1]mode manual load-balance 配置链路聚合为手工模式(manual mode)且启用负载均衡(load-balanced) [sw3-Eth-Trunk1]trunkport g 0/0/1 0/0/2 0/0/3 (发现trunk g 0/0/1 0/0/2 0/0/3 也可) Info: This operation may take a few seconds. Please wait for a moment...done. [sw3-Eth-Trunk1]dis eth-trunk 1 Eth-Trunk1's state information is: WorkingMode: NORMAL Hash arithmetic: According to SIP-XOR-DIP Least Active-linknumber: 1 Max Bandwidth-affected-linknumber: 8 Operate status: up Number Of Up Port In Trunk: 3 -------------------------------------------------------------------------------- PortName Status Weight GigabitEthernet0/0/1 Up 1 GigabitEthernet0/0/2 Up 1 GigabitEthernet0/0/3 Up 1
注意:两端需要设置同种模式,不能一端是手工,对端是lacp模式
将接口加入链路聚合组中有两种写法,
一种是Eth-Trunk视图下操作,即上面代码所使用的
[sw3-Eth-Trunk1]trunkport g 0/0/1 0/0/2 0/0/3
第二种在以太网接口视图下:
[sw4]int g0/0/1
[sw4-GigabitEthernet0/0/1]eth-trunk 2 进入具体物理接口执行,表示加入该聚合组补充:
工作模式WorkingMode 显示的是NORMAL,表示用的是手工模式,是STATIC则为lacp模式
(其实如果不设置则默认就是手工模式,不需要mode manual load-balance再去配置,还有就是如果所有接口都去使用,则没有必要去配置接口优先级和最大活动链路数量)
对交换机4的链路聚合配置
交换机4左边配置手工模式: [sw4]int Eth-Trunk 2 创建链路聚合组,trunk-id为2,即创建聚合组eth-trunk2 [sw4-Eth-Trunk2]mode manual load-balance 配置链路聚合为手工模式(manual mode)且启用负载均衡(load-balanced) [sw4-Eth-Trunk2]trunkport g 0/0/1 0/0/2 0/0/3 将接口加入链路聚合组中 Info: This operation may take a few seconds. Please wait for a moment...done. 交换机4右边边配置lacp模式 [sw4]lacp priority 0 配置系统LACP优先级为0,让其成为主动端 [sw4]int Eth-Trunk 1 设置编号,因为上面设置了1,本地有效的原则不能冲突,不能再设置为1 [sw4-Eth-Trunk1]mode lacp-static 配置lacp模式 [sw4-Eth-Trunk1]trunkport g 0/0/4 to 0/0/6 将g0/0/4、g0/0/5、g0/0/6加入聚合组 [sw4]int g0/0/5 进入具体的物理口设置接口优先级 [sw4-GigabitEthernet0/0/5]lacp priority 10 配置接口LACP优先级,不设置则默认为32768 [sw4-GigabitEthernet0/0/5]int g0/0/6 [sw4-GigabitEthernet0/0/6]lacp priority 20 [sw4-GigabitEthernet0/0/6]q [sw4]int Eth-Trunk 1 [sw4-Eth-Trunk1]max active-linknumber 2 配置最大活动链路数量 [sw4-Eth-Trunk1]load-balance ? 如下有6中负载分担策略可以选择 dst-ip According to destination IP hash arithmetic dst-mac According to destination MAC hash arithmetic src-dst-ip According to source/destination IP hash arithmetic src-dst-mac According to source/destination MAC hash arithmetic src-ip According to source IP hash arithmetic src-mac According to source MAC hash arithmetic [sw4-Eth-Trunk1]load-balance src-dst-mac 配置其中之一的策略 [sw4-Eth-Trunk1]dis eth-trunk 1 Eth-Trunk1's state information is: Local: LAG ID: 1 WorkingMode: STATIC Preempt Delay: Disabled Hash arithmetic: According to SA-XOR-DA System Priority: 0 System ID: 4c1f-cca0-2530 Least Active-linknumber: 1 Max Active-linknumber: 2 Operate status: down Number Of Up Port In Trunk: 0 -------------------------------------------------------------------------------- ActorPortName Status PortType PortPri PortNo PortKey PortState Weight GigabitEthernet0/0/4 Unselect 1GE 32768 5 305 10100010 1 GigabitEthernet0/0/5 Unselect 1GE 10 6 305 10100010 1 GigabitEthernet0/0/6 Unselect 1GE 20 7 305 10100010 1 Partner: -------------------------------------------------------------------------------- ActorPortName SysPri SystemID PortPri PortNo PortKey PortState GigabitEthernet0/0/4 0 0000-0000-0000 0 0 0 10100011 GigabitEthernet0/0/5 0 0000-0000-0000 0 0 0 10100011 GigabitEthernet0/0/6 0 0000-0000-0000 0 0 0 10100011
注意:mode manual load-balanced 配置手工模式的链路聚合,并且启用了负载均衡。但这个命令本身并不直接指定具体的负载分担策略。它只是启用了负载均衡功能,具体的负载分担策略需要另外配置。在手工模式下,链路聚合的建立和成员接口的加入完全由管理员手动配置。由于没有协议(如LACP)参与,两端设备必须显式地配置相同的负载分担策略,以确保数据包在跨越聚合链路时能够按照预期的方式被转发。
在被动端只要把成员口配好就可以了不用设置最大活动数量这些,如下和如上对比主动端的接口状态,当被动端的成员口配好后状态就变成了Selected
对交换机5的链路聚合配置
[sw5]int Eth-Trunk 1 创建链路聚合组 [sw5-Eth-Trunk1]mode lacp-static 配置lacp模式 [sw5-Eth-Trunk1]trunkport g 0/0/1 0/0/2 0/0/3 将接口加入链路聚合组中 Info: This operation may take a few seconds. Please wait for a moment...done. [sw5-Eth-Trunk1]dis eth-trunk 1 Eth-Trunk1's state information is: Local: LAG ID: 1 WorkingMode: STATIC Preempt Delay: Disabled Hash arithmetic: According to SIP-XOR-DIP System Priority: 32768 System ID: 4c1f-cc91-67d3 Least Active-linknumber: 1 Max Active-linknumber: 8 Operate status: up Number Of Up Port In Trunk: 2 -------------------------------------------------------------------------------- ActorPortName Status PortType PortPri PortNo PortKey PortState Weight GigabitEthernet0/0/1 Unselect 1GE 32768 2 305 10110000 1 GigabitEthernet0/0/2 Selected 1GE 32768 3 305 10111100 1 GigabitEthernet0/0/3 Selected 1GE 32768 4 305 10111100 1 Partner: -------------------------------------------------------------------------------- ActorPortName SysPri SystemID PortPri PortNo PortKey PortState GigabitEthernet0/0/1 0 4c1f-cca0-2530 32768 5 305 10100000 GigabitEthernet0/0/2 0 4c1f-cca0-2530 10 6 305 10111100 GigabitEthernet0/0/3 0 4c1f-cca0-2530 20 7 305 10111100
如上可以发现,在有3条链路但最大活动链路数量为2(即小于链路总数)的情况下,比较接口的lacp优先级发现交换机4即主动端的接口5.6的优先级更小更优先,所以这两个端口对应的链路被选中,而对应被动端的接口2,3被选中,而当我们关闭接口5后,lacp模式会自动切换另一条可用的链路,而当我们恢复链路后,可以发现不会回切(即不具抢夺性),但是也可以设置在故障恢复后之前的链路。我们通过命令(dis eth-trunk )可以查看到聚合组的详细信息,其中可以发现 Preempt Delay(抢占延迟): Disabled,当 Preempt Delay设置为Disabled时,意味着一旦检测到当前活动接口出现故障,备用接口会立即成为活动接口,没有延迟。这可以更快地恢复网络服务,但也可能导致网络短暂的不稳定,因为流量会突然切换到新的活动接口。
Preempt Delay用于控制活动接口和非活动接口之间的切换行为。当链路聚合组中的某个接口出现故障时,其他备用接口可能需要一些时间来成为活动接口,以确保网络的稳定性。Preempt Delay就是用来设置这个等待时间的。
如果启用了Preempt Delay并设置了特定的延迟时间(例如,几百毫秒到几秒),那么在检测到故障后,备用接口会在等待指定的延迟时间后才成为活动接口。这给了网络一些时间来适应变化,并可能减少由于接口切换引起的网络抖动。
如果希望尽快恢复服务则会禁用Preempt Delay。而在其他情况下,为了网络的稳定性,可能会选择启用它并设置一个适当的延迟时间。如下设置操作
[sw4-Eth-Trunk1]lacp preempt enable 开启preempt delay功能 [sw4-Eth-Trunk1]lacp preempt delay ? 如下提示知道不指定时间则默认时30秒,取值范围是10-180 INTEGER<10-180> Value of preemption delay time, the default value is 30 (in second) [sw4-Eth-Trunk1]lacp preempt delay 10 设置抢夺延迟时间为10秒,也可以不指定时间
注意:在主动端配置时间就好了
接下来配置vlan部分。
当我们把物理接口加入加入聚合组时,就失去了配置的独立性,所以要配置trunk接口类型时,是对eth-trunk进行配置
对交换机3的其它配置
[sw3-Eth-Trunk1]vlan batch 10 20 30 100 Info: This operation may take a few seconds. Please wait for a moment...done. [sw3]int g0/0/4 [sw3-GigabitEthernet0/0/4]port link-type access [sw3-GigabitEthernet0/0/4]port default vlan 10 [sw3-GigabitEthernet0/0/4]int g0/0/5 [sw3-GigabitEthernet0/0/5]p l a [sw3-GigabitEthernet0/0/5]p d v 20 [sw3-GigabitEthernet0/0/5]int eth-trunk 1 [sw3-Eth-Trunk1]p l t [sw3-Eth-Trunk1]p t a v 10 20 30 100 [sw3-Eth-Trunk1]q [sw3]int vlanif 10 [sw3-Vlanif10]ip address 10.1.1.254 24 [sw3-Vlanif10]int vlanif 20 [sw3-Vlanif20]ip add 20.1.1.254 24 [sw3-Vlanif20]int vlanif 100 [sw3-Vlanif100]ip add 100.1.1.1 24 [sw3-Vlanif100]q [sw3]ip route-static 30.1.1.0 255.255.255.0 100.1.1.2 [sw3]dis ip routing-table Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Routing Tables: Public Destinations : 9 Routes : 9 Destination/Mask Proto Pre Cost Flags NextHop Interface 10.1.1.0/24 Direct 0 0 D 10.1.1.254 Vlanif10 10.1.1.254/32 Direct 0 0 D 127.0.0.1 Vlanif10 20.1.1.0/24 Direct 0 0 D 20.1.1.254 Vlanif20 20.1.1.254/32 Direct 0 0 D 127.0.0.1 Vlanif20 30.1.1.0/24 Static 60 0 RD 100.1.1.2 Vlanif100 100.1.1.0/24 Direct 0 0 D 100.1.1.1 Vlanif100 100.1.1.1/32 Direct 0 0 D 127.0.0.1 Vlanif100 127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0 127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
注意:当数据包到达一个交换机时,交换机会根据数据包中的目标IP地址进行转发决策,而不是仅仅根据VLAN标签。因此,即使数据包带有某个VLAN的标签,它仍然可以被转发到与该标签不同的VLAN接口上,只要目标IP地址与该接口的IP地址在同一网段内。所以为了实现交换机3和交换机5的互通我们需要做两个操作,在交换机3和交换机接口都配置了一个VLANIF接口(这里我配置的是VLANIF100),并为这个接口分配了IP地址,那么二者之间就可以通过这个VLANIF接口进行通信。这是因为VLANIF接口充当了不同VLAN之间通信的桥梁。
具体来说,在交换机上配置VLANIF100并分配IP地址后,实际上是在VLAN 100上创建了一个逻辑子网。3和5交换机上的VLANIF100接口将作为这个逻辑子网的网关,它们会互相学习对方的MAC地址和IP地址信息。
当PC5尝试ping PC7时,它会发送一个带有VLAN 20标签的ARP请求。这个请求会通过Trunk链路到达5交换机。由于5交换机上也配置了VLANIF100接口,它会检查这个ARP请求,并发现目标IP地址位于VLAN 100的逻辑子网内。于是,5交换机会通过VLANIF100接口转发这个ARP请求。
同样地,当5回应ARP请求或发送ICMP echo响应时,它也会使用VLANIF100接口来发送带有VLAN 100标签的数据包。这些数据包会通过Trunk链路返回到3交换机,并由3交换机的VLANIF100接口接收。
因此,通过在3和5交换机上配置VLANIF100接口并分配IP地址,创建了一个逻辑子网,使得3和5交换机可以通过这个子网进行通信。这样,即使PC5和PC7属于不同的VLAN(VLAN 20和VLAN 30),它们也能够通过网关交换机上的VLANIF100接口进行跨VLAN通信。
需要注意的是,这种通信方式要求A和B交换机之间的Trunk链路必须允许VLAN 100的流量通过。此外,还需要确保VLANIF100接口的IP地址配置正确,以便A和B交换机能够正确地相互识别和通信。
对交换机4的其它配置
[sw4]vlan batch 10 20 30 100 Info: This operation may take a few seconds. Please wait for a moment...done. [sw4]int Eth-Trunk 1 [sw4-Eth-Trunk1]port link-type trunk [sw4-Eth-Trunk1]port trunk allow-pass vlan 10 20 30 100
对交换机5的其它配置
[sw5]vlan batch 10 20 30 100 Info: This operation may take a few seconds. Please wait for a moment...done. [sw5]int Eth-Trunk 1 [sw5-Eth-Trunk1]p l t [sw5-Eth-Trunk1]p t a v 10 20 30 100 [sw5-Eth-Trunk1]int g0/0/4 [sw5-GigabitEthernet0/0/4]p l a [sw5-GigabitEthernet0/0/4]p d v 10 [sw5-GigabitEthernet0/0/4]int g0/0/5 [sw5-GigabitEthernet0/0/5]p l a [sw5-GigabitEthernet0/0/5]p d v 30 [sw5-GigabitEthernet0/0/5]q [sw5]int vlanif 30 [sw5-Vlanif30]ip add 30.1.1.254 24 [sw5-Vlanif30]int vlanif 100 [sw5-Vlanif100]ip add 100.1.1.2 24 [sw5-Vlanif100]q [sw5]ip route-static 10.1.1.0 255.255.255.0 100.1.1.1 [sw5]ip route-static 20.1.1.0 255.255.255.0 100.1.1.1 [sw5]dis ip routing-table Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Routing Tables: Public Destinations : 8 Routes : 8 Destination/Mask Proto Pre Cost Flags NextHop Interface 10.1.1.0/24 Static 60 0 RD 100.1.1.1 Vlanif100 20.1.1.0/24 Static 60 0 RD 100.1.1.1 Vlanif100 30.1.1.0/24 Direct 0 0 D 30.1.1.254 Vlanif30 30.1.1.254/32 Direct 0 0 D 127.0.0.1 Vlanif30 100.1.1.0/24 Direct 0 0 D 100.1.1.2 Vlanif100 100.1.1.2/32 Direct 0 0 D 127.0.0.1 Vlanif100 127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0 127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
如下主机各自都可以ping通,配置完成后实现全网互通
注意:这里为实现交换机3和交换机5实现互通,用静态路由实现,实际也可以使用ospf等动态路由实现。如下配置
在交换机3中配置ospf
[sw3]ospf 1 router-id 1.1.1.1 [sw3-ospf-1]area 0 [sw3-ospf-1-area-0.0.0.0]network 10.1.1.254 0.0.0.0 [sw3-ospf-1-area-0.0.0.0]network 20.1.1.254 0.0.0.0 [sw3-ospf-1-area-0.0.0.0]network 100.1.1.1 0.0.0.0 [sw3-ospf-1-area-0.0.0.0]dis ip routing-table Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Routing Tables: Public Destinations : 9 Routes : 9 Destination/Mask Proto Pre Cost Flags NextHop Interface 10.1.1.0/24 Direct 0 0 D 10.1.1.254 Vlanif10 10.1.1.254/32 Direct 0 0 D 127.0.0.1 Vlanif10 20.1.1.0/24 Direct 0 0 D 20.1.1.254 Vlanif20 20.1.1.254/32 Direct 0 0 D 127.0.0.1 Vlanif20 30.1.1.0/24 OSPF 10 2 D 100.1.1.2 Vlanif100 100.1.1.0/24 Direct 0 0 D 100.1.1.1 Vlanif100 100.1.1.1/32 Direct 0 0 D 127.0.0.1 Vlanif100 127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0 127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
在交换机5中配置ospf
[sw5]ospf 1 router-id 2.2.2.2 [sw5-ospf-1-area-0.0.0.0]network 30.1.1.254 0.0.0.0 [sw5-ospf-1-area-0.0.0.0]network 100.1.1.2 0.0.0.0 [sw5-ospf-1-area-0.0.0.0]dis ip routing-table Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Routing Tables: Public Destinations : 8 Routes : 8 Destination/Mask Proto Pre Cost Flags NextHop Interface 10.1.1.0/24 OSPF 10 2 D 100.1.1.1 Vlanif100 20.1.1.0/24 OSPF 10 2 D 100.1.1.1 Vlanif100 30.1.1.0/24 Direct 0 0 D 30.1.1.254 Vlanif30 30.1.1.254/32 Direct 0 0 D 127.0.0.1 Vlanif30 100.1.1.0/24 Direct 0 0 D 100.1.1.2 Vlanif100 100.1.1.2/32 Direct 0 0 D 127.0.0.1 Vlanif100 127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0 127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
补充:在路由器之间(三层口)作链路聚合
可以发现当我们配置lacp模式后,接下来将接口加入聚合组时出现报错,三层接口不能加入二层的链路聚合中(因为在LACP或任何类型的链路聚合中,参与聚合的接口必须是物理接口或二层接口)。可以使用
undo portswitch
命令将接口从三层模式切换回二层模式。如下配置即可
实际我们配时,只要如下操作即可 [r1]int Eth-Trunk 1 创建聚合组 [r1-Eth-Trunk1]undo portswitch 切换二层接口 [r1-Eth-Trunk1]mode lacp-static 设置lacp模式 [r1-Eth-Trunk1]trunkport g 0/0/0 0/0/1 将接口加入聚合组
如果使用undo portswitch出现报错Error: Please delete the existing non-default configurations on the interface first.记得要先撤销之前设置的lacp模式,再使用undo portswitch切换称二层接口,即再eth-trunk视图下,先执行undo mode,将之前设置的lacp模式撤销。
(实现路由器之间通信时,按照上面操作做好链路聚合之后,在eth-trunk视图下配置ip地址即可,然后二者就可以通信啦)使用单臂路由实现链路聚合(即在eth-trunk上做子接口),实现不同VLAN之间的互联互通。
如下为配置
[r3]vlan batch 10 20 创建vlan 10 20 [r3]int Eth-Trunk 2 创建聚合组 [r3-Eth-Trunk2]undo portswitch 将三层接口转换成二层接口使用 [r3-Eth-Trunk2]mode lacp-static 配置lacp的链路聚合模式 [r3-Eth-Trunk2]trunkport g 0/0/0 0/0/1 将这两个接口加入聚合组 Info: This operation may take a few seconds. Please wait for a moment...done. [r3-Eth-Trunk2]int eth-trunk 2.1 创建子接口,为什么是2.1以2开始的呢?因为我们创建的聚合组的编号是2,如果是创建的聚合组为eth-trunk 3,则创建的子接口为3开始,即3.1,3.2...... [r3-Eth-Trunk2.1]dot1q termination vid 10 将子接口和vlan 10关联,即作为vlan 10的网关 [r3-Eth-Trunk2.1]ip address 10.1.1.254 24 配置vlan 10的网关ip [r3-Eth-Trunk2.1]arp broadcast enable 开启子接口ARP广播功能,默认是关闭的 [r3-Eth-Trunk2.1]int eth-trunk 2.2 [r3-Eth-Trunk2.2]dot1q termination vid 20 [r3-Eth-Trunk2.2]ip address 20.1.1.254 24 [r3-Eth-Trunk2.2]arp broadcast enable
[sw5]vlan batch 10 20 Info: This operation may take a few seconds. Please wait for a moment...done. [sw5]int Eth-Trunk 1 [sw5-Eth-Trunk1]mode lacp-static [sw5-Eth-Trunk1]trunkport g 0/0/1 0/0/2 Info: This operation may take a few seconds. Please wait for a moment...done. [sw5-Eth-Trunk1]p l t [sw5-Eth-Trunk1]p t a v 10 20 [sw5-Eth-Trunk1]q [sw5]int g0/0/3 [sw5-GigabitEthernet0/0/3]port link-type access [sw5-GigabitEthernet0/0/3]port default vlan 10 [sw5-GigabitEthernet0/0/3]int g0/0/4 [sw5-GigabitEthernet0/0/4]p l a [sw5-GigabitEthernet0/0/4]p d v 20
然后配置两台主机PC6和PC8
如下图发现可以ping通
ACL(Access Control List)访问控制列表
ACL是能够匹配一个IP数据包中的源IP地址、目的IP地址、协议类型、源目的端口等元素的基础性工具;ACL还能够用于匹配路由条目。
ACL的组成
ACL编号----规则编号------动作-----匹配项
ACL编号:不同分类的ACL编号范围不同
命名型acl,在创建时就可以命名
规则编号:每条规则都有一个相应的编号。用来标识ACL规则。可以自定义,也可以系统自动分配。ACL规则的编号范围是0~4294967294,所有规则均按照规则编号从小到大进行排序。
华为设备支持两种匹配顺序:自动排序(auto模式)和配置顺序(config模式)。缺省的ACL匹配顺序是config模式
如下命令可以修改规则,下面提供了可修改的排序模式
且ACL的匹配机制如下,所以要把重要的匹配规则设置较小的编号,才会实现想要的过滤效果
规则编号涉及步长的概念,如下可以看出默认步长为5,即当我们不自定义编号且没有指定步长时,我们设置的规规则会从5开始并以5的倍数递增排序,即5,10,15……
但是如上我在新增规则时指定规则编号为1,所以显示编号为1,如下当我们没有指定时,依旧会以步长为参考
当然步长也可以修改
如果是在已有连续编号的rule的情况下想新增规则,例如想在rule 10和rule 11之间,手工加入一条rule 。此时可以改变步长,这样就可以在想要新增的位置上新增了,即改变了连续规则的编号,并由新的空间可以插入。因此,设置一定长度的步长的作用,是方便后续在旧规则之间插入新的规则。
动作:每条规则中的permit或deny,但是ACL一般是结合其他技术使用,不同的场景,处理动作的含义也有所不同。记得如果没有设置,则默认是允许的动作
匹配项:源地址和很多其他规则匹配项。例如,二层以太网帧头信息(如源MAC、目的MAC、以太帧协议类型)、三层报文信息(如目的地址、协议类型)以及四层报文信息(如TCP/UDP端口号)等。在高级的acl中可以设置的匹配项很多
通配符:
(特点:通配符中的1或者0是可以不连续的。)
当进行IP地址匹配的时候,后面会跟着32位掩码位,这32位称为通配符。
通配符,也是点分十进制格式,换算成二进制后,“0”表示“匹配”,“1”表示“不关心”。
如上rule 5: 拒绝源IP地址为10.1.1.1报文通过——因为通配符为全0,所以每一位都要严格匹配,因此匹配的是主机IP地址10.1.1.1;
如上rule 15:允许源IP地址为10.1.1.0/24网段地址的报文通过——因为通配符:0.0.0.11111111,后8位为1,表示不关心,因此10.1.1.xxxxxxxx 的后8位可以为任意值,所以匹配的是10.1.1.0/24网段。
还有两个特殊的通配符:
当通配符全为0来匹配IP地址时,表示精确匹配某个IP地址;
当通配符全为1来匹配0.0.0.0地址时,表示匹配了所有IP地址。
(通配符和反掩码、掩码的区别:
掩码:在掩码中,1表示精确匹配,0表示随机。1和0,永远不交叉,1永远在左边,0永远在右边。在配置IP地址以及路由的时候,会使用掩码。
反掩码:在反掩码中,1表示随机,0表示精确匹配。0和1,永远不交叉,0永远在左边,1永远在右边。在路由协议的配置中,通过network命令进行网段宣告时,会使用反掩码。
通配符:在统配符中,1表示随机,0表示精确匹配。0和1的位置,没有任何的固定限制,可以连续,可以交叉。在ACL中,使用的通配符
使用情景:
掩码主要用于配置IP地址和路由信息,通过精确匹配来识别特定的网络或主机。
反掩码则主要用在路由协议的配置中,用于宣告网段时的过滤操作。
通配符则主要用在ACL(访问控制列表)中,用于匹配特定的数据包。)
ACL的匹配位置
traffic-filter 命令,用来在接口上配置基于ACL对报文进行过滤。
命令格式:traffic-filter { inbound | outbound } acl { acl-number | name acl-name }
inbound:指定在接口入方向上配置报文过滤。
outbound:指定在接口出方向上配置报文过滤。
如上图命令即使在指定接口上入方向上根据acl2000的规则内容进行报文过滤
source { source-address source-wildcard | any }:指定ACL规则匹配报文的源地址信息。如果不配置,表示报文的任何源地址都匹配。其中:
source-address:指定报文的源地址。
source-wildcard:指定源地址通配符。
any:表示报文的任意源地址。相当于source-address为0.0.0.0或者source-wildcard为255.255.255.255。
time-range time-name:指定ACL规则生效的时间段。其中,time-name表示ACL规则生效时间段名称。如果不指定时间段,表示任何时间都生效。
可以通过dis acl <选项>查看配置的acl,选项具体如下
网络地址转换