Mikrotik的TR-069。 测试Freeacs作为RouterOS的自动配置服务器

在本文中,我将尝试逐步描述将优秀Freeacs项目的测试服务器安装到完全功能状态的过程,并展示使用mikrotik的实用技术:通过参数进行配置,脚本执行,更新,安装其他模块等。

本文的目的是鼓励同事放弃使用可怕的耙子和拐杖进行网络设备的管理,这些方法以自写的脚本Dude,Ansible等形式出现。在这方面,这会引起烟花爆竹,并在广场上引起群众大喜。

0.选择


为什么mikrotik-wiki中提到的freeac而不是genie- ac更生动?
因为根据mikrotik的精灵分析,有西班牙人的出版物。 这是去年MUM的pdf视频 。 幻灯片上的汽车旅行车很酷,但我想摆脱编写脚本,运行脚本,运行脚本的概念...

1.安装freeacs


我们将其安装在Centos7中,并且由于设备传输大量数据,并且ACS正在积极处理数据库-我们不会对资源感到贪婪。 为了舒适地工作,我们分配了2个CPU内核,4GB RAM和16GB ssd raid10快速存储。 我将在Proxmox VE lxc容器中安装freeacs,您可以使用任何方便的工具进行工作。
切记使用ACS在机器上设置正确的时间。

该系统将是一个测试系统,因此我们不会很聪明,只能按原样使用提供的友好安装脚本。

wget https://raw.githubusercontent.com/freeacs/freeacs/master/scripts/install_centos.sh chmod +x install_centos.sh ./ install_centos.sh 

脚本完成后,您可以立即使用凭据admin / freeacs进入ip机上的Web界面。


这是一个非常好的简约界面,结果证明它多么酷又快

2. freeacs的初始设置


ACS的基本控制单元是单元或CPE(客户驻地设备)。 最重要的是,我们需要管理单位的是单位类型,即 定义一组可定制单元参数的设备模型及其软件。 但是,尽管我们不知道如何获取新的设备类型,但是最好通过打开发现模式来询问设备本身。

在生产中,绝对不可能使用这种模式,但是我们需要尽快启动引擎并查看系统的功能。 所有基本设置都存储在/ opt / freeacs- *中。 因此,打开

  vi /opt/freeacs-tr069/config/application-config.conf 

我们发现

 discovery.mode = false 

并更改为

 discovery.mode = true 

另外,我们想增加Nginx和mysql可以使用的最大文件大小。 对于mysql,将该行添加到/etc/my.cnf

 max_allowed_packet=32M 

,对于nginx,请在/etc/nginx/nginx.conf中添加

 client_max_body_size 32m; 

到http部分。 否则,我们只能使用不超过1M的固件。

我们重新启动,就可以使用设备了。

在设备(CPE)的角色中,我们将使用hAP kid ACAP lite

在测试连接之前,建议将CPE手动配置为最低工作配置,以便将来要配置的参数为非空。 对于路由器,您可以最小程度地在ether1上启用dhcp客户端,安装tr-069client软件包并设置密码。

3.我们连接Mikrotik


建议使用有效的序列号登录所有设备。 然后,所有内容都会在日志中清除。 有人建议使用WAN MAC-不相信。 有人对所有人使用通用的登录/密码对-绕开他们。

我们打开tr-069日志以监视“协商”

 tail -f /var/log/freeacs-tr069/tr069-conversation.log 

打开winbox,菜单项TR-069。
ACS URL: http://10.110.0.109/tr069/prov : http://10.110.0.109/tr069/prov (替换为IP)
用户名:9249094C26CB(从系统>路由器板上复制序列)
密码:123456(发现不是必需的,但必须是)
定期通知间隔我们不会改变。 我们将通过ACS发布此设置

以下是远程连接初始化的设置,但我无法使用mikrotik来实现此目的。 尽管远程请求可用于开箱即用的电话。 有必要了解。



单击“应用”按钮后,将在终端中交换数据,在Freeacs Web界面中,您可以看到带有自动创建的设备类型“ hAPaclite”的路由器。



路由器已连接。 您可以查看自动创建的单位类型。 打开Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite 。 那里不仅有什么! 多达928个参数(我在shell中监视了)。 不论数量多少,我们稍后都会弄清楚,但目前来看一下。 这就是单位类型的含义。 这是带有键但没有值的受支持参数的列表。 值在以下级别-配置文件和单位中设置。

4.配置Mikrotik


现在该下载Web界面指南了。该2011指南就像一瓶优质的陈年葡萄酒。 让我们打开它,呼吸一下。

还有我们自己,在Web界面中,单击我们设备旁边的铅笔,然后进入设备配置模式。 看起来像这样:



简要检查此页面上的有趣内容:

单元配置块

  • 配置文件:这是“设备类型”中的配置文件。 层次结构是: UnitType > Profile > Unit 。 也就是说,例如,我们可以获得配置文件hAPaclite > hotspothAPaclite > branch ,但是在设备模型中

按钮配置
这些提示表明,Provisioning块中的所有按钮都可以通过ConnectionRequestURL立即应用配置。 但是,如上所述,这是行不通的,因此在单击按钮后,您将需要在mikrotik上重新启动tr-069客户端以手动开始设置。

  • 频率/价差:每周多少次提供±%的配置,以减少服务器和通信通道上的负载。 默认情况下,费用为7/20,即 每天±20%,并在几秒钟内给出这样的提示。 虽然没有必要改变交付频率tk。 日志中会有多余的噪音,而并非总是预期的设置应用

块配置历史记录 (过去48小时)

  • 它看起来像一个故事,就像一个故事,但是通过单击标题,您可以使用regexp和buns进入便捷的数据库搜索工具

参数块

最大和最重要的块,实际上是在其中设置和读取该单元的参数的。 现在,我们仅看到最重要的系统参数,否则,ACS将无法与该设备一起使用。 但是我们记得单位类型中有928个 。 让我们看一下所有的值,并决定使用Mikrotik吃什么。

4.1读取参数


在“配置”块中,单击“全部读取”按钮。 在块中-红色题字。 CPE(当前)值列显示在右侧。 在系统设置中,ProvisioningMode更改为READALL。



并且...除了System.X_FREEACS-COM.IM.Message Kick failed at...以外,什么都不会发生Kick failed at...

重新启动TR-069客户端或重新启动路由器,并继续刷新浏览器页面,直到在右侧的灰色矩形框中获得参数为止。
如果有人想尝一尝老式的话-手册中的此模式称为10.2检查模式。 它打开并工作有点错误,但其本质已被充分描述



READALL模式本身将在15分钟后关闭,我们将尝试找出在此模式下有用的内容以及可以“即时”纠正的内容。

您可以更改IP地址,启用/禁用接口,防火墙规则,带有注释(否则是一团糟),Wi-Fi等。

也就是说,尚无法仅使用TR-069配置mikrotik健全。 但是您可以很好地监视。 有关接口及其状态,可用内存等的可用统计信息

4.2投放参数


现在,让我们尝试通过tr-069以“自然”方式将参数传递到路由器。 第一个受害者是Device.DeviceInfo.X_MIKROTIK_SystemIdentity。 我们在单位参数All中找到它。 显然-未设置。 这意味着任何单位本身都可以具有任何身份。 别说了
在“创建”列中戳一个daw,设置名称Mr.White并戳“更新参数”按钮。 您已经猜到了接下来会发生什么。 在与总部的下一次通信会话中,路由器必须更改其身份。



但这对我们来说还不够。 在搜索所需单位时,始终可以使用诸如Identity这样的参数。 我们戳入参数名称,并在其中放置显示(D)和可搜索(S)的代码。 参数键更改为RWSD(记住,名称和键设置在“设备类型”的最高级别)



该值现在不仅显示在常规搜索列表中,而且还可以在“ Support > Search > Advanced form进行搜索



我们启动该规定,然后查看身份。 你好怀特先生! 现在,当tr-069client运行时,您将无法更改身份



4.3我们执行脚本


既然我们发现没有它们是没有办法的,那么让我们执行它们。

但是在开始使用文件之前,我们需要更正文件/opt/freeacs-tr069/config/application-config.confpublic.url指令。
毕竟,我们仍然通过一个脚本安装了测试配置。 别忘了

 # --- Public url (used for download f. ex.) --- public.url = "http://10.110.0.109" public.url: ${?PUBLIC_URL} 


重新启动ACS并直接进入“ Files & Scripts



但是我们现在打开的是单元类型,即 对于所有hAP ac路由器,无论是分支路由器,热点还是capsman,都在全球范围内使用。 我们还不需要这么高的级别,因此,在使用脚本和文件之前,您应该创建一个配置文件。 您可以自己将其称为设备的“位置”。

让我们将宝宝设为时间服务器。 体面的帖子,带有单独的软件包和少量参数。 转到Easy Provisioning > Profile > Create Profile然后在Unit Type: hAPaclite中创建一个时间服务器配置文件。 我们在默认配置文件中没有参数,因此没有要复制的内容从以下位置复制参数:“不要复制...”



目前还没有任何参数,但是可以设置以后希望从hAPaclite拼凑起来的参数,以便稍后在我们的时间服务器上看到。 例如,NTP服务器的公用地址。
让我们进入单元配置,并将其移至时间服务器配置文件

最后,我们转到“ Files & Scripts ,制作脚本,在这里,我们正在等待非常方便的包子。

为了在设备上执行脚本,我们需要选择Type:TR069_SCRIPT,并且NameTarget Name必须具有扩展名.alter。
同时,对于脚本,与软件不同,您可以加载完成的文件,也可以直接在“ 内容”字段中编写/编辑文件 让我们尝试在那里写。

为了立即看到结果-将vlan路由器添加到ether1

 /interface vlan add interface=ether1 name=vlan1 vlan-id=1 



驶入,单击“ 上传” ,操作完成。 我们的脚本vlan1.alter等待中。

好吧,开车吗? 不行 我们还必须将一个群组添加到我们的个人资料中。 组不包括在设备层次结构中,但是在UnitType或Profile中搜索单元是必需的,并且需要通过Advanced Provisioning执行组。 通常,组与位置关联,并具有嵌套结构。 让我们组成一个小组俄罗斯。



可以想象,我们能够将搜索范围从“全球所有hAPaclite上的时间服务器”缩小到“俄罗斯所有hAPaclite上的时间服务器”。 与小组有关的所有有趣事情仍然存在很大一层,但我们没有时间。 已经进入脚本。

 Advanced Provisioning > Job > Create Job 



由于毕竟我们处于“高级”模式,因此您可以在此处指定一系列不同的条件来启动作业,错误行为,重试和超时。 我建议阅读手册中的全部内容,或稍后在生产中实施时进行讨论。 现在,只需将n1置于Stop规则中,以便任务在我们的1个单元上完成后立即停止。

我们填写了必要的内容,并且它只能运行!



按开始并等待。 现在,被欠发达脚本杀死的设备的计数器将快速运行! 不,当然。 这些任务的执行时间很长,这与脚本,Ansible等不同。 单元本身按时间表或在网络上出现时申请任务,ACS会跟踪哪些单元已经收到任务以及任务的结束方式,并将其写入单元的参数中。 我们小组中有1个单位,如果有1001个单位,管理员将运行此任务并去钓鱼

来吧 已经重新启动路由器或重新启动TR-069客户端。 一切都会顺利进行,怀特先生将获得一个新的VLAN。 我们的停止规则分配将进入“暂停”状态。 也就是说,它仍然可以重新启动或更改。 如果单击完成,任务将被写入存档

4.4更新软件


这一点非常重要,因为Mikrotik固件是模块化的,但是添加模块不会更改设备固件的通用版本。 我们的ACS很正常,但我不习惯。
现在,我们将以快速而肮脏的方式进行操作,并立即将NTP模块推入通用固件,但是一旦设备上更新了版本,我们将无法以相同的方式添加另一个模块。
在生产中,最好不要使用这样的技巧,而仅使用脚本安装单元类型可选的模块。

因此,我们要做的第一件事是准备所需版本和体系结构的软件包,并将其放在一些可访问的Web服务器上。 为了进行测试,任何人都会怀抱我们怀特先生所能达到的目标;对于生产而言,最好组装必要软件的自动更新镜像,这在网络上并不可怕
重要! 请记住,始终在更新中包含tr-069client的软件包!

事实证明,数据包的路径长度非常重要! 当我尝试使用类似http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk ,mikrotik陷入了与资源的循环连接,从而将TRFERCOMPLETE赋予了tr-069日志。 我花了一定数量的神经细胞试图找出问题所在。 因此,虽然我们扎根,直到澄清

因此,我们应该可以通过http获得三个npk文件。 原来对我来说

 http://192.168.0.241/routeros-mipsbe-6.45.6.npk http://192.168.0.241/routeros/stable/mipsbe/ntp-6.45.6-mipsbe.npk http://192.168.0.241/routeros/stable/mipsbe/tr069-client-6.45.6-mipsbe.npk 

现在,需要在xml文件中使用FileType =“ 1 Firmware Upgrade Image”发行该文件,以供我们使用。 命名为ros.xml

我们遵循mikrotik-wiki的指示:

 <upgrade version="1" type="links"> <config /> <links> <link> <url>http://192.168.0.241/routeros-mipsbe-6.45.6.npk</url> </link> <link> <url>http://192.168.0.241/ntp-6.45.6-mipsbe.npk</url> </link> <link> <url>http://192.168.0.241/tr069-client-6.45.6-mipsbe.npk</url> </link> </links> </upgrade> 

缺少访问下载服务器的Username/Password现象令人震惊。 您可以尝试按照tr-069协议的条款A.3.2.8输入此内容:

 <link> <url>http://192.168.0.237/routeros/stable/mipsbe/ntp-6.45.6-mipsbe.npk</url> <Username>user</Username> <Password>pass</Password> </link> 

或直接询问官方的Mikrotik,以及* .npk的最大路径长度

我们转到我们已知的Files & Scripts ,并创建一个名称为 ros.xml, 目标名称为 ros.xml和版本为 6.45.6的类似SOFTWARE的文件
注意! 必须使用在设备上显示的格式指定此处的版本,并在参数System.X_FREEACS-COM.Device.SoftwareVersion传递该System.X_FREEACS-COM.Device.SoftwareVersion

我们选择要下载的xm文件,您就完成了。



现在,我们有大量的方法来升级您的设备。 通过主菜单中的向导,高级配置和具有SOFTWARE类型的任务,或者直接进入单元配置并单击升级。 我们选择最简单的方法,即使如此,文章还是很肿。



单击按钮,开始供应,然后完成。 测试程序完成。 现在,我们可以使用mikrotik做更多的事情。

5.结论


当我开始写作时,我想首先描述ip电话的连接,并使用他的示例来说明tr-069轻松而轻松地工作时它的酷炫程度。 但是后来,当我继续学习和研究这些资料时,我认为对于连接Mikrotik的人来说,没有一部电话对于独立学习会很吓人。

原则上,我们测试过的Freeacs已经可以在生产中使用,但是为此您需要配置安全性,SSL,需要在重置后为自动配置配置Mikrotik,需要调试单元类型的正确添加,拆解Web服务和融合外壳的工作等等。 尝试,发明并编写续集!

谢谢大家的关注! 我将很高兴提出修改和评论!

使用的材料清单和有用的链接:

在该主题的搜索开始时遇到的论坛主题
TR-069 CPE WAN管理协议修订案6
Freeacs维基
Mikrotik中的参数tr-069及其与终端命令的兼容性

更新10.13.2019:

浏览有关FreeACS项目的信息时,我遇到了一个波兰人提出的非常有趣的补丁 ,他们使用FreeACS服务20K设备。

该修补程序是针对不同版本的硬件制作的,但对于Microtics,它将允许您为具有不同软件模块集的同一路由器创建多个单元类型。
例如,hAPaclite-ntp,hAPaclite-ups等。 因此,为了规避“一个型号==一个固件”的限制

Source: https://habr.com/ru/post/zh-CN468241/


All Articles