Openwrt 整体功能组件介绍

news/2025/2/12 22:51:31/

Openwrt 整体功能组件介绍

  • 1. OpenWrt简介
    • 1.1 主要特点
    • 1.2 开源嵌入式操作系统
      • 1.2.1 嵌入式系统概念
      • 1.2.2 嵌入式系统分类
      • 1.2.3 嵌入式系统——安卓
      • 1.2.4 嵌入式系统的对比
  • 2 OpenWrt整体功能组件
    • 2.1 整体架构
    • 2.2 功能组件
      • 2.2.1 网络功能
      • 2.2.2 系统管理
      • 2.2.3 状态监控

1. OpenWrt简介

OpenWrt是一个嵌入式设备的Linux发行版,以GPL许可协议发行,拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中,可以非常容易地从零开始构建出全功能的智能路由或服务器设备。

OpenWrt项目始于2004年1月,其第一个版本采用了LinkSys的源码。在LinkSys的代码收费后,2005年改为采用正式发布的Linux内核(2.4.30)来集成,并将OpenWrt完全模块化,不断推出补丁和网络驱动。

OpenWrt的主要特点在于其高扩展性,并且文件系统可写,开发者无需在每一次修改后完全重新编译,只要编译自己的软件包即可,这样就加快了开发的进度,令它更像一个小型的Linux 电脑系统,到目前为止已经提供了100多个已编译好的软件,而且数量还在不断增加。另外OpenWrt提供了SDK,每个运行软件均能够以SDK来进行编译,以软件包形式进行安装和卸载。

1.1 主要特点

  1. 代码里不含第三方开源包,只包含开源包地址链接。
  2. 编译时自动下载源代码、打补丁来满足指定平台要求,并编译。还可以修改Makefile来下载最新的软件包。
  3. 使用LuCI作为最终用户管理界面。LuCI以Apache许可协议发布Web管理功能代码。
  4. UCI通用配置管理方法。
  5. 通过脚本来调用iptables来实现防火墙功能,配置保存在UCI文件中。
  6. 开放和可扩展的OPKG格式安装升级包。

1.2 开源嵌入式操作系统

1.2.1 嵌入式系统概念

嵌入式系统,是指嵌入到硬件系统内部,为特定应用功能而设计的专用软件系统。与个 人计算机的通用操作系统不同,嵌入式系统通常只针对特殊的用途。因此可以对它进行优化, 并裁剪到最小。现在通用的硬件系统发展非常迅速,因此出现了在通用硬件系统上的嵌入式操作系统。目前在嵌入式领域广泛使用的操作系统有:Linux、Windows Embedded和VxWorks 等。

1.2.2 嵌入式系统分类

根据用途,操作系统又可以分为:

  • 针对防火墙的操作系统:IPFire;
  • 针对智能路由器领域的嵌入式操作系统:Tomato、OpenWrt等;
  • 针对个人桌面领域操作系统:Ubuntu、Fedora 等;
  • 针对智能终端如手机:Android 、Firefox OS等。

它们均是基于 Linux 内核的操作系统。

1.2.3 嵌入式系统——安卓

安卓系统和我们生活紧密联系,也为大家所熟知,下面介绍下安卓系统,用于与Openwrt进行对比:

  1. Android 是谷歌研发的一款智能终端操作系统,是一种基于 Linux 的开放源代码的操 作系统,主要使用于移动设备,如智能手机、平板计算机、智能电视等。它由谷歌公司和开放手机联盟领导开发。
  2. Android 操作系统最初由安迪·鲁宾开发,最初目的是用于数码相机的操作系统。
  3. 2005年8月谷歌全资收购了Android 操作系统。
  4. 2007年11月,谷歌与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟,共同研发改良Android 系统。随后谷歌以Apache开源许可协议的授权方式发布了Android的源代码,Android以 JAVA 层封装了系统层提供给应用开发者统一的API接口。
  5. 第一部 Android 智能手机发布于 2008年10月。
  6. 目前,Android已逐渐扩展到平板计算机及其他领域,如电视、智能手表、数码相机和游戏机等。
  7. 2015年,Android以85%的市场占有率占据移动操作系统市场之首。
  8. Android 操作系统已经演化为一个移动设备开发平台,其软件层次大体上分为 4 层, 即操作系统内核、中间层、应用程序框架层和应用程序。应用程序框架层为应用程序开发者提供了功能强大的 API,包括图形显示的各种组件,如视图、列表、文本框、按钮以及嵌入式的Web浏览器等。
AndroidOpenWrt
内核Linux 内核Linux 内核
许可协议Apache2.0GNU License
使用场景面向终端用户,手持设备。用户接口采用JAVA 提供图形用户界面GUI服务器、家庭路由器等,用户接口默认为 UCI 命令行提供,也支持通过 Web 方式来管理
开发主导模式由谷歌公司主导开发由 OpenWrt.org 社区主导,社区由个人组成,更开放

1.2.4 嵌入式系统的对比

下表为开源路由器各种发行版本的对比:

在这里插入图片描述

2 OpenWrt整体功能组件

2.1 整体架构

路由器的典型架构划分为:管理平面、控制平面、数据转发平面。
在这里插入图片描述

  1. 管理平面
    管理平面是提供网络管理人员使用UCI、Web、SNMP和TR069等方式来管理路由器,以及执行这些管理功能所需的配置命令等,管理平面提供了控制平面正常运行所需的配置参数。
  2. 控制平面
    控制平面用于控制和管理所有网络协议的运行,例如 ARP、DHCP、DNS 及组播协议的管理和控制。
  3. 转发平面
    转发平面用于处理和转发不同网络接口上各种类型的数据,例如进行网络地址转换、路由、ACL等。典型路由器在数据转发平面占用最多的系统资源。转发平面使用控制平面提供的路由信息进行数据报文的接收、网络地址转换、查找路由表、以及从接口发出报文等工作。如果找不到路由,则发送ICMP不可达消息,我们可以使用route命令查看路由信息。

路由器的3个平面划分仅仅是逻辑意义上的功能划分,在实际的功能模块并没有完全区分。

2.2 功能组件

OpenWrt 是一个基于 Linux 的智能路由器操作系统。它提供各种功能插件,使用户可以自定义安装各种应用软件来管理路由器;默认内置了一些基础功能。其主要功能可以分为3个部分:网络功能、系统管理功能、状态监控功能。

2.2.1 网络功能

网络功能是路由器的核心功能。主要包含以下几项:

  • 网络接口设置和管理;
  • DHCP和DNS协议支持,家庭网内作为 DHCP 服务器,在广域网作为 DHCP 客户端;加快DNS 响应和减少广域网DNS流量;
  • 主机名设置;
  • 静态路由及组播路由功能;
  • 防火墙功能(IPv4网络地址转换、DMZ、报文过滤、端口过滤、mac过滤及防洪水攻击等);
  • 便捷的网络问题诊断工具ping、traceroute和nslookup等;
  • IP带宽控制(QoS);
  • 设备即插即用(UPnP);

下图是MTK750模块openwrt系统原生的Webui网络管理界面,基本涵盖了我们上面刚说的功能配置:
在这里插入图片描述

2.2.2 系统管理

系统管理是路由器除了网络管理之外的其他管理功能:

  • 主机名称设置、日志服务器设置、NTP(网络时间)、语言设置等;
  • 账户密码设置、远程安全登录设置(SSH);
  • 软件管理、配置备份等;
  • 进程启动管理及定时任务管理;
  • 文件系统管理;
  • LED配置;
  • 系统的备份和升级;
  • 重启设置和日志管理。

下图是MTK750模块openwrt系统原生的Webui系统管理界面,基本涵盖了我们上面刚说的功能配置:
在这里插入图片描述

2.2.3 状态监控

状态监控主要用于监控路由器的当前状态,并且只能查看当前的路由器状态。主要包含以下几个功能:

  • 查看系统固件版本、运行时间、平均负载及内存占用等;
  • 网络状态、DHCP用户租赁信息、DNS信息及无线用户等;
  • 防火墙状态统计、路由转发表及 ARP表;
  • 系统日志和内核启动日志;
  • 系统进程负载状态,包括 CPU 使用率及内存使用率;

下图是MTK750模块openwrt系统原生的Webui状态监控界面,基本涵盖了我们上面刚说的功能配置:
在这里插入图片描述


http://www.ppmy.cn/news/1258011.html

相关文章

三个角度(握手、挥手、传输)优化TCP

TCP 三次握手的性能提升 客户端的优化 当客户端发起 SYN 包时,可以通过 tcp_syn_retries 控制其重传的次数。 服务端的优化 当服务端 SYN 半连接队列溢出后,会导致后续连接被丢弃,可以通过 netstat -s 观察半连接队列溢出的情况,如…

站点可靠性工程SRE最佳实践 -- 黄金监控信号

延迟、流量、错误率、饱和度这四大黄金信号是SRE的最佳实践,可用来帮助SRE团队快速评估系统状态,在异常情况下及时介入,保证系统始终工作在健康状态。原文: Four Golden Signals Of Monitoring: Site Reliability Engineering (SRE) Metrics[…

处理k8s中创建ingress失败

创建ingress: 如果在创建过程中出错了: 处理方法就是: kubectl get ValidatingWebhookConfiguration kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission 然后再次创建,发现可以:

配置Jira安全管理员会话

JIRA 要求用户必须通过一个安全管理会话使用 JIRA 管理屏幕,从而保护对其管理功能的访问。(这也称为 websudo。)当 JIRA 管理员(已登录到 JIRA)尝试访问管理功能时,系统将提示他们再次登录。这将使管理员登…

Leetcode—205.同构字符串【简单】

2023每日刷题&#xff08;五十&#xff09; Leetcode—205.同构字符串 算法思想 参考自k神思路 实现代码 class Solution { public:unordered_map<char, char> s2t, t2s;bool isIsomorphic(string s, string t) {int n s.size();for(int i 0; i < n; i) {char …

离线安装Zabbix的MariaDB报Error: Package: 1:mariadb-server-5.5.68-1.el7.x86 64异常解决方法

离线安装Zabbix&#xff0c;结果在安装MariaDB时候&#xff0c;报出以下异常 Error: Package: 1:mariadb-server-5.5.68-1.el7.x86 64(New) Requires: per(File::Path) Error: Package: perl-IO-Compress-2.061-2.el7.noarch (New) Requires: perl(I0: :Seekable) Error: Pack…

linux关于文件大小的换算

这里以我自己下载的一个wps安装包为例解释linux中的文件大小。 基础知识&#xff1a;1个块4096Byte&#xff08;即4096字节&#xff09;。 第一步&#xff1a;用ll查询&#xff0c;发现安装包文件的大小是&#xff1a;411651587字节。这是文件实际的长度&#xff08;所占用的字…

数据库相关算法题 V2

游戏玩法分析1 在本题中&#xff0c;如何在group中取第一次登陆日期将是难点所在。 为了解决这点我们可以用上聚合函数min()去做到&#xff0c;如果不用的话&#xff0c;将会导致取到顺序的第一个登陆日期&#xff0c;而不是我们期待的第一次登陆日期&#xff0c; SELECTA.p…