菜缤的世界 CairBin's Blog - 计算机网络
type: channel
link: https://blog.cairbin.top/index.php/category/计算机网络
items: DNS域名解析服务
items: 链路层安全扩展——L2TP协议
items: IPv4 NAT（含Cisco配置）
items: IPSec协议簇（含Cisco实验配置）
items: Cisco路由器配置IPv6 Manual隧道
items: Cisco交换机安全配置
items: 开放路径最短优先协议OSPF基础
items: 距离矢量路由协议RIP(含Cisco模拟器实验配置)
items: Cisco路由器配置DHCP服务及中继
items: 简单描述标准生成树协议STP

DNS域名解析服务
type: item
date: 2024-09-25T06:34:01+00:00
description: DNS域名解析服务描述我们在平时访问网站时，IP地址并不好记忆，一般需要输入一个域名，例如www.baidu.com。而DNS就是负责域名向IP地址转换的系统。注意，浏览器上方的输入框里一般为URL，包含协议头和资源定位，例如https://www.baidu.com，其中https表示协议，www.baidu.com才是域名。我们可以在命令行使用ping命令来查询域名对应的服务器的IP。但需要注意的是，IP地址可能不唯一，这是因为大部分厂商会使用CDN，将域名解析道CDN服务器，CDN服务器会缓存一个源服务器站点的副本，用户请求的时候实际上是从最近的CDN服务器获取的。（这样有利于不同地区的用户实现较低延迟的访问）域名我们还是以百度www.baidu.com为例，com叫做根，根不只com一种，通常com用于商业网站，org表示非盈利组织，net表示网络服务机构等。而baidu.com为顶级域名，类似的还有csdn.net、google.com等。www.baidu.com叫做二级域名，类似的还有img.baidu.com等等。除此之外，还有三级域名account.www.baidu.com（这个域名并不一定能访问只是举例）在二级域名中，有一类特殊的，它们通常以www开始，它是万维网World Wide Web的简称。万维网是一个通过互联网访问的，由许多互相连接的超文本组成的系统。为了表示以浏览器超文本的方式访问，许多网站前面都会带www，用于区分其他服务如FTP等。但是随着互联网发展，越来越多的网站不再尊循这个不成文的规范，www就逐渐淡化了。二级域名在搜索引擎的权重往往不如顶级域名，例如在搜索引擎中查询某个字段，所列出的网页通常是顶级域名靠前。但是www开头是个例外，有些搜索引擎会将其视为顶级域名。域名服务器根域名服务器根服务器接受包含域名的递归解析器的查询，根域名服务器根据该域的扩展名（.com、.net、.org 等），通过将递归解析器定向到顶级域名服务器进行响应。根域名服务器由一家名为 Internet 名称与数字地址分配机构（ICANN）的非营利组织进行监督。顶级域名服务器（TLD）TLD域名服务器维护共享通用域扩展名的所有域名的信息，例如 .com、.net 或 url 中最后一个点之后的任何内容。例如，.com TLD 域名服务器包含以“.com”结尾的每个网站的信息。权限域名服务器权限域名服务器，又叫权威性域名服务器。权威性域名服务器通常是解析器查找 IP 地址过程中的最后一步。权威名称服务器包含特定于其服务域名的信息（例如，google.com）权威性域名服务器包含特定于其所服务的域名的信息（例如 www.google.com）。域名解析记录域名解析记录主要分为以下几种：A记录：用来指定域名对应的IP地址MX记录：可以将域名下的邮件服务指向自己的邮件服务器。假设MX记录地址为111.111.111.111，域名为example.com，则邮件xxx@example.com会经路由发送到111.111.111.111所在的服务器。CNAME记录：别名解析，可为一个域名设置一个或多个别名。NS记录：为某个域名指定DNS解析服务器，也就是这个域名由指定的IP地址的DNS服务器解析。TXT记录：为某个主机名或域名设置说明。域名解析过程我们在网络中访问一台主机是需要网络地址的，我们上面提到过，DNS负责将域名转换成IP地址。注意：如果是浏览器访问网站，现在的浏览器通常会有缓存功能，如果浏览器缓存有这个记录的话就通常不会进行以下过程本机首先会根据系统缓存来解析域名，在Windows下为HOST文件，这个文件记录了部分域名解析，如果文件中存在相应的记录，则直接使用记录中的IP地址，不用向远程服务器查询。如果系统缓存中没有找到记录，则会向本地服务器进行查询。本地服务器通常为局域网内的某个DNS服务器，家庭的话一般为路由器或者路由器指定一个远程的DNS服务器。本地服务器若查询到记录则返回给主机，若未找到则按照以下方式继续查找。当然主机也能自己指定这个DNS服务器，而不是路由器下发。例如在Windows下，右键网络中网络适配器的属性->Internet协议版本4(TCP/IPv4)->配置DNSDNS查询过程分为两种，即递归查询和迭代查询。如果是递归查询，本地服务器会作为客户端继续向根域名服务器请求，根域名服务器又会作为客户端向对应的顶级域名服务器查询，顶级域名服务器作为客户端继续向权限域名服务器查询，权限域名服务器记录经由顶级域名服务器、根域名服务器、本地域名服务器，以此顺序返回给主机。如果是迭代查询，本地域名服务器会请求根域名服务器，根域名服务器会把相关顶级域名服务器的IP地址返回给本地域名服务器，然后本地域名服务器再按…

链路层安全扩展——L2TP协议
type: item
date: 2024-04-25T07:13:47+00:00
description: 链路层安全扩展——L2TP协议PPP协议协议概念说到数据链路层的安全协议，我们不得不先提一下PPP协议，后面的PAP、CHAP与L2TP协议都是围绕它展开的。（PPP不是本文重点，很多细节没有提到，到时候会专开一篇文章讲PPP）PPP（Point-to-point Protocol，点到点协议）协议是为同等单元之间传输数据包设计的，主要是用来通过拨号或专线方式建立点对点连接发送数据，使其成为各种主机、网桥和路由器之间简单连接到一种共同的解决方案。点对点网络中，一个数据帧的接收者就是固定的对等端。PPP规定了以下内容：帧格式以及成帧方法用于建立、配置和测试PPP链路的链路控制协议（Link Control Protocol, LCP），以及通信双方可通过LCP包协商一些选项。一组用于建立和配置网络层协议的网络控制协议（Network Control Protocol，NCP）。在PPP链路上可以传输不同网络协议的数据，NCP用于对这些网络协议相关的参数进行配置。但NCP只是一个统称，如果传输的是IP数据，则“NCP”是指IP控制协议（IPCP）。不同类型的NCP充分说明了PPP具有良好的通用性。鉴于IP的通用性，随后都以IPCP为例进行说明。协议封装格式PPP协议的封装格式如下：协议字段分为三种：如果是0xC021，则数据部分是PPP的链路控制数据；如果为0x0021，数据部分就是IP数据报；如果是0x8021，则表示这是网络控制数据。协议流程PPP协议流程如下：在建立PPP链路前，发送方和回应方必须建立一条物理连接。双方首先利用LCP建立PPP链路。用PAP或CHAP验证身份。用IPCP配置IP层参数。通信完成后，利用LCP断开PPP链路。断开物理连接。整个过程包括5个阶段：链路不可用阶段：链路状态的起始点和终止点。链路建立阶段：双方用LCP建立链路。认证阶段：回应方发起身份验证。网络层协议阶段：回应方给发起方分配IP地址（毕竟是对等方式连接的）。链路终止阶段：PPP链路终止。PAP和CHAP认证协议PPP协议有两种认证协议，分别是PAP协议和CHAP协议。PAP协议PAP（Password Authentication Protocol）是基于口令认证的方法，被认证方发送Authenticate-Request报文（类型1），其中包含了身份（通常是账号或者说用户名）和口令信息。若认证通过，认证方返回Authenticate-Ack（类型2），否则返回Authenticate-Nak（类型3）。PAP协议以明文方式传输身份和口令给网络接入服务器（Network Access Server，NAS）。因此安全性较差，容易被第三方窃取用户名和口令。另外，PAP在PPP身份认证过程中，由被认证方发起认证，并且仅在建立链路阶段使用，在数据传输过程中不能用。下面是PAP两次握手的具体过程：CHAP协议基于挑战认证的协议（Challenge-Handshake Authentication Protocol）通过三次握手完成身份认证，我们记认证方为S，其用户名为SU，被认证方为U其用户名为UU，随机数为R，口令为PW，则认证成功的工作过程如下（部分字段没有体现在下文中，详细请参考包格式）：$$ S\to U:0x0001,ID,R,SU \\ U\to S: 0x0002,ID,Hash(PW || R),UU \\ S\to U: 0x0003,ID,Message $$数据包格式如下图所示：Challenge和Response报文的类型编号分别为1和2，Success和Failure报文类型分别为3和4随机数和散列值长度可变，内容在值字段体现。名字字段描述发送方身份信息。消息字段包含描述信息，比如认证失败的原因。CHAP协议相比PAP协议较安全，它由认证方发起挑战，使用Hash函数来避免连接时传输明文，随机数可避免重放攻击，而且不定时重复呼叫用户提供口令来避免第三方冒充。但CHAP也有许多安全隐患：服务器明文存放口令单向认证，不能判断服务器是否假冒重复呼叫周期过长容易被攻击，周期过短计算量增加影响性能L2TP协议了解以上情况后，终于该本文主角登场了！概念第二层隧道协议（Layer 2 Tunnel Protocol, L2TP）是PPTP协议与Cisco L2F协议联合版本，有一部分采用PPTP，但可以在多种网络传输，突破了PPTP只能在IP网络上的局限性。我们来看下L2TP相关术语：LAC：L2TP接入控制器。作为L2TP隧道端点，位于一个LNS和一个远程系统之间，并在两者之间发数据包。从LAC发往LNS的数据包需要用L2TP协议进行隧道传输，从LAC到远程系统之间的连接或是本地的或是一个PPP连接。LNS：L2TP网络服务器。一次…

IPv4 NAT（含Cisco配置）
type: item
date: 2024-04-24T17:18:03+00:00
description: IPv4 NAT（含Cisco配置）IPv4私有空间地址类RFC 1918 内部地址范围前缀A10.0.0.0 - 10.255.255.25510.0.0.0/8B172.16.0.0 - 172.31.255.255172.16.0.0/12C192.168.0.0 - 192.168.255.255192.168.0.0/16这些私有地址可在企业或站点内使用，允许设备进行本地通信。但是，由于这些地址并不代表任何公司或组织机构，因此私有IPv4地址不能在互联网上路由。为了使具有私有 IPv4 地址的设备能够访问本地网络之外的设备和资源，必须首先将私有地址转换为公有地址。NAT 提供了私有地址到公有地址的转换，NAT的类型。这样做可以使拥有私有IPv4地址的设备可以访问私有网络外部的资源，比如互联网上的资源。NAT的概念NAT 有很多作用，但其主要作用是节省了公有 IPv4 地址。它通过允许网络在内部使用私有 IPv4地址，而只在需要时提供到公有地址的转换，从而实现这一作用。NAT还在一定程度上增加了网络的隐私性和安全性，因为它对外部网络隐藏了内部IPv4地址。可以为启用 NAT 的路由器配置一个或多个有效的公有 IPv4 地址。这些公有地址称为 NAT 地址池。当内部设备将流量发送到网络外部时，启用 NAT 的路由器会将设备的内部 IPv4 地址转换为NAT 池中的一个公有地址。对外部设备而言，所有进出网络的流量好像都有一个取自所提供地址池中的公有 IPv4 地址。NAT 路由器通常工作在末端网络边界。末节网络是指这一个或多个网络与它的邻居网络之间只有单条连接，网络流量只有单条路入、单条路出。在图中的示例中，R2 为边界路由器。对 ISP 来说，R2 构成末端网络。当末端网络内的设备想要与其网络外部的设备通信时，会将数据包转发到边界路由器。边界路由器会执行 NAT 过程，将设备的内部私有地址转换为公有的外部可路由地址。NAT术语由于本文主要讲IPv4的NAT，“地址”一词如果没有特殊说明默认指IPv4地址。内部本地地址：内部网络设备看到的源IPv4地址。内部全局地址：网络外部看到的源IPv4地址。当发至外部的数据包经过NAT网关时，源IPv4地址会变成内部全局IPv4地址。外部本地地址：外部设备看到的目的IPv4地址。这通常是分配给互联网主机的全局可路由地址。大多数情况，外部本地地址与外部全局地址是一样的。外部全局地址：网络内部设备看到的目的IPv4地址。在决定使用哪一种地址时，重要的是记住NAT术语始终是从具有转换后地址的设备的角度来应用的：内部地址：经过NAT转换的设备IP地址外部地址：目的设备的IP地址关于地址，NAT还会使用全局或本地的概念：本地地址：出现在网络内部的IP地址全局地址：出现在网络外部的IP地址静态NAT静态NAT使用本地地址和全局地址一对一映射，由管理员进行配置，保持不变。在图中，R2 上配置了 Svr1、PC2 和 PC3 的内部本地地址的静态映射。这些设备在向互联网发送流量时，它们的内部本地地址会转换为管理员配置的内部全局地址。对外部网络的设备而言，这些设备使用的是公有IPv4地址。如果Web服务器或设备必须拥有固定的地址，以便能够让其他设备从互联网发起访问的话 比如公司的Web服务器），静态NAT就尤为有用。静态NAT也适用于这种情况：只有拥有授权的人员才能够从互联网对设备进行访问，发起访问的并不是互联网上一般的公有设备。举例来说，网络管理员可以从PC4上使用SSH来访问SRV1的内部全局地址 209.165.200.226）。R2会把这个内部全局地址转换为内部本地地址192.168.10.10，然后把会话连接到SRV1。为了满足所有同时发生的用户会话需要，静态 NAT 要求有足够的公有地址可用。动态NAT动态 NAT 使用公有地址池，并以先到先得的原则分配这些地址。内部设备请求访问外部网络时，动态 NAT 分配该池中的可用公共 IPv4 地址。如图所示，PC3使用的是动态NAT池中第5个可用地址连接的互联网。而其他地址仍可供使用。与静态 NAT 类似，为了满足所有同时发生的用户会话需要，动态 NAT 要求有足够的公有地址可用。端口地址转换PAT端口地址转换（PAT），也称为NAT过载，可以可以将多个地址映射到一个或少数几个地址，因为每个私有地址也会用端口号加以跟踪。当设备发起 TCP/IP 会话时，它会生成一个 TCP 或 UDP源端口号，或专门为 ICMP 分配的查询 ID，用来唯一地标识这个会话。当 NAT 路由器收到来自客户端的数据包时，将使用其源端口号来唯一确定特定的 NAT 转换。当 R2 处理各数据包时，它使用端口号 本例中为 1331 和 1555）来识别发起数据包的设备。源地…

IPSec协议簇（含Cisco实验配置）
type: item
date: 2024-04-19T17:39:31+00:00
description: IPSec协议簇（含Cisco实验配置）什么是IPSec早期的网络并不像现在这样，使用者大部分都是科学家并且一般是组织内部成员进行通信，所以在设计之初并没有考虑其安全性。但对于现在的网络，保障通信安全是非常重要的，而IPSec协议簇可以保障网络层的安全性。IPSec是一组基于网络层的应用密码学的安全通信协议簇。它是VPN中常用的一种技术。设计目标：为IPv4和IPv6提供客户操作的、高质量的、基于密码学的安全保护。功能：工作在网络层，提供身份认证、机密性、完整性三个安全服务，并防止重放攻击和提供有限通信流机密性保护。IP协议是唯一一个由所有高层协议共享的协议。在IP层实现安全可以为上层应用提供安全保障，各种应用程序可共享IP层提供的安全服务和密钥管理，不必设计自己的安全机制，减少密钥协商的开销，有利于降低安全漏洞产生的可能。IPSec有四种典型应用：端到端安全基本的VPN支持保护移动用户访问内部网嵌套式隧道IPSec架构IPSec VPN体系结构如下图：DOI：将IPSec与RFC文档联系一起，批准加密和认证算法标识、运行参数等。密钥管理：IPSec密钥管理主要由IKE完成。定义了通信实体间进行身份认证、协商加密算法以及生成共享的会话密钥的方法。IKE将密钥协商的结果保留在安全关联（SA）中，供AH和ESP以后通信使用。AH协议：使用认证报文包格式和一般性问题。ESP协议：使用ESP进行包加密的报文包格式和一般性问题，以及可选的认证。IPSec工作模式IPSec工作模式分为两种：传输模式隧道模式传输模式传输模式将IPSec协议头插入到原IP头部与传输层头部之间，只对有效载荷进行加密或认证。即使在子网内部中的其他用户也不能理解上面拓扑中两台主机之间的通信内容。由于每个需要实验传输模式的 主机都必须安装并实现IPsec协议，因此不能实现对端用户的透明服务。用户为了获得IPsec提供的安全服务，必须消耗内存、花费处理时间。由于传输模式仅对有效载荷进行保护，而对于原IP包头部不会进行修改（缺乏保护），所以会暴露内网拓扑结构。隧道模式隧道模式会创建新的IP包头部，并把原来的部分都当作有效载荷封装。如此，子网内部所有用户都可以享受网关提供的安全保护，不会暴露内网拓扑结构，而且主机可以使用私有IP地址。但子网内部以明文方式进行，无法控制内部发生的安全性问题。而且，由于IPSec主要集中在网关上（解封装更换IP头部等），增加了网关的负担，容易造成通信瓶颈。注意上图不讨论所使用的协议，示意图是抽象的。实际来讲，对于ESP协议，上图的数据包还包含一个ESP尾部，这个请看下文。AH协议工作原理工作原理是在每个数据包上添加一个身份验证报头。此报头包含一个带密钥的hash散列，此hash散列在整个数据包中计算，因此对数据的任何更改将致使散列无效，这样就提供了完整性保护。AH协议对整个数据包进行验证，但本身不提供任何形式加密。在计算认证数据时，AH会把前面的IP首部中的部分字段也包含在内。必须保证计算认证数据时，输入在传输中不变，或者变化但可以预测。变化的字段不考虑，不变的字段加入，变化但可预测的的字段则使用预测到的、到达目的端后变化的值。AH协议下的IPSec头部为AH头部，其结构如下图。认证数据：变长字段，是AH使用消息认证码（MAC）对IP数据包进行认证，生成认证数据即完整性校验值ICV。（顺带提一点，原IP协议的校验和对于数据完整性能力有限）序列号：对于一个包，外出情况，则外出SA计数器增加1；接收的话，则进入SA计数器增加1。用于抗重放攻击。处理过程处理过程主要讨论设备在拿到一个包的时候，对于外出和进入时的数据包的处理。外出处理检索SPD，查找应用于该数据包的策略：以选择符为索引查找对应的SA：SPD通过SPI指向SAD中的一个相应SA，从SA中得到相关安全参数；若SA尚未建立，则调用IKE协商一个SA，并将其连接到该SPD条目上。构造AH载荷：按照SA中给出的处理模式填充AH载荷的各个字段（复制IP头、计算载荷长度、填入SPI值、产生或增加序列号值、计算ICV并填入）为AH载荷添加IP头：传输模式添加原IP头；隧道模式构造新的IP头其他处理：重新计算外部IP头校验和；若分组长度大于MTU（Maximum Transmission Unit）则进行IP分段。 处理完的数据包交给数据链路层（传输模式）发送或IP层（隧道模式）重新路由。进入处理分段重组，检查MF位，若存在分段，则重组。查找对应的SA：使用外部IP头中的<SPI，目的IP地址，协议号>作为索引检索SAD，以找到处理该分组的SA。若查找失败，则丢弃。抗重放处理：若启用了抗重放功能，则使用SA的抗重放窗口检查是否是重放包。若是重放，则丢弃。完整性检查：使用SA指定的MAC算法计算数据包的…

Cisco路由器配置IPv6 Manual隧道
type: item
date: 2024-04-04T14:42:47+00:00
description: 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…

Cisco交换机安全配置
type: item
date: 2024-04-01T10:14:04+00:00
description: 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 SecureConfigur…

开放路径最短优先协议OSPF基础
type: item
date: 2024-01-01T17:36:38+00:00
description: 开放路径最短优先协议OSPF基础对比RIP对比距离矢量路由协议(RIP)，OSPF协议交换的不是路由条目，而是链路信息，并通过SPF算法计算出最佳路由，链路状态信息内含有路由接口、IP地址、掩码、cost值等，进而形成了链路状态通告（LSA）。基本术语邻居表：也成为邻接数据库，通过Hello包建立邻居关系，包含自己所承认的邻居名单。链路状态数据库（LSDB）：OSPF学来的LSA存放处，同一个区域的LSDB一样路由表：使用SPF算法，算出以自己为根，到达目的地最短、最佳无环路径，形成路由表。通常称为转发数据库，达到目的的最佳路径列表。区域边界路由器（ABR）：位于不同区域边界上的路由器自治系统边界路由器（ASBR）：它连接一个OSPF域与其他路由协议域（比如BGP），简单来说就是沟通OSPF与其他协议的桥梁OSPF区域OSPF虽然不受路由器数量限制，但是网络中路由器太多，相互交换的LSA也会增加，随之而来的网络负担也会变大，因此需要给OSPF路由器划分区域。区域主要分为两种：骨干区域，又叫传输区域常规区域常规区域主要限制了这一个区域之间的通信，多个常规区域之间一般是相互隔绝的，如果它们之间进行通信需要经过骨干区域转发。因此常规区域一定与骨干区域相连。OSPF寻路OSPF寻找最佳路径采用Dijkstra算法，也叫最短路径优先(SPF)算法：在同一个区域每个路由器都有一个相同额链路状态数据库每台路由器建立由本身为根到目的的树（即然是树，则无环）到特定目的总成本最低的链接放入路由表一段链路的成本或者说度量的计算如下（默认情况）：$$ Cost = \frac{10^8 bps}{Bandwith} $$到达目的的链路总成本为每段链路成本之和：$$ TotalCost = \sum_{i=1}^{n} Cost_i $$此处带宽的单位为bps(比特每秒)，其中参考带宽在默认情况下为1E8 bps这里需要注意，在使用默认值的情况下，我们无法比较百兆带宽和千兆带宽哪个好（本文对于带宽的单位都以比特每秒为基础，例如百兆为100Mbps）。当带宽为100Mbps的时候，代入公式成本为1；当带宽为1000Mbps的时候成本为0.1，按1算。可以通过修改参考带宽来区分百兆和前兆网络，在思科路由器上可以采用一下命令：Router(config)#router ospf 100 Router(config-router)#auto-cost reference-bandwith ref-bw其中ref-bw为你需要设置的参考带宽的值，范围在1-4294967M/s还有一种方式是直接设置成本（假设入方向接口为g0/0）Router(config)#interface g0/0 Router(config-if)#ip ospf cost int-cost其中int-cost替换为你所需要设置的值，范围在1-65535之间。关于该算法具体流程请参考数据结构与算法。OSPF报文格式OSPF报文头OSPF报文头如上图所示，包含如下字段：Version: OSPF版本，占用1字节，OSPFv2此处为2，OSPFv3此处为3Message Type: 报文类型，占1字节。1表示Hello报文，2表示DD报文，3表示LSR报文，4表示LSU报文，5表示LSAck报文。Packet Length: OSPF报文总长度（包含头部和主体），占用2字节。Router ID: 发送方路由器ID，与IP地址长度一致，占用4字节。Area ID: 发送报文路由器接口的所属区域ID，占用4字节。Checksum: 除了认证信息以外的报文的校验和，占用4字节。AuType: 校验方法，0表示不验证，1表示简单验证，2表示MD5验证，占用2字节。Authentication: 认证信息，占用8字节。验证类型为0时未定义，验证类型为1时该字段是密码信息，类型为2时该字段包括Key ID、MD5验证数据长度和序列号的信息。MD5验证数据添加在OSPF报文后面，不包含在Authentication字段中，占用8字节我们来看下报文内容，以下图片要拼接上上图的报文头才是一段完整的OSPF报文。Hello报文Hello报文内容部分（不包括报文头）如上图所示：Network Mask：Hello报文发送的路由接口对应的子网掩码，占4字节。HelloInterval：表示Hello报文的时间间隔，单位为sec，占用2字节。Options：表示可选项，占用1字节。E表示允许泛洪AS-External LSA（5类），MC表示转发IP组播报文，N/P表示处理Type-7 LSA（7类LSA），DC表示处理按需链路，占用1字节。Rtr Pri：表示DR优先级，默认为1，如果为0表示不参与DR/BDR选举，…

距离矢量路由协议RIP(含Cisco模拟器实验配置)
type: item
date: 2023-10-01T16:02:20+00:00
description: 距离矢量路由协议RIP(含Cisco模拟器实验配置)简介距离矢量路由协议（Routing Information Protocol, RIP）是一种内部网关协议，它位于应用层，使用520 UDP端口。RIP基于距离矢量算法（Bellham-Ford）根据metric来衡量目的地址的距离。原理基本原理对于RIP协议，路由器只会和相邻的路由器交换路由表，通常包含：目的网络距离下一跳路由RIP规定每经过一个路由器跳数加1，最多15跳，当一个路由条目对应的跳数为16跳的时候会被认为距离是无限大，即不可达。RIP工作流程如下：路由器激活RIP，立刻发送一个Request报文和一个Response报文，并开始监听链路上的RIP协议报文。对应的接口会周期性发送Response报文。一个Response报文最多携带25个路由条目，当超过这个数字时使用多个报文。当另一启用了RIP的路由器接收Request报文后，会使用相应的Response报文回应，并在该报文中携带对应的路由信息。当另一启用了RIP的路由器接收Response报文后，会解析该报文中的路由信息，如果报文中的路由条目是自己未发现的，并且路由的度量值有效，则路由器将学习该路由并加载到路由表。（同时设置度量值、出接口、下一跳）计时器RIP主要有四个计时器：更新计时器（Update timer）：每次更新 30 seconds RIP，都是完整路由表，不过要排除被 split-horizon 抑制的路由条目。 为了防止路由表全局同步，update timer 值被设计成一个小范围内的随机值 (25-35s),思科路由器上一般为 25.5-30s。随机值的意义在于防止同时更新洪泛Response报文导致不必要的冲突。失效计时器（Invalid timer）：路由器在 180s 内没有收到特定路由条目的更新，则视此路由条 目为非法或不可达，将它的 hop count 设置为 16。启动失效计时器，标志这条路由条目失效，并且这个路由器会给所有相邻的路由器发送更新消息通告这条路由条目失效。标记为 16 跳。刷新计时器（Flush Timer或garbage collection timer flush）： 计时器满时，该路由条目将会从路由表中被移除，默认为 240s。抑制计时器（Holddown Timer）： 只有当失效计时器周期结束时，抑制计时器才会被激活。一旦路由器收到了关于某条路由条目的更新，并发现其 metric 值比本路由表中记录的 metric值大时，将会对这条路由设置 holddown timer,直至计时器周期结束才会接受这条次优路径，默认为 180s。缺点RIP协议有如下缺点：过于简单，以跳数为依据计算度量值，经常得出非最优路由。例如:2 跳 64K 专线，和 3 跳 1000M 光纤，显然多跳一下没什么不好。度量值以 16 为限，不适合大的网络。解决路由环路问题，16 跳在 rip 中被认为是无穷大，RIP是一种域内路由算法自治路由算法，多用于园区网和企业网。收敛性差，时间经常大于 5 分钟。消耗带宽很大。完整的复制路由表，把自己的路由表复制给所有邻居，尤其在低速广域网链路上更以显式的全量更新。容易产生环路（先天缺陷，有后天的防环机制）缺少主动发现网络变化机制(无拓扑信息，不知道全网链路，只知道自己直连)防环机制在刚在我们就说到过，RIP协议发送路由表，如果路由表相互包含则容易产生环路。协议本身就容易导致环路，故需要一系列防环机制：跳数上限：上限16跳，设定包的生命周期，这在一定程度上减少了环路产生带来的问题，但无法避免。水平分割：不向原始路由更新来的方向再次发送路由更新信息，即单向更新、单向反馈。可以进入某个接口，使用命令 no ip split-horizon 关闭水平分割。例如，R1路由从Fa0/0接口向R2路由的Fa0/1接口发送路由信息，对于R2来讲不再从Fa0/1接口发送路由更信息。路由毒化：又叫路由中毒。若 RIP 的路由条目出现故障时，会立即将此路由标记为 16 跳，并发送给邻居，告知邻居此路由有问题，尽快删除。抑制计时器：抑制计时器告诉路由器把可能影响路由的任何改变暂时保持一段时间， 抑制时间通常比更新信息发送到整个网络的时间要长。毒性逆转：如果Z的最短路径要通过邻居Y，那么它将告诉Y自己到目的节点的距离是无穷大。这样，Z向Y撒了一个善意的谎言，使得只要Z经过Y选路到X，它就会一直持续讲述这个谎言，这样Y也就永远不会尝试从Z选路到X了，也就避免了环路问题。由于这个方案不用路由间更新报文，所以优先于路由毒化。触发更新与Silent模式触发更新（Trigger Update）与周期性更新不同，它不会触发接收端的路由器重置其 update timer, 因为这样…

Cisco路由器配置DHCP服务及中继
type: item
date: 2023-03-23T07:04:28+00:00
description: 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

简单描述标准生成树协议STP
type: item
date: 2022-11-28T06:44:34+00:00
description: 简单描述标准生成树协议STP生成树协议STP为什么需要生成树如上图所示网络拓扑，如果没有生成树协议，在网络通信开始时，假设PC0向PC1发送一个数据包，交换机S2的MAC地址表中并没有对应的MAC地址，因此会产生ARP洪泛（详情参考交换机自学习算法那篇文章）发送广播帧，由S2的Fa0/1和Fa0/3端口向对端发出。当S1、S3分别接收到广播帧后，根据同样原理进行广播帧转发。这时网络形成了一个环路，但交换机并不知道这将导致广播帧在环路中永远循环下去。随着时间增加，广播帧将会越来越多，最终形成网络广播风暴导致网络瘫痪。（对于交换机的运算速度来讲，网络由正常变瘫痪过程中的时间是非常短的）STP概念由上述描述就可以知道，我们需要一套方案去解决这种问题，所以就有了生成树协议。生成树协议（英语：Spanning Tree Protocol，STP），是一种工作在OSI网络模型中数据链路层的通信协议，基本应用是防止交换机冗余链路产生的环路。用于确保以太网中无环路的逻辑拓扑结构。从而避免了网络广播风暴，大量占用交换机的资源。与图论中所指的生成树概念一致，目的就是为了破环（将环形图变成树形）。STP会阻塞备用链路，当正常线路损坏时会启用备用链路。交换机上默认的STP版本还有多实例生成树（MSTP）、快速生成树（RSTP）等，本文只描述标准版本。生成树协议核心是生成树算法（Spanning Tree Algorithm，STA），下面对STA算法过程进行描述。生成树算法STA交换机是由网桥演变而来的，在描述生成树算法的时候也指代交换机STA大致分为三步：选举根网桥选举根端口选举指定端口并阻塞备用端口选举根网桥选举条件：网桥ID(BID)最小者当选BID由以下两部分构成：优先级交换机的基本MAC地址优先级范围为0-61440，步长4096，默认值为32768看到这里可能会有人问，为什么步长恰好是2的12次方即4096？这并不是巧合，因为这里的步长就是VLAN号（VLAN号使用12比特）BID的比较方法：优先级取值越小，BID就越小若优先级相同，则比较MAC地址，从MAC地址左侧开始比较，数值小的BID就越小选举根端口根端口（Root Port， RP）的选举是在非根网桥（非根交换机）上的，并且在每个交换机上只能存在一个RP。RP用于接收根网桥发来的BPDU，也用来转发普通流量。RP的选举首先考虑BPDU接收端口到根网桥的路径成本最小，其路径成本与链路带宽对应如下（该值不绝对，交换机上可更改）链路带宽成本值4Mb/s25010Mb/s10016Mb/s62100Mb/s191Gb/s410Gb/s2如果存在多个端口到根网桥的成本相同时，则比较对端的BID，对端BID小的本机端口则选举为RP。（注意BID是对端，也就是与参加选举的端口相连的其它交换机的端口，而参与选举的端口是在本交换机上）如果对端BID也相同，则比较对端的端口ID（PID），同样对端PID小的本机端口选举为RP。PID参数如下：范围0-240步长16默认值128端口号（如Fa0/1比Fa0/2小）（其实还存在一种对端BID与PID都相同的情况，详细请看本文 STA举例部分->其他例子->使用集线器的情况）选举指定端口并阻塞备用端口在每一个网段上选出一个指定端口（Designated Port，DP）。DP用于转发根网桥发来的BPDU，也用来转发普通流量。注意：每网段上存在且只能存在一个DPDP的选举条件如下：根网桥的所有端口都是DP根端口的对端端口一定都是DP（反之不一定成立）BPDU转发端口到根网桥的路径成本最小本端的BID最小剩余端口成为备用端口（Alternate Port，AP），它们将被阻塞。STA举例主要例子网络拓扑如下按照上文中的步骤首先选举根网桥优先级都是32768，然后比较MAC地址，S1的MAC地址为00-01-...，比其它地址都小，所以S1是根网桥。然后选取根端口交换机S2的到S1路径上的所有链路都是1Gb/s，所以开销都是4，G0/1到S1的总开销为4，G0/2到S1的总开销为8，G0/3到S1的总开销为12，所以S2的根端口为G0/1。与此同理，S3根端口为G0/1，S4的根端口的为G0/2（G0/2的对端BID比G0/1对端BID小，二者成本相同）。S5的根端口为Fa0/1（Fa0/1与Fa0/2的成本相同，对端BID相同，但Fa0/1对端为S4的Fa0/1，端口号小，所以PID小）。选举指定端口并阻塞备用端口S1为根网桥，所以S1的G0/1与G0/2都是指定端口然后按照第二个条件，所有的RP对端端口都是DP，那么选出来的有：S3的G0/3，S4的Fa0/1剩下的几个网段无法根据第二个条件选出DP，然后根据第三个条件即到S1成本路径最小来选首先来看S4Fa…