test01
@@ -1,439 +0,0 @@
|
|||||||
# 01.网络基础概念
|
|
||||||
|
|
||||||
## 1. 什么是网络
|
|
||||||
|
|
||||||
给各个节点之间提供信息交换的系统
|
|
||||||
|
|
||||||
两个节点之间连接一根网线组成了最简单的网络
|
|
||||||
|
|
||||||
## 2. 数据通信的类型
|
|
||||||
|
|
||||||
### 2.1 单播
|
|
||||||
|
|
||||||
一对一
|
|
||||||
|
|
||||||
### 2.2 广播
|
|
||||||
|
|
||||||
一对广播域内所有所有设备
|
|
||||||
|
|
||||||
如果是ffff.ffff.ffff的mac地址,表示是广播
|
|
||||||
|
|
||||||
如果IP的主机位全为1,表示广播
|
|
||||||
|
|
||||||
如果IP地址是255.255.255.255,表示在任何局域网,这个数据包都是广播
|
|
||||||
|
|
||||||
### 2.3 组播
|
|
||||||
|
|
||||||
一对所有感兴趣的组员
|
|
||||||
|
|
||||||
## 3. 集线器
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
将网线的铜介质直接连在一起,这样就可以多个设备之间传递信号。
|
|
||||||
|
|
||||||
集线器在收到一个数据之后,会发送给所有的出口。
|
|
||||||
|
|
||||||
不管广播,单播,组播,都是发给所有节点
|
|
||||||
|
|
||||||
### 3.1 优点
|
|
||||||
|
|
||||||
- 稳定性
|
|
||||||
- 便宜
|
|
||||||
|
|
||||||
### 3.2 缺点
|
|
||||||
|
|
||||||
- 不安全
|
|
||||||
- 无法提供中继
|
|
||||||
|
|
||||||
## 4. 交换机
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
交换机有操作系统,在收到数据之后会根据数据中的目的地址进行准确的转发。
|
|
||||||
|
|
||||||
单播会被准确的转发
|
|
||||||
|
|
||||||
广播、组播会被泛洪
|
|
||||||
|
|
||||||
一个交换机组成的网络,一般是一个局域网,大家可以直接互相访问
|
|
||||||
|
|
||||||
## 5. 路由器
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
路由器主要用于连接不同的网段,并且负责隔离广播域。
|
|
||||||
|
|
||||||
单播会被准确的转发
|
|
||||||
|
|
||||||
广播会被拒绝
|
|
||||||
|
|
||||||
组播会根据感兴趣组的注册信息,准确转发
|
|
||||||
|
|
||||||
## 6. 网络拓扑
|
|
||||||
|
|
||||||
- 逻辑拓扑
|
|
||||||
- 标注出主要节点的连线,忽略不重要设备
|
|
||||||
- 主要节点有可能是虚拟化的
|
|
||||||
|
|
||||||
- 物理拓扑
|
|
||||||
- 标注出物理设备的连线
|
|
||||||
- 主要用于弱点实施
|
|
||||||
|
|
||||||
## 7. OSI七层模型
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
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地址
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 9. 分析数据通信
|
|
||||||
|
|
||||||
1. 当我们开始访问一个地址的时候,由于并不知道怎么去往网关的MAC地址,所以使用arp协议发起广播查询MAC地址。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
2. PC查到了网关的MAC地址之后,就记录到自己的ARP表中
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
3. 然后将数据封装起来,封装的时候加上每一层的关键信息,比如源和目的端口,源和目的IP地址,源和目的MAC地址。这边要注意,由于我们要去往的目的地是`192.168.3.2`并不是同网段。所以需要借用网关的MAC地址。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
4. 数据从PC发出了之后被交换机收到了,交换机通过数据中Dst-MAC地址查找自己的`mac address table`知道应该从哪个接口离开。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
5. 路由器最终收到了这个数据,首先查看目的mac地址,发现是给自己,就解开数据链路层封装,查看网络层的Dst-IP地址,然后对比自己的路由表,查找目的地应该发出的接口
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
6. 路由器会在这个数据发出去之前,将自己出接口的MAC地址作为源MAC地址,将下一跳设备的MAC地址作为目的MAC地址,重新封装数据链路层,然后发出,后面的路由器收到了之后,重复5、6两步。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
7. 数据在这种不断的封装解封装数据链路层的过程中到达了目的地,最终web服务器收到了这个数据后,发现目的MAC地址,目的IP地址都是自己,并且目的80端口也有进程在监听,最终完成请求的过程。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 10. ARP(地址解析协议)
|
|
||||||
|
|
||||||
### 10.1 ARP地址解析协议
|
|
||||||
|
|
||||||
知道目的地的IP地址,请求MAC地址的协议
|
|
||||||
|
|
||||||
下面是请求的数据
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
下面是回复的数据
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
请求方拿到回答之后,会将结果记录在`arp表`中
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
在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回应
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 10.3 反向ARP
|
|
||||||
|
|
||||||
知道自己的MAC地址,但是不知道自己的IP,发起请求IP
|
|
||||||
|
|
||||||
类似的功能,还有一种协议:apipa
|
|
||||||
|
|
||||||
常用的场景:
|
|
||||||
|
|
||||||
- 无盘工作站
|
|
||||||
- PXE
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
------------------
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 11. DoD模型
|
|
||||||
|
|
||||||
也叫美国国防部模型,是各种面试喜欢问的模型,我们只要背住就行
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 12. 传输层
|
|
||||||
|
|
||||||
### 12.1 端口号
|
|
||||||
|
|
||||||
一个IP地址可以拥有65536个端口号用于区分不同的服务
|
|
||||||
|
|
||||||
一般我们认为1023之前的端口号是保留的,并且运行众所周知的服务,可以查看系统的service文件
|
|
||||||
|
|
||||||
在发起通信的时候,正常情况下,源端口号是随机端口号,目的端口号由协议确定
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 12.2 TCP
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
#### 12.2.1 TCP报文结构
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
#### 12.2.2 三次握手
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
三次握手会导致半开TCP的攻击行为
|
|
||||||
|
|
||||||
#### 12.2.3 四次挥手
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
#### 12.2.4 TCP有限状态机
|
|
||||||
|
|
||||||
http://aaronxu.eagleslab.com/index.php/archives/229.html
|
|
||||||
|
|
||||||
#### 12.2.5 序列号与确认号
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
在传递数据的时候,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(地址聚合)
|
|
||||||
|
|
||||||
实例:
|
|
||||||
|
|
||||||
> VLSM:192.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(地址转换)来实现上公网的功能。
|
|
||||||
|
|
Before Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 113 KiB |
Before Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 92 KiB |
Before Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 130 KiB |
Before Width: | Height: | Size: 57 KiB |
@@ -1,327 +0,0 @@
|
|||||||
# 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,请勿重复安装,如果需要升级版本,先正常卸载,然后再安装!
|
|
||||||
|
|
||||||
- 双击安装包
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 接收许可,点击下一步
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 如果需要修改安装目录,请选择一个空文件夹!
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 这两个√可以不需要
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 保持默认
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 开始安装
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 点击许可证
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 输入序列号`4C21U-2KK9Q-M8130-4V2QH-CF810`
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 完成安装
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 2.2 导入pnet虚拟机
|
|
||||||
|
|
||||||
- 先解压!先解压!
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 解压到一个空文件夹中,或者直接点击提取,然后再复制到对应的文件夹中
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 推荐在D盘中创建vm的文件夹,然后将解压后的pnet文件夹放进去
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 确保电脑中显示文件后缀名
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 双击pnet.vmx
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 选择vmware workstation,然后点击确定
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 导入完成
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 3. PNET环境使用
|
|
||||||
|
|
||||||
### 3.1 初始化权限
|
|
||||||
|
|
||||||
- 启动pnet虚拟机,点击开启此虚拟机
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 启动成功界面
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 浏览器访问自己虚拟机的IP地址,默认用户名admin,密码pnet
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 登录成功后,选择System中的System Setting
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 点下图所示两个地方
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 3.2 创建第一个实验
|
|
||||||
|
|
||||||
- 新建一个实验
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 设置好实验名称
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 右键选择node
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 此处我们添加一台网络设备,所以选择Cisco Device
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 添加2台网络设备,点击Save
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 连线,当鼠标停在设备上的时候,会出现一个插头,点击拖拽到另一台设备上,就可以完成连线
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 启动设备,鼠标框选需要启动的设备,然后右键,点击Start Selected
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 打开设备配置界面,点击设备就可以打开,此处将两个设备都打开了,打开后可能是黑的,需要敲几个回车
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 我们不需要初始化向导,所以此处我们统一输入no,然后回车
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 输入命令尝试一下,此处命令是简写,所以看不懂,后面会教大家的,这里只是做个测试
|
|
||||||
|
|
||||||
```
|
|
||||||
=====分割线:下面是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
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 两台设备都输入完成之后,可以测试一下是不是可以`ping` 通
|
|
||||||
|
|
||||||
- 在R1上输入`ping 192.168.12.2`,如果出现如下的界面,说明一切正常
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 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. # 箭头所指的位置出现错误
|
|
||||||
```
|
|
||||||
|
|
Before Width: | Height: | Size: 110 KiB |
Before Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 150 KiB |
Before Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 73 KiB |
Before Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 83 KiB |
Before Width: | Height: | Size: 92 KiB |
Before Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 643 KiB |
Before Width: | Height: | Size: 230 KiB |
Before Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 98 KiB |
Before Width: | Height: | Size: 98 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 113 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 267 KiB |
Before Width: | Height: | Size: 194 KiB |
Before Width: | Height: | Size: 164 KiB |
@@ -1,134 +0,0 @@
|
|||||||
# 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`的时候,由于第3,4行条目都匹配,路由器会优选匹配最长的条目,也就是第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
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@@ -1,399 +0,0 @@
|
|||||||
# 04.静态路由
|
|
||||||
|
|
||||||
## 1. 静态路由
|
|
||||||
|
|
||||||
- 在少量网段并且相对固定的时候可以使用静态路由
|
|
||||||
- 临时测试的时候
|
|
||||||
|
|
||||||
## 2. 实验
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 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. 管理距离
|
|
||||||
|
|
||||||
当路由器从不同的方式学到了同一条路由条目,由于路由器只能将最佳路由放在路由表中。所以会从多个可用条目中将最佳结果放入路由表。
|
|
||||||
|
|
||||||
路由器使用管理距离去评判路由获得方式优劣。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
注意!上表是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. 浮动静态路由
|
|
||||||
|
|
||||||
浮动静态路由是通过修改管理距离的方式,让静态路由可以做到控制路径,在发生故障的时候,也能切换。
|
|
||||||
|
|
||||||
两个路线都正常的情况下
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
当下面的路线断开之后
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
先配置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)
|
|
||||||
```
|
|
||||||
|
|
||||||
负载均衡在企业的应用中非常的广泛,可以用于提升链路的可靠性,提升链路的速率。
|
|
||||||
|
|
Before Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 83 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 14 KiB |
@@ -1,189 +0,0 @@
|
|||||||
# 05.ACL
|
|
||||||
|
|
||||||
## 1. ACL(access control list)
|
|
||||||
|
|
||||||
### 1.1 作用
|
|
||||||
|
|
||||||
- 对流量进行过滤
|
|
||||||
- 对路由条目进行过滤
|
|
||||||
|
|
||||||
### 1.2 类型
|
|
||||||
|
|
||||||
- 标准访问控制列表
|
|
||||||
- 扩展访问控制列表
|
|
||||||
|
|
||||||
### 1.3 标准访问控制列表
|
|
||||||
|
|
||||||
1. 只能对流量的源IP地址进行抓取
|
|
||||||
2. 只能对经过本设备的流量进行过滤,如果是本设备始发的流量,就无法限制
|
|
||||||
3. 一个访问控制列表可以写多个规则,流量按照顺序一条条匹配,如果匹配上了,就执行动作,不会继续匹配下去
|
|
||||||
4. 访问控制列表最后会隐含一条拒绝所有,意思是,如果有流量在这个ACL中一个条件都没匹配的上,最终会被拒绝。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
在上图中,如果我们想拒绝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中一个条件都没匹配的上,最终会被拒绝。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
想让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的配置
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 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隧道
|
|
||||||
|
|
Before Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 7.0 KiB |
Before Width: | Height: | Size: 21 KiB |
@@ -1,176 +0,0 @@
|
|||||||
# 06.NAT
|
|
||||||
|
|
||||||
## 1. NAT技术背景
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 私有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`表示转换之后
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 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
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
上图所示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地址。
|
|
||||||
|
|
||||||
最好的做法是端口的一对一映射,这样的做法比较常见。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
上图中,两台服务器其实只需要一个端口号对外提供服务即可,并不需要完整的使用一整个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
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
上图中,内部网络的两台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地址需要承担内部网络众多主机的转换需求。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
观察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地址的时候,路由器就可以将池中的服务器轮流作为回应的设备,从而实现负载均衡,减少单台服务器的压力。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
如上图,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 ?
|
|
||||||
```
|
|
||||||
|
|
Before Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 46 KiB |
@@ -1,135 +0,0 @@
|
|||||||
# 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
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 1.3 DHCP欺骗攻击
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 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中继。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
比如上图的情况,每个部门有不同的网段,但是最终需要被统一一台DHCP服务器分配,因为这台DHCP服务器同时也是域控制器等等管理服务的服务器。
|
|
||||||
|
|
||||||
我们可以在每个网段的网关接口上配置`help-adderss`来将广播变为单播发送,并且将收到的单播DHCP再变为广播发回局域网。从而完成DHCP中继。
|
|
||||||
|
|
||||||
```
|
|
||||||
ip helper-address 100.12.12.1 # 在每个内网的路由器接口上配置帮助地址
|
|
||||||
```
|
|
||||||
|
|
||||||
## 5. DHCP续租
|
|
||||||
|
|
||||||
DHCP分配的IP地址,只要动态分配就有一个租约时间,在Cisco路由器上这个时间默认是一天。可以手动修改。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
如果续租成功了,那么从续租那一刻起重新计算租约时间。
|
|
Before Width: | Height: | Size: 190 KiB |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 164 KiB |
Before Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 59 KiB |
@@ -1,431 +0,0 @@
|
|||||||
# 08.RIP
|
|
||||||
|
|
||||||
## 1. 路由协议的分类
|
|
||||||
|
|
||||||
### 1.1 距离矢量
|
|
||||||
|
|
||||||
主要的特点:
|
|
||||||
|
|
||||||
是在更新消息的时候,发送的是自己的路由表条目,对方学习到之后,经过处理,放入自己的路由表。
|
|
||||||
|
|
||||||
等于每台路由器都把自己处理的结果让对方学习。
|
|
||||||
|
|
||||||
典型代表:
|
|
||||||
|
|
||||||
1. rip
|
|
||||||
2. eigrp
|
|
||||||
|
|
||||||
### 1.2 链路状态
|
|
||||||
|
|
||||||
主要的特点:
|
|
||||||
|
|
||||||
更新消息的时候,会发送自己链路的状态,比如带宽、网段等等信息,对方收到之后,需要经过计算,最终处理出路由表。
|
|
||||||
|
|
||||||
等于每台路由器都把自己接口的信息告诉对方,让对方自己判断路由是怎样的。
|
|
||||||
|
|
||||||
典型代表:
|
|
||||||
|
|
||||||
1. ospf
|
|
||||||
2. isis
|
|
||||||
|
|
||||||
## 2. RIP(routing information protocol)
|
|
||||||
|
|
||||||
### 2.1 实验拓扑
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
首先配置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的更新消息中直接携带了路由条目和度量值
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 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)
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 2.3 RIPv2
|
|
||||||
|
|
||||||
#### 2.3.1 和RIPv1的区别
|
|
||||||
|
|
||||||
- RIP是周期性发送路由更新消息,并且使用组播地址(224.0.0.9)来发送。
|
|
||||||
- RIPv2的更新消息中比RIPv1多出来:
|
|
||||||
- Route Tag:给路由条目加上标记,方便后期对条目进行管理。
|
|
||||||
- netmask:子网掩码,也就是RIPv2是无类路由协议,可以根据子网掩码来学习路由
|
|
||||||
- next hop:默认都是0,也就是不携带,意思是哪里学来的条目,下一跳就指向谁
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 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传过来的是1,R3传过来的是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上配置好认证,就可以正常的学习路由
|
|
||||||
|
|
||||||
抓包,发现明文密码。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
更改为密文加密
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 2.6 RIP防环机制
|
|
||||||
|
|
||||||
#### 2.6.1 环路的产生
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
R3会将e0/1的网段更新给R2
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
R2收到了之后,会更新给自己相邻的路由器,然而R3直连接口是192.168.34.0管理距离是0,所以R3不会接收R2的更新。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
但是如果R3的e0/1接口损坏,就回导致R3开始学习R2更新的192.168.34.0的条目
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
最终出现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那边收到的条目
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
#### 2.6.4 防环机制3: 毒性反转
|
|
||||||
|
|
||||||
路由器从某个接口学到路由后,将该路由的条数设置为16跳并从原接受接口发送回给邻居路由器
|
|
||||||
|
|
||||||
#### 2.6.5 防环机制4: 路由毒化
|
|
||||||
|
|
||||||
当路由表中某个直连条目消失了,会立马发送一个该路由条目的更新,但是会将其跳数改成16跳,来让相邻路由器快速删除这个条目。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
#### 2.6.6 防环机制5: 触发更新
|
|
||||||
|
|
||||||
当路由表发生变化的时候,会立马的更新条目,而不用等到30s周期的到来
|
|
||||||
|
|
||||||
#### 2.6.7 防环机制6: 更新计时器
|
|
||||||
|
|
||||||
见基本概念里面的计时器相关内容
|
|
||||||
|
|
||||||
### 2.7 RIP被动接口
|
|
||||||
|
|
||||||
由于RIP的更新是周期性的,这就导致RIP路由器之间的链路会不停收到广播或者组播。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
像上图这种情况,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
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
之后的RIP就会以单播开始更新
|
|
||||||
|
|
||||||
疑问:RIP可以不直连传递路由条目么?
|
|
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 9.1 KiB |
Before Width: | Height: | Size: 9.4 KiB |