You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

网络接口重启后Zeek (Bro)崩溃,如何实现zeekctl进程自动重启?

Zeek eth0重启后进程崩溃自动恢复方案

报错原因是Zeek进程捕获数据包时绑定的eth0接口下线,进程无法读取数据包触发崩溃,可通过以下两种方案实现网络接口恢复后自动重启zeekctl进程:

方案1:udev规则+systemd服务触发(实时生效)

  • 第一步:创建Zeek systemd服务文件 /etc/systemd/system/zeek.service,写入以下内容:
[Unit]
Description=Zeek Network Security Monitor
After=network.target

[Service]
Type=forking
ExecStart=/opt/zeek/bin/zeekctl start
ExecStop=/opt/zeek/bin/zeekctl stop
ExecReload=/opt/zeek/bin/zeekctl restart
User=root
Group=root
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
  • 第二步:创建网卡状态监听udev规则 /etc/udev/rules.d/99-eth0-monitor.rules,写入以下内容:
SUBSYSTEM=="net", ACTION=="up", KERNEL=="eth0", TAG+="systemd", ENV{SYSTEMD_WANTS}="zeek.service"
  • 第三步:执行命令生效配置:
systemctl daemon-reload
systemctl enable zeek.service
udevadm control --reload-rules

配置完成后,只要eth0触发上线动作,系统会自动拉起Zeek服务。

方案2:定时监控脚本兜底(配置简单兼容性强)

  • 第一步:创建监控脚本 /opt/zeek/check_zeek_status.sh,写入以下内容:
#!/bin/bash
# 校验eth0是否已恢复上线
ip link show eth0 | grep -q "UP,LOWER_UP" || exit 0
# 校验Zeek进程状态,异常则自动重启
/opt/zeek/bin/zeekctl status | grep -q "running" || /opt/zeek/bin/zeekctl restart
  • 第二步:给脚本添加执行权限:
chmod +x /opt/zeek/check_zeek_status.sh
  • 第三步:添加crontab定时任务,执行crontab -e写入以下规则:
* * * * * /opt/zeek/check_zeek_status.sh > /dev/null 2>&1

配置完成后系统每分钟会检查一次网卡和Zeek状态,符合条件就自动重启Zeek。

注意事项

  • 确认/opt/zeek/etc/node.cfg中对应节点的interface参数配置为eth0,避免网卡名映射异常
  • 首次配置后可手动执行zeekctl check校验配置合法性,避免配置错误导致重启失败

内容的提问来源于stack exchange,提问作者Renier Collazo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:36:05