欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于OSPF、NAT的原理

程序员文章站 2022-05-30 18:46:47
...


OSPF初始化流程

建立令居与邻接关系

  • 发送hello报文发现和建立邻居关系,组播地址224.0.0.5

    • 接口UP
    • 双方接口IP地址在同一网段
    • 双方接口在同一区域
  • 选举DR/BDR,建立邻接关系

  • DR/BDR选举

    • 选举原因:广播网络中使路由信息交换更加高速有序
    • 选举范围:没条广播链路上都需要选举出一个DR和一个BDR
    • 选举规则:
      • 优先级大的优先,默认优先级都是1
      • Router-id大的优先
  • Router-id:

    • 定义:Rid,表示路由器的身份
  • Router-id产生方法:

    • 手动配置一个IPv4地址格式作为Rid
    • 自动选举:
      • 在所有环回口中选举IP地址最大的作为Rid
      • 在所有物理接口中选举IP地址最大的作为Rid
  • 建议手动配置一个本地环回口的IP地址作为Rid

  • 关系状态

    • DRoyher与DR建立邻接关系
    • DRoyher与BDR建立邻接关系
    • DR与BDR建立邻接关系
    • 两个DRoyher之间保持邻接关系

邻接路由器之间交换链路状态信息,实现区域内链路状态数据库同步

  • 相关概念
  • 链路状态通告
    • LSA
    • 用来描述路由器的接口、路由条目的相关信息
  • 链路状态数据库
    • LSDB
    • 存储本地所有LSA
  • 工作流程
    • 向邻接路由器发送DD报文,通过本地LSDB中所有LSA的摘要信息
    • 收到DD后,与本地LSDB对比,向对方发送LSR报文,请求发送本机所需的LSA的完整信息
    • 收到LSR后,把对方所需的LSA的完整信息打包为一条LSU报文,发送至对方
    • 收到LSU后,向对方回复LSAck报文,进行确认

每台路由器根据本机链路状态数据库,计算到达每个目的网段的最优路由,写入路由表

OSPF报文类型

  • Hello报文
  • DD报文
    • 数据库描述报文
    • 用于描述本地LSDB中所有LSA的摘要
  • LSR报文:链路状态请求
  • LSU报文:链路状态更新
  • LSAck报文:链路状态确认

OSPF分区管理

分区域的原因

  • 加快收敛速度
  • 把网络故障隔离在区域内部

路由器角色

  • IR
    • 内部路由器
    • 所有接口都处于同一个区域
  • ABR
    • 区域边界路由器
    • 连接不同区域的路由器
  • ASBR
    • 自治系统边界路由器
    • 连接外部自治系统的路由器

区域类型

  • 骨干区域
    • 只能有一个骨干区域
    • 骨干区域必须是连续的
  • 非骨干区域
    • 非骨干区域必须连接到骨干区域
  • 特殊区域

实验

  • 如下拓扑(06)
    关于OSPF、NAT的原理
    实验需求
  1. 按照图示,配置IP地址
  2. 按照图示区域配置OSPF,实现全网互通
  3. 为了路由结构稳定,要求路由器使用环回口作为Router-id,ABR的环回口宣告进骨干区域
  • 按照拓扑图配置IP与环回接口
//在R1上配置接口IP并配置环回接口地址
[R1]int g0/0
[R1-GigabitEthernet0/0]ip add 100.1.1.1 24  //配置接口IP
[R1-GigabitEthernet0/0]qu
[R1]interface LoopBack 1  //创建环回口。简写int l0(不是10)
[R1-LoopBack0]ip add 1.1.1.1 32  //配置环回口地址
//同样方法配置其他的路由器
  • 创建OSPF
[R1]ospf router-id 1.1.1.1  //如果不加router-id则是自动选择
[R1-ospf-1]display ospf  //查看router-id
  • 进入area 1,进行宣告
[R1-ospf-1]area 1  //进入area 1区域
[R1-ospf-1-area-0.0.0.1]network 100.1.1.0 0.0.0.255  //宣告100.1.1.0网段,跟上此网段的反掩码
[R1-ospf-1-area-0.0.0.1]net 1.1.1.1 0.0.0.0  //宣告环回口
//同样方法配置其他的路由器
  • 反掩码就是255.255.255.255减去原网段的掩码,即反掩码。学术名,掩码通配符
  • 100.1.1.0 0.0.0.255的意思就是0所对应的地址位必须匹配,即其他的地址前三位必须为100.1.1最后一位任意匹配
  • ABR宣告
[R2]ospf router-id 2.2.2.2  //指定router-id
[R2-ospf-1]area 0  //进入骨干(area 0)区域
[R2-ospf-1-area-0.0.0.0]net 100.2.2.0 0.0.0.255  //宣告100.2.2.0网段
[R2-ospf-1-area-0.0.0.0]net 2.2.2.2 0.0.0.0  //宣告环回口
[R2-ospf-1-area-0.0.0.0]area 1  //进入area 1区域
[R2-ospf-1-area-0.0.0.1]net 100.1.1.0 0.0.0.255  //宣告100.1.1.0网段
//同样方法配置其他的路由器
  • 边界路由器在两个区域都要进行宣告
  • 对于环回口,可以随便宣告在哪个区域,建议是宣告在骨干区域
  • 环回口一般用于远程管理设备
  • 检查OSPF邻接关系是否建立
[R2]dis ospf peer  //检查边界路由器是否有两个邻居

         OSPF Process 1 with Router ID 2.2.2.2
               Neighbor Brief Information

 Area: 0.0.0.0        
 Router ID       Address         Pri Dead-Time  State             Interface
 3.3.3.3         100.2.2.3       1   39         Full/BDR          GE0/1

 Area: 0.0.0.1        
 Router ID       Address         Pri Dead-Time  State             Interface
 1.1.1.1         100.1.1.1       1   39         Full/DR           GE0/0
  • 除查看数量外,还要查看状态,FULL为邻接关系,2—Way表示邻居关系
  • 只有邻接关系才能交换信息
  • 检查OSPF路由是否学习完整
[R5]dis ip routing-table 

Destinations : 20       Routes : 20

Destination/Mask   Proto   Pre Cost        NextHop         Interface
0.0.0.0/32         Direct  0   0           127.0.0.1       InLoop0
1.1.1.1/32         O_INTER 10  4           100.4.4.4       GE0/0
2.2.2.2/32         O_INTER 10  3           100.4.4.4       GE0/0
3.3.3.3/32         O_INTER 10  2           100.4.4.4       GE0/0
4.4.4.4/32         O_INTER 10  1           100.4.4.4       GE0/0

[R2]dis ip rou
4.4.4.4/32         O_INTRA 10  2           100.2.2.3       GE0/1
5.5.5.5/32         O_INTER 10  3           100.2.2.3       GE0/1
  • 查看五个换回路由是否都学到
  • O_INTERO表示OSPF,INTER表示其他区域的路由,INTRA表示区域内的路由
  • 进行连通性测试

NAT

  • 产生背景
    • IPv4公网地址资源耗尽
    • IPv6普及遥遥无期
    • 子网划分杯水车薪
  • 定义
    • 网络地址转换
    • 通过把私有地址转换为公有地址,使私有IP地址主机可以访问互联网,来解决公网地址不够用的问题
  • 分类
    • 静态NAT
      • 把公有地址一对一的静态映射给私有地址使用
    • 基本NAT(思科中叫动态NAT)
      • 建立公有地址池,把地址池中的公有地址动态的映射给私有地址使用
      • 本质上仍然是一对一的映射
    • NAPT(思科中叫PAT)
      • 把公有地址和端口动态的映射给私有地址和端口,实现一个公有地址可以供多个私有地址同时使用访问互联网
      • 转换源IP和源端口,数据回包还原目的IP和目的端口
    • Easy IP
      • NAPT的一种建议实现形式
      • 适用于公网地址不固定的场景
    • NAT Server
      • 把公网IP的某个端口固定映射到私网IP的某个端口,让公网上的用户可以主动访问私网中的服务
      • 转换目的IP和目的端口,数据回包还原IP和源端口
      • 也称端口映射

0-1023知名协议端口号,发出的数据包在1024以上随机产生端口号

实验

NAT

  • 如下拓扑图(07)
    关于OSPF、NAT的原理
    实验需求
  1. 按照图示配置IP地址,SERVER使用路由器模拟,配置默认路由来实现网关的效果
  2. 在R1上配置Easy IP,使PC和server可以访问互联网
  3. 在R1上配置NAT Server,使R3可以访问SERVER的FTP
[R1]int g0/1
[R1-GigabitEthernet0/1]ip add 192.168.1.254 24
[R1-GigabitEthernet0/1]int g0/0
[R1-GigabitEthernet0/0]ip add 100.1.1.1 24
[R2]int g0/0
[R2-GigabitEthernet0/0]ip add 100.1.1.2 24
[R2-GigabitEthernet0/0]int g0/1
[R2-GigabitEthernet0/1]ip add 100.2.2.2 24
[R3]int g0/0
[R3-GigabitEthernet0/0]ip add 200.2.2.3 24
  • PC配置IP及网关
    关于OSPF、NAT的原理

  • 在R1和R3上分别配置静态路由联通内网和公网

//配置默认路由
[R1]ip route-static 0.0.0.0 0 100.1.1.2

//配置默认路由,连通公网
[R3]ip route-static 0.0.0.0 0 200.2.2.2
  • 在server上配置IP与网关
[SERVER]int g0/0
[SERVER-GigabitEthernet0/0]ip add 192.168.1.2 24  //配置IP
[SERVER]ip route-static 0.0.0.0 0 192.168.1.254  //配置默认路由
  • 在R1上配置NAT
[R1]acl basic 2000  //创建ACL
//设置允许进行NAT转换的网段
[R1-acl-ipv4-basic-2000]rule permit source 192.168.1.0 0.0.0.255
[R1]int g0/0
[R1-GigabitEthernet0/0]nat outbound 2000  //调用ACL
  • 连通性测试,并查看转换记录
//在PC和server上pingR3,查看连通性
[R1]dis nat session verbose   //查看NAT转换记录

NAT Server

  • 搭建FTP服务器
[SERVER]ftp server enable   //开启FTP服务
[SERVER]local-user bad  //创建一个用于登录FTP的用户
[SERVER-luser-manage-bad]password simple 123  //设置一个简单的密码
[SERVER-luser-manage-bad]service-type ftp   //这个账户用于FTP
//授予最高权限
[SERVER-luser-manage-bad]authorization-attribute user-role level-15
  • 配置端口映射
[R1]int g0/0  //进入连接公网的接口
//将公网的100.1.1.1的20、21端口映射到私网192.168.1.2的20、21端口
[R1-GigabitEthernet0/0]nat server protocol tcp global 100.1.1.1 20 21 inside 192
.168.1.2 20 21
  • 在R3验证远程登录FTP
<R3>ftp 100.1.1.1  //在用户视图下远程登录ftp
Press CTRL+C to abort.
Connected to 100.1.1.1 (100.1.1.1).
220 FTP service ready.
User (100.1.1.1:(none)): bad
331 Password required for bad.
Password: 
230 User logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 
以上内容均属原创,如有不详或错误,敬请指出。
本文作者: 坏坏