home / skills / chaterm / terminal-skills / network-tools

network-tools skill

/linux/network-tools

npx playbooks add skill chaterm/terminal-skills --skill network-tools

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
4.6 KB
---
name: network-tools
description: Linux network tools and diagnostics
version: 1.0.0
author: terminal-skills
tags: [linux, network, diagnosis, netstat, ss, curl]
---

# Network Tools and Diagnostics

## Overview
Linux network diagnostics, port scanning, traffic analysis and other tool usage skills.

## Network Configuration

### View Configuration
```bash
# IP address
ip addr
ip a
ifconfig                            # Legacy command

# Routing table
ip route
route -n
netstat -rn

# DNS configuration
cat /etc/resolv.conf
systemd-resolve --status
```

### Configure Network
```bash
# Temporary IP configuration
ip addr add 192.168.1.100/24 dev eth0
ip addr del 192.168.1.100/24 dev eth0

# Enable/Disable interface
ip link set eth0 up
ip link set eth0 down

# Add route
ip route add 10.0.0.0/8 via 192.168.1.1
ip route del 10.0.0.0/8
```

## Connectivity Testing

### ping
```bash
ping hostname
ping -c 4 hostname                  # Send 4 packets
ping -i 0.2 hostname                # 0.2 second interval
ping -s 1000 hostname               # Specify packet size
```

### traceroute
```bash
traceroute hostname
traceroute -n hostname              # Don't resolve hostnames
traceroute -T hostname              # Use TCP
mtr hostname                        # Real-time trace
```

### DNS Query
```bash
nslookup hostname
dig hostname
dig +short hostname
dig @8.8.8.8 hostname               # Specify DNS server
host hostname
```

## Ports and Connections

### ss Command (Recommended)
```bash
# Listening ports
ss -tlnp                            # TCP listening
ss -ulnp                            # UDP listening
ss -tlnp | grep :80

# All connections
ss -tanp                            # TCP connections
ss -s                               # Statistics

# Filter
ss -t state established
ss -t dst 192.168.1.1
ss -t sport = :80
```

### netstat Command
```bash
netstat -tlnp                       # TCP listening
netstat -ulnp                       # UDP listening
netstat -anp                        # All connections
netstat -s                          # Statistics
```

### lsof Network
```bash
lsof -i                             # All network connections
lsof -i :80                         # Specific port
lsof -i tcp                         # TCP connections
lsof -i @192.168.1.1                # Specific host
```

## HTTP Tools

### curl
```bash
# Basic request
curl http://example.com
curl -I http://example.com          # Headers only
curl -v http://example.com          # Verbose output

# POST request
curl -X POST -d "data=value" http://example.com
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://example.com

# Download
curl -O http://example.com/file.zip
curl -o output.zip http://example.com/file.zip

# Authentication
curl -u user:pass http://example.com
curl -H "Authorization: Bearer token" http://example.com
```

### wget
```bash
wget http://example.com/file.zip
wget -c http://example.com/file.zip # Resume download
wget -r http://example.com          # Recursive download
wget --mirror http://example.com    # Mirror site
```

## Packet Capture

### tcpdump
```bash
# Basic capture
tcpdump -i eth0
tcpdump -i any

# Filter
tcpdump -i eth0 port 80
tcpdump -i eth0 host 192.168.1.1
tcpdump -i eth0 'tcp port 80 and host 192.168.1.1'

# Save/Read
tcpdump -i eth0 -w capture.pcap
tcpdump -r capture.pcap

# Display content
tcpdump -i eth0 -A port 80          # ASCII
tcpdump -i eth0 -X port 80          # Hexadecimal
```

### Traffic Monitoring
```bash
# Real-time traffic
iftop
iftop -i eth0

# By process
nethogs
nethogs eth0

# Bandwidth test
iperf3 -s                           # Server
iperf3 -c server_ip                 # Client
```

## Common Scenarios

### Scenario 1: Troubleshoot Port Usage
```bash
# Check port usage
ss -tlnp | grep :8080
lsof -i :8080

# Find process and handle
kill -9 PID
# Or
fuser -k 8080/tcp
```

### Scenario 2: Test Service Connectivity
```bash
# TCP port test
nc -zv hostname 80
telnet hostname 80

# HTTP service test
curl -I http://hostname
curl -w "HTTP Code: %{http_code}\nTime: %{time_total}s\n" -o /dev/null -s http://hostname
```

### Scenario 3: Network Performance Diagnosis
```bash
# Latency test
ping -c 100 hostname | tail -1

# Route analysis
mtr --report hostname

# Bandwidth test
iperf3 -c server -t 30
```

## Troubleshooting

| Problem | Solution |
|---------|----------|
| Network unreachable | `ping`, `traceroute`, check routing |
| DNS resolution failed | `dig`, `nslookup`, check resolv.conf |
| Port unreachable | `ss -tlnp`, check firewall |
| Connection timeout | `mtr`, `tcpdump` packet capture |
| Insufficient bandwidth | `iftop`, `iperf3` test |