# Show all interfacesiplinkshow
ipa# Short for 'ip address show'# Show specific interfaceiplinkshoweth0
ipaddrshowdeveth0
# Show only IPv4ip-4addr
# Show only IPv6ip-6addr
# Show interface statisticsip-slink
ip-s-slink# More detailed# Show routing tableiproute
iprouteshow
# Show routing for specific destinationiprouteget8.8.8.8
# Show ARP tableipneigh
ipneighshow
Configure Interfaces
# Bring interface up/downiplinkseteth0up
iplinkseteth0down
# Set IP addressipaddradd192.168.1.10/24deveth0
# Delete IP addressipaddrdel192.168.1.10/24deveth0
# Set MAC addressiplinksetdeveth0address00:11:22:33:44:55
# Set MTUiplinksetdeveth0mtu9000# Add alias interfaceipaddradd192.168.1.20/24deveth0labeleth0:0
# Show all connectionsss-a
# Show TCP connectionsss-t
# Show UDP connectionsss-u
# Show listening socketsss-l
# Show TCP listening socketsss-tl
# Show processesss-p
# Show numeric ports (no resolution)ss-n
# Show summaryss-s
# Common combinationsss-tunlp# TCP/UDP, numeric, listening, with processesss-tanp# TCP, all, numeric, with processes# Filter by statessstateestablished
ssstatesyn-sent
ssstatetime-wait
# Filter by portss-tsport=:80
ss-tdport=:443
sssport=:22orsport=:80
# Filter by addressssdst192.168.1.100
sssrc10.0.0.0/8
# Show socket memory usagess-tm
# Show internal TCP informationss-ti
netstat (Legacy)
# Show all connectionsnetstat-a
# Show TCP connectionsnetstat-t
# Show UDP connectionsnetstat-u
# Show listening socketsnetstat-l
# Show numeric addressesnetstat-n
# Show programsnetstat-p
# Show routing tablenetstat-r
# Show interface statisticsnetstat-i
# Common combinationsnetstat-tunlp# TCP/UDP, numeric, listening, programsnetstat-anp# All, numeric, programs# Continuous monitoringnetstat-c
# Count connections by statenetstat-ant|awk'{print $6}'|sort|uniq-c
DNS Diagnostics
dig
# Basic querydigexample.com
# Short answerdigexample.com+short
# Specific record typedigexample.comA
digexample.comAAAA
digexample.comMX
digexample.comNS
digexample.comTXT
digexample.comSOA
# Query specific nameserverdig@8.8.8.8example.com
# Reverse DNS lookupdig-x8.8.8.8
# Trace query pathdigexample.com+trace
# Show only answer sectiondigexample.com+noall+answer
# Query all recordsdigexample.comANY
# Batch query from filedig-fdomains.txt
# Check DNSSECdigexample.com+dnssec
# Show query timedigexample.com+stats
# TCP querydigexample.com+tcp
nslookup
# Basic querynslookupexample.com
# Query specific nameservernslookupexample.com8.8.8.8
# Query specific record typenslookup-query=MXexample.com
nslookup-query=NSexample.com
# Reverse lookupnslookup8.8.8.8
# Interactive modenslookup
>server8.8.8.8
>settype=MX
>example.com
>exit
host
# Basic queryhostexample.com
# Show all recordshost-aexample.com
# Query specific typehost-tMXexample.com
host-tNSexample.com
# Query specific nameserverhostexample.com8.8.8.8
# Reverse lookuphost8.8.8.8
# Verbose outputhost-vexample.com
systemd-resolve (systemd-based)
# Query DNSresolvectlqueryexample.com
# Show DNS settingsresolvectlstatus
# Show statisticsresolvectlstatistics
# Flush DNS cacheresolvectlflush-caches
# Reset statisticsresolvectlreset-statistics
Connectivity Testing
ping
# Basic pingpingexample.com
# Ping with countping-c4example.com
# Ping with intervalping-i0.5example.com# 0.5 seconds# Ping with timeoutping-w10example.com# 10 seconds# Set packet sizeping-s1000example.com# 1000 bytes# Ping IPv6ping6example.com
# Flood ping (requires root)ping-fexample.com
# Audible pingping-aexample.com
# Set TTLping-t64example.com
# Don't fragmentping-Mdo-s1472example.com# Path MTU discovery
traceroute
# Basic traceroutetracerouteexample.com
# Use ICMP instead of UDPtraceroute-Iexample.com
# Use TCPtraceroute-Texample.com
# Set max hopstraceroute-m20example.com
# Set number of queries per hoptraceroute-q2example.com
# Show AS numberstraceroute-Aexample.com
# IPv6 traceroutetraceroute6example.com
# Don't resolve hostnamestraceroute-nexample.com
mtr (My Traceroute)
# Interactive modemtrexample.com
# Report mode (10 cycles)mtr-r-c10example.com
# Use TCPmtr-Texample.com
# Use ICMPmtr-Iexample.com
# Show AS numbersmtr-zexample.com
# No DNS resolutionmtr-nexample.com
# CSV outputmtr--csvexample.com
# JSON outputmtr--jsonexample.com
nc (netcat)
# Test TCP connectionnc-zvexample.com80# Test port rangenc-zvexample.com20-30
# Listen on portnc-l8080# Transfer file# Receiver:nc-l8080>received_file
# Sender:nctarget_host8080<file_to_send
# Simple chat# Server:nc-l8080# Client:ncserver_host8080# Port scanningnc-zvexample.com1-1000
# UDP modenc-uexample.com53# Execute command on connectnc-l8080-e/bin/bash# Dangerous!
telnet
# Connect to host/porttelnetexample.com80# Test SMTPtelnetmail.example.com25EHLOexample.com
QUIT
# Test HTTPtelnetexample.com80GET/HTTP/1.1
Host:example.com
# Test POP3telnetmail.example.com110USERusername
PASSpassword
Packet Capture
tcpdump
Basic Capture
# Capture on default interfacetcpdump
# Capture on specific interfacetcpdump-ieth0
# Capture to filetcpdump-wcapture.pcap
# Read from filetcpdump-rcapture.pcap
# Capture n packetstcpdump-c100# Don't convert addressestcpdump-n
# Don't convert portstcpdump-nn
# Verbose outputtcpdump-v
tcpdump-vv
tcpdump-vvv
# Show packet contents (hex)tcpdump-X
# Show packet contents (hex + ASCII)tcpdump-XX
# Show absolute sequence numberstcpdump-S
Filters
# Filter by hosttcpdumphost192.168.1.100
tcpdumpsrchost192.168.1.100
tcpdumpdsthost192.168.1.100
# Filter by networktcpdumpnet192.168.1.0/24
# Filter by porttcpdumpport80tcpdumpsrcport80tcpdumpdstport80tcpdumpportrange20-30
# Filter by protocoltcpdumptcp
tcpdumpudp
tcpdumpicmp
tcpdumpip6
# Combine filterstcpdump'host 192.168.1.100 and port 80'tcpdump'host 192.168.1.100 or host 192.168.1.101'tcpdump'port 80 and not host 192.168.1.100'# TCP flagstcpdump'tcp[tcpflags] & (tcp-syn) != 0'# SYNtcpdump'tcp[tcpflags] & (tcp-ack) != 0'# ACKtcpdump'tcp[tcpflags] & (tcp-rst) != 0'# RST# HTTP GET requeststcpdump-s0-A'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'|grepGET
# DNS queriestcpdump-iany-s0port53
Advanced Examples
# Capture HTTP traffictcpdump-ieth0-s0-A'tcp port 80'# Capture HTTPS traffictcpdump-ieth0'tcp port 443'# Capture traffic to/from subnettcpdump-ieth0'net 10.0.0.0/8'# Capture with size and timetcpdump-ieth0-s65535-wcapture_$(date+%Y%m%d_%H%M%S).pcap
# Rotating capture filestcpdump-ieth0-wcapture.pcap-C100-W10# 100MB files, keep 10# Filter by MAC addresstcpdump-ieth0etherhost00:11:22:33:44:55
# Capture only SYN packetstcpdump-ieth0'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack = 0'# Capture packets larger than N bytestcpdump-ieth0'greater 1000'# Capture broadcast/multicasttcpdump-ieth0'broadcast or multicast'
tshark (Wireshark CLI)
# Capture on interfacetshark-ieth0
# Capture to filetshark-ieth0-wcapture.pcap
# Read from filetshark-rcapture.pcap
# Display filtertshark-rcapture.pcap-Y"http.request.method == GET"# Show specific fieldstshark-rcapture.pcap-Tfields-eip.src-eip.dst-etcp.port
# Capture with display filtertshark-ieth0-f"tcp port 80"-Y"http"# Statisticstshark-rcapture.pcap-q-zio,stat,1# I/O graphtshark-rcapture.pcap-q-zconv,tcp# TCP conversations# Export objectstshark-rcapture.pcap--export-objectshttp,/tmp/
# Follow TCP streamtshark-rcapture.pcap-q-zfollow,tcp,ascii,0
Port Scanning
nmap
Basic Scans
# Scan single hostnmap192.168.1.100
# Scan subnetnmap192.168.1.0/24
# Scan rangenmap192.168.1.1-254
# Scan from listnmap-iLhosts.txt
# Fast scan (100 most common ports)nmap-F192.168.1.100
# Scan all portsnmap-p-192.168.1.100
# Scan specific portsnmap-p22,80,443192.168.1.100
nmap-p1-1000192.168.1.100
Scan Types
# TCP SYN scan (default, requires root)nmap-sS192.168.1.100
# TCP connect scannmap-sT192.168.1.100
# UDP scannmap-sU192.168.1.100
# Ping scan (no port scan)nmap-sn192.168.1.0/24
# No ping (assume host up)nmap-Pn192.168.1.100
# Version detectionnmap-sV192.168.1.100
# OS detectionnmap-O192.168.1.100
# Aggressive scannmap-A192.168.1.100# OS, version, script, traceroute
Output Options
# Normal outputnmap-oNoutput.txt192.168.1.100
# XML outputnmap-oXoutput.xml192.168.1.100
# Grepable outputnmap-oGoutput.txt192.168.1.100
# All formatsnmap-oAoutput192.168.1.100
# Verbosenmap-v192.168.1.100
nmap-vv192.168.1.100
NSE Scripts
# Run default scriptsnmap-sC192.168.1.100
# Run specific scriptnmap--script=http-title192.168.1.100
# Run script categorynmap--script=vuln192.168.1.100
# Update script databasenmap--script-updatedb
# Get script helpnmap--script-help=http-title
# Multiple scriptsnmap--script=http-title,http-headers192.168.1.100
Timing & Performance
# Timing templates (0-5, paranoid to insane)nmap-T0192.168.1.100# Paranoid (slowest)nmap-T4192.168.1.100# Aggressive (fast)# Set max parallel connectionsnmap--min-parallelism100192.168.1.100
# Set rate limitnmap--max-rate50192.168.1.100
Firewall Commands
iptables
List Rules
# List all rulesiptables-L
# List with line numbersiptables-L--line-numbers
# List with packet countsiptables-L-v
# List INPUT chainiptables-LINPUT
# List in raw formatiptables-S
# List NAT rulesiptables-tnat-L
Add Rules
# Allow incoming SSHiptables-AINPUT-ptcp--dport22-jACCEPT
# Allow incoming HTTP/HTTPSiptables-AINPUT-ptcp--dport80-jACCEPT
iptables-AINPUT-ptcp--dport443-jACCEPT
# Allow from specific IPiptables-AINPUT-s192.168.1.100-jACCEPT
# Allow established connectionsiptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT
# Allow loopbackiptables-AINPUT-ilo-jACCEPT
# Drop all other inputiptables-AINPUT-jDROP
Delete Rules
# Delete by line numberiptables-DINPUT5# Delete specific ruleiptables-DINPUT-ptcp--dport80-jACCEPT
# Flush all rulesiptables-F
# Flush specific chainiptables-FINPUT
Save/Restore
# Save rules (Debian/Ubuntu)iptables-save>/etc/iptables/rules.v4
# Restore rulesiptables-restore</etc/iptables/rules.v4
# Save (RHEL/CentOS)serviceiptablessave
firewalld
# Show statusfirewall-cmd--state
# List allfirewall-cmd--list-all
# List servicesfirewall-cmd--list-services
# List portsfirewall-cmd--list-ports
# Add servicefirewall-cmd--add-service=http
firewall-cmd--add-service=http--permanent
# Add portfirewall-cmd--add-port=8080/tcp
firewall-cmd--add-port=8080/tcp--permanent
# Remove servicefirewall-cmd--remove-service=http--permanent
# Reloadfirewall-cmd--reload
# Get default zonefirewall-cmd--get-default-zone
# Set default zonefirewall-cmd--set-default-zone=public
# Add interface to zonefirewall-cmd--zone=public--add-interface=eth0
# Rich rulesfirewall-cmd--add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 accept'
ufw (Uncomplicated Firewall)
# Enable/disableufwenableufwdisable
# Show statusufwstatus
ufwstatusverbose
ufwstatusnumbered
# Default policiesufwdefaultdenyincoming
ufwdefaultallowoutgoing
# Allow serviceufwallowssh
ufwallowhttp
ufwallowhttps
# Allow portufwallow8080/tcp
# Allow from specific IPufwallowfrom192.168.1.100
# Allow from subnetufwallowfrom192.168.1.0/24
# Allow to specific port from IPufwallowfrom192.168.1.100toanyport22# Denyufwdeny23/tcp
# Delete ruleufwdeleteallow80/tcp
ufwdelete2# By number# Reset firewallufwreset
Performance & Bandwidth
iperf3
# Server modeiperf3-s
# Client modeiperf3-cserver_ip
# Test for 30 secondsiperf3-cserver_ip-t30# Reverse mode (server sends)iperf3-cserver_ip-R
# UDP testiperf3-cserver_ip-u
# Set bandwidthiperf3-cserver_ip-u-b100M
# Parallel streamsiperf3-cserver_ip-P4# JSON outputiperf3-cserver_ip-J
# IPv6iperf3-cserver_ip-6
iftop
# Monitor interfaceiftop
# Specific interfaceiftop-ieth0
# Show portsiftop-P
# Show barsiftop-b
# Text outputiftop-t
# Filter by networkiftop-F192.168.1.0/24
# No DNS resolutioniftop-n
nethogs
# Monitor all interfacesnethogs
# Specific interfacenethogseth0
# Update every N secondsnethogs-d5# Trace modenethogs-t
Tips & Common Tasks
Find Which Process Uses Port
# Using lsoflsof-i:80
lsof-itcp:80
lsof-iudp:53
# Using ssss-tulpn|grep:80
# Using netstatnetstat-tulpn|grep:80
# Using fuserfuser80/tcp
Test Network Throughput
# Using dd and nc# Server:nc-l8080>/dev/null
# Client:ddif=/dev/zerobs=1Mcount=1000|ncserver_ip8080# Using pv# Server:nc-l8080>/dev/null
# Client:cat/dev/zero|pv|ncserver_ip8080
Monitor Traffic in Real-time
# Using iftopiftop-ieth0
# Using nloadnloadeth0
# Using bmonbmon-peth0
# Using iptraf-ngiptraf-ng
# Using vnstatvnstat-l-ieth0