MikroTik终端:如何筛选指定多子网的动态ARP条目?
解决MikroTik多子网ARP筛选问题
原脚本仅能筛选单个子网的动态ARP条目,添加多子网后失效,且使用大网段会包含不需要的子网。针对筛选192.168.4.0至192.168.10.255范围的需求,提供两种可行方案:
方案一:明确指定多个子网
直接在in操作符后列出所有目标子网,用大括号包裹、逗号分隔:
:local arp [:toarray [/ip arp print as-value where dynamic && interface="bridge3" && address in {"192.168.4.0/24", "192.168.5.0/24", "192.168.6.0/24", "192.168.7.0/24", "192.168.8.0/24", "192.168.9.0/24", "192.168.10.0/24"} ]];
此方法逻辑直观,适合非连续子网的筛选场景。
方案二:利用地址数值范围判断
将IP地址转换为数值,通过范围匹配连续网段,写法更简洁:
:local arp [:toarray [/ip arp print as-value where dynamic && interface="bridge3" && [:tonum $address] >= [:tonum "192.168.4.0"] && [:tonum $address] <= [:tonum "192.168.10.255"] ]];
此方法无需逐个列出子网,适合连续网段的筛选需求。
注意:原脚本中interface"bridge3"缺少等号,需修正为interface="bridge3"才能正确匹配接口。
内容的提问来源于stack exchange,提问作者djsoda
相关产品推荐
相关产品推荐

