linux系統通常已預裝tcpdump工具,若未安裝,可使用以下命令安裝:
复制代码
- yum install -y tcpdump
查看tcpdump版本信息:
复制代码
- tcpdump --help
確定網卡名稱:
掌握網卡信息后,即可利用tcpdump監控和過濾服務器網絡數據。
**tcpdump常用命令示例:**
1. 捕獲指定IP地址的網絡數據:
捕獲所有經過eth0網卡,目的或源IP地址為192.168.29.162的網絡數據:
复制代码
- tcpdump -n -i eth0 host 192.168.29.162
捕獲源IP地址為192.168.29.162的網絡數據 (eth1網卡):
复制代码
- tcpdump -i eth1 src host 192.168.29.162
捕獲目的IP地址為192.168.29.162的網絡數據 (eth1網卡):
复制代码
- tcpdump -i eth1 dst host 192.168.29.162
2. 捕獲指定端口的網絡數據:
捕獲eth0網卡8080端口的網絡數據:
复制代码
- tcpdump -n -i eth0 port 8080
捕獲MySQL執行的SQL語句:
复制代码
- tcpdump -i eth1 -s 0 -l -w - dst port 3306 | strings
捕獲MySQL通訊數據包 (生成的cap文件需使用wireshark等工具打開):
复制代码
- tcpdump -n -nn -tttt -i eth0 -s 65535 'port 3306' -w 20160505mysql.cap
4. 捕獲其他協議數據:
捕獲SMTP數據:
复制代码
- tcpdump -i eth1 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack != 0'
捕獲http GET請求:
复制代码
- tcpdump -i eth1 'tcp[(tcp[12]>>2):4] = 0x47455420'
捕獲ssh響應:
复制代码
- tcpdump -i eth1 'tcp[(tcp[12]>>2):4] = 0x5353482D'
5. 高級過濾和保存:
實時捕獲eth0網卡8080端口的GET請求,并將數據保存到GET.log文件:
复制代码
- tcpdump -i eth0 '((port 8080) and (tcp[(tcp[12]>>2):4]=0x47455420))' -nnAl -w /tmp/GET.log
捕獲指定數量的SYN包 (-c參數指定捕獲包數量):
复制代码
- time tcpdump -nn -i eth0 'tcp[tcpflags] = tcp-syn' -c 10
這些命令示例提供了tcpdump的基本用法,您可以根據實際需求調整參數進行更精細的網絡數據捕獲和分析。 請注意替換 eth0 和 eth1 為您的實際網卡名稱。