当前位置: 首页 > news >正文

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             #立即生效

相关文章:

Centos7静态路由和动态路由

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

戴尔(Dell)服务器运行状况监控

戴尔(Dell)服务器因其加速的性能、增强的自动化和简化的管理而受到全球许多组织的青睐,许多组织将其业务关键应用程序和功能放在戴尔(Dell)服务器中,因此,有效的戴尔(Dell&#xff0…...

vue3文档v-model.xxxx自定义修饰符

...

微信小程序毕业设计-智慧旅游平台系统项目开发实战(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…...

抖音小店新规又来了!平台下调了两项门槛,惊掉商家下巴!

大家好,我是电商糖果 平台这几年为了快速发展电商项目,一直在向商家释放友好政策,目的就是为了吸引更多的商家入驻。 这不官方5月30日起下调了两个门槛,让不少商家大呼不可思议。 第一个就是保证金下调。 平台按照商家经营类目…...

【启程Golang之旅】运算符与流程控制讲解

欢迎来到Golang的世界!在当今快节奏的软件开发领域,选择一种高效、简洁的编程语言至关重要。而在这方面,Golang(又称Go)无疑是一个备受瞩目的选择。在本文中,带领您探索Golang的世界,一步步地了…...

Docker: exec命令浅析

简介 Docker exec命令是Docker提供的一个强大工具,用于在正在运行的容器中执行命令。在此将介绍Docker exec命令的用法和示例,帮助大家更好地理解和使用这个命令。 Docker是一种流行的容器化平台,允许用户在容器中运行应用程序。有时候&#…...

c++的查漏补缺 1、函数指针

今天写链表的插入排序时遇到了一个问题 void InsertionSortList(ListNode* head, int n){if (!head||!head->next) return nullptr;auto dummy new ListNode(-1);dummy->next head;auto pre head;auto cur head->next;while (cur ! NULL){auto tmp dummy;if (pre…...

uniapp+php服务端实现苹果iap内购的消耗性项目和非续期订阅项目,前后端代码加逻辑分析

前言:公司的项目app在上架苹果商店时发现人家要求里面的部分购买项目必须使用iap购买的方式,使用原本的微信支付方式审核不给通过,无奈只能重新研究这个东西。做起来还是有点麻烦,主要是网上的文章很少,不能直接硬抄。…...

【代码随想录】【算法训练营】【第11天】 [20]有效的括号 [1047]删除字符串中的所有相邻重复项 [150]逆波兰表达式求值

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 11,周六,又开始变的困难了~ 题目详情 [20] 有效的括号 题目描述 20 有效的括号 解题思路 前提:括号匹配 思路:利用栈的后入先出特性&#xf…...

vue实现图片懒加载

在src中创建一个directives文件夹在里面创建一个lazy.js文件 在main.js中引入 import lazy from ./directives/lazy app.directive(lazy, lazy) 在app.vue中 <script setup lang"ts"> import { RouterLink, RouterView } from vue-router import HelloWorl…...

Python | Leetcode Python题解之第101题对称二叉树

题目&#xff1a; 题解&#xff1a; class Solution:# 在【100. 相同的树】的基础上稍加改动def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:if p is None or q is None:return p is qreturn p.val q.val and self.isSameTree(p.left, q.ri…...

周报5.20~5.26

学习内容&#xff1a; 主要了解了Qt的信号和槽、ui页面布局、各类常见控件的使用、绘图事件以及文件操作的相关知识&#xff0c;并且完成相关案例的设计。练习代码了解了多层感知机、激活函数、多项式回归、高维线性回归、暂退法、分布偏移、深度学习计算等相关知识与代码案例…...

RDP方式连接服务器上传文件方法

随笔 目录 1. RDP 连接服务器 2. 为避免rdp 访问界面文字不清晰 3. 本地上传文件到服务器 1. RDP 连接服务器 # mstsc 连接服务器step1: 输入mstscstep2: 输入 IP, username, passwd 2. 为避免rdp 访问界面文字不清晰 解决方法&#xff1a; 3. 本地上传文件到服务器 step…...

网络信息安全

目录 引言 网络信息安全的基本概念 定义 主要目标 网络信息安全的范围 主要威胁 恶意软件 黑客攻击 拒绝服务攻击 社交工程 内部威胁 常用技术和防护措施 加密技术 防火墙 入侵检测和防御系统 访问控制 多因素认证 安全审计和监控 安全培训和意识提升 未来发…...

java中的对象

文章目录 一、对象的创建过程1.1 检查加载1.2 分配内存1.3 内存空间初始化1.4 设置对象头1.5 对象初始化 二、对象内存布局2.1 布局解析2.2 JOL使用 三、对象的访问定位3.1 句柄访问3.2 直接指针 四、对象的分配策略4.1 栈上分配4.2 优先分配到Eden区4.3 大对象直接进入老年代4…...

【MySQL精通之路】MySQL-环境变量

本节列出了MySQL直接或间接使用的环境变量。 其中大部分也可以在本手册的其他地方找到。 命令行上的选项优先于选项文件和环境变量中指定的值&#xff0c;选项文件中的值优先于环境变量中的值。 在许多情况下&#xff0c;最好使用配置文件而不是环境变量来修改MySQL的行为。…...

Day42 最后一块石头的重量Ⅱ + 目标和 + 一和零

1049 最后一块石头的重量Ⅱ 题目链接&#xff1a;1049.最后一块石头的重量Ⅱ 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和…...

01.爬虫---初识网络爬虫

01.初识网络爬虫 1.什么是网络爬虫2.网络爬虫的类型3.网络爬虫的工作原理4.网络爬虫的应用场景5.网络爬虫的挑战与应对策略6.爬虫的合法性总结 1.什么是网络爬虫 网络爬虫&#xff0c;亦称网络蜘蛛或网络机器人&#xff0c;是一种能够自动地、系统地浏览和收集互联网上信息的程…...

集合、Collection接口特点和常用方法

1、集合介绍 对于保存多个数据使用的是数组&#xff0c;那么数组有不足的地方。比如&#xff0c; 长度开始时必须指定&#xff0c;而且一旦制定&#xff0c;不能更改。 保存的必须为同一类型的元素。 使用数组进行增加/删除元素的示意代码&#xff0c;也就是比较麻烦。 为…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...