在这篇文章中,我将尝试逐步描述一个伟大项目的测试服务器的安装过程
这篇文章的目的是推动同事们拒绝使用可怕的耙子和拐杖,以自写脚本、Dude、Ansible 等形式来管理网络设备。并且,在这个场合,引起烟火和群众欢呼。正方形。
0。 选择
为什么在中提到了 freeacs 而不是 genie-acs
因为西班牙有关于 genie-acs 和 mikrotik 的出版物。 他们来了
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 界面
这是一个非常漂亮的简约界面,一切都变得多么酷和快
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)的作用下,我们将拥有一个工作狂宝宝
在测试连接之前,建议手动将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 快速使用它。 尽管远程请求可以通过电话开箱即用。 必须弄清楚。
按下“应用”按钮后,数据将在终端中交换,在 Freeacs Web 界面中,您可以看到我们的路由器具有自动创建的单元类型“hAPaclite”。
路由器已连接。 您可以查看自动生成的单位类型。 我们开放 Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite
。 什么不存在! 多达928个参数(我在shell上窥探过)。 很多还是一点点——我们稍后会弄清楚,但现在我们只是快速浏览一下。 这就是单位类型的含义。 这是受支持选项的列表,其中包含键但没有值。 值在以下级别中设置 - 配置文件和单位。
4. 配置 Mikrotik
是时候下载了
而我们自己,在网络界面中,单击我们单位旁边的铅笔,然后进入单位配置模式。 它看起来像这样:
我们简单分析一下这个页面有什么有趣的地方:
单元配置块
- 配置文件:这是单元类型内的配置文件。 层次结构是这样的:
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。
而且……除了 System.X_FREEACS-COM.IM.Message 中的一条消息之外,什么都不会发生 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 单元的参数中找到它。 如您所见,它尚未设置。 这意味着任何单位本身都可以拥有任何身份。 忍够了这个!
我们在创建列中戳了一个箭头,设置名称 Mr.White 并点击更新参数按钮。 接下来会发生什么,你已经猜到了。 在与总部的下一次通信会话中,路由器必须更改其身份。
但这对我们来说还不够。 在寻找合适的单位时,最好始终掌握像“身份”这样的参数。 我们深入了解参数的名称,然后将复选框“显示”(D) 和“可搜索”(S) 放在那里。 参数键更改为 RWSD(记住,名称和键是在最高单元类型级别设置的)
该值现在不仅显示在常规搜索列表中,还可以在 Support > Search > Advanced form
我们发起提供并查看身份。 怀特先生您好! 现在,当 tr-069client 运行时,您将无法自行更改身份
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
.
但现在我们打开的是Unit Type,即全局到所有 hAP ac lite 路由器,无论是分支路由器、热点还是 capsman。 我们还不需要这么高的级别,因此,在使用脚本和文件之前,您应该创建一个配置文件。 您可以自己将其称为设备的“位置”。
让我们的宝宝成为一个时间服务器。 具有独立软件包和少量参数的不错位置。 让我们去 Easy Provisioning > Profile > Create Profile
并在 Unit Type:hAPaclite 中创建配置文件 时间服务器。 我们的默认配置文件中没有任何参数,因此无需复制任何内容 复制参数来自:“不要复制...”
目前还没有参数,但可以设置我们稍后希望在时间服务器上看到的参数,这些参数由 hAPaclite 模制而成。 例如,NTP 服务器的通用地址。
让我们转到单位配置,并将其移至时间服务器配置文件
最后我们去 Files & Scripts
,制作脚本,我们在这里等待令人惊奇的方便的面包。
为了在单元上执行脚本,我们需要选择 类型:TR069_SCRIPT а 名字 и 目标名称 必须有 .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 设置为停止规则,以便任务在第一个单元完成后立即停止。
我们填写了必要的内容,剩下的只是启动!
按开始并等待。 现在,被未调试脚本杀死的设备的计数器将快速运行! 当然不是。 这样的任务是长期给出的,这就是它们与脚本、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
我们按照以下指示进行操作
<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 做更多事情。
5。 结论
当我开始写作时,我想首先描述一下IP电话的连接,并用它的例子来解释当TR-069轻松且毫不费力地工作时它是多么的酷。 但后来,随着我对材料的深入和深入研究,我认为对于那些连接 Mikrotik 的人来说,自学没有手机会令人恐惧。
原则上,我们测试的Freeacs已经可以在生产中使用,但是为此你需要配置安全性、SSL,你需要配置microtics以在重置后自动配置,你需要调试Unit Type的正确添加,反汇编Web 服务和 fusion shell 的工作等等。 尝试、发明并写续集!
各位,谢谢大家的关注! 我很乐意接受指正和评论!
使用的材料和有用的链接列表:
来源: habr.com