first commit

This commit is contained in:
2025-08-27 14:13:17 +08:00
parent 721fb07e34
commit 9379de9f76
1310 changed files with 42760 additions and 0 deletions

View File

@@ -0,0 +1,439 @@
# 01.网络基础概念
## 1. 什么是网络
给各个节点之间提供信息交换的系统
两个节点之间连接一根网线组成了最简单的网络
## 2. 数据通信的类型
### 2.1 单播
一对一
### 2.2 广播
一对广播域内所有所有设备
如果是ffff.ffff.ffff的mac地址表示是广播
如果IP的主机位全为1表示广播
如果IP地址是255.255.255.255,表示在任何局域网,这个数据包都是广播
### 2.3 组播
一对所有感兴趣的组员
## 3. 集线器
![image-20200307092326426](01.网络基础概念/image-20200307092326426.png)
将网线的铜介质直接连在一起,这样就可以多个设备之间传递信号。
集线器在收到一个数据之后,会发送给所有的出口。
不管广播,单播,组播,都是发给所有节点
### 3.1 优点
- 稳定性
- 便宜
### 3.2 缺点
- 不安全
- 无法提供中继
## 4. 交换机
![image-20200307093046757](01.网络基础概念/image-20200307093046757.png)
交换机有操作系统,在收到数据之后会根据数据中的目的地址进行准确的转发。
单播会被准确的转发
广播、组播会被泛洪
一个交换机组成的网络,一般是一个局域网,大家可以直接互相访问
## 5. 路由器
![image-20200307094302877](01.网络基础概念/image-20200307094302877.png)
路由器主要用于连接不同的网段,并且负责隔离广播域。
单播会被准确的转发
广播会被拒绝
组播会根据感兴趣组的注册信息,准确转发
## 6. 网络拓扑
- 逻辑拓扑
- 标注出主要节点的连线,忽略不重要设备
- 主要节点有可能是虚拟化的
- 物理拓扑
- 标注出物理设备的连线
- 主要用于弱点实施
## 7. OSI七层模型
![image-20200307101521932](01.网络基础概念/image-20200307101521932.png)
OSI七层模型必须要会背面试必问。
### 7.1 应用层
提供用户UI接入以及各种应用程序协议
http
dns
ftp
### 7.2 表示层
对数据进行优化处理
格式化,压缩解压缩,加密与解密
### 7.3 会话层
管理不同应用的会话
### 7.4 传输层(段)
数据分段和重组,提供数据传输的方式
1. tcp
1. 可靠传输
2. 提供分段的可靠重组
2. udp
1. 尽力而为的传输
提供应用协议的区分。使用端口号,来让操作系统将数据和进程之间关联。
端口号范围0~65535
操作系统会预设一些端口号用于访问服务,比如我访问 http://www.ujs.edu.cn/
操作系统会根据http协议去查找应该访问www.ujs.edu.cn地址的端口
查找文件为:`C:\Windows\System32\drivers\etc\services`
面试官有可能会问一些常见服务的端口号,请务必记住
http:80
dns:53
ftp:20、21
dhcp:67、68
telnet:23
ssh:22
### 7.5 网络层(包)
给数据提供远距离传输的机制
提供逻辑地址`IP地址`
ip地址可以让路由器识别数据所属的局域网然后准确的转发。
ip地址相当于信件上的邮编可以让邮局分类然后运到所属地区。
### 7.6 数据链路层(帧)
给提供数据在局域网中传输的机制
提供物理地址`mac地址`
mac地址是在网卡出厂的时候烧录到芯片中的不能被轻易的修改。
mac地址在正规厂家的网卡中是全球独一无二的mac地址是由48位二进制数组成。
mac地址前24位是组织唯一标识符由IEEE分配给各个厂家后24位是厂家自己定义。
为了方便人们记忆我们将mac地址分成6段每段8位二进制然后再转换为16进制。
物理层的数据需要成帧
例:
`ipconfig /all` 可以查看windows的mac地址
`F0-1E-34-11-98-D5`
### 7.7 物理层(位)
定义传输介质的电气标准的
RJ45、RJ11、BNC
LC、SC、SFP
无线wifi6
## 8. 数据的封装与解封装
### 8.1 传输层
由于需要分段和重组,以及端口号区分,所以数据必须携带上这些内容
由于这些信息用于控制数据的传递,并且总是加在报文的头部,所以被称为报头
传输层在分段之后,会在每个数据前面加上控制信息,比如源和目的端口号
### 8.2 网络层
数据想要通过路由器传递到远端的网络就必须要提供目的IP地址为了收到回复还必须提供源IP地址。
### 8.3 数据链路层
当数据到达目的地所在的局域网的交换机上的时候就需要通过mac地址来确认接收的设备网卡
为了收到回复还必须提供源mac地址
![image-20200307112150770](01.网络基础概念/image-20200307112150770.png)
## 9. 分析数据通信
1. 当我们开始访问一个地址的时候由于并不知道怎么去往网关的MAC地址所以使用arp协议发起广播查询MAC地址。
![image-20200307114246371](01.网络基础概念/image-20200307114246371.png)
2. PC查到了网关的MAC地址之后就记录到自己的ARP表中
![image-20200307114341302](01.网络基础概念/image-20200307114341302.png)
3. 然后将数据封装起来封装的时候加上每一层的关键信息比如源和目的端口源和目的IP地址源和目的MAC地址。这边要注意由于我们要去往的目的地是`192.168.3.2`并不是同网段。所以需要借用网关的MAC地址。
![image-20200307114629410](01.网络基础概念/image-20200307114629410.png)
4. 数据从PC发出了之后被交换机收到了交换机通过数据中Dst-MAC地址查找自己的`mac address table`知道应该从哪个接口离开。
![image-20200307115457201](01.网络基础概念/image-20200307115457201.png)
5. 路由器最终收到了这个数据首先查看目的mac地址发现是给自己就解开数据链路层封装查看网络层的Dst-IP地址然后对比自己的路由表查找目的地应该发出的接口
![image-20200307115616522](01.网络基础概念/image-20200307115616522.png)
6. 路由器会在这个数据发出去之前将自己出接口的MAC地址作为源MAC地址将下一跳设备的MAC地址作为目的MAC地址重新封装数据链路层然后发出后面的路由器收到了之后重复5、6两步。
![image-20200307115956116](01.网络基础概念/image-20200307115956116.png)
7. 数据在这种不断的封装解封装数据链路层的过程中到达了目的地最终web服务器收到了这个数据后发现目的MAC地址目的IP地址都是自己并且目的80端口也有进程在监听最终完成请求的过程。
![image-20200307120201468](01.网络基础概念/image-20200307120201468.png)
## 10. ARP(地址解析协议)
### 10.1 ARP地址解析协议
知道目的地的IP地址请求MAC地址的协议
下面是请求的数据
![image-20200307135548122](01.网络基础概念/image-20200307135548122.png)
下面是回复的数据
![image-20200307135644395](01.网络基础概念/image-20200307135644395.png)
请求方拿到回答之后,会将结果记录在`arp表`
![image-20200307135749117](01.网络基础概念/image-20200307135749117.png)
在Cisco的路由器上arp表中条目会有300分钟的寿命300分钟后就会被删除然后重新请求。
### 10.2 代理ARP
路由器**善意的谎言**
1. 当路由器收到一个ARP请求请求的目的地址不是自己的IP但是自己可以去往这个地方
2. 路由器会给请求方一个回复回复的内容中会标注你要去往的IP地址的MAC就是我的MAC地址
3. 然后请求方就把数据发送过来
注意代理ARP并不是所有品牌的路由器都是默认开启的。并且需要路由器查询路由表发现可以去往请求目的地址的时候才会触发。
下图中R1去`ping 192.168.23.3`的时候R2就会替`192.168.23.3`做出arp回应
![image-20200307140807857](01.网络基础概念/image-20200307140807857.png)
![image-20200307140743214](01.网络基础概念/image-20200307140743214.png)
### 10.3 反向ARP
知道自己的MAC地址但是不知道自己的IP发起请求IP
类似的功能,还有一种协议:apipa
常用的场景:
- 无盘工作站
- PXE
------------------
## 11. DoD模型
也叫美国国防部模型,是各种面试喜欢问的模型,我们只要背住就行
![image-20200307144320208](01.网络基础概念/image-20200307144320208.png)
## 12. 传输层
### 12.1 端口号
一个IP地址可以拥有65536个端口号用于区分不同的服务
一般我们认为1023之前的端口号是保留的并且运行众所周知的服务可以查看系统的service文件
在发起通信的时候,正常情况下,源端口号是随机端口号,目的端口号由协议确定
![image-20200307150032747](01.网络基础概念/image-20200307150032747.png)
### 12.2 TCP
![image-20200307144420417](01.网络基础概念/image-20200307144420417.png)
#### 12.2.1 TCP报文结构
![image-20200307144532135](01.网络基础概念/image-20200307144532135.png)
#### 12.2.2 三次握手
![image-20200307144906302](01.网络基础概念/image-20200307144906302.png)
三次握手会导致半开TCP的攻击行为
#### 12.2.3 四次挥手
![image-20200307144932736](01.网络基础概念/image-20200307144932736.png)
#### 12.2.4 TCP有限状态机
http://aaronxu.eagleslab.com/index.php/archives/229.html
#### 12.2.5 序列号与确认号
![image-20200307150615484](01.网络基础概念/image-20200307150615484.png)
在传递数据的时候TCP的序列号会加上传递数据的大小成为下一个收到数据的确认号
而确认号会成为下一个收到数据的序列号
通过这种方式保证每个数据都能有序完整的被对方接收
#### 12.2.6 滑动窗口
主要用于流量控制
http://aaronxu.eagleslab.com/index.php/archives/225.html
### 12.3 UDP
主要用于对数据的准确性没太高要求,以及对延迟低要求较高的场景
比如:QQ、网游、流媒体
## 13. IP编址
IP地址是32位二进制数组成用于标识网络上唯一节点
为了方便人们记忆采用点分十进制比如IP地址是
> 11000000101010000000110000000001
>
> 加上点之后
>
> 11000000.10101000.00001100.00000001
>
> 变成十进制
>
> 192.168.12.1
IP地址32位中主要是网络位和主机位构成类似于手机号码前7位是归属地后面4位是编号
早期的人们为了区分网络位和主机位对IP地址进行分类
A: 1.0.0.0~126.255.255.255 如果是这个段的前8位是网络位
B: 128.0.0.0~191.255.255.255 如果是这个段的前16位是网络位
C: 192.0.0.0~223.255.255.255 如果是这个段的前24位是网络位
这样划分IP地址之后网络位就可以被区分了但是整个IP地址只有三档。
随着网络的发展很多公司内部节点的数量给个C类的地址主机编号不够分给个B类的地址浪费。
后期人们保留ABC类的称呼但是不再以此作为网络位数的判断因为出现了子网掩码
### 13.1 子网掩码
子网掩码有32位二进制和IP地址二进制位数一样的并且可以和IP地址的二进制一一对应
我们规定子网掩码位是1说明对应的IP位就是网络位
根据和之前旧的ABC类区分的方式对比出现了VLSM(可变长子网掩码)、CIDR(地址聚合)
实例:
> VLSM192.168.1.193 255.255.255.128 可以记作 192.168.1.193/25
>
> CIDR: 192.168.1.1 255.255.0.0 可以记作192.168.1.1/16
### 13.2 广播地址与网络编号
为了方便对局域网的管理,由于需要发广播,或者对整个局域网进行统一称呼,出现了广播地址和网络编号
一个IP地址的主机位全为1那么这个地址就是广播地址。(这边说的是三层的广播地址全是ffff的那个是二层广播)。
一个IP地址的主机位全为0那么这个地址就是网络编号被用来对整个局域网统一称呼。
广播地址和网络编号都是保留的,不能分配给主机使用。
> 请问下列哪个IP地址可以被主机使用
>
> A:172.16.1.128/30 网络编号
>
> B:172.16.1.129/30
>
> C:172.16.1.130/30
>
> D:172.16.1.131/30 广播
### 13.3 私有IP地址
所有的IP地址都是由iana.org分配的但是IPv4地址早就被分配光了
所以规定了私有Ip地址可以再内网使用但是不能与公网通信。
> A: 10.0.0.0~10.255.255.255 /8
>
> B:172.16.0.0~172.31.255.255 /12
>
> C:192.168.0.0~192.168.255.255 /16
当前几乎所有的企业或者家庭内网都是使用NAT(地址转换)来实现上公网的功能。

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@@ -0,0 +1,327 @@
# 02.模拟器安装
## 1. PNET模拟器介绍
### 1.1 🔧 为什么要使用 pnet 模拟器?
1. **硬件成本高**
- 真正的 Cisco、华为等路由器/交换机设备价格昂贵,不适合学生或初学者搭建实验环境。
- 模拟器可以“虚拟”真实设备,大幅降低学习门槛和成本。
2. **实验环境灵活**
- pnet 支持快速部署、修改网络拓扑结构,只需拖拽点击即可完成复杂的网络环境搭建。
- 不受物理连接限制,可随意连接任意数量的设备。
3. **近似真实操作**
- pnet 支持运行 **真实厂商的镜像系统**(如 Cisco IOS、华为 VRP、Juniper JunOS 等),操作与真实设备几乎一致。
4. **错误成本低**
- 实验中出错不会损坏真实设备,便于反复试验、练习命令,尤其适合初学者。
5. **可视化与快照功能**
- 支持拓扑图形化界面,操作直观。
- 支持快照/保存,便于回滚、记录学习进度和状态。
6. **高扩展性**
- pnet 可以集成 Linux、Windows、Docker、Firewall如 Palo Alto、Fortigate等系统满足企业级网络学习需求。
- 支持多用户共享平台,适合教学、实验室场景。
## 2. 下载地址
百度网盘地址: https://pan.baidu.com/s/1NH2ycfp6jMg1e9VCXppOKg?pwd=6666
### 2.1 安装vmware
如果之前电脑上已经安装过vmware workstation请勿重复安装如果需要升级版本先正常卸载然后再安装
- 双击安装包
![image-20250620103030182](02.模拟器安装/image-20250620103030182.png)
- 接收许可,点击下一步
![image-20250620103102521](02.模拟器安装/image-20250620103102521.png)
- 如果需要修改安装目录,请选择一个空文件夹!
![image-20250620103218136](02.模拟器安装/image-20250620103218136.png)
- 这两个√可以不需要
![image-20250620103415264](02.模拟器安装/image-20250620103415264.png)
- 保持默认
![image-20250620103511243](02.模拟器安装/image-20250620103511243.png)
- 开始安装
![image-20250620103552810](02.模拟器安装/image-20250620103552810.png)
- 点击许可证
![image-20250620103806678](02.模拟器安装/image-20250620103806678.png)
- 输入序列号`4C21U-2KK9Q-M8130-4V2QH-CF810`
![image-20250620103917432](02.模拟器安装/image-20250620103917432.png)
- 完成安装
![image-20250620104039641](02.模拟器安装/image-20250620104039641.png)
### 2.2 导入pnet虚拟机
- 先解压!先解压!
![image-20250620104127717](02.模拟器安装/image-20250620104127717.png)
- 解压到一个空文件夹中,或者直接点击提取,然后再复制到对应的文件夹中
![image-20250620104221636](02.模拟器安装/image-20250620104221636.png)
- 推荐在D盘中创建vm的文件夹然后将解压后的pnet文件夹放进去
![image-20250620105953595](02.模拟器安装/image-20250620105953595.png)
- 确保电脑中显示文件后缀名
![image-20250620110034332](02.模拟器安装/image-20250620110034332.png)
- 双击pnet.vmx
![image-20250620110059195](02.模拟器安装/image-20250620110059195.png)
- 选择vmware workstation然后点击确定
![image-20250620110140278](02.模拟器安装/image-20250620110140278.png)
- 导入完成
![image-20250620110211746](02.模拟器安装/image-20250620110211746.png)
## 3. PNET环境使用
### 3.1 初始化权限
- 启动pnet虚拟机点击开启此虚拟机
![image-20250620110247614](02.模拟器安装/image-20250620110247614.png)
- 启动成功界面
![image-20250620110822264](02.模拟器安装/image-20250620110822264.png)
- 浏览器访问自己虚拟机的IP地址默认用户名admin密码pnet
![image-20250620110955464](02.模拟器安装/image-20250620110955464.png)
- 登录成功后选择System中的System Setting
![image-20250620111057423](02.模拟器安装/image-20250620111057423.png)
- 点下图所示两个地方
![image-20250620111151095](02.模拟器安装/image-20250620111151095.png)
### 3.2 创建第一个实验
- 新建一个实验
![image-20250620111230888](02.模拟器安装/image-20250620111230888.png)
- 设置好实验名称
![image-20250620111303727](02.模拟器安装/image-20250620111303727.png)
- 右键选择node
![image-20250620111359433](02.模拟器安装/image-20250620111359433.png)
- 此处我们添加一台网络设备所以选择Cisco Device
![image-20250620111440775](02.模拟器安装/image-20250620111440775.png)
- 添加2台网络设备点击Save
![image-20250620111638363](02.模拟器安装/image-20250620111638363.png)
- 连线,当鼠标停在设备上的时候,会出现一个插头,点击拖拽到另一台设备上,就可以完成连线
![image-20250620111803358](02.模拟器安装/image-20250620111803358.png)
![image-20250620111814352](02.模拟器安装/image-20250620111814352.png)
![image-20250620111839578](02.模拟器安装/image-20250620111839578.png)
![image-20250620111849311](02.模拟器安装/image-20250620111849311.png)
- 启动设备鼠标框选需要启动的设备然后右键点击Start Selected
![image-20250620111906364](02.模拟器安装/image-20250620111906364.png)
![image-20250620111938183](02.模拟器安装/image-20250620111938183.png)
![image-20250620111952918](02.模拟器安装/image-20250620111952918.png)
- 打开设备配置界面,点击设备就可以打开,此处将两个设备都打开了,打开后可能是黑的,需要敲几个回车
![image-20250620112106993](02.模拟器安装/image-20250620112106993.png)
- 我们不需要初始化向导所以此处我们统一输入no然后回车
![image-20250620112223328](02.模拟器安装/image-20250620112223328.png)
- 输入命令尝试一下,此处命令是简写,所以看不懂,后面会教大家的,这里只是做个测试
```
=====分割线下面是R1设备上输入的命令=====
en
conf t
ho R1
int e0/0
ip add 192.168.12.1 255.255.255.0
no sh
end
wr
=====分割线下面是R2设备上输入的命令=====
en
conf t
ho R2
int e0/0
ip add 192.168.12.2 255.255.255.0
no sh
end
wr
```
![image-20250620112438861](02.模拟器安装/image-20250620112438861.png)
- 两台设备都输入完成之后,可以测试一下是不是可以`ping`
- 在R1上输入`ping 192.168.12.2`,如果出现如下的界面,说明一切正常
![image-20250620112615780](02.模拟器安装/image-20250620112615780.png)
## 4. 设备初始化配置
1. 首先跳过设置向导
```
--- System Configuration Dialog ---
Would you like to enter the initial configuration dialog? [yes/no]: no
Press RETURN to get started!
```
2. 从用户模式切换到特权模式(不然获得设备的完整权限)
```
Router>enable # 这边可以看到设备初始的名字是Router
Router# # 这边可以看到>变为#,意思是进入特权模式
```
3. 如果想修改设备名之类的全局属性,需要进入全局配置模式
```
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)# # 注意,()中表示的是当前的配置影响范围如果是config表示影响全局
```
4. 修改设备名
```
Router(config)#hostname R1 # 工作中设备名都是有意义的
R1(config)#
```
5. 关闭域名解析(推荐)
```
R1(config)#no ip domain lookup # 不关闭会导致命令错误的时候设备去尝试查找命令对应的IP
```
6. 配置IP地址
```
R1(config)#interface e0/0 # 进入e0/0接口的配置模式
R1(config-if)#ip address 192.168.12.1 255.255.255.0 # 注意括号变成了config-if表示影响范围是接口
R1(config-if)#no shutdown # 为了安全默认所有接口出厂都自带shutdown属性要删除这个命令就在前面加上no
```
7. 优化管理接口的配置
```
R1(config)#line console 0 # 进入控制台配置模式
R1(config-line)#exec-timeout 0 # 关闭控制台会话超时
R1(config-line)#logging synchronous # 输出同步,防止敲命令被打断
```
8. 给设备加上密码
```
R1(config)#enable password 密码 # 给特权模式加上密码
R1(config)#line console 0
R1(config-line)#password cisco # 设置控制台的密码
R1(config-line)#login # 启用密码校验
User Access Verification
Password: # 这边要输入控制台密码
R1>enable
Password: # 这边要输入特权模式密码
R1#
```
## 5. 命令行小技巧
### 5.1 命令提示
```
R1>en? # 紧贴着字母后面输入?,可以查看这个字母开头的可用命令
enable
R1>enable
R1#con? # 这边查询到当前有两个con开头的可用命令
configure connect
R1#configure ? # 如果在空格后面加上?,表示查询当前命令后面能加上什么参数,以及解释
confirm Confirm replacement of running-config with a new config
file
memory Configure from NV memory
network Configure from a TFTP network host
overwrite-network Overwrite NV memory from TFTP network host
replace Replace the running-config with a new config file
revert Parameters for reverting the configuration
terminal Configure from the terminal
<cr> # 如果出现<cr>,表示当前输入的命令已经可以直接执行了
```
### 5.2 自动补全
```
R1(config)#int # 在int后面加上tab键就可以自动补全后续字母
R1(config)#interface
R1#con # 由于con开头有两个可用命令所以存在歧义不可以补全
R1#con?
configure connect
```
### 5.3 命令简写
```
R1#conf t # 这个命令是configure terminal简写
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#ho R1 # 这个命令是hostname R1简写
R1(config)#int e0/0 # 这个命令是interface e0/0简写
R1(config-if)#ip add 192.168.12.1 255.255.255.0
R1(config-if)#no sh # 这个命令是no shutdown简写
```
### 5.4 错误提示
```
R1(config)#int
% Incomplete command. # 命令不完整,缺少参数
R1(config)#s
% Ambiguous command: "s" # 未知的命令,输入错误了
R1(config)#interfcaes e0/0
^
% Invalid input detected at '^' marker. # 箭头所指的位置出现错误
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

View File

@@ -0,0 +1,134 @@
# 03.路由原理
## 1. 路由原理
```mermaid
graph LR
A[路由器收到数据] --> B[查找路由表]
B-->C[存在匹配条目]
B-->D[不存在匹配条目]
C-->E[匹配条目中有没有出接口]
E-->F[存在出接口直接转发]
E-->G[不存在出接口,根据下一跳地址再次查找路由表]
D-->H[存在默认路由,就从默认路由标识的出口转发]
H-->G
D-->I[不存在默认路由,就丢弃]
```
```
R1#show ip route # 查看路由表
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
# 以上是路由表的提示信息,标识路由条目中出现的代码意思
Gateway of last resort is not set
# 上面这条是表示这个路由器没有默认的路由,当下面的条目与数据中目的地址一个也对不上的时候,就丢弃
# 如果有默认路由,当下面的条目与数据中目的地址一个也对不上的时候,就从默认的路由转发
192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks # 为了方便查看路由表会按照ABC类IP地址进行分类这个是分类的标题
C 192.168.12.0/24 is directly connected, Ethernet0/0 # 前面的C可以对照上面的codes,是直连的条目后面的意思可以直接从e0/0接口转发
L 192.168.12.1/32 is directly connected, Ethernet0/0
S 192.168.23.0/24 [1/0] via 192.168.12.2 # 前面的S表示静态后面并没有表示出接口只标识了下一跳IP地址这样就需要再次查找路由表称为递归查找
```
### 1.1 路由匹配条件
路由表中出现了`192.168.12.0/24`说明:
1. 数据的目的IP地址的二进制至少前24位要和`192.168.12.0`二进制前24位完全一致。
2. 这边的`/24`不一定和子网掩码是一样的,因为数据包中并不携带子网掩码信息。
### 1.2 路由匹配原则
### 1.3 最长匹配原则
```
R2#sh ip route
172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
S 172.16.0.0/16 [1/0] via 192.168.12.1
S 172.16.3.0/24 [1/0] via 192.168.23.3
192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.12.0/24 is directly connected, Ethernet0/0
L 192.168.12.2/32 is directly connected, Ethernet0/0
192.168.23.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.23.0/24 is directly connected, Ethernet0/1
L 192.168.23.2/32 is directly connected, Ethernet0/1
R2#ping 172.16.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/4/5 ms
R2#ping 172.16.3.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.3.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/3/6 ms
```
`ping 172.16.1.1`的时候由于只能与第3行的条目匹配所以数据发给了R1,最终能用通信
`ping 172.16.3.3`的时候由于第34行条目都匹配路由器会优选匹配最长的条目也就是第4行最终能通信
### 1.4 默认路由
当路由条目的匹配长度为0的时候那么所有的IP地址都是可以匹配的上的这个路由条目被称为缺省路由或者默认路由
```
R1(config)#ip route 0.0.0.0 0.0.0.0 192.168.12.2
R1#sh ip route
Gateway of last resort is 192.168.12.2 to network 0.0.0.0
S* 0.0.0.0/0 [1/0] via 192.168.12.2 # 默认路由在路由表中会带上*号
172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
C 172.16.1.0/24 is directly connected, Loopback0
L 172.16.1.1/32 is directly connected, Loopback0
192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.12.0/24 is directly connected, Ethernet0/0
L 192.168.12.1/32 is directly connected, Ethernet0/0
S 192.168.23.0/24 [1/0] via 192.168.12.2
R1#ping 172.16.3.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.3.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
```
`ping 172.16.3.3`的时候,可以和路由表中的默认路由匹配的上。
`ping 192.168.23.3`的时候根据最长匹配原则会和第11行匹配上
### 1.5 路由条目的来源
* 直连接口
* 必须要是双`up`状态,才能生效
* 静态路由
* 必须出接口或者下一跳IP地址有效
* 动态路由学习
* 通过各种路由协议,让路由器互相分享路由信息
## 2. 环回接口
环回接口是软件模拟出来的接口,用于测试,或者管理
环回接口正常情况下是不会`down`,只要操作系统可以正常开机,那么环回接口就可以正常`up`
一台设备往往可以启动很多很多环回接口,用于模拟网络
```
R1(config)#interface loopback 0
R1(config-if)#ip add 172.16.1.1 255.255.255.0
R1#show ip interface brief # 查看接口的IP地址和状态
Interface IP-Address OK? Method Status Protocol
Ethernet0/0 192.168.12.1 YES manual up up
Ethernet0/1 unassigned YES unset administratively down down
Ethernet0/2 unassigned YES unset administratively down down
Ethernet0/3 unassigned YES unset administratively down down
Loopback0 172.16.1.1 YES manual up up
```

View File

@@ -0,0 +1,399 @@
# 04.静态路由
## 1. 静态路由
- 在少量网段并且相对固定的时候可以使用静态路由
- 临时测试的时候
## 2. 实验
![image-20200308133101113](04.静态路由/image-20200308133101113.png)
### 2.1 配置IP地址
```
R1
en
conf t
int e0/0
ip add 192.168.12.1 255.255.255.0
no sh
end
============================
R2
en
conf t
int e0/0
ip add 192.168.12.2 255.255.255.0
no sh
int e0/1
ip add 192.168.23.2 255.255.255.0
no sh
end
=============================
R3
en
conf t
int e0/0
ip add 192.168.23.3 255.255.255.0
no sh
end
```
在R2上可以检查到R1或者R3的连通性确保IP地址配置正确
```
R2#ping 192.168.12.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.1, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/3/5 ms
R2#ping 192.168.23.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.23.3, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/1/2 ms
```
如果IP地址配置不正确出现了问题可以再每台设备上使用如下命令检查
```
R2#show ip int br
Interface IP-Address OK? Method Status Protocol
Ethernet0/0 192.168.12.2 YES manual up up
Ethernet0/1 192.168.23.2 YES manual up up
Ethernet0/2 unassigned YES unset administratively down down
Ethernet0/3 unassigned YES unset administratively down down
```
### 2.2 检查R1和R3的联通性
```
R1#ping 192.168.23.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.23.3, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
```
检查R1的路由表
```
R1#show ip route
192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.12.0/24 is directly connected, Ethernet0/0
L 192.168.12.1/32 is directly connected, Ethernet0/0
```
发现`192.168.23.3`没有匹配条目
在R1上加上静态路由告知R1如果想去往`192.168.23.0/24`需要从e0/0接口发出
```
R1(config)#ip route 192.168.23.0 255.255.255.0 e0/0
```
然而还是不通因为R3并没有返回`192.168.12.0/24`的路由导致R3只能收到R1的消息但是不能回复
```
R3(config)#ip route 192.168.12.0 255.255.255.0 e0/0
```
现在三台路由器都知道了`192.168.12.0/24``192.168.23.0/24`两个网段的去法
```
R1#ping 192.168.23.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.23.3, timeout is 2 seconds:
..!!!
Success rate is 60 percent (3/5), round-trip min/avg/max = 1/1/1 ms
```
### 2.3 ARP在这个过程中
通过检查R1的arp表我们可以发现`192.168.23.3`的arp结果和`192.168.12.2`的一样
```
R1#show arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.12.1 - aabb.cc00.1000 ARPA Ethernet0/0
Internet 192.168.12.2 5 aabb.cc00.2000 ARPA Ethernet0/0
Internet 192.168.23.3 0 aabb.cc00.2000 ARPA Ethernet0/0
```
上面这种情况是代理ARP产生的如果R1并不是去往R3而是作为局域网连接外网网关那么访问的目的地址可能无数个。这种情况下会导致ARP结果越来越多影响效率。
```
R1(config)#ip route 0.0.0.0 0.0.0.0 e0/0 # 在R1配置默认路由模拟R1的e0/0接口是外网
R1#ping 192.168.23.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.23.4, timeout is 2 seconds:
..
Success rate is 0 percent (0/2)
R1#show arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 123.123.123.123 0 aabb.cc00.2000 ARPA Ethernet0/0
Internet 192.168.12.1 - aabb.cc00.1000 ARPA Ethernet0/0
Internet 192.168.12.2 9 aabb.cc00.2000 ARPA Ethernet0/0
Internet 192.168.23.3 4 aabb.cc00.2000 ARPA Ethernet0/0
Internet 192.168.23.4 0 aabb.cc00.2000 ARPA Ethernet0/0
```
发现不管去往什么地址都会导致ARP表多出一条。
检查路由表
```
R1#show ip route
S* 0.0.0.0/0 is directly connected, Ethernet0/0 # 发现默认路由条目一次查找,就知道出口了
192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.12.0/24 is directly connected, Ethernet0/0
L 192.168.12.1/32 is directly connected, Ethernet0/0
S 192.168.23.0/24 is directly connected, Ethernet0/0
```
如果数据目的IP地址在路由表中直接能找到出接口就回直接封装然后转发如果没有MAC地址的记录就会触发ARP。
如果静态路由尝试用下一跳IP地址作为出站线索触发路由表递归查询
```
R1(config)#ip route 192.168.23.0 255.255.255.0 192.168.12.2
R1#sh ip route
192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.12.0/24 is directly connected, Ethernet0/0
L 192.168.12.1/32 is directly connected, Ethernet0/0
S 192.168.23.0/24 [1/0] via 192.168.12.2
R1#ping 192.168.23.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.23.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
R1#sh arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.12.1 - aabb.cc00.1000 ARPA Ethernet0/0
Internet 192.168.12.2 0 aabb.cc00.2000 ARPA Ethernet0/0
```
如果静态路由配置下一跳的IP地址作为出站线索那么就会触发路由表递归查找而最终不仅仅是找到了出口信息同时还找到了下一跳IP地址的MAC地址直接会被拿来作为数据链路层的目的MAC地址。
### 2.4 结论
在配置静态路由的时候尽量配置下一跳IP地址作为出口这样可以避免ARP表的增大。
## 3. 路由汇总
为了测试在R1上配置多个loopback接口用于模拟多个网段
```
R1#sh ip int br
Interface IP-Address OK? Method Status Protocol
Ethernet0/0 192.168.12.1 YES manual up up
Ethernet0/1 unassigned YES unset administratively down down
Ethernet0/2 unassigned YES unset administratively down down
Ethernet0/3 unassigned YES unset administratively down down
Loopback1 172.16.1.1 YES manual up up
Loopback2 172.16.2.1 YES manual up up
Loopback3 172.16.3.1 YES manual up up
```
这些地址配置的都是/24,但是我们发现前16位都是一样的那么R2上可以写如下的汇总静态路由
```
R2(config)#ip route 172.16.0.0 255.255.0.0 192.168.12.1
```
汇总路由可以精简路由条目,加快了查找效率
但是汇总路由也会导致明细的丢失,造成不必要的路由转发
## 4. 路由器的配置保存与查看
当上面的实验做完了,检查网络状态都可以,就可以保存配置了
```
R1#copy running-config startup-config # 把内存中的配置文件,保存到开机启动配置文件中
R1#write
```
在配置的时候,可以查看当前的配置文件
```
R1#show running-config # 然后按空格翻页按q退出
R1#show run int e0/0 # 查看接口e0/0下的配置
R1#show running-config | section ip route # 查看有ip route的那一行配置
```
正常情况下,`ping`,`show`,`write`等命令只能在特权模式下(#)或者用户模式下(>)使用,如果想在各种配置模式中使用这些命令,可以在命令前面加个`do`来调用
```
R1(config)#show ip route
^
% Invalid input detected at '^' marker.
R1(config)#do show ip route # 前面加do可以调用非配置模式下的命令
```
## 5. 管理距离
当路由器从不同的方式学到了同一条路由条目,由于路由器只能将最佳路由放在路由表中。所以会从多个可用条目中将最佳结果放入路由表。
路由器使用管理距离去评判路由获得方式优劣。
![image-20200308140846007](04.静态路由/image-20200308140846007.png)
注意上表是cisco设备的管理距离每个品牌都会有些不一样用的时候需要去查一下。
这个管理距离只是设备自己这么认为,无法影响其他设备,所以必要的时候,我们可以去修改,而不用担心全网的影响。越小越优。不优的不会出现在路由表中。
```
S 192.168.23.0/24 [1/0] via 192.168.12.2
# 这个条目中[1/0]里面1是管理距离是用来判断同一个路由的不同来源的优先级
R1#show ip route 192.168.23.0
Routing entry for 192.168.23.0/24
Known via "static", distance 1, metric 0 # 管理距离是1度量值是0
Routing Descriptor Blocks:
* 192.168.12.2
Route metric is 0, traffic share count is 1
```
## 6. 浮动静态路由
浮动静态路由是通过修改管理距离的方式,让静态路由可以做到控制路径,在发生故障的时候,也能切换。
两个路线都正常的情况下
![image-20200308142512045](04.静态路由/image-20200308142512045.png)
当下面的路线断开之后
![image-20200308142538843](04.静态路由/image-20200308142538843.png)
先配置IP地址
```
R1
int e0/0
ip add 192.168.12.1 255.255.255.0
no sh
==========================
R2
int e0/0
ip add 192.168.12.2 255.255.255.0
no sh
int e0/2
ip add 192.168.23.2 255.255.255.0
no sh
int e0/1
ip add 192.168.32.2 255.255.255.0
no sh
===========================
R3
int e0/0
ip add 192.168.34.3 255.255.255.0
no sh
int e0/2
ip add 192.168.23.3 255.255.255.0
no sh
int e0/1
ip add 192.168.32.3 255.255.255.0
no sh
==========================
R4
int e0/0
ip add 192.168.34.4 255.255.255.0
no sh
```
配置静态路由
```
R1(config)#ip route 0.0.0.0 0.0.0.0 192.168.12.2
==================================
R2(config)#ip route 192.168.34.0 255.255.255.0 192.168.23.3
R2(config)#ip route 192.168.34.0 255.255.255.0 192.168.32.3 2
===================================
R3(config)#ip route 192.168.12.0 255.255.255.0 192.168.23.2 2
R3(config)#ip route 192.168.12.0 255.255.255.0 192.168.32.2
==================================
R4(config)#ip route 0.0.0.0 0.0.0.0 192.168.34.3
```
检查在线路正常的时候访问的路径
```
R1#traceroute 192.168.34.4
Type escape sequence to abort.
Tracing the route to 192.168.34.4
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.12.2 1 msec 0 msec 1 msec
2 192.168.23.3 1 msec 1 msec 0 msec
3 192.168.34.4 1 msec * 1 msec
==========================
R4#traceroute 192.168.12.1
Type escape sequence to abort.
Tracing the route to 192.168.12.1
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.34.3 0 msec 1 msec 1 msec
2 192.168.32.2 0 msec 1 msec 1 msec
3 192.168.12.1 0 msec * 3 msec
```
下面关闭R2的e0/2口来模拟线路有一个损坏再次检查线路是否切换
```
R1#traceroute 192.168.34.4
Type escape sequence to abort.
Tracing the route to 192.168.34.4
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.12.2 5 msec 5 msec 5 msec
2 192.168.32.3 1 msec 5 msec 5 msec
3 192.168.34.4 1 msec * 1 msec
```
## 7. 负载均衡
当去往同一个路由条目有多个出口的时候,并且管理距离和度量值都是一样的,也就是说路由器分辨不出来哪个路径好坏。路由器会将这些路线全部加到路由表中,进行等价负载均衡。
```
R2(config)#ip route 100.0.0.0 255.0.0.0 192.168.12.1
R2(config)#ip route 100.0.0.0 255.0.0.0 192.168.23.3
R2(config)#do sh ip route
.........
S 100.0.0.0/8 [1/0] via 192.168.23.3
[1/0] via 192.168.12.1
........
```
比如100.0.0.0/8就有两个下一跳IP地址并且都是`[1/0]`所以全部加入了路由表在发数据的时候会将数据包一个IP地址发一个。可以通过如下命令查看下次往哪里走。
```
R2(config)#do sh ip route 100.0.0.0
Routing entry for 100.0.0.0/8
Known via "static", distance 1, metric 0
Routing Descriptor Blocks:
192.168.23.3
Route metric is 0, traffic share count is 1
* 192.168.12.1 # 前面的*表示下一个IP包将发到这个地址
Route metric is 0, traffic share count is 1
R2#ping 100.1.1.1 repeat 1
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 100.1.1.1, timeout is 2 seconds:
! # 100.1.1.1只有R1有所以这次通了
Success rate is 100 percent (1/1), round-trip min/avg/max = 2/2/2 ms
R2#show ip route 100.0.0.0
Routing entry for 100.0.0.0/8
Known via "static", distance 1, metric 0
Routing Descriptor Blocks:
* 192.168.23.3 # 由于192.168.12.1上次才发过数据包所以下次走192.168.23.3
Route metric is 0, traffic share count is 1 # 这个是线路共享比例等价负载均衡是1:1
192.168.12.1
Route metric is 0, traffic share count is 1
R2#ping 100.1.1.1 repeat 1
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 100.1.1.1, timeout is 2 seconds:
U # 100.1.1.1只有R1有所以这次不通
Success rate is 0 percent (0/1)
```
负载均衡在企业的应用中非常的广泛,可以用于提升链路的可靠性,提升链路的速率。

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,189 @@
# 05.ACL
## 1. ACL(access control list)
### 1.1 作用
- 对流量进行过滤
- 对路由条目进行过滤
### 1.2 类型
- 标准访问控制列表
- 扩展访问控制列表
### 1.3 标准访问控制列表
1. 只能对流量的源IP地址进行抓取
2. 只能对经过本设备的流量进行过滤,如果是本设备始发的流量,就无法限制
3. 一个访问控制列表可以写多个规则,流量按照顺序一条条匹配,如果匹配上了,就执行动作,不会继续匹配下去
4. 访问控制列表最后会隐含一条拒绝所有意思是如果有流量在这个ACL中一个条件都没匹配的上最终会被拒绝。
![image-20200308153117453](05.ACL/image-20200308153117453.png)
在上图中如果我们想拒绝R1的`192.168.12.1`去访问R3的`192.168.23.3`,那么我们可以这样设置
```
R2(config)#access-list 1 deny host 192.168.12.1
R2(config)#access-list 1 permit any # 我们针对性过滤源IP是192.168.12.1的,其他的放行
R2#show ip access-lists # 查看访问控制列表
Standard IP access list 1 # 访问控列表1里面的规则
10 deny 192.168.12.1 # 前面的10是顺序默认以10递增方便后续维护的时候插入规则
20 permit any
R2(config)#int e0/0
R2(config-if)#ip access-group 1 in # 必须在接口上调用这个ACL才能生效需要注意方向in
```
标准访问控制列表由于只能针对IP地址做的过滤所以越靠近源头影响网络可达性越大我们在真实使用的时候尽量靠近目的地。
注意,无法限制自己本身始发的流量。
### 1.4 扩展的访问控制列表
1. 只能对经过本设备的流量进行过滤,如果是本设备始发的流量,就无法限制
2. 可以针对源IP目的IP进行匹配和过滤并且还能识别不同的数据流量做针对性的过滤
3. 一个访问控制列表可以写多个规则,流量按照顺序一条条匹配,如果匹配上了,就执行动作,不会继续匹配下去
4. 访问控制列表最后会隐含一条拒绝所有意思是如果有流量在这个ACL中一个条件都没匹配的上最终会被拒绝。
![image-20200308155236805](05.ACL/image-20200308155236805.png)
想让R1无法实现`ping 192.168.23.3`但是又可以`telnet 192.168.23.3`
```
R2(config)#access-list 100 deny icmp host 192.168.12.1 host 192.168.23.3 echo
# 其中icmp部分是选择协议
# 其中host 192.168.12.1是源IP地址
# 其中host 192.168.23.3是目的IP地址
# 其中echo是icmp中的一种数据报文类型
R2(config)#access-list 100 permit ip any any
R2(config)#interface Ethernet0/0
R2(config-if)#ip access-group 100 in
```
因为扩展的访问控制列表可以精确的匹配源和目的IP地址所以我们在配置的时候尽量靠近源避免不必要的转发。
修改访问控制列表条目
```
R2(config)#ip access-list extended 100
R2(config-ext-nacl)#no 10 # 删除第10条规则
R2(config-ext-nacl)#10 deny tcp 192.168.12.0 0.0.0.255 host 192.168.23.3 eq telnet
R2#sh ip access-lists
Extended IP access list 100
10 deny tcp 192.168.12.0 0.0.0.255 host 192.168.23.3 eq telnet
20 permit ip any any (15 matches)
```
## 2. 配置设备远程访问
在目标主机上配置
```
line vty 0 4 # 开启虚拟控制台0~4
password cisco # 配置登录密码cisco
login # 开启密码校验
transport input telnet # 允许telnet协议
```
验证登录
```
R1#telnet 192.168.23.3
Trying 192.168.23.3 ... Open
User Access Verification
Password:
R3>
R3>
R3>q
[Connection to 192.168.23.3 closed by foreign host]
```
telnet是一种远程终端协议使用端口号23/tcp。
## 3. NAT( Network Address Translation )
## 4. 作用
- 可以让私有IP地址段的网络去访问公共网络
- 可以充当防火墙,保护内网的安全,因为公共网络无法直接访问内部的地址
- 解决地址冲突
- 发布内网的服务
- 负载均衡
## 5. PAT的配置
![image-20200308163941906](05.ACL/image-20200308163941906.png)
### 5.1 配置PC和路由器的IP地址
```
R1
int e0/0
ip add dhcp
no sh
int e0/1
ip add 192.168.1.1 255.255.255.0
no sh
==================================
R3
int e0/0
ip add 192.168.1.3 255.255.255.0
no sh
no ip routing # 关闭路由功能让路由器更好的冒充PC
===================================
R4
int e0/0
ip add 192.168.1.4 255.255.255.0
no sh
no ip routing
```
### 5.2 在网关路由器R1上配置pat
```
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat inside source list 1 interface Ethernet0/0 overload
interface Ethernet0/0
ip nat outside
interface Ethernet0/0
ip nat inside
```
### 5.3 测试
```
PC1#ping 149.129.69.210
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 149.129.69.210, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 54/256/1063 ms
PC2#ping 149.129.69.210
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 149.129.69.210, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 63/65/67 ms
```
### 5.4 查看R1网关上的NAT表
```
R1#show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 192.168.241.142:1 192.168.1.3:1 149.129.69.210:1 149.129.69.210:1
tcp 192.168.241.142:25695 192.168.1.3:25695 149.129.69.210:22 149.129.69.210:22
tcp 192.168.241.142:30610 192.168.1.3:30610 149.129.69.210:22 149.129.69.210:22
```
我们可以看到`192.168.1.3`最终被转换为`192.168.241.142`( 这个实验中的公网IP)
### 5.5 NAT带来的问题
如果内网搭建了服务,无法提供对外访问
- 端口映射
- 使用反向代理
- p2p隧道

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -0,0 +1,176 @@
# 06.NAT
## 1. NAT技术背景
![image-20200313173713144](06.NAT/image-20200313173713144.png)
- 私有IP地址的定义极大程度的缓解了IPv4地址紧缺的问题。
- 私有IP地址可以在本地局域网、私有网络内部随意使用但是这些地址在公网上是不可被路由的因此私有IP地址无法直接访问公网。
- NAT网络地址转换技术能够将数据包中的IP地址进行转换。
## 2. 私有IPv4地址空间
10.0.0.0 -10.255.255.255
172.16.0.0 -172.31.255.255
192.168.0.0 -192.168.255.255
## 3. NAT优缺点
| 优点 | 缺点 |
| :----------------------------------: | :-----------------------------------: |
| 节省IP地址空间 | 增加转发延迟 |
| 解决IP地址重叠问题 | 丧失端到端的寻址能力 |
| 增加网络的连入Internet的弹性 | 某些应用不支持NAT |
| 网络变更的时候减少IP重编址带来的麻烦 | 需要一定的内存空间支持动态存储NAT表项 |
| 对外隐藏内部地址,增加网络安全性 | 需要耗费一定CPU内存资源进行NAT操作 |
## 4. NAT术语
| 术语 | 英文 | 解释 |
| -------- | -------------- | ---------------- |
| 内部本地 | inside local | 转换之前源地址 |
| 外部本地 | outside local | 转换之前目的地址 |
| 内部全局 | inside global | 转换之后源地址 |
| 内部全局 | outside global | 转换之后目的地址 |
`inside`表示源地址,`outside`表示目的地址
`local`表示转换之前,`global`表示转换之后
![image-20200313174718881](06.NAT/image-20200313174718881.png)
## 5. 静态NAT
一对一映射为每个内部的地址指定一个公网IP地址。
这种方法主要用在内网中存在需要对公网提供服务的服务器的场景类似的例子有WEB服务器、邮件服务器、FTP服务器等
### 5.1 配置命令
```
Router(config)# ip nat inside source static local-ip global-ip
Router(config-if)# ip nat inside
Router(config-if)# ip nat outside
Router# show ip nat translations
```
![image-20200313175949235](06.NAT/image-20200313175949235.png)
上图所示R1作为服务器内部网络的路由器拥有公网IP地址`100.12.12.2`,如果想要发布内部的服务到公网那么需要进行如下配置。
```
int e0/0
ip nat outside
int e0/1
ip nat inside
ip nat inside source static 192.168.1.2 100.12.12.10
```
这样配置之后当pc访问`100.12.12.10`就相当于访问服务器,完全忽视掉路由器的存在。
不过这样做比较浪费IP地址因为一台服务器占用一整个IP地址如果服务器数量比较多这样就需要租用多个IP地址。
最好的做法是端口的一对一映射,这样的做法比较常见。
![image-20200313180907649](06.NAT/image-20200313180907649.png)
上图中两台服务器其实只需要一个端口号对外提供服务即可并不需要完整的使用一整个IP地址所以可以在R1上进行如下配置。
```
int e0/0
ip nat outside
int e0/1
ip nat inside
ip nat inside source static tcp 192.168.1.2 80 interface e0/0 80
ip nat inside source static tcp 192.168.1.3 8888 interface e0/0 8888
```
## 6. 基于地址池的源地址转换
定义一个IP地址池里面放了多个公网IP地址然后分配给内网需要上公网的主机用。
这样的做法个人认为比较土豪而且并与下面提到的PAT比起来并没有任何优势反而安全性有问题。容易暴露IP造成短时间内的不安全。
### 6.1 配置
```
Router(config)# ip nat pool namestart-ip end-ip {netmasknetmask|prefix-lengthprefix-length}
Router(config-if)# access-list acl-numpermit source[source-wildcard]
Router(config-if)# ip nat inside source list acl-numpool name
Router(config-if)# ip nat inside
Router(config-if)# ip nat outside
```
![image-20200313182205813](06.NAT/image-20200313182205813.png)
上图中内部网络的两台PC在访问服务器的时候会借用地址池里面的地址进行访问不过当地址池的地址小于内部主机地址数量的时候会出现后面发起访问的PC无法获取转换地址导致无法上网。
R1上的核心配置如下
```
ip nat pool natpool 100.12.12.100 100.12.12.102 netmask 255.255.255.0
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat inside source list 1 pool natpool
int e0/0
ip nat outside
int e0/1
ip nat inside
```
## 7. PAT
对数据包的源地址和端口均进行转换,通过这种转换,可以使多个内部本地地址同时共享同一个公网地址 。
这种NAT也是现在用的最多的无论是企业还是家庭网络因为成本的原因都是一个公网IP地址需要承担内部网络众多主机的转换需求。
![image-20200313182952513](06.NAT/image-20200313182952513.png)
观察PC1去访问服务器的时候地址的转换情况我们会发现源IP地址被路由器替换为出接口的IP地址并且端口号也有可能会被替换具体的看你需要的端口号是不是被占用。
当数据到达服务器之后服务器就可以对数据包的源IP地址进行回复了数据包回到路由器上之后路由器再对照之前的NAT转换记录将数据包发回`192.168.1.2:1234`,从而完成通信。
```
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat inside source list 1 interface e0/0 overload
int e0/0
ip nat outside
int e0/1
ip nat inside
```
## 8. TCP负载均衡
通过静态NAT部分的介绍我们知道路由器可以承担为路由器发布服务的功能当我们访问路由器IP的时候路由器可以帮助我们将请求转发到内部的服务器上。
我们可以将内部的服务相同用于冗余的服务器地址作为地址池这样当我们从外部访问路由器IP地址的时候路由器就可以将池中的服务器轮流作为回应的设备从而实现负载均衡减少单台服务器的压力。
![image-20200313183829721](06.NAT/image-20200313183829721.png)
如上图PC第一次访问`100.12.12.2`地址的时候,是`server1`进行回应。当PC第二次访问`100.12.12.2`的时候,是`server2`回应。
R1的关键配置如下:
```
access-list 1 permit 100.12.12.2 # 用于匹配目的IP地址
ip nat pool natpool 192.168.1.2 192.168.1.3 netmask 255.255.255.0 type rotary
# 这边设置的池类型是rotary,意思是旋转的,为了更好的看到实验效果
# 默认的池类型是match-host也就是同一个源IP地址始终是同一台服务器响应
ip nat inside destination list 1 pool natpool
```
## 9. NAT维护命令
清除所有动态NAT表项
```
Router# clear ip nat translation *
```
清除特定的NAT表项
```
Router# clear ip nat translation ?
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -0,0 +1,135 @@
# 07.DHCP
## 1. DHCP理论
DHCP (Dynamic Host configuration Protocol,动态主机配置协议 )
是一个局域网的网络协议使用UDP协议工作
主要有两个用途:
1. 用于内部网或网络服务供应商自动分配IP地址
2. 给用户用于内部网管理员作为对所有计算机作中央管理的手段。
功能简述它主要是通过客户端发送广播数据包给整个物理网段内的所有主机若局域网内有DHCP服务器时才会响应客户端的IP参数要求。
### 1.1 DHCP服务器的需求
1. 拥有真实物理网卡,或者连接广播域的真实物理网卡
2. 该接口或者该物理网卡必须有一个合理的ip地址 此IP地址最好手动配置
### 1.2 DHCP的服务端和客户端
服务端负责在所创建的地址池中向申请地址的客户端分发地址服务端口号67
客户端:接收地址 服务端口号68
![image-20200313193625915](07.DHCP/image-20200313193625915.png)
![image-20200313193642344](07.DHCP/image-20200313193642344.png)
### 1.3 DHCP欺骗攻击
![在这里插入图片描述](07.DHCP/20190326141113730_.png)
### 1.4 DHCP三种分配机制
| 分配方式 | 说明 |
| ------------------------------------ | ------------------------------------------------------------ |
| 自动分配方式Automatic Allocation | DHCP服务器为主机指定一个永久性的IP地址一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后就可以永久性的使用该地址。 |
| 动态分配方式Dynamic Allocation | DHCP服务器给主机指定一个具有时间限制的IP地址时间到期或主机明确表示放弃该地址时该地址可以被其他主机使用。 |
| 手工分配方式Manual Allocation | 客户端的IP地址是由网络管理员指定的DHCP服务器只是将指定的IP地址告诉客户端主机。 |
## 2. DHCP配置
```
Router(config)#server dhcp
# 开启DHCP服务
Router(config)#ip dhcp pool [pool name]
# 定义DHCP地址池一个网段对应一个地址池
Router(config-dhcp)#network [network address][subnet mask]
# 定义地址池关联的网段
Router(config-dhcp)#default-router [host address]
# 定义分配给客户端的网关IP
Router(config-dhcp)#lease <天数> <小时> <分钟>
Router(config-dhcp)#dns-server <主DNS服务器> <备DNS服务器>
Router(config)#ip dhcp excluded-address 172.16.1.100 172.16.1.103
# 将一个或多个地址排除在地址池之外如网关IP等以避免分配给客户端
Router#show ip dhcp binding
# 查看dhcp已经分配出去的地址
```
## 3. DHCP固定地址绑定
服务器或者固定在一个局域网的设备不需要用DHCP绑定直接在设备上设置固定IP地址更加靠谱。
当移动的电子设备或者只能DHCP获取地址的设备需要固定的IP的时候可以使用DHCP固定地址绑定。
### 3.1 步骤1
首先让设备自动获取IP地址从而获得设备的身份认证信息身份认证信息可能是下面的一种
- 客户端ID不同的设备都会有自己的生成方式但是都能保障局域网唯一。
- 硬件地址一般是MAC地址
- 用户名,一般不用
```
R2#show ip dhcp binding
Bindings from all pools not associated with VRF:
IP address Client-ID/ Lease expiration Type
Hardware address/
User name
192.168.23.100 0063.6973.636f.2d61. Mar 14 2020 05:32 AM Automatic
6162.622e.6363.3030.
2e33.3030.302d.4574.
302f.30
# 这边我们就得到了当前192.168.23.100的客户端ID
```
### 3.2 步骤2
设置一个DHCP地址池这个池里面就放一个IP地址然后绑定这个客户端ID
需要注意在绑定之前记得清空DHCP现有地址池
```
show ip dhcp binding # 查看DHCP的绑定情况得到设备的身份证明信息
clear ip dhcp binding * # 不清空对应的绑定项,可能导致无法绑定
ip dhcp pool <池的名字>
host <IP地址>
client-identifier <输入ID>
hardware-address <输入mac地址> # ID和MAC二选一
dns-server <主DNS> <备用DNS>
default-route <网关IP>
```
### 3.3 步骤3
去客户端上释放DHCP地址重新获得
```
shutdown
no shutdown
```
## 4. DHCP中继问题
在企业中经常会出现IP地址集中管控的需求而企业网段众多。比如一台域控制服务器需要管理多个局域网这个时候由于广播无法穿透路由器就需要用到DHCP中继。
![image-20200314114800844](07.DHCP/image-20200314114800844.png)
比如上图的情况每个部门有不同的网段但是最终需要被统一一台DHCP服务器分配因为这台DHCP服务器同时也是域控制器等等管理服务的服务器。
我们可以在每个网段的网关接口上配置`help-adderss`来将广播变为单播发送并且将收到的单播DHCP再变为广播发回局域网。从而完成DHCP中继。
```
ip helper-address 100.12.12.1 # 在每个内网的路由器接口上配置帮助地址
```
## 5. DHCP续租
DHCP分配的IP地址只要动态分配就有一个租约时间在Cisco路由器上这个时间默认是一天。可以手动修改。
![image-20200314134545655](07.DHCP/image-20200314134545655.png)
如果续租成功了,那么从续租那一刻起重新计算租约时间。

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

View File

@@ -0,0 +1,431 @@
# 08.RIP
## 1. 路由协议的分类
### 1.1 距离矢量
主要的特点:
是在更新消息的时候,发送的是自己的路由表条目,对方学习到之后,经过处理,放入自己的路由表。
等于每台路由器都把自己处理的结果让对方学习。
典型代表:
1. rip
2. eigrp
### 1.2 链路状态
主要的特点:
更新消息的时候,会发送自己链路的状态,比如带宽、网段等等信息,对方收到之后,需要经过计算,最终处理出路由表。
等于每台路由器都把自己接口的信息告诉对方,让对方自己判断路由是怎样的。
典型代表:
1. ospf
2. isis
## 2. RIP(routing information protocol)
### 2.1 实验拓扑
![image-20200314135810181](08.RIP/image-20200314135810181.png)
首先配置IP地址
```
```
配置RIP
```
R1
router rip
network 192.168.12.0
network 1.0.0.0
=============================
R2
router rip
network 192.168.12.0
network 2.0.0.0
network 192.168.23.0
============================
R3
router rip
network 192.168.23.0
network 3.0.0.0
network 192.168.34.0
===========================
R4
router rip
network 192.168.34.0
network 4.0.0.0
```
检查路由表中rip的条目确保学习到
```
R1#show ip route rip
R 2.0.0.0/8 [120/1] via 192.168.12.2, 00:00:14, Ethernet0/0
R 3.0.0.0/8 [120/2] via 192.168.12.2, 00:00:14, Ethernet0/0
R 4.0.0.0/8 [120/3] via 192.168.12.2, 00:00:14, Ethernet0/0
R 192.168.23.0/24 [120/1] via 192.168.12.2, 00:00:14, Ethernet0/0
R 192.168.34.0/24 [120/2] via 192.168.12.2, 00:00:14, Ethernet0/0
```
检查连通性
```
R1#ping 4.4.4.4 source 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/2 ms
```
### 2.2 RIPv1
#### 2.2.1 基本概念
- RIP的管理距离在cisco设备上是120
- RIP使用跳数(路由传递过程中经历的节点数量)来衡量路径好坏
- RIP使用UDP来携带更新消息UDP的源和目的端口号都是520
- RIP的更新消息中直接携带了路由条目和度量值
![image-20200314140810387](08.RIP/image-20200314140810387.png)
- RIPv1的更新数据内容中没有子网掩码所以RIPv1是不知道原始的子网掩码是多少只能根据ABC类IP地址来判断所以RIP是有类路由协议。
- RIP是周期性发送路由更新消息并且使用广播地址来发送。
- RIP每30秒发送更新消息接收方在收到消息之后会重置路由的计时器。
```
R1#show ip protocols
Routing Protocol is "rip"
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Sending updates every 30 seconds, next due in 13 seconds
Invalid after 180 seconds, hold down 180, flushed after 240
Redistributing: rip
Default version control: send version 1, receive any version
Interface Send Recv Triggered RIP Key-chain
Ethernet0/0 1 1 2 No none
Loopback0 1 1 2 No none
Automatic network summarization is in effect
Maximum path: 4
Routing for Networks:
1.0.0.0
192.168.12.0
Routing Information Sources:
Gateway Distance Last Update
192.168.12.2 120 00:00:15
Distance: (default is 120)
```
![image-20200314141743163](08.RIP/image-20200314141743163.png)
### 2.3 RIPv2
#### 2.3.1 和RIPv1的区别
- RIP是周期性发送路由更新消息并且使用组播地址(224.0.0.9)来发送。
- RIPv2的更新消息中比RIPv1多出来
- Route Tag给路由条目加上标记方便后期对条目进行管理。
- netmask子网掩码也就是RIPv2是无类路由协议可以根据子网掩码来学习路由
- next hop默认都是0也就是不携带意思是哪里学来的条目下一跳就指向谁
![image-20200314142323414](08.RIP/image-20200314142323414.png)
### 2.4 RIP路由汇总
#### 2.4.1 自动汇总
RIP默认开启自动汇总RIPv1不支持关闭
自动汇总会将VLSM的路由条目根据ABC类IP地址将路由匹配位数写成/8,/16,/24
我们在R1和R3上都创建一个loopback接口并且配置一个IP地址。
```
R1
int lo100
ip add 100.1.1.1 255.255.255.0
router rip
network 100.0.0.0
====================
R4
int lo100
ip add 100.4.4.4 255.255.255.0
router rip
network 100.0.0.0
```
观察R2和R3路由表中`100.0.0.0/8`的条目
```
R2#sh ip route rip
R 100.0.0.0/8 [120/1] via 192.168.12.1, 00:00:25, Ethernet0/0
=============================
R3#sh ip route rip
R 100.0.0.0/8 [120/1] via 192.168.34.4, 00:00:27, Ethernet0/1
```
观察路由器到达R1和R4的情况
```
R2#ping 100.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 100.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
R2#ping 100.4.4.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 100.4.4.4, timeout is 2 seconds:
U.U.U
Success rate is 0 percent (0/5)
```
虽然R2能够从R3和R1都收到`100.0.0.0/8`的条目,但是路由表只会使用最佳条目,对比度量值(在RIP中是跳数)发现R1传过来的是1R3传过来的是2所以路由表中关于`100.0.0.0/8`只有R1的方向。
关键的问题是在于RIP会自动将子网划分的条目去除子网比如`100.1.1.0/24`变成`100.0.0.0/8`这么做被称为路由自动汇总。我们一般将其关闭,不然在子网众多的网络中会出现上述问题。
由于子网划分需要子网掩码所以RIPv1不支持关闭自动汇总。
```
R1-4
router rip
no auto-summary # 关闭自动汇总只有v2支持
do clear ip route *
# RIP更新机制的原因导致路由发生变化更新极慢可以用这个命令快速刷新路由表
```
关闭了自动汇总以后RIPv2会根据接口配置的子网掩码来更新路由条目。这种条目被称为明细路由。
#### 2.4.2 手动汇总
只有RIPv2支持手动汇总在路由更新的出口方向配置可以对下游路由器造成影响。
注意,配置路由汇总的那台路由器,路由表中的明细路由不会受到影响。
在R1上配置三个lo接口然后我们在R2上进行汇总
```
R1
int lo1
ip add 172.16.1.1 255.255.255.0
int lo2
ip add 172.16.2.1 255.255.255.0
int lo3
ip add 172.16.3.1 255.255.255.0
router rip
network 172.16.0.0
======================================
R2
int e0/1
ip summary-address rip 172.16.0.0 255.255.0.0
```
然后观察路由更新下游的情况
```
R3
R3#sh ip route rip
R 172.16.0.0/16 [120/2] via 192.168.23.2, 00:00:03, Ethernet0/0
```
我们可以看到现在只有一条汇总路由
观察一下R2的路由表
```
R2#sh ip route rip
172.16.0.0/24 is subnetted, 3 subnets
R 172.16.1.0 [120/1] via 192.168.12.1, 00:00:06, Ethernet0/0
R 172.16.2.0 [120/1] via 192.168.12.1, 00:00:06, Ethernet0/0
R 172.16.3.0 [120/1] via 192.168.12.1, 00:00:06, Ethernet0/0
```
R2的路由表没有影响到明细路由
路由汇总,是将明细路由抑制向下游更新,并且产生一条新的汇总条目,然后更新出去。
#### 2.4.3 RIP的默认路由
如果R1是公司网络的出口R1还连接着运营商那么R1就有义务向所有的RIP路由器通告一条*的路由。
```
router rip
default-information originate
```
然后我们检查下游路由器的路由表
```
R2#sh ip route rip
Gateway of last resort is 192.168.12.1 to network 0.0.0.0
R* 0.0.0.0/0 [120/1] via 192.168.12.1, 00:00:01, Ethernet0/0
```
现在内网所有的路由器都知道了如果路由表中匹配不上的条目可以从R1走。
### 2.5 RIP的认证
只有RIPv2支持认证也就是在更新消息中加入认证信息。
在CISCO设备中可以使用`key chain`来提供认证的需要的密码。
```
key chain <钥匙环名字>
key <编号>
key-string <密码>
accept-lifetime <起始时间> <结束时间> # 能够被匹配的时间
send-lifetime <起始时间> <结束时间> # 发送的时间
```
RIPv2支持明文认证和密文认证
明文认证就是把密码明文的发送,这样很蠢,因为抓包能直接看到密码
在R1上配置认证
```
R1
key chain huawei
key 1
key-string cisco1
int e0/0
ip rip authentication mode text
ip rip authentication key-chain huawei
```
只配置R1的情况下我们在R2上调试RIP协议可以发现认证无效的警告
```
R2#debug ip rip events
*Mar 14 07:24:25.541: RIP: ignored v2 packet from 192.168.12.1 (invalid authentication)
```
在R2上配置好认证就可以正常的学习路由
抓包,发现明文密码。
![image-20200314153035435](08.RIP/image-20200314153035435.png)
更改为密文加密
![image-20200314153512307](08.RIP/image-20200314153512307.png)
### 2.6 RIP防环机制
#### 2.6.1 环路的产生
![image-20200314153744703](08.RIP/image-20200314153744703.png)
R3会将e0/1的网段更新给R2
![image-20200314153830761](08.RIP/image-20200314153830761.png)
R2收到了之后会更新给自己相邻的路由器然而R3直连接口是192.168.34.0管理距离是0所以R3不会接收R2的更新。
![image-20200314154014478](08.RIP/image-20200314154014478.png)
但是如果R3的e0/1接口损坏就回导致R3开始学习R2更新的192.168.34.0的条目
![image-20200314154123472](08.RIP/image-20200314154123472.png)
最终出现R3认为去往192.168.34.0/24需要走R2而R2认为需要走R3最终形成环路。
#### 2.6.2 防环机制1最大跳数
RIP使用跳数去衡量一个路线的好坏为了防止环路规定最大跳数是15跳。
一个路由条目最多传递15个节点这个也导致RIP无法用于大型网络。
##### 2.6.2.1 offset-list 偏移列表
可以用于修改距离矢量协议的度量值
我们在R2上修改1.1.1.0/24的跳数为13跳然后观察R3
```
R2(config)#access-list 1 permit 1.1.1.0
R2(config-if)#router rip
R2(config-router)#offset-list 1 out 13
====================================
R3#sh ip route rip
R 1.1.1.0 [120/15] via 192.168.23.2, 00:00:04, Ethernet0/0
```
由于在R3上已经达到15跳最大的跳数所以在R4的路由表中就学习不到`1.1.1.0`
```
R4#sh ip route rip
R* 0.0.0.0/0 [120/3] via 192.168.34.3, 00:00:01, Ethernet0/0
2.0.0.0/24 is subnetted, 1 subnets
R 2.2.2.0 [120/2] via 192.168.34.3, 00:00:01, Ethernet0/0
3.0.0.0/24 is subnetted, 1 subnets
R 3.3.3.0 [120/1] via 192.168.34.3, 00:00:01, Ethernet0/0
100.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
R 100.1.1.0/24 [120/3] via 192.168.34.3, 00:00:01, Ethernet0/0
R 172.16.0.0/16 [120/3] via 192.168.34.3, 00:00:01, Ethernet0/0
R 192.168.12.0/24 [120/2] via 192.168.34.3, 00:00:01, Ethernet0/0
R 192.168.23.0/24 [120/1] via 192.168.34.3, 00:00:01, Ethernet0/0
```
#### 2.6.3 防环机制2水平分割
路由器从某个接口学到的路由不会在发送回给邻居路由器,水平分割是默认开启的
比如R2给R3的更新中就不包含从R3那边收到的条目
![image-20200314155023560](08.RIP/image-20200314155023560.png)
#### 2.6.4 防环机制3 毒性反转
路由器从某个接口学到路由后将该路由的条数设置为16跳并从原接受接口发送回给邻居路由器
#### 2.6.5 防环机制4 路由毒化
当路由表中某个直连条目消失了会立马发送一个该路由条目的更新但是会将其跳数改成16跳来让相邻路由器快速删除这个条目。
![image-20200314155500891](08.RIP/image-20200314155500891.png)
#### 2.6.6 防环机制5 触发更新
当路由表发生变化的时候会立马的更新条目而不用等到30s周期的到来
#### 2.6.7 防环机制6 更新计时器
见基本概念里面的计时器相关内容
### 2.7 RIP被动接口
由于RIP的更新是周期性的这就导致RIP路由器之间的链路会不停收到广播或者组播。
![image-20200314160046640](08.RIP/image-20200314160046640.png)
像上图这种情况PC会不停的收到RIP发来的无用信息所以RIP出现被动接口功能。
开启了被动接口之后RIP不会主动发出任何的广播或者组播比如要手动指定邻居RIP才会以单播更新条目。
```
R1
router rip
passive-interface Ethernet0/0
neighbor 192.168.12.2
=================================
R1
router rip
passive-interface Ethernet0/0
neighbor 192.168.12.1
```
![image-20200314160558514](08.RIP/image-20200314160558514.png)
之后的RIP就会以单播开始更新
疑问RIP可以不直连传递路由条目么

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Some files were not shown because too many files have changed in this diff Show More