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

在这篇文章中,我将尝试逐步描述一个伟大项目的测试服务器的安装过程 自由克斯 到功能齐全的状态,并展示使用 mikrotik 的实用技术:通过参数配置、脚本执行、更新、安装附加模块等。

这篇文章的目的是推动同事们拒绝使用可怕的耙子和拐杖,以自写脚本、Dude、Ansible 等形式来管理网络设备。并且,在这个场合,引起烟火和群众欢呼。正方形。

0。 选择

为什么在中提到了 freeacs 而不是 genie-acs mikrotik-wiki怎么更有活力呢?
因为西班牙有关于 genie-acs 和 mikrotik 的出版物。 他们来了 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

脚本完成后,您可以立即通过计算机的 IP 并使用凭据 admin/freeacs 进入 Web 界面

Mikrotik 的 TR-069。 测试 Freeacs 作为 RouterOS 的自动配置服务器
这是一个非常漂亮的简约界面,一切都变得多么酷和快

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 AC 精简版.

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

3. 连接 Mikrotik

最好使用有效的序列号作为登录来连接所有设备。 然后日志中的所有内容都会一目了然。 有人建议使用 WAN MAC - 不要相信。 有人为每个人使用通用的登录/通行证对 - 绕过它们。

打开tr-069日志来监控“谈判”

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

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

下面是连接远程初始化的设置,但我无法让 mikrotik 快速使用它。 尽管远程请求可以通过电话开箱即用。 必须弄清楚。

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

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

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

路由器已连接。 您可以查看自动生成的单位类型。 我们开放 Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite。 什么不存在! 多达928个参数(我在shell上窥探过)。 很多还是一点点——我们稍后会弄清楚,但现在我们只是快速浏览一下。 这就是单位类型的含义。 这是受支持选项的列表,其中包含键但没有值。 值在以下级别中设置 - 配置文件和单位。

4. 配置 Mikrotik

是时候下载了 网页界面指南 这本 2011 年指南就像一瓶上好的陈酿葡萄酒。 让我们打开它,让它呼吸。

而我们自己,在网络界面中,单击我们单位旁边的铅笔,然后进入单位配置模式。 它看起来像这样:

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

我们简单分析一下这个页面有什么有趣的地方:

单元配置块

  • 配置文件:这是单元类型内的配置文件。 层次结构是这样的: UnitType > Profile > Unit。 也就是说,我们可以创建例如配置文件 hAPaclite > hotspot и hAPaclite > branch,但在设备模型内

块配置 带按钮
提示提示配置块中的所有按钮都可以通过 ConnectionRequestURL 立即应用配置。 但是,正如我上面所说,这不起作用,因此按下按钮后,您需要在 mikrotik 上重新启动 tr-069 客户端才能手动启动配置。

  • Freq/Spread:每周交付配置±%的次数,以减少服务器和通信通道的负载。 默认情况下,费用为 7/20,即每天 ± 20% 并以秒为单位提示情况。 到目前为止,改变交付频率是没有意义的,因为。 日志中会有额外的噪音,并且并不总是预期的设置应用

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

  • 从表面上看,这个故事就像一个故事,但通过单击标题,您可以使用带有正则表达式和好东西的便捷数据库搜索工具

参数块

最大和最重要的块,实际上是在其中设置和读取该单元的参数的。 现在我们只能看到最重要的系统参数,没有这些参数,ACS 就无法与该装置一起工作。 但我们记得我们有它们的单位类型 - 928。 让我们看看所有的值,并决定 Mikrotik 与什么一起吃。

4.1 读取参数

在“配置”块中,单击“全部读取”按钮。 该块有红色铭文。 右侧会出现一栏 CPE(当前)值。 在系统设置中将 ProvisioningMode 更改为 READALL。

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

而且……除了 System.X_FREEACS-COM.IM.Message 中的一条消息之外,什么都不会发生 Kick failed at....

重启TR-069客户端或者重启路由器,不断刷新浏览器页面,直到得到右侧欢快的灰色框中的参数
如果有人想喝一口陈旧的,这种模式在手册中被描述为 10.2 检查模式。 它的启动和工作方式略有不同,但本质描述得相当清楚

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

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

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

也就是说,仅使用 TR-069 工具还无法合理配置 mikrotik。 但你可以很好地监控。 提供有关接口及其状态、可用内存等的统计信息。

4.2 传递参数

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

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

但这对我们来说还不够。 在寻找合适的单位时,最好始终掌握像“身份”这样的参数。 我们深入了解参数的名称,然后将复选框“显示”(D) 和“可搜索”(S) 放在那里。 参数键更改为 RWSD(记住,名称和键是在最高单元类型级别设置的)

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

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

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

我们发起提供并查看身份。 怀特先生您好! 现在,当 tr-069client 运行时,您将无法自行更改身份

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

4.3 执行脚本

既然我们发现没有它们就没有出路,那就让我们去实现它们吧。

但在我们开始处理文件之前,我们需要更正指令 public.url 在文件中 /opt/freeacs-tr069/config/application-config.conf
毕竟,我们仍然有一个使用一个脚本安装的测试配置。 没有忘记吗?

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

重新启动 ACS 并直接前往 Files & Scripts.

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

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

让我们的宝宝成为一个时间服务器。 具有独立软件包和少量参数的不错位置。 让我们去 Easy Provisioning > Profile > Create Profile 并在 Unit Type:hAPaclite 中创建配置文件 时间服务器。 我们的默认配置文件中没有任何参数,因此无需复制任何内容 复制参数来自:“不要复制...”

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

目前还没有参数,但可以设置我们稍后希望在时间服务器上看到的参数,这些参数由 hAPaclite 模制而成。 例如,NTP 服务器的通用地址。
让我们转到单位配置,并将其移至时间服务器配置文件

最后我们去 Files & Scripts,制作脚本,我们在这里等待令人惊奇的方便的面包。

为了在单元上执行脚本,我们需要选择 类型:TR069_SCRIPT а 名字 и 目标名称 必须有 .alter 扩展名
同时,对于脚本,与软件不同,您可以上传完成的文件,或者简单地在现场编写/编辑它 内容。 让我们试着写在那里。

这样您就可以立即看到结果 - 将 vlan 路由器添加到 ether1

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

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

我们开车,我们按下 上传 并做了。 我们的剧本 vlan1.alter 伺机而动。

嗯,我们走吧? 不。 我们还需要为我们的个人资料添加一个组。 组不包含在设备层次结构中,但需要在 UnitType 或 Profile 中搜索单元,并且需要通过 Advanced Provisioning 执行脚本。 通常,组与位置相关联,并具有嵌套结构。 让我们创建一个俄罗斯组。

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

想象一下,我们刚刚将搜索范围从“hAPaclite 上的所有世界时间服务器”缩小到“hAPaclite 上的所有俄罗斯时间服务器”。 对于团体来说,还有很多有趣的事情,但我们没有时间。 让我们进入脚本。

Advanced Provisioning > Job > Create Job

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

毕竟,由于我们处于高级模式,因此您可以在这里为任务的启动、错误行为、重复和超时指定一堆不同的条件。 我建议阅读手册中的所有内容,或者稍后在生产中实现时进行讨论。 现在,我们将 n1 设置为停止规则,以便任务在第一个单元完成后立即停止。

我们填写了必要的内容,剩下的只是启动!

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

按开始并等待。 现在,被未调试脚本杀死的设备的计数器将快速运行! 当然不是。 这样的任务是长期给出的,这就是它们与脚本、Ansible等的区别。 单元本身按计划申请任务,或者当它们出现在网络上时,ACS 会跟踪哪些单元已经收到任务以及任务如何结束,并将其写入单元的参数中。 我们组里有1个单位,如果有1001个,管理员会启动这个任务去钓鱼

快点。 已重新启动路由器或重新启动 TR-069 客户端。 一切都会顺利进行,Mr.White 将获得一个新的 VLAN。 我们的停止规则任务将进入暂停状态。 也就是说,它仍然可以重新启动或更改。 如果按“完成”,任务将被注销到存档中

4.4 更新软件

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

因此,我们首先要做的就是准备所需版本和架构的软件包,并将它们放在可用的Web服务器上。 对于测试来说,任何能联系到我们的 Mr.White 的人都会去,而对于生产来说,最好构建一个必要软件的自动更新镜像,这放在网络上并不可怕
重要的! 不要忘记始终在更新中包含 tr-069client 软件包!

事实证明,数据包路径的长度非常重要! 当我尝试使用类似的东西时 http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk,mikrotik 陷入与资源的循环连接,向 tr-069 发送重复的 TRANSFERCOMPLETE 日志。 我浪费了一些神经细胞试图找出问题所在。 因此,当我们把它放在根源上时,直到澄清

因此,我们应该通过 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

现在需要将其格式化为 FileType =“1 Firmware Upgrade Image”的 xml 文件,我们将其提供给 Mikrotik。 让名称为 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-3.2.8 协议的 A.069 段落输入:

<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,并在那里创建一个软件文件 名称:罗斯.xml, 目标名称:ros.xml 和 版本:6.45.6
注意力! 此处必须按照在设备上显示并在参数中传递的格式准确指定版本 System.X_FREEACS-COM.Device.SoftwareVersion.

我们选择要加载的 xm 文件,然后就完成了。

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

现在我们有很多方法来更新设备。 通过主菜单中的向导,通过高级配置和软件类型的任务,或者直接转到设备配置并单击升级。 我们就选最简单的方式吧,不然文章就肿了。

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

我们按下按钮,启动供应,您就完成了。 测试程序已经完成。 现在我们可以使用 mikrotik 做更多事情。

5。 结论

当我开始写作时,我想首先描述一下IP电话的连接,并用它的例子来解释当TR-069轻松且毫不费力地工作时它是多么的酷。 但后来,随着我对材料的深入和深入研究,我认为对于那些连接 Mikrotik 的人来说,自学没有手机会令人恐惧。

原则上,我们测试的Freeacs已经可以在生产中使用,但是为此你需要配置安全性、SSL,你需要配置microtics以在重置后自动配置,你需要调试Unit Type的正确添加,反汇编Web 服务和 fusion shell 的工作等等。 尝试、发明并写续集!

各位,谢谢大家的关注! 我很乐意接受指正和评论!

使用的材料和有用的链接列表:

当我开始搜索该主题时遇到的论坛主题
TR-069 CPE WAN 管理协议修正案 6
维基百科
Mikrotik中的参数tr-069,以及它们与终端命令的对应关系

来源: habr.com