本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
pwru(packet, where are you?)是一款基于 eBPF 的 Linux 内核网络数据包追踪工具,具备高级过滤能力。它允许对内核状态进行细粒度检查,从而帮助调试网络连接问题,例如追踪数据包在何处被丢弃、分析网络路径等。
!logo
以下示例展示了在添加 iptables 规则后,curl 请求的数据包被丢弃的位置:
!demo
man 7 pcap-filter),可按内核函数名、网络接口、网络命名空间等多维度过滤kprobe 和 kprobe-multi 两种追踪后端,可根据内核版本自动选择--output-skb 选项:需内核版本 ≥ 5.9--backend=kprobe-multi 选项:需内核版本 ≥ 5.18pwru 可选依赖 debugfs,需挂载至 /sys/kernel/debug。若该目录为空,可通过以下命令挂载:
mount -t debugfs none /sys/kernel/debug
需启用以下内核配置选项,可通过 zgrep $OPTION /proc/config.gz 验证是否启用:
| 选项 | 后端 | 说明 |
|---|---|---|
| CONFIG_DEBUG_INFO_BTF=y | 两者均需 | 自 5.3 内核起可用 |
| CONFIG_KPROBES=y | 两者均需 | - |
| CONFIG_PERF_EVENTS=y | 两者均需 | - |
| CONFIG_BPF=y | 两者均需 | - |
| CONFIG_BPF_SYSCALL=y | 两者均需 | - |
| CONFIG_FUNCTION_TRACER=y | kprobe-multi | 需 /sys/kernel/debug/tracing/available_filter_functions |
| CONFIG_FPROBE=y | kprobe-multi | 自 5.18 内核起可用 |
pwru 官方 Docker 镜像托管于 Docker Hub:cilium/pwru
docker run --privileged --rm -t --pid=host -v /sys/kernel/debug/:/sys/kernel/debug/ cilium/pwru pwru [选项] [pcap-filter]
参数说明:
--privileged:提供特权模式,确保容器能访问内核调试资源--rm:容器退出后自动删除-t:分配伪终端,确保输出格式正常--pid=host:共享主机 PID 命名空间,便于追踪内核进程-v /sys/kernel/debug/:/sys/kernel/debug/:挂载主机 debugfs,供工具访问内核调试信息追踪目标为 1.1.1.1 的网络流量,并输出 L4 元组:
docker run --privileged --rm -t --pid=host -v /sys/kernel/debug/:/sys/kernel/debug/ cilium/pwru pwru --output-tuple 'host 1.1.1.1'
pwru [选项] [pcap-filter]
pcap-filter:pcap 过滤规则,语法参见 man 7 pcap-filter选项:支持以下主要参数(通过 pwru --help 获取完整列表):| 选项 | 说明 |
|---|---|
--backend string | 追踪后端,可选 kprobe 或 kprobe-multi,默认自动检测 |
--filter-func string | 按名称过滤要探测的内核函数(精确匹配,支持 RE2 正则表达式) |
--filter-ifname string | 过滤网络接口名称(需配合 --filter-netns,默认使用当前网络命名空间) |
--filter-netns string | 过滤网络命名空间(格式:/proc/<pid>/ns/net 或 inode:<inode>) |
--filter-track-skb | 即使数据包不匹配过滤条件也持续追踪(如 NAT 或隧道解封装后) |
--output-tuple | 输出 L4 元组(源/目的 IP、端口、协议),默认启用 |
--output-stack | 输出调用栈信息 |
--output-skb | 输出 skb 详情(需内核 ≥ 5.9) |
--output-json | 以 JSON 格式输出追踪结果 |
--timestamp string | 输出时间戳,可选 current(当前)、relative(相对)、absolute(绝对)或 none(默认) |
--filter-func=".*iptables.*"(追踪所有包含 iptables 的内核函数)--filter-ifname=eth0--output-stack --output-skb--output-json以下示例在指定 Kubernetes 节点上运行 pwru:
#!/usr/bin/env bash NODE=kind-control-plane # 目标节点名称 PWRU_ARGS="--output-tuple 'host 1.1.1.1'" # pwru 运行参数 trap "kubectl delete --wait=false pod pwru" EXIT # 退出时清理 pod kubectl apply -f - <<EOF apiVersion: v1 kind: Pod metadata: name: pwru spec: nodeSelector: kubernetes.io/hostname: ${NODE} # 调度到目标节点 containers: - image: docker.io/cilium/pwru:latest name: pwru volumeMounts: - mountPath: /sys/kernel/debug # 挂载 debugfs name: sys-kernel-debug securityContext: privileged: true # 特权模式 command: ["/bin/sh"] args: ["-c", "pwru ${PWRU_ARGS}"] # 运行 pwru volumes: - name: sys-kernel-debug hostPath: path: /sys/kernel/debug type: DirectoryOrCreate hostNetwork: true # 使用主机网络 hostPID: true # 共享主机 PID 命名空间 EOF kubectl wait pod pwru --for condition=Ready --timeout=90s # 等待 pod 就绪 kubectl logs -f pwru # 查看追踪日志
可通过 Slack 频道 中的 #pwru 与开发者、维护者及其他用户交流,获取帮助或分享使用经验。
Logo 说明:侦探地鼠(Detective Gopher)基于 Renee French 设计的 Go 地鼠形象创作。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429