linux抓包命令

 

前提是:linux服务器上已经安装过wireshark

1.抓取网卡是eth0的保存到home文件夹下的ir.cap文件

tcpdump -i eth0 -w /home/ir.cap

2.抓 192.168.1.123的包 

tcpdump -i eth1 host 192.168.1.123 -w /tmp/xxx.cap 

3.抓192.168.1.123的80端口的包 

tcpdump -i eth1 host 192.168.1.123 and port 80 -w /tmp/xxx.cap 

4.抓192.168.1.123的icmp的包 

tcpdump -i eth1 host 192.168.1.123 and icmp -w /tmp/xxx.cap 

5.抓192.168.1.123的80端口和110和25以外的其他端口的包 

tcpdump -i eth1 host 192.168.1.123 and ! port 80 and ! port 25 and ! port 110 -w /tmp/xxx.cap 

6.抓vlan 1的包 

tcpdump -i eth1 port 80 and vlan 1 -w /tmp/xxx.cap 

7.抓pppoe的密码 

tcpdump -i eth1 pppoes -w /tmp/xxx.cap 

8.以100m大小分割保存文件, 超过100m另开一个文件 -C 100m 

抓10000个包后退出 -c 10000 

9.后台抓包, 控制台退出也不会影响: 

nohup tcpdump -i eth1 port 110 -w /tmp/xxx.cap & 

 

<think>我们正在讨论的是Linux抓包命令,虽然问题不是直接关于Java的,但作为Java专家,我们经常需要在Linux环境下进行网络调试,特别是当Java应用涉及网络通信时。因此,了解抓包命令对于诊断网络问题非常重要。常用的Linux抓包命令是`tcpdump`,它是一个强大的命令行网络分析工具。此外,还有`tshark`(Wireshark命令行版本)等。下面详细解释`tcpdump`的使用:###1.基本使用```bashtcpdump [选项][过滤表达式]``` ###2.常见选项-`-i <接口>`:指定监听的网络接口(如eth0、lo等)。使用`-i any`可以捕获所有接口。 -`-n`:不解析主机名(直接显示IP地址)。- `-nn`:不解析主机名和端口名(显示IP和端口号)。- `-X`:以十六进制和ASCII格式显示包内容。 -`-XX`:类似`-X`,但还显示以太网头部。- `-c<数量>`:捕获指定数量的包后退出。 -`-s <长度>`:设置捕获的数据包长度(默认96字节)。使用`-s0`可以捕获整个包。- `-w<文件>`:将原始包写入文件,而不是在屏幕上显示。 -`-r <文件>`:从文件中读取包(而不是从网络接口)。###3.过滤表达式用于过滤捕获的流量,常见的有: -按主机:`host192.168.1.1` -按端口:`port80` -按网络:`net192.168.1.0/24` -按协议:`tcp`、`udp`、`icmp`等-组合:`tcp port80and host192.168.1.1` ###4.示例-捕获所有经过eth0接口的流量:```bashtcpdump-ieth0``` -捕获与特定主机(如192.168.1.100)相关的流量:```bashtcpdump -i eth0 host192.168.1.100``` -捕获HTTP流量(端口80):```bashtcpdump -i eth0 tcp port80``` -捕获与主机192.168.1.100的SSH流量(端口22):```bashtcpdump -i eth0 tcp port22and host192.168.1.100``` -将捕获的包保存到文件(后续可用Wireshark分析):```bashtcpdump-ieth0-wcapture.pcap```###5.Java应用中的使用场景当Java应用(如Web服务器、微服务、数据库客户端)出现网络问题时,可以使用`tcpdump`捕获网络包,分析:-连接是否建立?-请求是否发送?响应是否返回? -是否有异常数据包(如RST)? 例如,怀疑某个Java应用与数据库连接有问题,可以在应用服务器上抓包:```bashtcpdump-iany port3306 -w mysql.pcap```###6.注意事项-需要root权限(或sudo)来运行tcpdump。 -生产环境谨慎使用,避免捕获过多数据影响性能。###7.替代工具:tshark如果系统安装了Wireshark,可以使用`tshark`命令,用法类似,但输出更友好。例如:```bashtshark-ieth0-f"tcp port80"``` ---### §§相关问题§§:1.如何在Linux中实时监控TCP连接状态(如ESTABLISHED,TIME_WAIT)?2.如何用`tcpdump`捕获ICMP包(ping包)?3.如何分析`tcpdump`保存的pcap文件?4.Java中如何模拟网络故障以测试应用的容错能力?</think>### Linux 抓包命令详解 在 Linux 中,`tcpdump` 是最常用的命令抓包工具,用于捕获和分析网络流量。以下是核心用法和示例: --- #### 1. **基础抓包命令** ```bash # 捕获所有网卡流量 tcpdump -i any # 捕获指定网卡流量(如 eth0) tcpdump -i eth0 # 捕获并保存到文件(.pcap 格式) tcpdump -i any -w capture.pcap ``` --- #### 2. **过滤特定流量** ```bash # 捕获指定 IP 的流量(如 192.168.1.100) tcpdump host 192.168.1.100 # 捕获指定端口的流量(如 80 端口) tcpdump port 80 # 捕获 TCP 协议流量 tcpdump tcp # 组合过滤(IP + 端口 + 协议) tcpdump host 192.168.1.100 and port 80 and tcp ``` --- #### 3. **高级分析** ```bash # 显示详细数据包内容(十六进制 + ASCII) tcpdump -XX -n -v # 只捕获前 100 个包 tcpdump -c 100 # 捕获 HTTP GET/POST 请求 tcpdump -s 0 -A -vv port 80 | grep -E 'GET|POST' ``` --- #### 4. **Wireshark 集成** 捕获后通过 Wireshark 图形化分析: ```bash tcpdump -i any -w capture.pcap # 保存为 pcap wireshark capture.pcap # 用 Wireshark 打开 ``` --- #### 5. **常见问题排查场景** - **Java 应用连接问题**: ```bash tcpdump -i any host 192.168.1.100 and port 8080 -w java_app.pcap ``` - **数据库连接超时**: ```bash tcpdump -i any port 3306 -w mysql.pcap ``` - **DNS 解析失败**: ```bash tcpdump -i any port 53 -w dns.pcap ``` --- ### 关键注意事项: 1. **权限要求**:需 `root` 权限或 `sudo` 执行。 2. **生产环境慎用**:抓包可能影响网络性能,避免在高负载环境长期运行。 3. **过滤优先**:尽量用过滤条件减少捕获的数据量。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值