Centos7静态路由和动态路由

路由,即路由选择(Routing),是指在计算机网络中选择数据传输路径的过程。路由器(Router)是执行路由选择功能的网络设备。路由的主要目的是在复杂的网络结构中,选择最佳路径将数据包从源节点传递到目标节点。

路由的类型

  1. 静态路由(Static Routing)

    • 由网络管理员手动配置。
    • 路由信息是固定的,不会自动更新。
    • 优点:简单、开销小。
    • 缺点:不适用于大型或动态变化的网络。
  2. 动态路由(Dynamic Routing)

    • 使用路由协议自动学习和更新路由信息。
    • 路由器之间互相交换路由信息,自动选择最佳路径。
    • 优点:适应网络变化,适合大规模网络。
    • 缺点:开销较大,需要更多的计算资源。

比较

特点 静态路由 动态路由
配置 手动配置 自动更新
适应性 固定,不适应变化 动态调整,适应变化
维护工作量 较高,需人工维护 较低,自动维护
复杂性 低,简单明了 高,需要配置和管理协议
资源消耗 低,节省资源 高,消耗计算和带宽资源

常见的动态路由协议

  1. RIP(Routing Information Protocol)

    • 使用距离向量算法。
    • 适用于小型网络。
    • 路由更新周期为30秒,最多跳数为15。
  2. OSPF(Open Shortest Path First)

    • 使用链路状态算法。
    • 适用于大型网络。
    • 路由更新是基于网络变化进行的。
  3. BGP(Border Gateway Protocol)

    • 主要用于互联网中的自治系统之间的路由选择。
    • 使用路径向量算法。
    • 适用于跨域路由。

路由表

路由器通过路由表来决定数据包的转发路径。路由表包含以下信息:

  • 目标网络地址
  • 子网掩码
  • 下一跳(Next Hop)地址
  • 接口(Interface)

路由选择的基本步骤

  1. 路径发现

    • 路由器通过路由协议或者静态配置获得可达网络的路径信息。
  2. 路径选择

    • 根据路由表选择最佳路径。
  3. 路径维护

    • 动态路由协议会定期更新路由表,确保路由信息的准确性。

路由协议的分类

  1. 内部网关协议(IGP, Interior Gateway Protocol)

    • 用于同一自治系统(AS)内。
    • 常见协议有RIP、OSPF、EIGRP(Enhanced Interior Gateway Routing Protocol)。
  2. 外部网关协议(EGP, Exterior Gateway Protocol)

    • 用于不同自治系统之间。
    • 主要协议是BGP。

路由器在转发数据时,确实需要先在路由表中查找相应的路由,主要有三种途径:

  1. 直连路由:当路由器的一个接口配置了IP地址,并且此接口处于激活状态时,路由器会自动将此接口直连的网络添加到路由表中,这种路由被称为直连路由。直连路由无需手动配置,也无需管理员干预,只要接口配置了IP地址并且激活,路由器就会自动生成直连路由。
  2. 静态路由:静态路由是由管理员手动添加的路由。管理员通过命令或配置界面,指定目标网络、子网掩码、下一跳地址或出接口等信息,将静态路由添加到路由表中。静态路由不会自动更新,需要管理员根据网络变化手动修改或删除。静态路由的优点是不会占用路由器太多的CPU和RAM资源,也不会占用太多带宽,但需要管理员对网络拓扑有深入的了解。
  3. 动态路由:动态路由是由路由协议动态建立的路由。路由器通过运行路由协议(如RIP、OSPF、BGP等),与相邻路由器交换链路状态和路由信息,根据这些信息计算出最佳路径,并自动更新路由表。动态路由能够自动适应网络变化,无需管理员手动干预,但会占用一定的CPU和RAM资源,并可能产生额外的网络流量。

在路由查找过程中,路由器会根据数据包的目的IP地址和路由表中的路由条目进行匹配,选择最佳的路径进行转发。如果路由表中没有匹配的路由条目,路由器可能会选择默认路由或进行其他处理。

查看路由表:
[root@localhost ~]# ip r     #或使用命令 ip route 查看路由和网关
default via 192.168.2.1 dev ens33 proto dhcp metric 100 
192.168.2.0/24 dev ens33 proto kernel scope link src 192.168.2.10 metric 100



#via:通过的意思,相当于下一跳

案例需求:在虚拟机B(桥接)上ping虚拟机A(net网络)的ens33网卡IP。

虚拟机A :net模式 192.168.226.100

虚拟机B:桥接模式 192.168.2.10

解决思路:
    1、在主机B上添加默认路由,使其能找到主机A的ens36网卡
    2、在主机A上添加一块桥接的网卡

解决步骤:

在主机A,192.168.226.100操作

查看192.168.226.100的IP如下

接下来对192.168.2.10操作

[root@localhost ~]# ip route add default via 192.168.2.11
[root@localhost ~]# ip r show                                 #查看 IP 路由表
default via 192.168.2.11 dev ens33 
default via 192.168.2.1 dev ens33 proto dhcp metric 100 
192.168.2.0/24 dev ens33 proto kernel scope link src 192.168.2.10 metric 100 



命令解读:
ip route add default via 192.168.2.11 用于配置网络路由表。下面是这个命令的详细解释:

ip route:
这是 ip 命令的 route 子命令,用于查看或修改 IP 路由表。
add:
这是一个操作,表示要添加一个新的路由到路由表中。
default:
这指定了要添加的路由的目的地。default 是一个特殊的路由,表示没有明确匹配的其他路由的所有流量都将使用这个路由。换句话说,它是所有“其他”流量的默认出口。
via 192.168.2.11:
这指定了下一跳(或网关)的地址。当数据包要发送到 default(即所有没有明确路由的数据包)时,它们将首先被发送到 192.168.2.11 这个地址。这通常是一个路由器或网关的地址,负责将数据包转发到其最终目的地。
#启用 IP 转发功能
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

/proc/sys/net/ipv4/ip_forward: 这是一个虚拟文件系统(procfs)中的文件,用于控制内核参数。在这个特定的例子中,这个文件控制 IPv4 的 IP 转发功能。

  • 如果这个文件的值为 0,则 Linux 系统不会转发 IP 数据包(除了回环接口上的数据包)。
  • 如果这个文件的值为 1,则 Linux 系统将转发来自一个网络接口的数据包到另一个网络接口,如果路由表中有相应的条目。

现在就实现连通啦 。

添加静态路由

有两种主要的方式来添加静态路由:

  1. 使用 route 命令:

    route add -net 目标网络地址 netmask 子网掩码 gw 下一跳地址

    例如,要将数据包发送到目标网络 192.168.1.0/24,网关为 192.168.0.1,可以使用以下命令:

    
    route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1

  2. 使用 ip route 命令:

    ip route add 目的网络/子网掩码 via 网关

    同样,以 192.168.1.0/24 和网关 192.168.0.1 为例:

    ip route add 192.168.1.0/24 via 192.168.0.1

删除静态路由

同样地,也有两种主要的方式来删除静态路由:

  1. 使用 route 命令:

    route del -net 目标网络 netmask 子网掩码 gw 网关地址

    以删除目标网络为 192.168.1.0/24 的静态路由为例:

    route del -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1

  2. 使用 ip route 命令:

    ip route del 目标网络/子网掩码 via 下一跳地址

    同样以 192.168.1.0/24 和下一跳地址为 192.168.0.1 为例:

    ip route del 192.168.1.0/24 via 192.168.0.1

 开启路由转发

临时设置
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward 
#默认是零,没有开路由。1表示开启




永久设置 
[root@localhost ~]# vim  /etc/sysctl.conf  #添加如下内容

net.ipv4.ip_forward = 1

[root@localhost ~]# sysctl  -p             #立即生效

相关推荐

  1. 静态动态的区别

    2024-05-25 19:38:10       44 阅读
  2. 静态动态笔记

    2024-05-25 19:38:10       36 阅读
  3. 默认,直接静态动态

    2024-05-25 19:38:10       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-25 19:38:10       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-25 19:38:10       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-25 19:38:10       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-25 19:38:10       20 阅读

热门阅读

  1. android 在 Activity 的 onCreate 中获取View 的宽高

    2024-05-25 19:38:10       9 阅读
  2. 【数组】Leetcode 228. 汇总区间【简单】

    2024-05-25 19:38:10       11 阅读
  3. CentOS防火墙管理及配置

    2024-05-25 19:38:10       9 阅读
  4. python 庆余年2收视率数据分析与可视化

    2024-05-25 19:38:10       9 阅读
  5. amis中 InputTable Combo InputKV/InputKVS 区别

    2024-05-25 19:38:10       11 阅读
  6. jupyter notebook 实现联邦学习模型

    2024-05-25 19:38:10       11 阅读
  7. android上用QT实现绘制曲线及双指放大缩小

    2024-05-25 19:38:10       10 阅读
  8. 接口作为返回类型与类作为返回类型一样吗?

    2024-05-25 19:38:10       11 阅读
  9. 微信小程序自定义头部

    2024-05-25 19:38:10       9 阅读