- 基础网络配置与信息查看
- 网络连通性测试
- 网络数据包分析
- 网络状态与服务查看
- 高级网络工具与脚本
基础网络配置与信息查看
这些命令用于查看和配置本机的网络接口、IP 地址、路由表和 DNS 等。

ip 命令 (现代、功能强大)
ip 命令是 ifconfig 的现代替代品,功能更全面,是推荐的工具。
-
显示所有网络接口信息:
ip addr show # 或者简写 ip a
-
显示特定接口信息(如 eth0):
ip addr show eth0
-
启用/禁用网络接口:
(图片来源网络,侵删)# 启用 eth0 ip link set eth0 up # 禁用 eth0 ip link set eth0 down
-
为接口配置 IP 地址:
# 为 eth0 配置静态 IP 地址 192.168.1.100/24 ip addr add 192.168.1.100/24 dev eth0
-
显示路由表:
ip route show # 或者简写 ip r
-
添加/删除路由:
# 添加一条默认路由,网关为 192.168.1.1 ip route add default via 192.168.1.1 # 添加一条到 10.10.10.0/24 网段的路由,下一跳为 192.168.1.254 ip route add 10.10.10.0/24 via 192.168.1.254 # 删除默认路由 ip route del default
ifconfig 命令 (传统、仍广泛使用)
在许多旧系统或脚本中仍然能看到。

-
显示所有网络接口信息:
ifconfig -a
-
显示特定接口信息(如 eth0):
ifconfig eth0
-
为接口配置 IP 地址:
ifconfig eth0 192.168.1.100 netmask 255.255.255.0
ss / netstat 命令 (查看网络连接)
ss 是 netstat 的现代替代品,速度更快,信息更全。
-
显示所有 TCP 和 UDP 连接:
# 使用 ss (推荐) ss -tuln # 使用 netstat (传统) netstat -tuln
-t: TCP-u: UDP-l: 只显示监听端口-n: 以数字形式显示地址和端口,不进行 DNS 解析(速度更快)
-
显示所有连接(包括监听和非监听):
ss -tulpn
-p: 显示进程ID和名称 (PID/Program name)
-
查看指定端口的连接:
ss -tulpn | grep ':80'
hostname / hostnamectl 命令
-
查看/设置主机名:
# 查看当前主机名 hostname # 查看完整主机名信息 (systemd 系统) hostnamectl
route 命令 (传统)
查看和操作 IP 路由表,功能已被 ip route 取代。
route -n
网络连通性测试
这些是排查网络问题的最常用命令。
ping (测试网络连通性)
向目标主机发送 ICMP Echo Request 数据包,并等待响应。
# 测试与 baidu.com 的连通性 ping baidu.com # 发送 5 个包后停止 ping -c 5 baidu.com # 每隔 1 秒发送一个包 ping -i 1 baidu.com
traceroute / tracepath (跟踪网络路径)
显示数据包到达目标主机所经过的路由器。
# 使用 traceroute (可能需要安装) traceroute baidu.com # 使用 tracepath (通常自带,无需 root) tracepath baidu.com
mtr (更强大的 traceroute)
mtr 结合了 ping 和 traceroute 的功能,并持续显示数据包的统计信息,是网络诊断的利器。
# 通常需要安装 sudo apt-get install mtr 或 yum install mtr mtr baidu.com
wget / curl (测试应用层连通性)
这两个命令可以测试 HTTP/HTTPS 服务是否正常。
# 使用 curl 获取网页内容 curl -I http://baidu.com # -I 只获取响应头,速度更快 curl http://baidu.com # 使用 wget 下载文件 wget http://baidu.com
网络数据包分析
tcpdump (抓包分析)
tcpdump 是一个强大的命令行抓包工具,可以捕获和分析经过网络接口的数据包。
-
基本用法:
# 需要 root 权限 sudo tcpdump
-
抓取指定接口的数据包:
sudo tcpdump -i eth0
-
抓取与特定主机相关的数据包:
# 抓取与 baidu.com 的所有通信 sudo tcpdump host baidu.com # 抓取来自 baidu.com 的数据包 sudo tcpdump src host baidu.com # 抓取去往 baidu.com 的数据包 sudo tcpdump dst host baidu.com
-
抓取特定端口的数据包:
# 抓取所有 HTTP (80) 和 HTTPS (443) 流量 sudo tcpdump port 80 or port 443
-
抓取特定协议的数据包:
# 抓取所有 TCP 流量 sudo tcpdump tcp # 抓取所有 ICMP 流量 (ping 使用) sudo tcpdump icmp
-
将抓包结果保存到文件:
sudo tcpdump -w capture.pcap
-
读取保存的抓包文件:
tcpdump -r capture.pcap
网络状态与服务查看
ss / netstat (再次强调)
它们不仅显示连接,还显示监听的服务。
# 查看所有监听端口及其对应的进程 sudo ss -tulpn
systemctl / service (管理网络服务)
管理网络相关的系统服务,如 sshd (SSH), nginx, firewalld 等。
# 检查 sshd 服务状态 systemctl status sshd # 启动 sshd 服务 systemctl start sshd # 设置 sshd 服务开机自启 systemctl enable sshd # 查看防火墙状态 (firewalld) systemctl status firewalld
高级网络工具与脚本
nc / netcat (网络工具中的“瑞士军刀”)
nc 可以进行 TCP/UDP 连接、监听端口、发送数据等,功能非常灵活。
-
作为客户端连接到远程服务器:
# 连接到 baidu.com 的 80 端口 nc baidu.com 80 # 连接后可以手动输入 HTTP 请求,如 GET / HTTP/1.1
-
作为服务器监听本地端口:
# 在本机 1234 端口开启一个 TCP 监听 nc -lvp 1234
-l: 监听模式-v: 详细输出-p: 指定端口
-
简单的端口扫描:
# 扫描 baidu.com 的 80 和 443 端口是否开放 nc -z -v baidu.com 80 443
-z: 只扫描端口,不发送数据
Shell 脚本示例:检查多个网站是否可访问
#!/bin/bash
# 定义一个包含多个 URL 的数组
urls=(
"http://www.baidu.com"
"http://www.google.com"
"http://www.github.com"
"http://this-site-does-not-exist-12345.com"
)
# 遍历数组中的每个 URL
for url in "${urls[@]}"; do
# 使用 curl 的 -f (fail silently on server errors) 和 -S (show error even if silent)
# --connect-timeout 5 设置连接超时为 5 秒
if curl -IfS --connect-timeout 5 "$url" > /dev/null; then
echo "[SUCCESS] $url is accessible."
else
echo "[FAILED] $url is not accessible."
fi
done
exit 0
| 命令 | 主要用途 | 关键选项/示例 |
|---|---|---|
ip |
现代、全面的网络配置 | ip a, ip r, ip link set eth0 up |
ifconfig |
传统网络配置 (已过时) | ifconfig eth0 192.168.1.100 |
ss |
查看 TCP/UDP 连接 (推荐) | ss -tulpn, ss -tuln |
netstat |
查看 TCP/UDP 连接 (传统) | netstat -tuln |
ping |
测试网络连通性 | ping -c 5 baidu.com |
traceroute |
跟踪数据包路径 | traceroute baidu.com |
mtr |
持续跟踪并统计 | mtr baidu.com |
curl / wget |
测试 HTTP/HTTPS 服务 | curl -I http://baidu.com |
tcpdump |
抓包分析底层流量 | sudo tcpdump -i eth0 host baidu.com |
nc / netcat |
网络调试和测试 | nc -lvp 1234, nc baidu.com 80 |
掌握这些命令,你就可以在 Linux Shell 中高效地完成绝大多数网络管理、监控和排错任务。
