OpenWrt开发必备软件模块 您所在的位置:网站首页 openwrt管理界面异常 OpenWrt开发必备软件模块

OpenWrt开发必备软件模块

2022-05-07 17:44| 来源: 网络整理| 查看: 265

OpenWrt开发必备软件模块——网络管理(CWMP、SSH、QoS、SMTP、NTP、uHTTPd) 原创

董哥的黑板报 2021-08-28 11:33:02 博主文章分类:OpenWrt开发 ©著作权

文章标签 openwrt 网络管理 智能路由器 CWMP、SSH、Qos SMTP、NTP、uHTTPd 文章分类 其他 前端开发

©著作权归作者所有:来自51CTO博客作者董哥的黑板报的原创作品,请联系作者获取转载授权,否则将追究法律责任OpenWrt开发必备软件模块——网络管理(CWMP、SSH、QoS、SMTP、NTP、uHTTPd)https://blog.51cto.com/u_15346415/3673308 一、CWMP简介 CWMP(CPE WAN Management Protocol)是一个面向终端设备的网管技术规范。这个技术规范提供了对下一代网络中家庭网络设备进行管理配置的通用框架、消息规范、管理方法和数据模型。 它由宽带(Broadband)论坛管理和发布,于2004年发布第一版,文件编号为TR-069。 CWMP 中定义了以下两种基本网络元素: ACS:自动配置服务器(Auto Configuration Server),网络中的管理服务器。 CPE:客户端设备(Customer premises equipment),网络中的被管理设备。 CWMP作为一个双向的SOAP/ HTTP的协议,它定义了客户端设备和自动配置服务器之间的通信协议。它包括一个安全的自动配置和其他CPE管理功能控制整体框架。协议支持了不同的互联网接入设备,如调制解调器、路由器、机顶盒和VoIP电话等。标准TR-069 协议的自动配置服务器对这些设备进行自动配置和管理。 CWMP是一个基于文本的协议,在设备和自动配置服务器之间传输 HTTP文本。在HTTP层面上CPE是客户端,ACS起到HTTP服务器的作用。这意味着控制配置数据的流动是客户端设备的职责。 会话的概念:所有的通信和操作都在配置会话的范围内进行。会话是由设备从一个通知(Inform)消息的传输开始的。ACS 服务器在收到通知消息时,开始对 CPE 调用接口方法进行状态查 询和配置。认证对于 CPE 来说是必不可少的,一般采用摘要认证算法来对 CPE 进行认证 配置数据模型:大多数的配置和诊断是通过设置和检索设备参数的值来实现的。这些配置都是组织为 一个定义良好的层次结构,包括常见或不太常见的所有设备模型。宽带论坛发布的数据模型标准有两种格式:(TR181包含了大多数设备类型的数据模型定义,设备所支持的管理模型用设备节点Device.DeviceInfo.SupportedDataModel来表示) XML包含每一个子元素的详细规范。 可读细节的PDF文件格式。 每一个定义的对象节点都需要标识出是可修改的还是只读的。这些是通过GetParameter Names方法来获取设备支持配置对象节点报告。设备不应允许标记为只读的任何参数的修 改。TR181 数据模型的规格和扩展清楚地标识了大多数设备参数的规格。参数的类型和含 义在标准 TR181 中有详细定义。 应用场景与优点:CWMP主要应用于电话、有线电视、宽带等家庭接入网络环境。在这些接入网络中, 由于用户设备数量很多,并且用户分散,不容易进行设备的管理和维护。采用CWMP协议,可以实现ACS对CPE设备的远程集中管理,解决了CPE设备的管理维护问题,提高了网络的运维效率。 二、提供的方法 设备的整个管理过程是建立在定义好的一组简单的操作方法上,每个方法都是原子操作。如果设备不能执行一个配置命令那就返回给 ACS适当的错误值。设备不应当因为错误中止会话。 常用支持的方法见下表: 方 法 含 义 SetParameterValues 服务器用来修改 CPE 的参数。 GetParameterValues 用于服务器获取 CPE 的参数配置值。一次可以获取一个或多个参数。 GetParameterNames 用于服务器来发现客户端可以访问的配置参数。 Inform CPE 调用服务器的 Inform 方法来建立和服务器之间的传输会话。 AddObject 用于服务器来针对多实例对象来创建新的实例。 DeleteObject 服务器删除客户端多实例中的一个实例。 三、客户端、服务端交互过程 为适应终端数量巨大并且地址不固定的特性,TR069 定义的交互流程中,管理交互通常都是由 CPE 发起的,由 CPE 来“请求”ACS 进行管理(见下图)。当 ACS 希望启动对 CPE 的管理时,协议定义了一个反向触发机制。CPE 建立一个用于侦听的 HTTP 端口,这 个端口地址信息在 CPE 初始连接时上报给 ACS,当 ACS 希望对 CPE 进行管理时,ACS 向 该端口建立传输控制协议连接并发送空的 POST 请求报文,CPE 收到该请求报文后随即启 动正向的 HTTP/HTTPS 连接,请求自动配置服务器的管理。

OpenWrt开发必备软件模块——网络管理(CWMP、SSH、QoS、SMTP、NTP、uHTTPd)_SMTP、NTP、uHTTPd

第1步:CPE和ACS建立TCP连接。 第2步:SSL初始化进行双向认证。 第3步:CPE发送Inform报文,开始建立 CWMP 连接。Inform 报文使用 Eventcode 字段 描述发送 Inform 报文的原因,通常为“0 BOOTSTRAP”,表示 CPE 首次启动建立连接。 第4步:如果CPE通过 ACS 的认证,ACS 将返回 Inform 响应报文,连接建立完成。 第5步:如果CPE没有别的请求,就会发送一个 HTTP Post 请求,内容为空,以满足 HTTP 报文请求/响应报文交互规则(CWMP 是基于 HTTP 协议的,CWMP 报文作为 HTTP 报文 的数据部分封装在 HTTP 报文中)。 第6步:ACS 查询 CPE 上设置的轮询通知间隔的值等。 第7步:CPE 把自身的轮询通知间隔的值返回给 ACS。 第8步:ACS发现轮询通知间隔的值设置不符合服务器配置,于是发起设置请求,要求将CPE的轮询通知间隔的值设置为1800 秒。 第9步:设置成功后,CPE发送响应报文。 第10步:ACS 发送空报文通知CPE没有别的请求了。 第11步:CPE 关闭连接。 四、配置CWMP OpenWrt通过freecwmp软件包来支持CWMP,但默认并不会对该软件包进行编译,下面我们通过openwrt源码进行编译。 第一步:使用feeds命令来查找和配置cwmp。./scripts/feeds search cwmp 第二步: 选择 freecwmp-curl 模块。./scripts/feeds install freecwmp-curl 第三步:然后在make menuconfig中就会有 UTilities --->freecwmp-curl的选择项,输入M 选择 并保存退出,然后进行编译,编译成功之后将所有的软件包放在服务器上,然后在OpenWrt 终端输入以下命令进行安装。opkg install freecwmp-curl 五、OpenWrt的SSH服务 SSH(Secure Shell)是专为远程登录会话和其他网络服务提供安全性的协议。OpenWrt 默认采用Dropbear软件来实现 SSH协议。它是一个在小内存环境下非常高效的SSH服务器和客户端。六、Dropbear概述 Dropbear 是一个开源软件包,是由马特·约翰逊撰写,并且和安全shell兼容的服务 器和客户端。它是在低内存和处理器资源情况下对标准的 OpenSSH 的一个替代品,适合 嵌入式操作系统。它是 OpenWrt 的一个核心组件。 Dropbear实现了SSH 协议V2版本。SSH协议是一种在不安全的网络环境中,通过加密和认证机制,实现安全的远程访问以及文件传输等业务的网络安全协议。它使用了第三方的加密算法,但嵌入到Dropbear代码中,终端的部分代码继承自OpenSSH软件。 Dropbear在客户端和服务器都实现了完整的SSH 协议 V2版。它不支持SSH版本V1的向后兼容性,以节省空间和资源,并避免了在 SSH 版本V1中固有的安全漏洞 Dropbear还提供安全远程复制功能,可以在网络上的主机之间进行远程文件复制。它利用 SSH 协议来传输数据,和SSH登录采用同样的认证和安全,当需要认证时提示输入密码。文件名包含一个用户和主机地址,以表明该文件复制的源地址和目标地址。本地文件名可以明确使用绝对或相对路径名来避免处理文件名含有主机说明符。远程主机之间的复制也是可以的。将目标路由器的配置文件复制下来的命令示例如下: scp [email protected]:/etc/config/dropbear /tmp/dropbear 七、配置文件 配置文件为/etc/config/dropbear,所有的配置在唯一一个配置节dropbear中。 下表列出了 SSH 服务器的主要配置选项: 名 称 类 型 含 义 PasswordAuth 布尔值 设置为0关闭密码认证。默认为 1 RootPasswordAuth 布尔值 设置为0关闭root用户的密码认证。默认为1 Port 数字 监听的端口号,默认为 22 BannerFile 字符串 用户认证成功后登录进去的输出内容的文件名 enable 布尔值 是否随系统启动该进程,默认为 1 Interface 字符串 指定监听的网卡接口,即只从该接口接收请求 下面所示的是dropbear的默认配置:打开了密码认证功能,并且允许管理员用户登录,设置在 TCP 端口号 22 处监听。

OpenWrt开发必备软件模块——网络管理(CWMP、SSH、QoS、SMTP、NTP、uHTTPd)_网络管理_02

八、QoS 服务质量(Quality of Service,QoS)就是指网络通信过程中,保障用户业务在带宽、 时延、抖动和丢包率等方面获得可预期的服务水平。家庭网内部的QoS主要指保证用户实时交互的业务符合用户的要求。九、服务模型 QoS 服务模型是指一组实现端到端服务质量保证的方式,QoS 服务模型主要有如下3种: 尽力而为服务模型(Best-Effort service) 尽力而为服务模型是一个单一的服务模型,也是最简单的服务模型。 对尽力而为服务模型,网络尽最大的可能性来发送报文,但对时延、可靠性等性能不提供任何保证。 尽力而为服务模型是Linux网络的缺省服务模型,通过先进先出队列来实现。 它适用于绝大多数网络应用,如HTTP、FTP和 E-Mail等。 综合服务模型型(Integrated service) 综合服务模型,它可以满足多种QoS需求。 该模型使用资源预留协议(RSVP),RSVP 运行在从源端到目的端的每个设备上,可以监视每个流,以防止其消耗资源过多。 这种体系能够明确区分并保证每一个业务流的服务质量,为网络提供最细粒度化的服务质量区分。 但是综合服务模型对设备的要求很高,当网络中的数据流数量很大时,设备的存储和处理能力会遇到很大的压力。 综合服务模型可扩展性很差,难以在互联网的核心网络实施。它仅适合在专用网络上实施。 区分服务模型(Differentiated service) 区分服务模型如下图所示,是IETF工作组为了克服综合服务模型的可扩展性差而在1998年提出的另一个服务模型,目的是制定一个可扩展性相对较强的方法来保证 IP的服务质量。 在区分服务模型中,根据服务要求对不同业务的数据进行分类,对报文按类进行优先级标记,然后有差别地提供服务。

OpenWrt开发必备软件模块——网络管理(CWMP、SSH、QoS、SMTP、NTP、uHTTPd)_智能路由器_03

十、OpenWrt的服务模型 OpenWrt采用区分服务模型来提供QoS。区分服务模型是一个多服务模型,它可以满足不同的QoS需求,例如优先保证通过HTTP上网流量。 它采用流量分类、流量整形、拥塞管理和拥塞避免机制来进行QoS。 流量分类:采用一定的规则识别符合某类特征的报文,它是对网络业务进行区分服务 的前提和基础。一般使用 Iptables 来根据端口和报文特征进行分类。 流量整形:当流量被整形时,其传输速率是受到控制。整形可以大大降低使用的带宽,这样是为了更好的网络效应。它也被用来平滑流量的突发大流量。流量整形发生在出口处。 调度:通过调度数据包的传输,可以在提高流量的交互性的同时,仍然保证大容量传 输的带宽。重新排序也被称为划分优先顺序,并且只发生在出口处。 带宽控制用于QoS时,一般用于保障某一类用户的服务质量,在家庭网内部常用于保 障主人的带宽,限制访客的带宽。 十一、工具 OpenWrt采用qos-Script来实现QoS,内部使用Iptables和Tc工具来实现QoS。 Iptables工具实现数据报文的分类。 Tc工具来实现配置Linux内核中优先级队列。Tc工具在iproute2代码包中。Tc的一个关键的概念是QDISC。QDISC 是“queueing discipline”的缩写,是指报文的排队规则,这是理解流量控制的基础。 报文排队规则 当内核需要发送一个数据包到一个接口时,它被排入到配置该接口的队列中。紧接着, 内核试图从队列获得尽可能多的数据包,把它们交由网络适配器驱动程序来处理。一个最 简单的 QDISC 队列是“PFIFO”,它根本没有特别处理,是一个纯粹的先进先出队列。当 网络接口不能瞬间处理完成时,它能存储部分流量。 类别:一些排队规则可以包含类,这些类又进一步包含了另外的排队规 则——流量可以在任何类内部排队规则。当内核试图取出一个数据包时,就可以来自任 何一个类的分类排队规则。排队规则可以在特定类别的队列中优先处理某些特定类型的 流量。 过滤器用于数据包分类,以确定哪一类数据包将加入队列中。当流量到达带有子类的 类时,数据包需要进行分类。各种方法都可以这样做,其中一个是过滤器。附着在类中的 所有过滤器被调用,直到其中一个返回一个决定。如果没有判决做出,其他标准可能是可 用的。每一个排队规则都是不同的处理。需要注意,过滤器位于排队规则内部,它们不能 独立存在。详细内容请参考Tc手册。 十二、配置Qos软件包 qos-scripts软件包 在make menuconfig时,选择qos-scripts软件包:“Base system” ==> "qos-scripts"。 编译后生成的软件包为qos-scripts。

OpenWrt开发必备软件模块——网络管理(CWMP、SSH、QoS、SMTP、NTP、uHTTPd)_网络管理_04

OpenWrt开发必备软件模块——网络管理(CWMP、SSH、QoS、SMTP、NTP、uHTTPd)_openwrt_05

sqm-scripts、wshaper软件包 在OpenWrt中至少还有其他两个QoS软件包分别为sqm-scripts和wshaper。 不能同时安装两个QoS软件包,因为它们均使用了Tc和iptables,并且按照不同的标准进行报文分类。 十三、配置文件(/etc/config/qos) QoS的UCI配置文件为/etc/config/qos,如何进行报文分类才能得到好的性能,这取决于应用程序。 通常有两个处理原则: 优先处理小包。例如 TCP-ACKs 和 DNS 等。 优先处理用户交互的报文。例如 SSH 等协议。 QoS-script的默认配置将域名请求和SSH访问作为优先规则。通常域名请求负载非常小,并且用户在上网时的第一步请求动作,用户通常会等待上网请求页面,因此设置为最 高优先级。SSH也是同样的原因,用户和服务器之间交互,用户等待服务器的响应。这样将对用户非常友好。QoS配置非常复杂,此处不再讲述。 十四、SMTP介绍 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是用于由源地址到目 的地址传送邮件的传输协议,由它来控制电子邮件的传输方式。 SMTP协议建立在TCP协议之上,它帮助每台计算机在发送或中转信件时找到目的地址。 路由器通过SMTP协议所指定的服务器,就可以把电子邮件寄到收信人的服务器上。 十五、邮件的格式 邮件的内容格式:包含邮件消息头和消息体,消息头和消息体之间由一个空行分隔。 十六、ssmtp软件包 OpenWrt使用sSMTP 软件包来支持邮件发送。sSMTP是一个简单的邮件发送客户端, 它不需要一个后台进程,不能接收邮件仅可以发送邮件。 ①在系统中安装 通过以下命令进行安装:opkg update opkg install ssmtp 在安装完成后 sSMTP 会链接到 sendmail,配置文件会安装到以下位置。/etc/ssmtp/ssmtp.conf /etc/ssmtp/revaliases ②在编译源码时安装 sSMTP 并不会默认选择编译,首先将 sSMTP 软件包从可选仓库中加入到选择列表中。./scripts/feeds install ssmtp 然后在make nenuconfig时,通过“Mail→ssmtp”进行选择。

OpenWrt开发必备软件模块——网络管理(CWMP、SSH、QoS、SMTP、NTP、uHTTPd)_智能路由器_06

OpenWrt开发必备软件模块——网络管理(CWMP、SSH、QoS、SMTP、NTP、uHTTPd)_openwrt_07

sSMTP编译脚本位于package/feeds/packages/ssmtp目录下,编译完成后的软件包名称为ssmtp。

OpenWrt开发必备软件模块——网络管理(CWMP、SSH、QoS、SMTP、NTP、uHTTPd)_openwrt_08

十七、ssmtp命令格式 发送命令接口格式如下:ssmtp [ flags ] 目的地址 < file 选项如下: -t:从消息内容中读取目的接收者。 -v:详细输出程序执行步骤。 -au username:指定 SMTP 认证用户名。 -ap password:指定 SMTP 认证密码。 -Cfile:不读取默认配置,使用指定配置文件。 十八、演示案例 如下所示的是一个示例邮件内容(msg.txt),包含收件人和抄送收件人,邮件主题为“Hello OpenWrt route”,邮件消息头和邮件内容之间有一个空行,最后是邮件正文。To:[email protected] CC:[email protected] Subject: Hello OpenWrt route test. Hello Openwrt bjbook.net 在发送邮件之前,我们需要配置邮件账户和服务器信息: echo "mainhub=smtp.163.com" >> /etc/ssmtp/ssmtp.conf echo "rewriteDomain=163.com" >> /etc/ssmtp/ssmtp.conf echo "root:[email protected]:smtp.163.com" >> /etc/ssmtp/revaliases 写好邮件之后我们使用命令来发送邮件,发送命令接口格式如下:(请替换为实际的账号和密码)ssmtp -f username au [email protected] -ap password -s [email protected] -v 收藏 评论 分享 微博 QQ 微信 举报

上一篇:服务/软件管理:42---NetCat网络工具

下一篇:一文打尽OpenWrt系统内核设置(/etc/sysctl.conf)、非UCI系统配置(/etc/rc.local、/etc/profile等)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有