• 关于OSPF、NAT的原理



    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)
      在这里插入图片描述
      实验需求
    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)
      在这里插入图片描述
      实验需求
    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及网关
      在这里插入图片描述

    • 在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> 
    
    以上内容均属原创,如有不详或错误,敬请指出。
    
    本文作者: 坏坏
  • 相关阅读:
    利用单片机构成高精度PWM式12位D/A
    【转】FORMAT在DELPHI中的用法
    可定时温湿控制器
    用C#获取硬盘序列号,CPU序列号,网卡MAC地址
    Oracle笔记:查询表相关
    Oracle笔记:视图
    Oracle笔记:维护数据的完整性
    Oracle笔记:索引
    Oracle笔记:pl/sql例外处理
    Oracle笔记:逻辑备份与恢复
  • 原文地址:https://www.cnblogs.com/bad5/p/12583107.html
Copyright © 2020-2023  润新知