Appearance
网络命令
网络配置
ip - 网络配置工具
地址管理
bash
ip addr # 显示所有地址
ip addr show eth0 # 显示指定接口
ip addr add 192.168.1.100/24 dev eth0 # 添加 IP
ip addr del 192.168.1.100/24 dev eth0 # 删除 IP
ip -6 addr add 2001:db8::1/64 dev eth0 # 添加 IPv6
ip addr flush eth0 # 清除所有地址
ip a # 简写接口管理
bash
ip link # 显示所有接口
ip link show eth0 # 显示指定接口
ip link set eth0 up # 启用接口
ip link set eth0 down # 禁用接口
ip link set eth0 mtu 1500 # 设置 MTU
ip link set eth0 name eth1 # 重命名接口
ip link add veth0 type veth peer name veth1 # 创建虚拟接口
ip link delete veth0 # 删除接口路由管理
bash
ip route # 显示路由表
ip route show # 显示路由表
ip route add default via 192.168.1.1 # 添加默认路由
ip route add 10.0.0.0/8 via 192.168.1.1 # 添加路由
ip route del default # 删除默认路由
ip route del 10.0.0.0/8 # 删除路由
ip route get 8.8.8.8 # 查看到目标的路径
ip route flush cache # 清除路由缓存
ip r # 简写ifconfig - 传统网络配置
bash
ifconfig # 显示所有接口
ifconfig eth0 # 显示指定接口
ifconfig eth0 up # 启用接口
ifconfig eth0 down # 禁用接口
ifconfig eth0 192.168.1.100 # 设置 IP
ifconfig eth0 192.168.1.100 netmask 255.255.255.0
ifconfig eth0:1 192.168.1.101 # 添加虚拟 IP
ifconfig eth0 mtu 1500 # 设置 MTU
ifconfig eth0 promisc # 启用混杂模式
ifconfig eth0 -promisc # 禁用混杂模式网络配置文件
Ubuntu/Debian
/etc/netplan/01-netcfg.yaml:
yaml
network:
version: 2
ethernets:
eth0:
dhcp4: true
eth1:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4bash
netplan apply # 应用配置CentOS/RHEL
/etc/sysconfig/network-scripts/ifcfg-eth0:
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8bash
nmcli connection reload
nmcli connection up eth0网络诊断
ping - 测试连通性
bash
ping 8.8.8.8 # 测试连通性
ping -c 5 8.8.8.8 # 发送5个包
ping -i 2 8.8.8.8 # 间隔2秒
ping -s 1000 8.8.8.8 # 指定包大小
ping -t 64 8.8.8.8 # 指定 TTL
ping -W 5 8.8.8.8 # 超时时间5秒
ping -q 8.8.8.8 # 安静模式
ping6 2001:db8::1 # IPv6traceroute - 路由追踪
bash
traceroute 8.8.8.8 # 追踪路由
traceroute -n 8.8.8.8 # 不解析主机名
traceroute -I 8.8.8.8 # 使用 ICMP
traceroute -T 8.8.8.8 # 使用 TCP
traceroute -p 80 8.8.8.8 # 指定端口
traceroute -m 30 8.8.8.8 # 最大跳数
traceroute6 2001:db8::1 # IPv6
tracepath 8.8.8.8 # 简化版追踪mtr - 网络诊断工具
bash
mtr 8.8.8.8 # 实时追踪
mtr -r 8.8.8.8 # 报告模式
mtr -c 10 8.8.8.8 # 发送10个包
mtr -n 8.8.8.8 # 不解析主机名
mtr -T 8.8.8.8 # 使用 TCP
mtr -u 8.8.8.8 # 使用 UDP
mtr -p 80 8.8.8.8 # 指定端口ss - Socket 统计
bash
ss # 显示所有 socket
ss -t # TCP socket
ss -u # UDP socket
ss -l # 监听 socket
ss -n # 不解析服务名
ss -a # 所有 socket
ss -p # 显示进程
ss -tulpn # 常用组合
ss -t state established # 已建立的连接
ss -t state time-wait # TIME_WAIT 状态
ss -s # 统计信息
ss -4 # IPv4
ss -6 # IPv6
ss -t src :80 # 指定源端口
ss -t dst :80 # 指定目标端口netstat - 网络统计
bash
netstat # 显示所有连接
netstat -t # TCP 连接
netstat -u # UDP 连接
netstat -l # 监听端口
netstat -n # 不解析
netstat -p # 显示进程
netstat -a # 所有连接
netstat -tulpn # 常用组合
netstat -r # 路由表
netstat -i # 接口统计
netstat -s # 协议统计
netstat -c # 持续刷新nc - 网络工具
端口扫描
bash
nc -zv 192.168.1.1 80 # 扫描单个端口
nc -zv 192.168.1.1 20-80 # 扫描端口范围
nc -zv 192.168.1.1 80 443 8080 # 扫描多个端口
nc -zvn 192.168.1.1 80 # 不解析 DNS传输数据
bash
nc -l 1234 # 监听端口(服务端)
nc 192.168.1.1 1234 # 连接端口(客户端)
nc -l 1234 > received.txt # 接收文件(服务端)
nc 192.168.1.1 1234 < file.txt # 发送文件(客户端)
nc -l 1234 | tar xzf - # 接收目录(服务端)
tar czf - dir/ | nc 192.168.1.1 1234 # 发送目录(客户端)其他用法
bash
nc -u 192.168.1.1 1234 # UDP 模式
nc -l 1234 -k # 保持监听
nc -l 1234 -e /bin/bash # 执行命令(危险)
echo "GET / HTTP/1.0\r\n\r\n" | nc 192.168.1.1 80 # HTTP 请求nmap - 网络扫描
bash
nmap 192.168.1.1 # 扫描主机
nmap -sS 192.168.1.1 # SYN 扫描
nmap -sT 192.168.1.1 # TCP 扫描
nmap -sU 192.168.1.1 # UDP 扫描
nmap -sP 192.168.1.0/24 # Ping 扫描
nmap -p 80,443 192.168.1.1 # 指定端口
nmap -p 1-1000 192.168.1.1 # 端口范围
nmap -A 192.168.1.1 # 全面扫描
nmap -O 192.168.1.1 # 系统识别
nmap -sV 192.168.1.1 # 版本检测
nmap -v 192.168.1.1 # 详细输出
nmap -oN output.txt 192.168.1.1 # 输出到文件curl - 数据传输
bash
curl http://example.com # GET 请求
curl -I http://example.com # 只获取头部
curl -i http://example.com # 包含头部
curl -v http://example.com # 详细输出
curl -X POST http://example.com # POST 请求
curl -d "name=value" http://example.com # 发送数据
curl -d @data.json http://example.com # 从文件发送
curl -H "Content-Type: application/json" http://example.com # 自定义头
curl -u user:pass http://example.com # 基本认证
curl -b "cookie=value" http://example.com # 发送 Cookie
curl -c cookies.txt http://example.com # 保存 Cookie
curl -L http://example.com # 跟随重定向
curl -o file.txt http://example.com/file # 保存文件
curl -O http://example.com/file.txt # 使用原文件名保存
curl -C - -O http://example.com/file # 断点续传
curl -x http://proxy:8080 http://example.com # 使用代理
curl --connect-timeout 10 http://example.com # 连接超时
curl -k https://example.com # 忽略证书wget - 文件下载
bash
wget http://example.com/file.txt # 下载文件
wget -O newname.txt http://example.com/file.txt # 指定文件名
wget -c http://example.com/file.txt # 断点续传
wget -b http://example.com/file.txt # 后台下载
wget -r http://example.com/ # 递归下载
wget -np -r http://example.com/ # 不递归父目录
wget -nd -r http://example.com/ # 不创建目录
wget -A "*.jpg" -r http://example.com/ # 只下载指定类型
wget -R "*.html" -r http://example.com # 排除指定类型
wget -l 2 -r http://example.com/ # 限制递归深度
wget -p http://example.com/page.html # 下载页面资源
wget -k -r http://example.com/ # 转换链接
wget --limit-rate=100k http://example.com/file.txt # 限速
wget -t 5 http://example.com/file.txt # 重试次数
wget -T 30 http://example.com/file.txt # 超时时间
wget -q http://example.com/file.txt # 安静模式
wget --spider http://example.com/file.txt # 只检查DNS 查询
dig - DNS 查询工具
bash
dig example.com # 查询 A 记录
dig @8.8.8.8 example.com # 指定 DNS 服务器
dig example.com A # 指定记录类型
dig example.com MX # 查询 MX 记录
dig example.com NS # 查询 NS 记录
dig example.com TXT # 查询 TXT 记录
dig example.com CNAME # 查询 CNAME 记录
dig example.com ANY # 查询所有记录
dig -x 192.168.1.1 # 反向查询
dig +short example.com # 简短输出
dig +trace example.com # 追踪查询过程
dig +noall +answer example.com # 只显示答案nslookup - DNS 查询
bash
nslookup example.com # 查询域名
nslookup example.com 8.8.8.8 # 指定 DNS 服务器
nslookup -type=MX example.com # 指定记录类型
nslookup -type=any example.com # 所有记录
nslookup 192.168.1.1 # 反向查询host - DNS 查询
bash
host example.com # 查询域名
host -t A example.com # A 记录
host -t MX example.com # MX 记录
host -t NS example.com # NS 记录
host -t TXT example.com # TXT 记录
host 192.168.1.1 # 反向查询
host example.com 8.8.8.8 # 指定 DNS 服务器防火墙
iptables - 防火墙规则
bash
iptables -L # 列出规则
iptables -L -n # 不解析
iptables -L -v # 详细信息
iptables -L --line-numbers # 显示行号
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许 SSH
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允许 HTTP
iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 允许 HTTPS
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT # 允许网段
iptables -A INPUT -i lo -j ACCEPT # 允许回环
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -D INPUT 1 # 删除第1条规则
iptables -F # 清空所有规则
iptables -F INPUT # 清空 INPUT 链
iptables -P INPUT DROP # 设置默认策略firewalld - 防火墙管理
bash
systemctl start firewalld # 启动
systemctl stop firewalld # 停止
systemctl enable firewalld # 开机自启
systemctl disable firewalld # 禁用自启
firewall-cmd --state # 查看状态
firewall-cmd --list-all # 列出所有规则
firewall-cmd --list-ports # 列出端口
firewall-cmd --list-services # 列出服务
firewall-cmd --add-port=80/tcp # 添加端口(临时)
firewall-cmd --add-port=80/tcp --permanent # 永久添加
firewall-cmd --remove-port=80/tcp --permanent # 永久移除
firewall-cmd --add-service=http # 添加服务
firewall-cmd --add-service=http --permanent
firewall-cmd --remove-service=http --permanent
firewall-cmd --reload # 重新加载
firewall-cmd --runtime-to-permanent # 保存临时规则ufw - Ubuntu 防火墙
bash
ufw enable # 启用
ufw disable # 禁用
ufw status # 查看状态
ufw status numbered # 编号显示
ufw allow 22 # 允许端口
ufw allow 80/tcp # 允许 TCP 端口
ufw allow from 192.168.1.0/24 # 允许网段
ufw allow from 192.168.1.1 to any port 22 # 允许 IP 访问端口
ufw deny 80 # 拒绝端口
ufw delete allow 80 # 删除规则
ufw reset # 重置网络抓包
tcpdump - 抓包工具
bash
tcpdump # 抓取所有包
tcpdump -i eth0 # 指定接口
tcpdump -n # 不解析
tcpdump -nn # 不解析端口
tcpdump -c 100 # 抓取100个包
tcpdump -w capture.pcap # 保存到文件
tcpdump -r capture.pcap # 读取文件
tcpdump host 192.168.1.1 # 指定主机
tcpdump src 192.168.1.1 # 源主机
tcpdump dst 192.168.1.1 # 目标主机
tcpdump port 80 # 指定端口
tcpdump tcp port 80 # TCP 端口
tcpdump udp port 53 # UDP 端口
tcpdump -i eth0 tcp port 80 -w http.pcap # 组合使用
tcpdump -A # ASCII 输出
tcpdump -X # 十六进制和 ASCII
tcpdump -v # 详细输出其他网络命令
hostname - 主机名
bash
hostname # 显示主机名
hostname -I # 显示 IP 地址
hostname -f # FQDN
hostnamectl # 主机信息
hostnamectl set-hostname newname # 设置主机名arp - ARP 表
bash
arp -a # 显示 ARP 表
arp -n # 不解析
arp -d 192.168.1.1 # 删除条目
arp -s 192.168.1.1 00:11:22:33:44:55 # 添加条目
ip neigh # 新版命令route - 路由表
bash
route # 显示路由表
route -n # 不解析
route add default gw 192.168.1.1 # 添加默认网关
route del default # 删除默认网关
route add -net 10.0.0.0/8 gw 192.168.1.1 # 添加路由
route del -net 10.0.0.0/8 # 删除路由ethtool - 网卡工具
bash
ethtool eth0 # 网卡信息
ethtool -i eth0 # 驱动信息
ethtool -S eth0 # 统计信息
ethtool -a eth0 # 暂停参数
ethtool -k eth0 # 卸载设置
ethtool -s eth0 speed 1000 duplex full # 设置速度和双工
ethtool -s eth0 autoneg on # 自动协商