当前位置: 首页 > article >正文

linux抓包经历

背景

java程序运行在docker内,想抓一下程序的网络请求情况。

deepseek给的方案

可以通过以下步骤获取Java程序在Docker容器中访问的外部接口:

方法一:使用抓包工具(如 tcpdump)

  1. 确定容器的网络接口
    获取容器IP:

    docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <容器名或ID>
    
  2. 在宿主机上抓包
    监听容器流量(假设容器使用默认的桥接网络docker0):

    sudo tcpdump -i docker0 host <容器IP> -w capture.pcap
    

    触发Java程序运行后,停止抓包。使用Wireshark分析capture.pcap文件,过滤HTTP/HTTPS流量(如http.request.uritls.handshake.extensions_server_name)。

方法二:使用容器内网络工具

  1. 进入容器安装工具

    docker exec -it <容器名或ID> /bin/bash
    

    安装net-toolsiproute2

    apt-get update && apt-get install net-tools  # Debian/Ubuntu
    apk add net-tools                           # Alpine
    
  2. 实时监控连接
    查看Java进程的实时连接:

    netstat -tunap | grep java
    

    或使用ss(更现代的工具):

    ss -tunp | grep java
    

方法三:使用 iptables 记录连接

  1. 添加iptables规则
    在宿主机上记录容器的出站连接:
    sudo iptables -I OUTPUT -s <容器IP> -j LOG --log-prefix "Container-Outgoing: "
    
    查看日志:
    tail -f /var/log/syslog | grep "Container-Outgoing:"
    

方法四:检查连接跟踪(conntrack)

查看所有现有连接:

sudo conntrack -L -s <容器IP>

方法五:使用Docker日志(若程序输出网络请求)

查看容器日志:

docker logs <容器名或ID>

总结建议

  • 快速抓包分析:推荐使用方法一(tcpdump),直接捕获流量并分析目标IP/端口。
  • 实时连接监控:使用方法二(netstat/ss)在容器内查看实时连接。
  • 长期监控:使用方法三(iptables)记录所有出站请求。

注意事项

  • 加密流量(HTTPS):抓包仅能获取目标域名/IP和端口,无法解密内容,需额外配置MITM工具(如Charles/Fiddler)进行中间人解密(需Java信任代理CA证书)。
  • 容器权限:部分操作可能需要--cap-add=NET_ADMIN或特权模式运行容器。

实战

我的容器使用的是host方式不是桥接
宿主linux会有很多块网卡,根据ip确定抓那一块

sudo tcpdump -i eth1 -w eth1.pcap

抓完之后,将eth1.pcap文件下载下来,拖入wireshark查看即可

相关资料
https://blog.csdn.net/buyaore_wo/article/details/69787715
https://www.cnblogs.com/willingtolove/p/12519490.html

http://www.kler.cn/a/583158.html

相关文章:

  • 【Java】并发编程实战:单例模式 + 阻塞队列的终极实现指南
  • 成为git砖家(9): rebase进阶: 拆分commit为多个
  • 29.Harmonyos Next仿uv-ui 组件NumberBox 步进器组件自定义图标
  • 如何绕过 reCAPTCHA V2/V3:Python、Selenium 与其他工具的实战指南
  • 智慧城市时空基础设施建设与应用实践
  • MySQL——基础知识
  • Tensorflow 2.0 GPU的使用与限制使用率及虚拟多GPU
  • 网络爬虫-2:正则化
  • 大语言模型-01-语言模型发展历程-03-预训练语言模型到大语言模型
  • 两会期间的科技强音:DeepSeek技术引领人工智能新篇章
  • Node.js:快速启动你的第一个Web服务器
  • 无人机快速发展,无人机反制如何应对?
  • 第44天:WEB攻防-PHP应用SQL盲注布尔回显延时判断报错处理增删改查方式
  • 【写作模板】JosieBook的写作模板
  • 使用CPR库编写的爬虫程序
  • 大语言模型微调和大语言模型应用区别
  • 机器学习常见激活函数
  • vscode出现:No module named ‘requests‘ 问题的解决方法
  • ubuntu 在VirtualBox 打不开终端
  • Oracle RAC环境下自动清理归档日志实战指南