【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包
【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包引言Azure App Service Linux 环境为开发者提供了灵活的容器化应用托管方案但有时我们需要深入网络层面排查问题比如检查出站流量、分析HTTP请求延迟或验证DNS解析结果。然而默认的容器环境并不包含tcpdump等网络诊断工具。本文将深入剖析在Linux App Service中安装和使用tcpdump的原理并提供完整的可运行代码示例帮助你在生产环境中安全、高效地抓取网络包。## 原理剖析为什么需要手动安装 tcpdump### 1. 容器环境的限制Azure App Service Linux 运行在Docker容器中基础镜像通常为mcr.microsoft.com/appsvc/python:3.9或类似轻量级镜像。这些镜像为了安全和体积默认只包含最小化工具集如curl、ping但不包含tcpdump和libpcap依赖库。### 2. 抓包的核心依赖tcpdump基于libpcap库工作而该库需要- 内核支持AF_PACKET套接字容器默认启用- 用户空间具备NET_RAW和NET_ADMIN能力App Service容器默认已具备- 在容器内安装libpcap-dev和tcpdump二进制文件### 3. 抓包流程1. 容器进程通过socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL))创建原始套接字2. 内核将网络接口上的所有数据包复制到该套接字3.tcpdump通过pcap_loop()循环读取并应用过滤规则如BPF表达式## 环境准备在App Service中启用SSH访问在安装工具前确保你的App Service已启用SSH访问通过Azure门户 → 设置 → 开发工具 → SSH。App Service Linux容器默认在/home目录持久化但系统文件如/usr/bin在容器重启后会重置。因此我们需要将工具安装到可持久化的位置。### 检查当前环境通过SSH连接后运行以下命令验证基础环境bash# 检查内核版本uname -a# 检查是否已安装tcpdumpwhich tcpdump# 检查网络接口ip link show## 安装 tcpdump 的两种方法### 方法一使用apt-get在线安装推荐由于App Service容器基于Debian/Ubuntu可以直接使用包管理器安装。bash# 更新包列表可能需要几分钟sudo apt-get update# 安装tcpdump及其依赖sudo apt-get install -y tcpdump# 验证安装tcpdump --version### 方法二手动编译安装离线环境如果容器无法访问外部网络可以从本地编译后上传二进制文件。bash# 在本地编译tcpdumpwget https://www.tcpdump.org/release/tcpdump-4.99.4.tar.gztar xzf tcpdump-4.99.4.tar.gzcd tcpdump-4.99.4./configure --prefix/home/site/tcpdumpmakemake install# 上传到App Service通过SCP或Kudu控制台# 在App Service中设置PATHexport PATH$PATH:/home/site/tcpdump/bin## 可运行代码示例### 示例1Python脚本自动安装并抓取HTTP流量以下Python脚本演示了如何在App Service启动时自动安装tcpdump并抓取80端口的HTTP流量将结果保存到持久化存储中。python#!/usr/bin/env python3自动安装tcpdump并抓取网络包的Python脚本适用于Azure App Service Linux环境import subprocessimport osimport timeimport signalimport sysdef install_tcpdump(): 安装tcpdump如果已安装则跳过 try: # 检查是否已安装 result subprocess.run([which, tcpdump], capture_outputTrue, textTrue) if result.returncode 0: print(ftcpdump已安装于: {result.stdout.strip()}) return True # 更新包列表 print(正在更新包列表...) subprocess.run([sudo, apt-get, update], checkTrue, timeout120) # 安装tcpdump print(正在安装tcpdump...) subprocess.run([sudo, apt-get, install, -y, tcpdump], checkTrue, timeout120) print(tcpdump安装成功) return True except subprocess.CalledProcessError as e: print(f安装失败: {e}) return False except subprocess.TimeoutExpired: print(安装超时请检查网络连接) return Falsedef capture_traffic(output_file, duration30): 抓取网络流量并保存到pcap文件 参数: output_file: 输出文件路径建议放在/home目录下持久化 duration: 抓取持续时间秒 # 构建tcpdump命令抓取所有非SSH流量避免干扰 cmd [ sudo, tcpdump, -i, eth0, # 通常App Service使用eth0接口 -w, output_file, # 输出为pcap格式 -G, str(duration), # 自动停止 -W, 1, # 只保留一个文件 not port 22 # 排除SSH流量避免循环 ] print(f开始抓包持续 {duration} 秒...) print(f输出文件: {output_file}) try: # 启动tcpdump进程 process subprocess.Popen(cmd, stdoutsubprocess.PIPE, stderrsubprocess.PIPE) # 等待指定时间 time.sleep(duration 2) # 额外等待2秒确保文件写入完成 # 终止进程 process.terminate() process.wait() print(抓包完成) # 检查输出文件 if os.path.exists(output_file): file_size os.path.getsize(output_file) print(f文件大小: {file_size} 字节) return True else: print(警告输出文件未生成) return False except Exception as e: print(f抓包过程出错: {e}) return Falseif __name__ __main__: # 安装tcpdump if not install_tcpdump(): sys.exit(1) # 设置输出文件路径/home目录在App Service中持久化 output_path /home/site/wwwroot/captured_traffic.pcap # 抓取30秒流量 capture_traffic(output_path, duration30) # 使用tcpdump读取前10个包作为验证 print(\n验证抓取内容前10个包) subprocess.run([sudo, tcpdump, -r, output_path, -c, 10, -X, --no-stats])### 示例2Shell脚本实现持续监控并自动轮转以下Shell脚本适合作为App Service的启动命令实现长期网络监控。bash#!/bin/bash# 文件名: network_capture.sh# 用途在App Service Linux中持续抓取网络包并自动轮转# 配置参数CAPTURE_INTERFACEeth0 # 网络接口名称CAPTURE_DIR/home/site/logs # 持久化存储目录CAPTURE_DURATION60 # 每个文件抓取时长秒MAX_FILES5 # 最大保留文件数# 创建日志目录mkdir -p $CAPTURE_DIR# 检查tcpdump是否可用if ! command -v tcpdump /dev/null; then echo tcpdump未安装正在安装... sudo apt-get update -qq sudo apt-get install -y -qq tcpdump if [ $? -ne 0 ]; then echo 安装tcpdump失败退出 exit 1 fifi# 清理旧文件保留最近MAX_FILES个cleanup_old_files() { echo 清理旧文件... ls -t $CAPTURE_DIR/capture_*.pcap 2/dev/null | tail -n $((MAX_FILES1)) | xargs -r rm}# 启动抓包使用-G参数实现自动轮转echo 开始网络抓包监控...echo 接口: $CAPTURE_INTERFACEecho 每个文件时长: ${CAPTURE_DURATION}秒echo 最大保留文件数: $MAX_FILESecho 输出目录: $CAPTURE_DIR# 使用tcpdump的-G和-W参数实现自动轮转sudo tcpdump -i $CAPTURE_INTERFACE \ -w $CAPTURE_DIR/capture_%Y%m%d_%H%M%S.pcap \ -G $CAPTURE_DURATION \ -W $MAX_FILES \ -z cleanup_old_files \ -Z root \ not port 22 # 记录进程IDTCPDUMP_PID$!echo tcpdump进程PID: $TCPDUMP_PIDecho 要停止抓包请运行: kill $TCPDUMP_PID# 等待并保持脚本运行wait $TCPDUMP_PID## 高级用法分析抓取的数据包### 1. 使用tcpdump实时过滤bash# 只显示HTTP请求的GET方法sudo tcpdump -i eth0 -A tcp port 80 and (tcp[((tcp[12:1] 0xf0) 2):4] 0x47455420)# 显示DNS查询sudo tcpdump -i eth0 -n udp port 53### 2. 使用tshark进行深度分析如果安装了Wireshark可通过apt-get安装可以使用其命令行工具bash# 安装tsharksudo apt-get install -y tshark# 分析DNS响应时间tshark -r /home/site/captured.pcap -Y dns.flags.response 1 -T fields -e frame.time_relative -e dns.qry.name -e dns.resp.ttl## 注意事项与最佳实践1.存储空间管理App Service的临时存储/tmp有大小限制建议将pcap文件保存到/home目录持久化存储但注意Azure Files的IO性能2.权限控制使用sudo tcpdump确保有足够权限但避免在非SSH会话中运行3.性能影响抓包会消耗CPU和内存建议在低负载时段进行并限制抓包时长4.安全考虑抓取的数据包可能包含敏感信息处理完毕后及时删除或加密存储5.容器重启每次容器重启后安装的工具会丢失需要重新安装。建议将安装逻辑写入启动脚本## 总结本文深入剖析了在Azure App Service Linux环境中安装和使用tcpdump的原理与实现。通过理解容器的网络能力限制和libpcap的工作机制我们掌握了两种安装方法在线安装和离线编译并提供了完整的Python和Shell脚本示例支持自动安装、定时抓包和文件轮转。这些技术不仅适用于网络故障排查还可用于性能监控和安全审计。在实际应用中请务必结合存储管理、性能影响和安全合规要求谨慎使用抓包功能。通过合理利用这些工具你可以将App Service Linux的网络诊断能力提升到新的层次。

相关新闻

顺势多空定位仪副图 同花顺期货通指标

顺势多空定位仪副图 同花顺期货通指标

今天给大家带来是一款同花顺期货通指标,并且已经上架到同花顺期货通的指标广场上了。喜欢的朋友可以去指标广场安装试用!!友情提示:(指标只是辅助,不作建议)拼多多店铺:指标公式编写…

2026/7/28 20:33:14 阅读更多 →
AI-Coding:2026世界杯实时看板, 支持AI聊天/竞猜/预测等

AI-Coding:2026世界杯实时看板, 支持AI聊天/竞猜/预测等

AI-Coding:2026世界杯实时看板,支持AI聊天/竞猜/预测等 引言:当世界杯遇上AI,实时看板如何重塑观赛体验?2026年世界杯即将在北美三国(美国、加拿大、墨西哥)盛大开幕,这将是史上首次…

2026/7/28 20:33:14 阅读更多 →
Adobe-GenP 3.0:智能破解工具全面解锁Adobe全家桶的实用指南

Adobe-GenP 3.0:智能破解工具全面解锁Adobe全家桶的实用指南

Adobe-GenP 3.0:智能破解工具全面解锁Adobe全家桶的实用指南 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 面对Adobe Creative Cloud高昂的订阅费用&a…

2026/7/28 20:33:14 阅读更多 →

最新新闻

还在为音频转文字而烦恼?这款免费智能工具让你3步搞定

还在为音频转文字而烦恼?这款免费智能工具让你3步搞定

还在为音频转文字而烦恼?这款免费智能工具让你3步搞定 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate …

2026/7/28 20:42:19 阅读更多 →
蚂蚁阿福Agent:医疗AI研发范式从传统到Agent的演进实践

蚂蚁阿福Agent:医疗AI研发范式从传统到Agent的演进实践

本文整理自 QCon北京 2026 郭春晓《蚂蚁阿福Agent:医疗研发范式与实践》技术分享,通过AI音视频转录总结工具 Ai好记 进行视频转文字整理,以下为精炼整理后的会议笔记内容。当大模型遇上医疗:一场确定性与非确定性的博弈 医疗 AI 有…

2026/7/28 20:42:19 阅读更多 →
Windows、macOS、Linux与鸿蒙内核架构、文件系统、包管理及开发环境深度对比

Windows、macOS、Linux与鸿蒙内核架构、文件系统、包管理及开发环境深度对比

在实际的技术选型、环境搭建、跨平台开发和日常运维中,我们经常需要面对一个基础但至关重要的问题:Windows、macOS、Linux 以及新兴的鸿蒙系统,它们的核心区别到底在哪里?对于开发者、运维工程师和 IT 管理者而言,理解这些差异不仅仅是知识储备,更是决定技术栈、工具链、…

2026/7/28 20:42:19 阅读更多 →
困卦哲学:现代困境的认知突破与行动指南

困卦哲学:现代困境的认知突破与行动指南

1. 困卦的哲学内涵与现实映射《周易》中的困卦(䷮)由坎下兑上组成,形象是水在泽下,象征着才能被埋没、行动受阻碍的状态。这个卦象精准刻画了现代人遭遇的各类生存困境——职场瓶颈、经济压力、关系破裂、健康危机等实质性挑战。但…

2026/7/28 20:42:19 阅读更多 →
从ASMR音频文件处理到个人媒体库搭建:元数据解析与自动化实践

从ASMR音频文件处理到个人媒体库搭建:元数据解析与自动化实践

这次我们来看一个名为“twitch-梵雪音-20260630-0009-【耳舐めASMR】本当に大切な事なので、よく耳アナを清潔にして聴いて下さい。【MouthSoundsWhisp”的项目。从标题看,这很可能是一个与ASMR(自发性知觉经络反应)音频内容相关的资源或项目,具体涉及“耳舐め”(耳语/舔耳…

2026/7/28 20:42:19 阅读更多 →
GEO 54项实验拆解AI引用:23个信号如何决定内容被引用概率

GEO 54项实验拆解AI引用:23个信号如何决定内容被引用概率

AI答案正在吞噬开放网络的点击,但被引用依然是出版商的安全阀。Seer Interactive的数据显示,出现在Google AI Overviews引用中,有机点击率提升120%,付费点击提升41%。问题在于,驱动这些引用的真实信号到底是什么&#…

2026/7/28 20:41:19 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻