在折腾爱快、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
评论前必须登录!
立即登录 注册