通过 Web App 管理 Mikrotik 路由器

Mikrotik Router Management via Web App

我在构建项目时需要帮助。让我先描述一下我的项目-

我想构建一个 Web 应用程序(使用 php / php 框架 (laravel) , html, css, javaScript, bootstrarp ) 这将帮助 ISP 所有者管理他们的路由器(他们中的大多数使用 Mikrotik 路由器)。

构建此应用程序的原因:

这里的大多数 ISP 提供商都使用 Mikrotik 路由器来管理他们的互联网业务。但是使用 Winbox(一种基于桌面的 windows 软件,用于管理 Mikrotik 路由器)管理路由器对他们来说似乎很复杂。只是为了创建新的 ip 来分配新用户,如果 he/she 不支付账单并管理带宽,他们需要在每次他们发现困难时操作 winbox 时阻止用户。我的方法是构建一个 Web 应用程序来简化他们的工作。

我要提供的功能是-

  1. 正在创建新的 IP 地址并将其分配给用户(互联网用户/最终用户)
  2. 管理 IP 地址的带宽
  3. 自动阻止/锁定任何特定 IP 地址(在本例中为任何特定用户),他们在某个月的特定日期还没有支付月度账单
  4. 在自动支付会费时重新启用被阻止的 IP 地址
  5. 显示接收和使用带宽的每日图表

  6. 记录客户历史记录(客户IP地址、月租、姓名、地址等)

  7. 记录客户的付款历史
  8. 自动账单计算/到期计算
  9. 自动筛选到期用户

我能够按照描述完成 6 - 9 个功能,但我不知道如何实现 1 - 5 个功能!

我面临的问题:

一个。我不知道如何通过网络应用程序连接到 MikrotiK 路由器 b.如果我如何使用路由器 IP 地址访问 MikrotiK 路由器,我不知道如何在该路由器数据库上创建新的 IP 地址 C。如何通过网络应用程序管理带宽 d.如何阻止/锁定 ip 地址 !

我自己得到的分数:

我认为使用管理 vlan(路由器 IP 地址)我可以使用 ssh/telnet 访问路由器表单命令提示符。之后创建 lock/block 管理 IP 地址带宽的命令是什么?如果所有这些事情都可以使用命令提示符完成,我该如何为我的 Web 应用程序制作它?

任何人都可以帮我解决这个问题,参考任何 link?我用谷歌搜索,但我唯一找到的是 Mikrotik 路由器管理手册!

您应该使用 APIs 或像 ssh/telnet(PHP-SSH2) 这样的远程命令协议。
这是一个您可以使用的 PHP API 项目: https://github.com/BenMenking/routeros-api
连接后,您可以像在 mikrotik 控制台上一样提交命令。

Mikrotik commands wiki

我认为您最好在 MySQL 上使用带有数据库的 Radius 服务器。 Mikrotik 与 Radius 完美搭配。在应用程序中实现与数据库的接口以及与 Mikrotik 的所有交互都留给了 Radius。阅读有关 FreeRadius 的示例:

https://www.howtoforge.com/authentication-authorization-and-accounting-with-freeradius-and-mysql-backend-and-webbased-management-with-daloradius

几周前,我完成了您要求客户完成的部分工作。你的问题太笼统了,太广泛了,需要几个月的时间才能完成。

从您可以在 http://wiki.mikrotik.com/wiki/API_PHP_class 找到的基础知识开始您的项目,然后您可以扩展您的应用程序并 post 在 Whosebug 或 reddit 等地方提出关于您的问题的具体问题。

按照示例连接到 API,然后执行命令,然后断开连接。

$API = new RouterosAPI();
$API->debug = true; // turn debug on to learn more about your api
if ($API->connect($server , $username , $passwd, $port)) {

    // wireless registration table
    $API->write('/interface/wireless/registration-table/print',false);
    $API->write('=stats=');
    // print output here

} else {

    // connection fails
}
$API->disconnect();

参考: