OPNsense(FreeBSD) devd.conf匹配项查找及PPPoE断网脚本触发问题
解决PPPoE断网时devd自动触发脚本的问题
1. 捕获PPPoE状态变化的devd事件
要找到正确的匹配项,先实时监控devd事件,记录PPPoE断开时的实际参数:
- 执行命令:
devd -d,该命令会让devd以调试模式运行,实时输出所有触发的事件。 - 手动断开PPPoE连接(比如在OPNsense界面操作),观察终端中与pppoe0相关的事件输出。
2. 分析捕获到的事件参数
PPPoE断开时,触发的事件可能和你当前配置的LINK_DOWN不符,常见的实际参数包括:
system为IFNETsubsystem为pppoe0type为STATUS,同时伴随status参数为down- 部分场景下会出现
interface参数明确指向pppoe0
举个典型的事件输出示例:
IFNET pppoe0 status: down
3. 调整devd.conf配置
根据捕获到的实际事件修改配置,比如针对上述示例的配置调整如下:
# Notify WAN 1 Down notify 0 { match "system" "IFNET"; match "subsystem" "pppoe0"; match "type" "STATUS"; match "status" "down"; action "/usr/local/bin/homeassistant/wan1_down.sh &"; };
4. 验证配置有效性
- 修改配置后执行
service devd restart重启devd服务,使新配置生效。 - 再次断开PPPoE连接,可通过在脚本中添加日志(如
echo "WAN1 down at $(date)" >> /var/log/wan_down.log)确认是否触发。
额外注意事项
- 确保脚本权限正确:执行
chmod +x /usr/local/bin/homeassistant/wan1_down.sh,保证devd具备执行权限。 - 脚本内的命令尽量使用绝对路径,避免环境变量缺失导致执行失败。
- 若调试模式下未捕获到pppoe0事件,可检查OPNsense的PPPoE配置是否正常触发接口状态事件,或考虑用
ifstated作为替代监控方案。
内容的提问来源于stack exchange,提问作者PickOne
相关产品推荐
相关产品推荐

