OpenWrt/Linux使用arp-scan工具定时自动刷新arp表

在折腾爱快、OpenWrt过程中,发现如果要在爱快上显示出OpenWrt下设备的MAC地址(方便更改备注、主机名等),就要开启OpenWrt的SNMP,然后在爱快控制台配置“跨三层应用”功能。
但需要OpenWrt刷新arp表,发现邻居后爱快上才可以显示为真正的MAC地址。

那么如何让OpenWrt自动定时的刷新arp表呢?

arp-scan

软件安装

安装arp-scan软件包:

opkg update
opkg install arp-scan

测试工具

测试工具是否可用:

arp-scan --interface=br-lan --localnet
正常

说明

arp-scan 只是扫描网络,并不会自动更新本地 ARP 表。可以通过解析 arp-scan 的输出并通过脚本更新 ARP 表来实现。

vim /root/sh/refresh_arp.sh

#!/bin/bash

# 运行 arp-scan 并解析输出
/usr/bin/arp-scan --interface=br-lan --localnet | grep -E "^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" | while read -r line; do
    ip=$(echo $line | awk '{print $1}')
    mac=$(echo $line | awk '{print $2}')
    # 更新本地 ARP 表
    ip neigh replace $ip lladdr $mac dev br-lan
done

添加可执行权限

chmod +x /root/sh/refresh_arp.sh

测试脚本是否正常

arp

记录结果;

bash refresh_arp.sh
arp

对比两次的结果,如发现了局域网内更多的arp信息则正常。

创建定时任务

使用crontab创建定时任务:

crontab -e

每30分钟刷新一次:

*/30 * * * * /root/sh/refresh_arp.sh > /dev/null 2>&1

保存并退出。

可以查看刚才创建的定时任务:

crontab -l

完整操作流程

完整操作流程示例:

# 安装arp-scan工具
opkg update
opkg install arp-scan

# 编写脚本
vim /root/sh/refresh_arp.sh

#!/bin/bash

# 运行 arp-scan 并解析输出
/usr/bin/arp-scan --interface=br-lan --localnet | grep -E "^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" | while read -r line; do
    ip=$(echo $line | awk '{print $1}')
    mac=$(echo $line | awk '{print $2}')
    # 更新本地 ARP 表
    ip neigh replace $ip lladdr $mac dev br-lan
done

# 脚本测试
arp
bash refresh_arp.sh
arp

# 编辑crontab文件
crontab -e

# 添加以下行到crontab文件中
*/30 * * * * /root/sh/refresh_arp.sh > /dev/null 2>&1

# 保存并退出编辑器

# 查看当前的crontab任务列表
crontab -l
赞(1) 打赏
未经允许不得转载:万万没想到 » OpenWrt/Linux使用arp-scan工具定时自动刷新arp表

评论 抢沙发

评论前必须登录!

立即登录   注册

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

登录

找回密码

注册