网络
七层网络模型
物理层 数据链路层 网络层 传输层 会话层 表示层 应用层
物理层定义了一系列传输介质的电气标准,这个是弱电工程师关心的
数据链路层 封装成帧、差别检错、透明传输 MAC地址 通过CRC循环冗余校验生成校验码,放在数据包最后的FCS,用来保证数据正确
网络层 路由,寻址功能 TCP UDP
传输层 端对端的连接 判断这个数据是什么业务 源目的端口号范围是1-65535
在电脑上的c:\windows\system32\dreivers\etc\service文件中保存着windows主 动访问其他主机时候默认使用的端口号
http 80/tcp
ftp 20/tcp 21/tcp
mstsc 3389/tcp 3389udp
dns 54/tcp 53/udp
telnet 23/tcp
ssh 22/tcp
应用层 产生用户数据,为用户提供用户交互的接口
IP地址
是32位二进制,点分十进制
-
ip地址网络位
- IP地址网络位表示一样是同一个局域网的
- 局域网是多台设备组成,可以直接不受控制的访问
- 正常情况下,一家公司为了安全、财务、研发、it、业务等部门之间相互隔离或者受控
-
ip地址主机位
- 在网络位相同的情况下(也就是一个局域网),主机位不能重复
- 主机位是为了帮助局域网内的设备相互之间进行更高层的通信封装使用
-
网络类型
- A:1.0.0.0~126.255.255.255/8
- 127开头的作为本地的测试地址
- A类地址的局域网可以存在2^24-2个主机
- B:128.0.0.0~191.255.255.255/16
- B类地址的局域网可以存在2^16-2个主机
- C:192.0.0.0~223.255.255.255/24
- C类地址的局域网可以存在2^8-2个主机
- D组播没有网络位概念 E用不到
- A:1.0.0.0~126.255.255.255/8
私有IP地址
私有ip地址 | 地址范围 |
---|---|
10.0.0.0/8 | 10.0.0.0到10.255.255.255 |
172.16.0.0/12 | 172.16.0.0到172.31.255.255 |
192.168.0.0/16 | 192.168.0.0到192.168.255.255 |
子网掩码(Netmask)
- 网络掩码与IP地址搭配使用,用于描述一个IP地址中的网络部分及主机部分
- 网络掩码32bits,与32bits的IP地址一一对应,掩码中为1的位对应IP地址中的网络位,掩码中为0 的位对应IP地址中的主机位
TCP/UDP
1-65535
- tcp全称传输控制协议,传输层用来保障数据的可靠传输,并且携带基本的端口号
- 可靠的协议,可以知道数据丢失和差错的信息
三次握手四次挥手
- udp全称用户数据报文协议,只携带了基本的端口号
- 尽力而为的协议,无法获知数据的接受情况
静态路由
- 特点
- 需要通过手工的方式进行添加及维护;
- 适用于组网规模较小的场景,如果网络规模较大,则配置及维护的成本就会很高;
- 无法根据拓扑的变化进行动态的响应(各厂商开发了扩展特性,以便弥补静态路由在这点上的 不足);
- 在大型的网络中,往往采用动、静态路由结合的方式进行部署。 配置方式
R1(config)# ip route network-address subnet-mask {ip-add | exit-interface}
环回接口
- Loopback接口,也叫环回口,是一个逻辑的、虚拟的接口;
- 使用全局配置命令interface loopback 加上接口编号可创建一个Loopback接口,创建完成后即可 为接口配置IP地址;
- Loopback接口在手工创建后,除非人为shutdown,否则不会DOWN掉;
- Loopback接口常用于:
- 模拟路由器的直连网段,可用于测试;
- 可用于设备管理(Loopback接口比较稳定);
- 供其他协议使用,例如OSPF、BGP、MPLS等;
- SNMPTraps消息的源地址;
- 其他用途(Loopback接口的用途十分广泛)。
缺省路由(默认路由)
ip route 0.0.0.0 0.0.0.0 [IP|INT] # 出接口的地址
DHCP原理
DHCP:动态主机设置协议(Dynamic Host Configuration Protocol)是一个局域网的网络协议,使用 UDP协议 工作,主要有两个用途:用于内部网或网络服务供应商自动分配IP地址;给用户用于内部网管 理员作为对所有计算 机作中央管理的手段。
DHCP相关概念
- DHCP客户端:获取网络配置参数
- DHCP服务端:提供网络配置参数(IP地址,默认网关,租约相关信息等)
- DHCP中继代理:服务端和客户端之间转发DHCP的设备(主机或者路由器)
- 作用域:一个网络中的所有可分配IP地址的连续范围,主要用来定义物理子网的单一IP地址范围, 例如192.168.0.0-192.168.255.255
- 超级作用域:一组作用域的集合,实现一个物理子网中多个逻辑IP地址。
- 排除范围:排除作用域内有限的IP地址序列(不使用DHCP服务)192.168.0.100-192.168.0.200 地址池:定义作用域+排除范围后,剩余的地址将形成可用地址池
- 保留:DHCP服务器提供永久地址租约,确保客户端始终使用相同的IP地址
- 租用:客户从服务器上获得并临时占用某IP地址的过程
- 租约: 获得的IP地址的使用时间 获得IP地址时租约被激活并更新其地址租约;当租约到期或者被删除时租约停止
================R1 配置dhcp服务端==============
R1#conf t
R1(config)#int e0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#ip dhcp pool cisco # 创建一个地址池
R1(dhcp-config)#network 192.168.1.0 /24 # 在地址池中放一个网段
R1(dhcp-config)#default-router 192.168.1.1 # 设置默认网关
R1(dhcp-config)#dns-server 114.114.114.114 114.114.115.115 # 设置主备DNS
R1(dhcp-config)#lease 1 # 租约时间改为1天
R1(dhcp-config)#exit
R1(config)#ip dhcp excluded-address 192.168.1.1 # 设置排除地址
================R2 R3 配置dhcp客户端==============
R3#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R3(config)#int e0/0
R3(config-if)#ip add dhcp
R3(config-if)#no sh
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#int e0/0
R2(config-if)#ip add dhcp
R2(config-if)#no sh
在路由器上查看地址池分配的情况
R1#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.1.2 010c.18a5.e949.00 Jun 17 2020 09:04 AM Automatic
192.168.1.3 010c.18a5.fca9.00 Jun 17 2020 09:05 AM Automatic
DHCP工作过程
- Discover 消息是用于客户端向整个内网发送广播,期待DHCP服务器进行回应
- 这个数据包中的重要内容就是:消息类型,客户端ID,主机名,请求获得的信息
- Offer 消息是DHCP服务器对客户的回应
- 这个消息中会回复对方所需要的所有信息
- Request 这个是客户端确认DHCP服务器的消息
- 这个消息和第一个消息差不多,但是消息类别变为 Request ,并且会携带请求的IP地址
- ACK DHCP服务器给客户端的最终确认
- 这个消息和第二个消息差不多,但是消息类型变为 ACK
DNS域名系统
DNS(Domain Name System) 是一套从域名到IP的映射系统。
最初时候人们把主机名和IP地址的对应关系都写在一个hosts文件里面,然后这个hosts文件由“互联网信 息中心(SRI-NIC)”来管理和分发。也就是人们需要定期更新hosts文件。这个文件目前在windows系统 的 C:\Windows\System32\drivers\etc\hosts 中。
域名
- .:根域名
- com: 一级域名,表示这是一个企业域名。同级的还有 “net”(网络提供商),“org”(非盈利组织) 等。
- baidu: 二级域名, 公司名。
- www: 只是一种习惯用法,并不是每个域名都支持。
- http:// : 要使用什么协议来连接这个主机名。
域名解析的过程
1. 浏览器缓存
2. 系统缓存,查找hosts文件
3. 路由器缓存————————以上三步均为DNS客户端的缓存!!
4. ISP DNS缓存
5. 根域名服务器
6. 顶级域名服务器
7. 主机名服务器
8. 保存结果至缓存
DNS查询类型
本地解析:过以前查询获得的缓存信息就地应答查询
递归查询:DNS服务器代表请求客户机联系其他DNS服务器,以完全解析,返回给客户机
迭代查询:客户机自己不断请求DNS服务来解析名称,典型的DNS服务器之间的交互
1. 浏览器发起域名解析,首先查询浏览器缓存,如果没有,就查询hosts文件,如果没有就提出域名
解析请求
2. 客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
3. 当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接
把查询的结果返回。
4. 如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务
器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。
5. 本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没
有该纪录,则返回相关的下级的域名服务器的地址。
6. 重复第四步,直到找到正确的纪录。
7. 本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机
查看域名解析的工具
nslookup
dig
需求
-
R1提供dns服务端功能,添加一条解析记录,将www.r3解析成192.168.13.3
-
将R2的dns服务器地址指向1.1.1.1
-
最终实现在R2上ping www.r3能够ping通
# 第一步,配置ip地址,R1上记得配置一个环回接口地址1.1.1.1,略
# 第二步,在R1上配置dns并开启dns解析功能
R1(config)#ip dns server
R1(config)#ip host www.r3 192.168.13.3
R1(config)#ip name-server 1.1.1.1
R1(config)#ip domain lookup
# 第三步,在R2上指定dns服务器地址为1.1.1.1
R2(config)#ip name-server 1.1.1.1
R2(config)#ip domain lookup
# 第四步,在R2,R3上添加默认路由指向R1
R2(config)#ip route 0.0.0.0 0.0.0.0 192.168.12.1
R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.13.1
# 第五步,验证
R2#ping www.r3
Translating "www.r3"...domain server (1.1.1.1) [OK]
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.13.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
实验
配置地址
R1(config)#int e0/0
R1(config-if)#ip add 192.168.12.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int e0/1
R1(config-if)#ip add 192
*Feb 1 07:28:01.664: %LINK-3-UPDOWN: Interface Ethernet0/0, changed state
to up
*Feb 1 07:28:02.670: %LINEPROTO-5-UPDOWN: Line protocol on Interface
Ethernet0/0, changed state to up.
R1(config-if)#ip add 192.168.13.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int lo0
R1(config-if)#ip add
*Feb 1 07:28:12.133: %LINK-3-UPDOWN: Interface Ethernet0/1, changed state
to up
R1(config-if)#ip add 1.1.1.1
*Feb 1 07:28:13.082: %LINEPROTO-5-UPDOWN: Line protocol on Interface
Loopback0, changed state to up
*Feb 1 07:28:13.139: %LINEPROTO-5-UPDOWN: Line protocol on Interface
Ethernet0/1, changed state to up
R1(config-if)#ip add 1.1.1.1 255.255.255.0
R2(config)#int e0/0
R2(config-if)#ip add dhcp
R2(config-if)#no sh
R3(config)#int e0/0
R3(config-if)#ip add 192.168.13.3 255.255.255.0
R3(config-if)#no sh
配置dns服务端
R1(config)#ip dns server
R1(config)#ip host www.r3 192.168.13.3
R1(config)#ip name-server 1.1.1.1
R1(config)#ip domain lookup
R1(config)#do ping www.r3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.13.3, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/4/6 ms
R1(config)#
配置dhcp
R1(config)#ip dhcp pool cisco
R1(dhcp-config)#network 192.168.12.0 /24
R1(dhcp-config)#default-router 192.168.12.1
R1(dhcp-config)#dns-server 1.1.1.1
R1(config)#ip dhcp exclude 192.168.12.1
在R3上添加一条默认路由
R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.13.1
在R2上开启dns解析功能,并验证
R2(config)#ip domain lookup
R2(config)#do ping www.r3
Translating "www.r3"...domain server (1.1.1.1) [OK]
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.13.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
NAT(Network Address Translation)
私有IP地址无法做到互联网通信,在内网之中就需要一个默认网关来代替大家请求互联网数据
NAT网络地址转换技术能够将数据包中的IP地址进行转换
术语
内部本地 inside local 转换之前源地址
外部本地 outside local 转换之前目的地址
内部全局 inside global 转换之后源地址
外部全局 outside global 转换之后目的地址
静态NAT
- 一对一映射,为每个内部的地址指定一个公网IP地址
- 这种方法主要用在内网中存在需要对公网提供服务的服务器的场景,类似的例子有WEB服务器、邮 件服务器、FTP服务器等
地址配置
R1(config)#int e0/0
R1(config-if)#ip add 192.168.13.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int e0/1
R1(config-if)#ip add 100.12.12.1 255.255.255.0
R1(config-if)#no sh
R2(config)#int e0/0
R2(config-if)#ip add 100.12.12.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#int lo0
R2(config-if)#ip add 2.2.2.2 255.255.255.0
R3(config)#int e0/0
R3(config-if)#ip add 192.168.13.3 255.255.255.0
R3(config-if)#no sh
在R1,R3上添加一条默认路由指向运营商
R1(config)#ip route 0.0.0.0 0.0.0.0 100.12.12.2
R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.13.1
在R1 上做静态nat转换,我们找运营商获得一个全新的公网IP地址,假设是 100.12.12.3 ,然后将 其对应的分配给 192.168.13.3 ,那么R3在上网的时候就可以用公网IP地址对外了
R1(config)#int e0/0
R1(config-if)#ip nat inside
R1(config-if)#int e0/1
R1(config-if)#ip nat outside
R1(config-if)#exit
R1(config)#ip nat inside source static 192.168.13.3 100.12.12.3
在R3上验证上外网
R3#ping 2.2.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/1/2 ms
show ip nat translation 可以查看nat解析记录
PAT(端口地址转换)
- 正常情况下我们家用宽带,或者仅仅只是有上网需求的情况下,没必要为每个设备都申请一个公网 IP(也做不到)
- 在数据通信的时候只是需要一个端口号用于接收和发送数据即可,而一个IP地址可以有65535个端 口号,所以将端口号轮流着分配给内网设备即可
配置ip地址
R1(config)#int e0/0
R1(config-if)#ip add 192.168.123.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int e0/1
R1(config-if)#ip add
R1(config-if)#ip add 100.12.12.1 255.255.255.0
R1(config-if)#no sh
R2(config)#int e0/0
R2(config-if)#ip add 100.12.12.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#int lo0
R2(config-if)#ip add 2.2.2.2 255.255.255.0
R3(config)#int e0/0
R3(config-if)#ip add 192.168.123.3 255.255.255.0
R3(config-if)#no sh
R4(config)#int e0/0
R4(config-if)#ip add 192.168.123.4 255.255.255.0
R4(config-if)#no sh
给R1,R3,R4添加默认路由
R1(config)#ip route 0.0.0.0 0.0.0.0 100.12.12.2
R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.123.1
R4(config)#ip route 0.0.0.0 0.0.0.0 192.168.123.1
在R1上进行配置pat
R1(config)#int e0/0
R1(config-if)#ip nat inside
R1(config-if)#int e0/1
R1(config-if)#ip nat outside
R1(config-if)#exit
R1(config)#access-list 1 permit 192.168.123.0 /24
R1(config)#ip nat inside source list 1 interface e0/1 overload
查看nat映射关系
R1#sh ip nat tr
Pro Inside global Inside local Outside local Outside global
icmp 100.12.12.1:0 192.168.123.3:0 2.2.2.2:0 2.2.2.2:0
icmp 100.12.12.1:1 192.168.123.4:0 2.2.2.2:0 2.2.2.2:1
端口映射
- NAT会导致只能内网主动访问外网,而互联网没法主动访问内部网络,这样虽然保护了内部网络, 但是却丢失了端到端通信的过程
- 端口映射可以将公网IP地址的端口对应到内网某个IP的端口号,从而让内网的设备也可以对外发布 服务
- 端口映射可以让内网多个IP地址共用一个公网IP,可以节约很多成本
配置ip地址
R1(config)#int e0/0
R1(config-if)#ip add 192.168.12.1 255.255.255.0
R1(config-if)#no sh
R2(config)#int e0/0
R2(config-if)#ip add 192.168.12.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#int e0/1
R2(config-if)#ip add 100.23.23.2 255.255.255.0
R2(config-if)#no sh
R3(config)#int e0/0
R3(config-if)#ip add 100.23.23.3 255.255.255.0
R3(config-if)#no sh
在R1,R2上添加默认路由
R1(config)#ip route 0.0.0.0 0.0.0.0 192.168.12.2
R2(config)#ip route 0.0.0.0 0.0.0.0 100.23.23.3
做端口映射
R2(config)#int e0/0
R2(config-if)#ip nat inside
R2(config-if)#int e0/1
R2(config-if)#ip nat outside
R2(config-if)#ip nat inside source static tcp 192.168.12.1 23 interface Ethernet0/1 23
开启R1 的telnet服务
R1(config)# line vty 0 4
R1(config)# pass cisco
R1(config)# login
R1(config)# tran in telnet
在R3上尝试telnet公网地址
R3#telnet 100.23.23.2
Trying 100.23.23.2 ... Open
User Access Verification
Password:
R1>
查看一下端口映射关系
R2#sh ip nat tr
Pro Inside global Inside local Outside local Outside global
tcp 100.23.23.2:23 192.168.12.1:23 100.23.23.3:13107
100.23.23.3:13107
tcp 100.23.23.2:23 192.168.12.1:23 --- ---
负载均衡
- NAT也支持对公网IP地址的请求,分发给内部的设备来进行处理
- R2 R3 R4是内网,内网的设备要求能访问外网
- R1是外网,外网的设备能访问内网的服务
地址配置
R1(config)#int e0/0
R1(config-if)#ip add 100.12.12.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int lo0
R1(config-if)#ip add 1.1.1.1 255.255.255.0
R2(config)#int e0/0
R2(config-if)#ip add 100.12.12.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#int e0/1
R2(config-if)#ip add 192.168.234.2 255.255.255.0
R2(config-if)#no sh
R3(config)#int e0/0
R3(config-if)#ip add 192.168.234.3 255.255.255.0
R3(config-if)#no sh
R4(config)#int e0/0
R4(config-if)#ip add 192.168.234.4 255.255.255.0
R4(config-if)#no sh
为R2,R3,R4添加网关
R2(config)#ip route 0.0.0.0 0.0.0.0 100.12.12.1
R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.234.2
R4(config)#ip route 0.0.0.0 0.0.0.0 192.168.234.2
开启R3、R4telnet服务
R3(config)#line vty 0 4
R3(config-line)#pass cisco
R3(config-line)#login
R3(config-line)#tran in telnet
R4(config)#line vty 0 4
R4(config-line)#pass cisco
R4(config-line)#login
R4(config-line)#tran in telnet
通过nat做负载均衡
R2(config)#int e0/0
R2(config-if)#ip nat outside
R2(config-if)#int e0/1
R2(config-if)#ip nat inside
R2(config-if)#exit
R2(config)#access-list 2 permit 100.12.12.2
R2(config)#ip nat pool telnetservers 192.168.234.3 192.168.234.4 netmask 255.255.255.0 type rotary #轮询的方式
R2(config)#ip nat inside destination list 2 pool telnetservers
在外网telnet R2的公网地址验证负载均衡是否成功
Password:
R3>exit
[Connection to 100.12.12.2 closed by foreign host]
R1#telnet 100.12.12.2
Trying 100.12.12.2 ... Open
User Access Verification
Password:
R4>exit
[Connection to 100.12.12.2 closed by foreign host]
动态路由协议RIP和OSPF
- 通过在路由器上运行动态路由协议,使得路由器之间能够交互“用于路由计算的信息”,从而路由器 动态的“学习”到网络中的路由
管理距离
- 不同的路由协议会有不同的管理距离
- 值越小的管理距离优先级越高
- 当路由器从不同的协议里学习到相同的路由的时候,优先选择优先级高的路由
动态路由协议,RIP
- RIP是应用及开发较早的路由协议,是典型的距离矢量路由协议
- 适用于小型网络,最大跳数15跳(16跳视为不可达)
- RIP是基于UDP的,使用端口号520 在CISCO IOS平台上的管理距离为120
距离矢量路由协议
- 使用距离矢量路由协议的路由器并不了解网络的拓扑。该路由器只知道:
- 自身与目的网络之间的距离
- 应该往哪个方向或使用哪个接口转发数据包
- 路由器收敛完成
- 当所有路由表包含相同网络可达性信息
- 网络(路由)进入一个稳态
- 路由器继续交换路由信息
- 当无新路由信息被更新时收敛结束
- 网络在达到收敛前无法完全正常工作
RIP解决环路问题的机制
- 定义最大跳数
- 定义当跳数达到16时认为不可达
- 水平分割
- 从某个接口学习到的路由,不会再从这个接口更新出去
- 毒性路由
- 当路由器感知到某个网段发生故障,可以立即泛洪该网段的路由(将其跳数设置为16跳,也就是不可达),以此来快速刷新网络中其他路由器的路由表。
- 毒性逆转
- 抑制计时器
- 触发更新
- 拓扑发生变更时,路由器立即发送更新消息,而不等更新计时器超时
RIP配置
Router(config)# router rip
Router(config-router)# version 1/2
Router(config-router)# network network-number
- 默认情况,rip version2 会将自己的路由条目进行汇总然后更新给其他路由器
- 当路由汇总后出现同样的条目时,会进行等价的负载均衡
- 如果想要进行人工汇总,建议首先关闭自动汇总,然后再进行手动汇总
OSPF简介
- OSPF(Open Shortest Path First,开放最短路径优先)是一种链路状态路由协议,无路由循环 (全局拓扑),属于IGP。RFC 2328,“开放”意味着非私有的,对公众开放的。
- OSPF的报文封装
- OSPF协议包直接封装于IP,协议号89。
- OSPF协议使用的组播地址
- 所有OSPF路由器——224.0.0.5;DR BDR——224.0.0.6
- OSPF路由协议的管理距离:110
基础配置
# 配置ip地址,必须配环回接口
略
#配置ospf
方式一
R1(config)#router ospf 1
R1(config-router)#network 1.0.0.0 0.0.0.255 area 0
方式二
R2(config)#int range e0/0-1,lo0
R2(config-if-range)#ip ospf 1 area 0
路由重发布
- 从一种协议到另外一种协议
- 同一种协议的不同实例
- 路由重发是针对外部的,自身的路由器不会有变化
配置ip地址
做双向重发步
R2(config-if-range)#router rip
R2(config-router)#ver 2
R2(config-router)#redistribute ospf 1 metric 5
R2(config-router)#router ospf 1
R2(config-router)#redistribute rip subnets
OSPF三张表
邻居表
R2#show ip ospf nei
Neighbor ID Pri State Dead Time Address Interface
3.3.3.3 1 FULL/DR 00:00:31 192.168.23.3 Ethernet0/1
1.1.1.1 1 FULL/BDR 00:00:39 192.168.12.1 Ethernet0/0
链路状态数据库
路由表
OSPF名词
- Neighbor ID:邻居的id,这个id通常是由环回接口选的,并且是优先选取地址大的作为id
- Pri:优先级
- Dead Time:死亡时间,每十秒钟会更新一次,如果40秒倒计时结束还没有收到邻居的hello包, 认为邻居死亡
- State:邻居的状态
- DR
- DR的作用:多路访问中为了减少邻接关系(N平方的问题)和LSA的洪泛,采用DR机 制,BDR提供了备份
- MA网络上的所有路由器均与DR、BDR建立邻居关系
- BDR 选举规则
- 接口优先级数字越大越优先(优先级为0不能参与DR的选举)
- Router ID越大越好
- 稳定压倒一切(非抢占)
- 通过控制接口优先级是控制DR选举的好办法
- DR的选举是基于接口的,如果说某个路由器是DR,这种说法是错误的
- DR
在某些以太网中并不需要建立DR、BDR的过程,可以将模式修改为point-to-point来加速邻居 建立的过程
R2(config)#int e0/0
R2(config-if)#ip ospf network point-to-point
R1#sh ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
2.2.2.2 0 FULL/ - 00:00:32 192.168.12.2 Ethernet0/0
# 状态中是没有DR或者BDR的
邻居建立过程
- Down
- 路由器未开始运行OSPF
- Init
- 路由器收到对方的hello包,但是没发现存在自己的route id
- Two-way
- 路由器收到对方发过来的hello包中,包含自己的route id
- 表示双方已经正常通信
- 如果是广播网络类型,在这个阶段会等待40s,等所有路由器的hello包都充分交换,然后选择route-id最大的为DR,过时不候
- Ex-Start
- 路由器发送空的DBD数据报文,用来选举由谁来主导整个过程,最终是选择Router-id较大的
- L置位表示是否完成选举过程,M置位表示是否是最后一条消息,MS置位表示的是否是
- Exchange
- 路由器交换互相的DBD,可以理解为目录,从的节点率先发送给主节点
- 比对哪些LSA是自己没有的
- Loading
- 向对方发送请求的LSA,接受对方的LSA,可以理解为书的内容
- 并且回复ACK
- Full
- 完成建立
OSPF消息类型
- hello包
- 用来建立以及维护邻居关系的数据包
- DBD
- 链路状态数据库描述信息
- LSR
- 链路状态请求,向邻居请求自己没有的信息
- LSU
- 链路状态更新的信息
- ACK
- 确认信息
OSPF多区域
单区域的问题
- 资源消耗过多,LSDB庞大,设备性能下降,影响数据转发
- 每台路由器都需要维护的路由表越来越大,单区域内路由无法汇总
多区域的特点
- 减少了LSA洪泛的范围,有效地把拓扑变化控制在区域内,达到网络优化的目的
- 在区域边界可以做路由汇总,减小了路由表
- 充分利用OSPF特殊区域的特性,进一步减少LSA泛洪,从而优化路由
骨干区域,编号为0的区域
非骨干区域,编号非0的区域
所有非骨干区域必须和骨干区域相连
OSPF路由器角色
- ABR
- 区域边界路由器,负责各个区域的路由条目传递
- 必须至少有一个接口和骨干区域相连
- 必须至少有一个接口和非骨干区域相连
- ASBR
- AS边界路由器,负责将ospf以外的路由引入
多区域基本拓扑
相关命令
show ip ospf
显示OSPF路由器ID,OSPF定时器以及LSA信息
show ip ospf interface type
当非骨干区域没有和骨干区域直接相连,无法学习到其他区域的路由,如何解决这个问题
第一种方式是使用虚链路
R3(config)#router ospf 1
R3(config-router)#area 2 virtual-link 4.4.4.4
R4(config)#router ospf 1
R4(config-router)#area 2 virtual-link 3.3.3.3
第二种方式是使用隧道
# 第一种方式,R3和R4上同时都需要配置以下相同的配置,以完成虚链路
R3(config)#router ospf 1
R3(config-router)#area 2 virtual-link 4.4.4.4
# 第二种方式
R3#sh run
interface Tunnel0
ip address 192.168.100.3 255.255.255.0
ip ospf 1 area 0
tunnel source Ethernet0/1
tunnel mode ipip
tunnel destination 192.168.34.4
LSA
LSA(链路状态广播)是链接状态协议使用的一个分组,它包括有关邻居和通道成本的信息。 LSA 被路由器接收用于维护它们的路由选择表。 LSA: Link-State Advertisement。
LSA类型
1类LSA
- 每个路由器针对它所在的区域产生LSA1,描述区域内部与路由器直连的链路的信息(包括链路类 型,Cost等) ;
- LSA1只允许在本区域内洪泛,不允许跨越ABR;
- LSA中会标识路由器是否是ABR(B比特置位),ASBR(E比特置位)或者是Virtual-link(V比特置位) 的端点的身份信息;
R1#sh ip ospf database
OSPF Router with ID (1.1.1.1) (Process ID 1)
Router Link States (Area 0)
Link ID ADV Router Age Seq# Checksum Link count
1.1.1.1 1.1.1.1 88 0x80000005 0x006F8C 3
2.2.2.2 2.2.2.2 89 0x80000006 0x000BE6 3
- Link ID:链路ID,可以理解为目的地
- ADV Router:链路来自哪一个路由器
- Age:是计时器 Seq:序列号,初始值为 0x80000001,每收到一次数据包更新一次这个数值会+1, 加到0x8fffffff 达到最大,下一次变为 0x80000000,ospf认为0x80000000是不可用的
- Checksum:校验和
2类LSA
- 描述TransNet(包括Broadcast和NBMA网络)网络信息;
- 由DR生成,描述其在该网络上连接的所有路由器以及网段掩码信息,以及这个MA所属的路由器; LSA类型2只在本区域Area内洪泛,不允许跨越ABR;
- Network LSA ID是DR进行宣告的那个接口的IP地址
- Network LSA 中没有COST字段
1 R1#sh ip ospf database network
OSPF Router with ID (1.1.1.1) (Process ID 1)
Net Link States (Area 0)
LS age: 148
Options: (No TOS-capability, DC)
LS Type: Network Links
Link State ID: 192.168.12.3 (address of Designated Router)
Advertising Router: 3.3.3.3
LS Seq Number: 80000002
Checksum: 0x1484
Length: 36
Network Mask: /24
Attached Router: 3.3.3.3
Attached Router: 1.1.1.1
Attached Router: 2.2.2.2
- 通过LSA1,LSA2在区域内洪泛,使区域内每个路由器的LSDB达到同步,计算生成标识为“O”的路 由,解决区域内部的通信问题。
3类LSA
- 由ABR生成,实际上这就就是将区域内部的Type1 Type2的信息收集起来以路由子网的形式扩散出 去,是Summay LSA中Summay的含义(注意这里的summary与路由汇总没有关系)
- Type 3 的链路状态ID是目的网络地址。
- 如果—台ABR路由器在与它本身相连的区域内有多条路由可以到达目的地,那么它将只会始发单一的 一条网络汇总LSA到骨干区域,而且这条网络汇总LSA是上述多条路由中代价最低的。
- ABR收到来自同区域其它ABR传来的Type 3 LSA后重新生成新的Type3 LSA(Advertising Router改 为自己)然后继续在整个OSPF系统内扩散
R1#show ip ospf database summary
OSPF Router with ID (1.1.1.1) (Process ID 1)
Summary Net Link States (Area 0)
LS age: 145
Options: (No TOS-capability, DC, Upward)
LS Type: Summary Links(Network)
Link State ID: 5.5.5.5 (summary Network Number)
Advertising Router: 2.2.2.2
LS Seq Number: 80000001
Checksum: 0xD441
Length: 28
Network Mask: /32
MTID: 0 Metric: 11
LS age: 186
Options: (No TOS-capability, DC, Upward)
LS Type: Summary Links(Network)
Link State ID: 192.168.25.0 (summary Network Number)
Advertising Router: 2.2.2.2
LS Seq Number: 80000001
Checksum: 0xEBBC
Length: 28
Network Mask: /24
MTID: 0 Metric: 10
4类LSA
ASBR Summary LSA由ABR生成,用于描述ABR能够到达的ASBR它的链路状态,链路状态ID为目 的ASBR的RID。
R5#sh ip ospf database asbr-summary
OSPF Router with ID (5.5.5.5) (Process ID 1)
Summary ASB Link States (Area 1)
LS age: 318
Options: (No TOS-capability, DC, Upward)
LS Type: Summary Links(AS Boundary Router)
Link State ID: 1.1.1.1 (AS Boundary Router address)
Advertising Router: 2.2.2.2
LS Seq Number: 80000001
Checksum: 0x75B0
Length: 28
Network Mask: /0
MTID: 0 Metric: 10
5类LSA
- Autonomous System External LSA由ASBR生成用于描述OSPF自治域系统外的目标网段信息,链 路状态ID是目的地址的IP网络号。
- 外部路由通过重发布,引入OSPF路由域,相应信息(路由条目)由ASBR以LSA5的形式生成然后进入 OSPF路由域
- OE2 开销= 外部开销;
- OE1 开销= 外部开销+ 内部开销;
R5#sh ip ospf database external
OSPF Router with ID (5.5.5.5) (Process ID 1)
Type-5 AS External Link States
LS age: 71
Options: (No TOS-capability, DC, Upward)
LS Type: AS External Link
Link State ID: 0.0.0.0 (External Network Number )
Advertising Router: 1.1.1.1
LS Seq Number: 80000002
Checksum: 0xA9E8
Length: 36
Network Mask: /0
Metric Type: 1 (Comparable directly to link state metric)
MTID: 0
Metric: 666
Forward Address: 0.0.0.0
External Route Tag: 1
四类和五类的理解
四类LSA告诉你怎么到达ASBR,由ABR产生
五类LSA告诉你具体外部有哪些路由可以走,由ASBR产生
7类LSA
- 在末梢区域内,拒绝五类LSA加入,在totally nssa 或者nssa区域当中将五类LSA转变成七类LSA的方式加入到区域当中被本区域当中的其他区域学习
- LSA类型7只能在NSSA区域中洪泛,到达NSSA区域ABR后,NSSA ABR将其转换成LSA类型5外部路 由,传播到Area 0,从而传播到整个OSPF路由域
- 生成路由缺省用ON2表示,也可指定为ON1;
R2#sh ip ospf database nssa-external
OSPF Router with ID (2.2.2.2) (Process ID 1)
Type-7 AS External Link States (Area 1)
LS age: 493
Options: (No TOS-capability, Type 7/5 translation, DC, Upward)
LS Type: AS External Link
Link State ID: 100.100.100.0 (External Network Number )
Advertising Router: 1.1.1.1
LS Seq Number: 80000002
Checksum: 0x4719
Length: 36
Network Mask: /24
Metric Type: 2 (Larger than any link state path)
MTID: 0
Metric: 20
Forward Address: 1.1.1.1
External Route Tag: 0
特殊区域
stub area
- 随着大量的5类LSA进入ospf区域,OSPF Database会变得庞大,同时路由表的外部地址也会增 大。这会占用路由器大量的资源。
- 解决这个问题的办法是:让Area内部的路由器不记录任何AS外部的地址,而使用ABR作为默认网 关,有一条指向ABR的默认路由。
router ospf 2
area 1 stub
sh ip route
totally stub area
- 有时仅仅不学习外部路由仍然不能够满足需求,路由表和ospf的数据库依然非常庞大,这个时候可 以连ospf的其他区域的路由也不学习
- 只学习本区域的路由,以及有一条指向ABR的默认路由
- 配置与stub不同的是在ABR上配置area 2 stub no-summary
NSSA area
- 当我们把区域配置成末梢区域时,有时候有特例想要加入一些外部路由,这个时候nssa允许存在 ASBR通过7类LSA的方式将外部路由引入本区域,不会自动注入默认路
- 不会学习外部路由
- 会学习其他区域路由
- 可以学习ASBR注入的外部路由
- 没有注入默认路由
在区域内所有路由器配置以下命令
router ospf 1
area 1 nssa
Totally NSSA area
- 不会学习外部路由
- 不会学习其他区域路由
- 可以学习ASBR注入的外部路由
- 会自动注入默认路由
在ABR上配置以下命令
router ospf 1
area 1 nssa no-summary
Passive-interface(被动接口)
当有某台设备或者服务器与外网相连,那么当这台设备被黑客攻击成功后,黑客则可以利用ospf的 特性破坏内部网络,为了解决这种问题提出被动接口的概念
router ospf 1
passive-interface 接口
默认路由的注入
- 解决的问题是所有ospf区域内的设备均可以到达网关
- 支持多台路由器宣告默认路由
- 配置
- router ospf 1
- default-information originate always metric-type [宣告类型] metric [度量值]
- 类型1是会累加ospf内部开销,类型2不会累加内部开销
针对OSPF区域内进行汇总
- R2 R3在区域0, R4在区域1
- R4 上有三个环回接口地址为10.1.x.1/24, 并且将他们加入到ospf当中
- 汇总路由不能针对本区域进行汇总
- 只能汇总由自己产生的明细
- 配置
- router ospf 1
- area 1 range 10.1.0.0 255.255.0.0
针对外部区域进行汇总
- 在R1上有三个环回接口地址为172.16.x.x/24,并且通过重发布的方式引入外部路由
- 汇总命令在ASBR上配置
- 配置
- router ospf 1
- summary address 172.16.0.0 255.255.0.0
抑制区域内部路由明细
- 有时候内部的一些隐私的服务器或者设备并不希望被其他区域学习到,则可以使用抑制路由明细的 方式
- 配置
- router ospf 1
- area 1 range 10.1.2.2 255.255.255.255 not-advertise
抑制外部区域路由明细
- router ospf 1
- summary-address 172.16.2.0 255.255.255.0 not-advertise
ly NSSA area
- 不会学习外部路由
- 不会学习其他区域路由
- 可以学习ASBR注入的外部路由
- 会自动注入默认路由
在ABR上配置以下命令
router ospf 1
area 1 nssa no-summary
Passive-interface(被动接口)
当有某台设备或者服务器与外网相连,那么当这台设备被黑客攻击成功后,黑客则可以利用ospf的 特性破坏内部网络,为了解决这种问题提出被动接口的概念
router ospf 1
passive-interface 接口
默认路由的注入
- 解决的问题是所有ospf区域内的设备均可以到达网关
- 支持多台路由器宣告默认路由
- 配置
- router ospf 1
- default-information originate always metric-type [宣告类型] metric [度量值]
- 类型1是会累加ospf内部开销,类型2不会累加内部开销
[外链图片转存中…(img-WybLHIsU-1646197934348)]
针对OSPF区域内进行汇总
- R2 R3在区域0, R4在区域1
- R4 上有三个环回接口地址为10.1.x.1/24, 并且将他们加入到ospf当中
- 汇总路由不能针对本区域进行汇总
- 只能汇总由自己产生的明细
- 配置
- router ospf 1
- area 1 range 10.1.0.0 255.255.0.0
针对外部区域进行汇总
- 在R1上有三个环回接口地址为172.16.x.x/24,并且通过重发布的方式引入外部路由
- 汇总命令在ASBR上配置
- 配置
- router ospf 1
- summary address 172.16.0.0 255.255.0.0
抑制区域内部路由明细
- 有时候内部的一些隐私的服务器或者设备并不希望被其他区域学习到,则可以使用抑制路由明细的 方式
- 配置
- router ospf 1
- area 1 range 10.1.2.2 255.255.255.255 not-advertise
抑制外部区域路由明细
- router ospf 1
- summary-address 172.16.2.0 255.255.255.0 not-advertise
更多推荐
网络 ip tcp/udp dhcp dns rip/ospf
发布评论