Shallow RouterOS API是基于RouterOS的API接口搭建的一个监控管理平台,主要用于本地网络的RouterOS设备管理,目前具备实时监控功能,其他功能还在开发中。。。
由于个人的开发经验非常的浅薄,所以使用shallow这个名称来定义项目!
当前仅内部测试,如果有任何需求和bug等问题,请发邮件到athlon_sds@163.com
建议:
1、API对接主要适配RouterOS v7,最好是v7.18+
2、在RouterOS的container运行,已经测试在基于RouterOS v7.17+的hAP ax3,RB5009,RB450x4,CHR,x86等硬件
3、在RouterOS的RB、CRS和CCR设备运行时,API获取数据CPU消耗较低,主要是前端页面刷新时CPU消耗较高,如RB450x4(IPQ-4019 arm32 4核心)在刷新页面时CPU消耗在40%左右,只是在停留在仪表盘或设备状态观察数据CPU消耗在7-10%左右
RouterOS配置
Shallow RouterOS API是基于IP连接访问RouterOS,需要在RouterOS的/ip service 下启用api服务
为防止其他IP攻击,可使用available-from属性设置仅允许Shallow RouterOS API的主机访问,如下图shallow部署主机IP是192.168.88.18
部署
建议RouterOS v7.18以上版本
当前提供Docker部署,支持x86,ARM和ARM64三种平台,可以在RouterOS v7和Linux的Docker进行部署;
此处具体说下RouterOS部署,要求RouterOS硬件平台是x86/CHR,ARM64或ARM,具体查看RouterOS硬件平台,可以通过/system/resource下
根据不同平台选择对应的Docker镜像,目前提供x86和arm两种镜像,arm镜像兼容arm/arm64平台
首先将镜像上传到RouterOS file目录下,使用winbox打开file,并通过鼠标拖动到file列表中对应的目录:
以上操作演示使用本地ROM存储Docker镜像,需要注意RB、CRS和CCR硬件产品选择扩展的外部存储,不要使用本地ROM存储部署Docker,这样是避免ROM频繁读写导致损坏,如usb扩展存储
进入interface列表,选择VETH,创建veth1接口用于分配给docker的网络连接
这里设置的IP地址是10.10.0.2/24,网关是10.10.0.1
在bridge创建一个桥接网络,取名docker,用于将veth1加入到桥接
进入bridge port,将veth1加入docker桥接
进入/ip/address配置docker桥接的IP地址为10.10.0.1/24,作为连接docker的网关
以上基本的docker网络配置完成,进入container创建shallow api的容器,
操作:
file:选择上传的shallowapiarm.tar
interface:选择veth1
hostname:设置shallowapi
为方便查看日志,可以勾选logging,
勾选Start On Boot开机启动
点后点击apply,等待解压
解压完成后:
点击start运行,处于running说明已经运行
在RouterOS 的log日志中,可以看到http server started on 6636,http服务运行在tcp 6636端口
如果你的RouterOS作为网关,即可以通过http://10.10.0.2:6636/login访问
Shallow API界面
通过http访问登录页面,http://ip:6636/login
默认账号:admin,密码:123456
登录后进入仪表盘,这里是已经创建的设备列表
进入设备管理,可以添加要管理的RouterOS设备,下面添加使用的是API方式端口8728,如果是RouterOS本地容器部署选择API方式不影响安全,如果是通过局域网或公共网络访问选择API-SSL加密通信
创建完成后,可以点击查看,了解设备的运行详情:
查看历史数据(docker版本当前仅保留72小时数据)
API-SSL连接
API-SSL连接,需要在Shallow API和RouterOS两端添加CA证书,Shallow RouterOS API初次安装会默认生成有效期为5年的自签证书,也可以重新生成一份新的自签证书
下载证书: 点击下载按钮获取证书文件certificate.zip,里面包含server.pem和key.pem,解压后导入RouterOS的certificate下
首先,进入证书页面,可以看到默认证书,点击下载按钮
下载完成后,解压certificate.zip文件
通过鼠标将两份文件拖动到winbox的file列表下
然后可以选择命令导入
[admin@MikroTik] > certificate/
[admin@MikroTik] /certificate> import file-name=server.pem
[admin@MikroTik] /certificate> import file-name=key.pem
在winbox的system/certificates下可以看到成功导入证书确认前缀是KAT
进入ip service选择对应的证书
Shallow RouterOS API添加设备