关于 routeros-fundamentals
面向操作 MikroTik RouterOS 的 Agent,说明其与 GNU/Linux 的差异,帮助避免错误假设。内容涵盖 CLI、REST API、版本、架构和硬件信息。
主要功能
- 01RouterOS 与 GNU/Linux 的差异
- 02CLI 语法与使用说明
- 03REST API 方法及注意事项
- 04版本与架构参考
- 05硬件检查命令
适用场景
- 01规划通过 CLI 管理 RouterOS
- 02构造 RouterOS REST API 请求
- 03检查设备版本和架构
- 04避免在 Agent 指引中假设存在 Unix shell
MCP 相关
该技能指向 rosetta MCP 服务,用于浏览命令树和查询属性。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ tikoci/ routeros-skills --skill routeros-fundamentals安装后在 Claude Code 中输入/routeros-fundamentals确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/async-commands-rest.mdbun-runtime-gotchas.mddevice-mode-rest.mddevice-mode.mdextra-packages.mdlicensing-rest.mdpackages-rest.mdrest-api-patterns.mdrouteros-firewall-rest.mdrouteros-networking-rest.mdrouteros-users-rest.mdscripting.mdversion-parsing.md详细介绍
RouterOS 基础知识
RouterOS 不是 GNU/Linux
RouterOS 运行 Linux 内核(5.6.3),但内核之上的所有内容都是 MikroTik 专有的 nova 系统。这是 Agent 最需要牢记的一点。
RouterOS 上不存在的内容:
- 没有
/bin、/usr、/etc、/var——没有 FHS 目录结构 - 没有 bash、sh、ash、zsh——根本没有 Unix shell
- 没有 coreutils(
ls、cat、grep、ps、mount、ip、iptables等) - 没有 glibc、musl、busybox
- 没有 apt、pkg、opkg——没有包管理器(软件包是
.npk文件,通过上传后重启安装) - 没有
systemctl、service或 init 系统 - 用户空间无法访问
/proc或/sys - 没有
docker、podman——RouterOS 有自己的/container子系统(7.x+)
RouterOS 上存在的内容:
- RouterOS CLI——它有自己的语言,不是 shell。可通过 SSH、串口、WinBox 或 WebFig 访问
/rest/下的 REST API(HTTP,默认端口为 80)——主要的程序化接口- RouterOS 脚本语言(
.rsc文件)——它有自己的语法,不是 bash。参见routeros-scripting技能和脚本参考 - WebFig(Web UI),端口为 80
- WinBox 协议,端口为 8291
Agent 应避免的常见错误:
- 不要尝试执行
ssh admin@host 'ls /'——这会打开 RouterOS CLI,而不是 shell - 不要建议使用
mount、fdisk、mkfs——应改用/disk命令 - 不要在
/etc/中查找配置文件——配置存储在 RouterOS 数据库中 - 不要假定
ping的用法相同——在 CLI 中应使用/tool/ping或/ping - 不要建议通过
apt或opkg安装软件包——通过 SCP 上传.npk,然后执行/system/package/apply-changes(7.18+)或/system/reboot(<7.18) - 完整的软件包列表和安装方式参见额外软件包参考
RouterOS CLI 语法
RouterOS CLI 使用基于路径的导航,不使用 Unix 命令管道:
# Navigation
/ip/address/print
/interface/print
/system/resource/print
# Adding entries
/ip/address/add address=192.168.1.1/24 interface=ether1
# Modifying (by internal ID or find expression)
/ip/address/set [find interface=ether1] address=10.0.0.1/24
# Removing
/ip/address/remove [find address="192.168.1.1/24"]
# Running a command
/system/reboot
/tool/fetch url="http://example.com/file.npk" dst-path="/"
与 shell 的主要语法区别:
=用于设置属性(两侧不能有空格)[find ...]是查询表达式(类似 WHERE)- 交互式
print显示的行号不是可在脚本中使用的对象 ID;请使用[find ...]或*HEX内部 ID - 字符串使用
""(只能用双引号) - 注释使用
# - 变量:
:local myVar "value"和$myVar - 没有管道、重定向或子 shell
REST API
RouterOS REST API 位于 http://HOST:PORT/rest/。HTTP 动词的映射方式并不标准:
| HTTP | RouterOS 操作 | CLI 等效命令 |
|---|---|---|
GET | print(列出/读取) | /path/print |
PUT | add(创建) | /path/add |
PATCH | set(更新) | /path/set |
DELETE | remove | /path/remove |
POST | command(执行) | /path/command |
需要注意的事项:
PUT会创建(不会更新)——这与许多 REST API 相反- 空密码认证:
admin:(冒号必不可少,后面不带任何内容) - WebFig 根路径(
GET /)无需认证即可返回 HTTP 200——可将其用作健康检查 - REST API(
/rest/)需要认证(未认证时返回 HTTP 401) .id字段的格式为*HEX(例如*1、*A)
完整的模式、错误处理、筛选、POST 命令和 /console/inspect 说明,请参见 REST API 参考。
版本方案
格式:MAJOR.MINOR[.PATCH][betaN|rcN]——例如 7.22、7.22.1、7.23beta2、7.22rc1
发布渠道: stable / long-term / testing / development
版本端点(纯文本):https://upgrade.mikrotik.com/routeros/NEWESTa7.<channel>
有关版本解析、比较、下载 URL 和软件包命名,请参见版本解析参考。
架构名称
MikroTik 使用以下架构标识符(不是标准的 Linux 架构名称):
| MikroTik 名称 | CPU | 常见硬件 |
|---|---|---|
x86 | x86_64 | CHR、基于 x86 的 RouterBOARD |
arm64 | aarch64 | 新款 ARM 主板(RB5009、Chateau) |
arm | ARMv7 | 较旧的 ARM 主板 |
mipsbe | MIPS 大端序 | 旧款 RouterBOARD |
mmips | MIPS 多核 | hAP ac、RB4011 |
smips | MIPS 单核 | hAP lite、mAP |
ppc | PowerPC | CCR1xxx 系列 |
tile | Tilera | CCR(较旧型号) |
CHR(Cloud Hosted Router)仅适用于 x86 和 arm64。
默认凭据
- 用户名:
admin - 密码:(空 — 无密码)
- 首次通过 SSH/控制台登录时,RouterOS 7.x 会提示设置密码,或按
a跳过 - REST API 和 WebFig 允许使用空密码访问
从 RouterOS CLI 检查硬件
# PCI devices (the RouterOS equivalent of lspci)
/system/resource/hardware/print
# IRQ assignments (shows driver binding)
/system/resource/irq/print
# System overview
/system/resource/print
# Disk info
/disk/print
# Installed packages
/system/package/print
# IP services and ports
/ip/service/print
# Network interfaces
/interface/print
其他资源
参考文件:
- 官方新版手册主页:https://manual.mikrotik.com/。新版网站正在取代旧的、基于 Confluence 的
help.mikrotik.com文档,并包含 CLI Reference 部分:https://manual.mikrotik.com/docs/CLI%20Reference/。 - REST API 详情和
/console/inspect命令树:参见 REST API 参考 - 版本解析、比较和下载 URL 逻辑:参见 版本解析参考
- 额外软件包(container、iot、zerotier 等):参见 额外软件包参考
- device-mode(模式、功能矩阵、物理确认):参见 Device-mode 参考
- RouterOS 脚本语言语法:参见 脚本参考
- 用户管理、SSH 密钥、admin 账户:参见 Users REST 参考
- IP 寻址、路由、DHCP、DNS、接口:参见 Networking REST 参考
- 防火墙 filter/NAT/mangle 和规则顺序:参见 Firewall REST 参考
- 影响 HTTP 的 Bun 运行时问题(req.destroy、pool、secrets):参见 Bun 运行时注意事项
相关技能:
- RouterOS 脚本和
.rsc/CLI 配置自动化注意事项:参见routeros-scripting技能 - /container 子系统(VETH、device-mode、生命周期):参见
routeros-container技能 - netinstall-cli 和设备刷写:参见
routeros-netinstall技能 - /app YAML 容器格式(7.22+):参见
routeros-app-yaml技能 - /console/inspect 树遍历和架构生成:参见
routeros-command-tree技能 - 在 QEMU 中运行 CHR(本地或 CI):参见
routeros-qemu-chr技能 - 数据包捕获、/tool/sniffer 和 TZSP 流式传输:参见
routeros-sniffer技能
MCP 工具:
- 浏览命令树和查询属性:使用
rosettaMCP 服务工具(routeros_search、routeros_get_page、routeros_command_tree)