NodeRed配置MikroTik防火墙失败,参数及JSON格式是否正确?
NodeRed配置MikroTik防火墙写入问题排查
一、修正输入JSON的明显错误
你的输入JSON里,username、password、host的值末尾带有换行符(代码里的***** 格式可看出),这会导致认证时账号密码不匹配,直接引发写入失败。先删除换行符,修正后的代码如下:
const message = { "username": "*****", "password": "*****", "host": "****", "payload": { "command": [ "ip/firewall/mangle/add", "=action=mark-packet", "=chain=postrouting", "=dst-address=****", "=new-packet-mark=dw-112233" ] } }; return message;
二、排查权限与节点配置冲突
- MikroTik用户权限校验:确认使用的账号拥有防火墙配置的写入权限,可登录MikroTik后台,在
/user group中检查该用户所属组的权限,确保勾选firewall相关的写入权限项。 - NodeRed节点配置去重:如果已经在NodeRed的MikroTik节点设置中填写了主机、账号、密码,输入消息里重复传递这些参数会导致冲突。建议固定信息只在节点配置中填写,输入消息仅传递命令内容,简化写法:
return { payload: { command: [ "ip/firewall/mangle/add", "=action=mark-packet", "=chain=postrouting", "=dst-address=****", "=new-packet-mark=dw-112233" ] } };
三、命令格式的替代写法验证
MikroTik API支持两种命令格式,你使用的数组格式是合规的,也可以尝试对象格式(部分NodeRed MikroTik扩展兼容):
return { payload: { command: "ip/firewall/mangle/add", action: "mark-packet", chain: "postrouting", "dst-address": "****", "new-packet-mark": "dw-112233" } };
四、截图信息辅助排查
- 第一张截图:显示NodeRed流程包含注入节点、函数节点、MikroTik节点及调试节点,MikroTik节点配置界面已填写主机、端口、用户名等信息,需注意是否与消息内参数重复。
- 第二张截图:调试面板仅展示消息结构,未显示错误详情,建议查看NodeRed右上角菜单→日志,获取MikroTik节点返回的具体错误(如认证失败、权限不足等)。
内容的提问来源于stack exchange,提问作者klaucode
相关产品推荐
相关产品推荐

