Zeek 的 Linux SLL2(Linux Cooked Capture v2)链路层解析器:源码剖析与实战配置
网络安全网络IDS【免费下载链接】zeekZeek is a powerful network analysis framework that is much different from the typical IDS you may know.项目地址https://gitcode.com/gh_mirrors/ze/zeek点击查看免费下载本指南以 Zeek 仓库中 linux_sll2 包文档 为核心系统讲解 Zeek 如何解析Linux cooked capture version 2SLL2DLT_LINUX_SLL2DLT 值 276链路层封装从链路层到网络层IPv4/IPv6/ARP的派发机制、底层 C 解析器实现、默认脚本注册逻辑以及如何用-r读取 SLL2 pcap 文件并验证 ARP、ICMP 事件输出。读完本文你将掌握 SLL2 在 Zeek 中的完整处理链路并能动手复现对应测试验证解析行为。一、SLL2 是什么Linux 下的另一种虚拟以太网封装在 Linux 系统上抓包时并非总能拿到标准的以太网帧。当数据包经由any 接口-i any或某些非以太网接口如lo、tun、wlan等进入抓包工具时内核AF_PACKET套接字会为每个包前置一个Linux cooked capture头用 SLL旧版DLT 113或 SLL2新版DLT 276来携带如果这是以太网帧本该有的协议类型Ethertype、接口索引、ARPHRD 硬件类型、源地址等信息。SLL2 的头部布局来自 LINKTYPE_LINUX_SLL2 规范为字段长度说明protocol_type2 字节Ethertype网络字节序如0x0800IPv4、0x86DDIPv6、0x0806ARP、0x8035RARPreserved2 字节保留置 0interface_index4 字节抓包接口的 ifindexarphrd_type2 字节ARPHRD 硬件类型packet_type1 字节包方向/类型如 PACKET_HOSTaddr_len1 字节链路层源地址长度字节addr8 字节链路层源地址按addr_len有效与旧版 SLL 相比SLL2 头固定为 20 字节旧的 SLL 为 16 字节并新增了接口索引与 ARPHRD 硬件类型字段。Zeek 为这种封装提供了专门的解析器命名空间为PacketAnalyzer::LINUXSLL2见 main.zeek.rst。二、从 DLT 值到解析器root 层的注册路由Zeek 的base/packet-protocols/root脚本定义了各链路层 DLT 值与解析器的映射关系其中DLT_LINUX_SLL2 276见 root/main.zeek在zeek_init()中调用PacketAnalyzer::register_packet_analyzer(PacketAnalyzer::ANALYZER_ROOT, DLT_LINUX_SLL2, PacketAnalyzer::ANALYZER_LINUXSLL2)把 ROOT 解析器在 DLT 276 上的后继解析器注册为ANALYZER_LINUXSLL2。也就是说当一个包的链路层类型为 DLT_LINUX_SLL2 时ROOT 层会把它派发给 LinuxSLL2 解析器继续处理。根层同时为DLT_EN10MB(1)→Ethernet、DLT_LINUX_SLL(113)→LINUXSLL、DLT_NFLOG(239)→NFLOG 等建立了类似路由linux_sll2只是其中的一条分支。三、C 解析器实现LinuxSLL2Analyzer 的数据流解析器核心实现在 src/packet_analysis/protocol/linux_sll2/LinuxSLL2.cc 与 LinuxSLL2.h。头部结构体SLL2Header用#pragma pack(push, 1)紧凑对齐以支持跨编译器MSVC 忽略__attribute__((packed))字段顺序与上文规范表一一对应。AnalyzePacket()的处理流程长度校验若sizeof(SLL2Header)20 字节不小于包长则上报truncated_Linux_SLL2_headerweird 并丢弃读取 Ethertypentohs(hdr-protocol_type)得到网络层协议号填充链路层地址packet-l2_src指向头部addr字段即 SLL2 头携带的源 MAC由于 SLL2 头不含目的地址packet-l2_dst被显式设置为Packet::L2_EMPTY_ADDR——源码注释特别说明不设置l2_dst会在后续 ARP 等处理中引发崩溃前向派发ForwardPacket(len - 20, data 20, packet, protocol)把负载去掉 SLL2 头按 Ethertype 交给网络层解析器。一个值得注意的设计取舍在 LinuxSLL2.cc当前实现只假定看到的是 Ethertype不区分不同的ARPHDR_type值这与 SLLLinuxSLL.cc 同源代码结构一致的做法相同——这类实现细节都以 tcpdump 的 LINKTYPE_LINUX_SLL2 规范为参照。3.1 插件注册解析器通过标准插件机制加载Plugin.cc 将组件LinuxSLL2注册进packet_analysis::Component插件名Zeek::LinuxSLL2描述为 Linux cooked capture version 2 (SLL2) packet analyzer。四、脚本层派发规则Ethertype → 网络层解析器SLL2 本身是准链路层它需要把内部 Ethertype 再映射到网络层解析器。这一映射在脚本 scripts/base/packet-protocols/linux_sll2/main.zeek 中于zeek_init()priority20内注册Ethertype值派发目标IPv40x0800PacketAnalyzer::ANALYZER_IPIPv60x86DDPacketAnalyzer::ANALYZER_IPARP0x0806PacketAnalyzer::ANALYZER_ARPRARP0x8035PacketAnalyzer::ANALYZER_ARP例如PacketAnalyzer::register_packet_analyzer(PacketAnalyzer::ANALYZER_LINUXSLL2, 0x0800, PacketAnalyzer::ANALYZER_IP)表示当 LinuxSLL2 解析出的 Ethertype 为0x0800时后续由 IP 解析器接手。这与linux_sll包的注册逻辑完全一致对照 linux_sll/main.zeek体现了新旧两版 cooked capture 处理的一致性。该脚本由 base/packet-protocols/load.zeek 中的load base/packet-protocols/linux_sll2自动加载因此默认配置init-default下无需任何额外操作即可启用 SLL2 解析。五、从文档到实战读取 SLL2 pcap 并验证解析结果仓库的 linuxsll2.zeek 测试 是验证整个解析链路的现成例子测试步骤如下前置条件测试要求构建产物中不定义DONT_HAVE_LIBPCAP_DLT_LINUX_SLL2即 libpcap 支持 SLL2 DLT 值对应测试注释# TEST-REQUIRES: ! grep -q #define DONT_HAVE_LIBPCAP_DLT_LINUX_SLL2 $BUILD/zeek-config.h运行zeek -b -C -r $TRACES/linux_dlt_sll2.pcap %INPUT即关闭 banner-b、关闭校验和校验-C、离线读取 SLL2 封装 pcap并加载测试脚本断言测试脚本订阅了arp_request、icmp_echo_request、icmp_echo_reply事件并打印字段btest-diff .stdout将输出与基线比对。这说明SLL2 链路中的 ARP 请求会携带 SLL2 头中的源 MAC经packet-l2_src传入 ARP 解析器参见 ARP.cc 中RequestReplyEvent(arp_request, packet-l2_src, packet-l2_dst, ah)的调用而 ICMP 事件则证明 IPv4 分支0x0800→ IP解析正常。自己动手复现时只需一条命令即可验证默认解析行为zeek -C -r /path/to/linux_dlt_sll2.pcap然后观察conn.log中是否生成对应连接记录或在脚本中订阅arp_request/icmp_echo_request等事件查看 SLL2 头中携带的 MAC 与 IP 映射是否正确。六、SLL2 与 SLL、Ethernet 解析器对照维度EthernetLINUX_SLLLINUX_SLL2DLT 值1113276头部字节141620源地址来源帧内dst/src MACSLL 头addr字段SLL2 头addr字段目的地址帧内无置L2_EMPTY_ADDR无置L2_EMPTY_ADDR派发依据帧内 EthertypeSLL 头 protocol_typeSLL2 头 protocol_type从源码看Ethernet.cc 会同时设置l2_src与l2_dst而 SLL/SLL2 由于头部不含目的 MAC都通过Packet::L2_EMPTY_ADDR占位以避免下游崩溃。这也是为什么在-i any抓包环境下Zeek 仍能正确填充arp_request等事件的 MAC 字段——源 MAC 来自 SLL2 头目的 MAC 则不可用。七、总结与延伸阅读SLL2 解析器是 Zeek 在非以太网抓包环境下还原虚拟链路层的关键一环ROOT 层按 DLT 值选路LinuxSLL2Analyzer 在 C 侧解析 20 字节 SLL2 头并填充l2_src/l2_dst脚本层再按 Ethertype 把 IPv4/IPv6/ARP/RARP 派发给网络层解析器。默认随base/packet-protocols/__load__.zeek自动加载zeek -C -r xxx.pcap即可直接消费 SLL2 抓包。进一步阅读建议解析器 C 源码LinuxSLL2.cc、LinuxSLL2.h插件注册Plugin.ccDLT 路由root/main.zeek测试用例testing/btest/core/linuxsll2.zeek关联解析器LinuxSLLmain.zeek与 EthernetEthernet.cc。赞分享网络安全网络IDS【免费下载链接】zeekZeek is a powerful network analysis framework that is much different from the typical IDS you may know.项目地址https://gitcode.com/gh_mirrors/ze/zeek点击查看免费下载相关推荐Talos Linux 链路别名配置LinkAliasConfig 文档深入解析与实战Talos Linux 链路别名配置LinkAliasConfig 文档深入解析与实战 LinkAliasConfig 是 Talos Linux 中一类独立云原生操作系统容器编排MatterCHIPLinux 平台适配层源码解读PlatformManager 到 PosixConfig 的完整实现剖析MatterCHIPLinux 平台适配层源码解读PlatformManager 到 PosixConfig 的完整实现剖析 本文是 Matter原 P物联网智能家居嵌入式通信Zeek Broker 通信框架完全指南脚本层 API、配置选项与源码级剖析Zeek Broker 通信框架完全指南脚本层 API、配置选项与源码级剖析 导读 本文以 Zeek 官方脚本文档 doc/scripts/base/fram网络安全网络IDS上一篇终极Mac鼠标优化指南让你的普通鼠标超越苹果触控板下一篇ClassiCube多平台适配技术从桌面到移动再到游戏主机的实现细节创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

LogicStack-LeetCode 回溯算法专题:从爆搜框架到去重与剪枝的完整实战指南

LogicStack-LeetCode 回溯算法专题:从爆搜框架到去重与剪枝的完整实战指南

教程文档 【免费下载链接】LogicStack-LeetCode 公众号「宫水三叶的刷题日记」刷穿 LeetCode 系列文章源码 项目地址: https://gitcode.com/gh_mirrors/lo/LogicStack-LeetCode 点击查看 免费下载 导读 本文以 LogicStack-LeetCode 仓库(公众号「宫水三…

2026/10/9 1:29:00 阅读更多 →
UDS 诊断服务 - 0x24

UDS 诊断服务 - 0x24

等待更新…

2026/10/9 1:29:00 阅读更多 →
gsd-core 里程碑审计指南:用 /gsd:audit-milestone 验证完成度、需求覆盖与跨阶段集成

gsd-core 里程碑审计指南:用 /gsd:audit-milestone 验证完成度、需求覆盖与跨阶段集成

【免费下载链接】gsd-core Git. Ship. Done - Core 项目地址: https://gitcode.com/gh_mirrors/ge/gsd-core 点击查看 免费下载 /gsd:audit-milestone 是 gsd-core 里程碑生命周期的审计编排命令(orchestrator):它在归档前读取各…

2026/10/9 1:29:00 阅读更多 →

最新新闻

video-shotcraft 共同创作引导流程:从产品简报到分镜放行的逐阶段确认协作法

video-shotcraft 共同创作引导流程:从产品简报到分镜放行的逐阶段确认协作法

AI 技能媒体生成视频 【免费下载链接】video-shotcraft AI video skill for Claude Code & Codex — cinematic product videos with Remotion: 152 shot recipe cards, 209 motion previews, a production-ready template 项目地址: https://gitcode.com/gh_mi…

2026/10/9 2:06:23 阅读更多 →
Hyperf Scout 模型全文检索:基于 Elasticsearch 驱动的高性能协程化搜索方案

Hyperf Scout 模型全文检索:基于 Elasticsearch 驱动的高性能协程化搜索方案

后端Web框架微服务RPC框架异步编程 【免费下载链接】hyperf 🚀 A coroutine framework that focuses on hyperspeed and flexibility. Building microservice or middleware with ease. 项目地址: https://gitcode.com/hyperf/hyperf 点击查看 免费下载 …

2026/10/9 2:06:23 阅读更多 →
基于MQTT的温控自动风扇:从传感器到继电器的物联网闭环实战

基于MQTT的温控自动风扇:从传感器到继电器的物联网闭环实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 2:06:22 阅读更多 →
GitHub 热榜项目-日榜精选(2026-03-16)| 无头浏览器、AI智能体、群体智能引擎等 | browser、project-nomad、OpenViking等

GitHub 热榜项目-日榜精选(2026-03-16)| 无头浏览器、AI智能体、群体智能引擎等 | browser、project-nomad、OpenViking等

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 2:06:22 阅读更多 →
Anmedio 前端测试题全解析:用 React 实现送水服务分步下单与按星期切换的配送时段

Anmedio 前端测试题全解析:用 React 实现送水服务分步下单与按星期切换的配送时段

教程 【免费下载链接】ru-test-assignments Тестовые задания для самостоятельного выполнения от разных it компаний 项目地址: https://gitcode.com/gh_mirrors/ru/ru-test-assignments 点击查看 …

2026/10/9 2:06:22 阅读更多 →
Weave Net Fast Datapath 加密实现详解:基于 XFRM 的 ESP 传输模式与 AES-GCM

Weave Net Fast Datapath 加密实现详解:基于 XFRM 的 ESP 传输模式与 AES-GCM

网络云原生 【免费下载链接】weave Simple, resilient multi-host containers networking and more. 项目地址: https://gitcode.com/gh_mirrors/weave4/weave 点击查看 免费下载 本文深入解析 Weave Net 中 fast datapath(快速数据通路,基于…

2026/10/9 2:05:22 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →