tcpdump - macOS
Overview
tcpdump is a command-line tool that captures and analyzes network traffic on macOS systems. It allows you to monitor and troubleshoot network issues, identify performance bottlenecks, and detect security vulnerabilities.
Syntax
tcpdump [options] [expression]
Options/Flags
- -i interface: Network interface to monitor.
- -s snaplen: Packet size to capture in bytes (default: 68).
- -c count: Number of packets to capture (default: unlimited).
- -w file: Write packets to a file for later analysis.
- -G n: Capture packets in groups of n (default: 1).
- -nn: Don’t resolve hostnames and ports (faster capture).
- -vv: Verbose output with additional details.
- -X: Print packets in hex and ASCII format.
- -t: Print a timestamp with each packet.
- -S: Use absolute timestamps (seconds since epoch).
Examples
Capture all traffic on interface en0:
tcpdump -i en0
Capture the first 100 packets on interface en1:
tcpdump -i en1 -c 100
Save packets to a file:
tcpdump -i en0 -w capture.pcap
Capture only TCP packets:
tcpdump -i en0 tcp
Filter packets by destination port:
tcpdump -i en0 dst port 80
Common Issues
- “Permission denied” error: Ensure you have sufficient privileges to run tcpdump (e.g., sudo).
- No packets captured: Check the network interface and ensure it’s active.
- Large capture file: Use a packet capture limit (-c) or periodically rotate the capture file to avoid excessive storage usage.
Integration
- tcpdump | wireshark: Pipe capture output to Wireshark for advanced analysis.
- tcpdump | tshark -r file: Process saved capture files using TShark.
- tcpreplay -i file: Replay captured packets for testing or debugging.
Related Commands
- netstat: Display network statistics and connections.
- ifconfig: Configure and inspect network interfaces.
- ping: Test network connectivity.
- traceroute: Trace the route packets take to a destination.