菜鸟科技网

深入探索UNIX网络命令,如何高效掌握并解决实际网络问题?

基础网络信息与连接查看

这些命令用于查看本机的网络配置、活跃的网络连接和进程。

深入探索UNIX网络命令,如何高效掌握并解决实际网络问题?-图1
(图片来源网络,侵删)

ifconfig / ip

  • ifconfig: 传统上用于配置和显示网络接口信息,在现代系统中,其功能已被 ip 命令取代。
  • ip: 功能更强大的现代替代品,用于管理网络接口、路由、策略等。

常用场景:

  • 查看所有网络接口的 IP 地址、MAC 地址、状态。

示例:

# 查看所有网络接口信息 (现代系统推荐使用 ip)
ip addr show
# 或者简写
ip a
# 查看特定接口,如 eth0
ip addr show eth0
# 启用或禁用一个接口 (需要 root 权限)
sudo ip link set eth0 up
sudo ip link set eth0 down

netstat

显示网络连接、路由表、接口统计等信息。ss 是其更现代、更快速的替代品。

常用场景:

深入探索UNIX网络命令,如何高效掌握并解决实际网络问题?-图2
(图片来源网络,侵删)
  • 查看所有活动的网络连接(TCP/UDP)。
  • 查看哪个进程在监听哪个端口。

示例:

# 显示所有活动的 TCP 连接
netstat -at
# 显示所有活动的 UDP 连接
netstat -au
# 显示所有监听的端口
netstat -l
# 显示所有监听的 TCP 端口
netstat -lt
# 以数字形式显示地址和端口,而不是尝试解析主机名
netstat -n
# 显示每个连接对应的 PID/程序名 (需要 root 权限)
sudo netstat -tpn
# 显示网络统计信息 (包的收发情况等)
netstat -s

ss

ssnetstat 的现代替代品,速度更快,默认显示更多信息。

常用场景:

  • 快速查看网络连接和监听端口。

示例:

深入探索UNIX网络命令,如何高效掌握并解决实际网络问题?-图3
(图片来源网络,侵删)
# 显示所有 TCP 连接
ss -t
# 显示所有 UDP 连接
ss -u
# 显示所有监听的端口
ss -l
# 显示所有 TCP 监听端口
ss -lt
# 显示所有监听的 TCP 端口,并显示进程 ID 和名称
sudo ss -ltpn
# 显示所有连接,包括 TCP, UDP, UNIX socket 等
ss -a

ping

测试与另一台主机的网络连通性,通过发送 ICMP 回显请求包并等待响应来工作。

常用场景:

  • 检查网络是否可达,延迟有多高。

示例:

# ping 一个域名或 IP 地址
ping google.com
ping 8.8.8.8
# 发送指定数量的包后停止 (ping 5 次)
ping -c 5 google.com
# 设置每次发送包的间隔时间 (秒)
ping -i 2 google.com
信息 (发送和接收的包数)
ping -q google.com

路由与数据包追踪

traceroute / tracepath / mtr

  • traceroute: 显示数据包到达目标主机所经过的路由路径。
  • tracepath: traceroute 的一个简化版本,通常不需要 root 权限。
  • mtr: tracerouteping 的结合体,能持续显示路径上每个节点的丢包率和延迟,是网络诊断的利器。

常用场景:

  • 定位网络延迟或丢包发生在哪个路由节点。

示例:

# 追踪到 google.com 的路由路径
traceroute google.com
# 使用 ICMP 方式 (可能被防火墙阻止)
traceroute -I google.com
# 使用 TCP SYN 方式 (更可能成功穿透防火墙)
traceroute -T -p 80 google.com
# 使用 tracepath (通常无需 sudo)
tracepath google.com
# 使用 mtr 进行持续诊断 (强烈推荐)
mtr google.com
# mtr 以报告模式输出,适合脚本
mtr --report google.com

netstat / ip route

查看和管理系统的路由表。

常用场景:

  • 查看数据包将如何被转发。

示例:

# 显示路由表
ip route show
# 或者简写
ip r
# 添加一个临时路由 (所有访问 192.168.2.0/24 网段的流量都通过网关 10.0.0.1)
sudo ip route add 192.168.2.0/24 via 10.0.0.1
# 删除一个路由
sudo ip route del 192.168.2.0/24

DNS 域名解析

nslookup

查询 DNS 记录,用于故障排查。

常用场景:

  • 查找一个域名的 IP 地址。
  • 查找一个 IP 地址对应的域名 (反向解析)。
  • 查询特定类型的 DNS 记录,如 MX, CNAME 等。

示例:

# 交互模式启动
nslookup
# 在交互模式下查询域名
> google.com
# 非交互模式查询
nslookup google.com
# 查询域名的 MX 记录 (邮件交换记录)
nslookup -type=mx google.com
# 查询域名的 NS 记录 (域名服务器记录)
nslookup -type=ns google.com
# 指定要使用的 DNS 服务器进行查询
nslookup google.com 8.8.8.8

dig

nslookup 更强大、更详细的 DNS 查询工具。

常用场景:

  • 获取 DNS 查询的完整、详细信息。

示例:

# 查询 google.com 的 A 记录
dig google.com
# 查询 MX 记录
dig google.com MX
# 只显示答案部分
dig google.com +short
# 指定 DNS 服务器进行查询
dig @8.8.8.8 google.com
# 进行反向 DNS 查询
dig -x 8.8.8.8

host

一个简单易用的 DNS 查询工具。

示例:

# 查询域名 IP
host google.com
# 查询 IP 对应的域名
host 8.8.8.8
# 查询 MX 记录
host -t MX google.com

网络数据传输与下载

curl

一个强大的命令行工具,用于传输数据,支持 HTTP, HTTPS, FTP, FTPS, SCP, SFTP, SMTP, TELNET 等多种协议。

常用场景:

  • 下载网页或文件。
  • 测试 API 接口。
  • 与 Web 服务进行交互。

示例:

# 下载网页内容并显示在终端
curl https://www.google.com
保存到文件
curl -o google.html https://www.google.com
# 显示 HTTP 响应头信息
curl -I https://www.google.com
# 发送 POST 请求 (表单数据)
curl -d "username=test&password=123" -X POST https://example.com/login
# 从指定 URL 下载文件并显示进度条
curl -# -O https://releases.ubuntu.com/22.04/ubuntu-22.04.3-desktop-amd64.iso

wget

另一个非常流行的非交互式网络文件下载工具。

常用场景:

  • 递归下载整个网站。
  • 断点续传下载。

示例:

# 下载文件
wget https://example.com/file.zip
# 递归下载整个网站 (仅下载一层链接)
wget -r -l 1 https://example.com
# 启用断点续传
wget -c https://example.com/large-file.iso
# 在后台下载
wget -b https://example.com/large-file.iso

高级网络工具与安全

nmap

网络探测和安全审核工具,用于端口扫描、主机发现、服务探测等。

常用场景:

  • 扫描一个主机上开放的端口。
  • 探测主机操作系统信息。
  • 探测端口上运行的服务和版本。

示例:

# 扫描目标主机的所有常用端口 (1-1000)
nmap target.com
# 扫描所有 65535 个端口
nmap -p- target.com
# 进行 TCP SYN 扫描 (更隐蔽,需要 root)
sudo nmap -sS target.com
# 进行 UDP 扫描 (速度慢)
sudo nmap -sU target.com
# 探测开放端口上运行的服务和版本
nmap -sV target.com
# 探测目标主机的操作系统信息
nmap -O target.com
# 快速扫描,只显示哪些端口是开放的
nmap -F target.com

telnet

一个古老的客户端/服务器协议工具,现在主要用于网络服务的简单连通性测试。

警告: telnet 通信是明文的,不安全,不应用于生产环境,推荐使用 ncopenssl

常用场景:

  • 测试某个端口是否开放。

示例:

# 测试 google.com 的 80 端口 (HTTP)
telnet google.com 80
# 连接成功后,可以手动输入 HTTP 请求
# GET / HTTP/1.1
# Host: google.com
#
# (按两次回车发送请求)

nc / netcat

被誉为“网络工具中的瑞士军刀”,可以用于读取、写入 TCP 和 UDP 连接。

常用场景:

  • 创建临时的 TCP/UDP 服务器或客户端。
  • 端口扫描。
  • 在两台机器之间传输文件。

示例:

# 监听本地 1234 端口,等待连接
nc -l 1234
# 连接到远程主机的 1234 端口
nc example.com 1234
# 扫描本地主机的 1-1024 端口
nc -z -v localhost 1-1024
# 将文件从一台机器传输到另一台
# 在接收方机器上运行:
nc -l 1234 > received_file.txt
# 在发送方机器上运行:
nc receiver_ip 1234 < file_to_send.txt

openssl

功能强大的密码学和 SSL/TLS 工具箱。

常用场景:

  • 测试 HTTPS (SSL/TLS) 服务的连通性。
  • 查看证书信息。

示例:

# 模拟一个 HTTPS 请求,显示证书信息
openssl s_client -connect google.com:443
# 测试 SMTPS (SMTP over SSL) 连接
openssl s_client -connect smtp.gmail.com:465

系统与性能监控

iftop / nethogs

  • iftop: 显示网络接口的实时带宽使用情况,按主机排序。
  • nethogs: 按进程显示网络带宽使用情况。

常用场景:

  • 找出哪个主机或进程占用了大量网络带宽。

示例:

# 监控 eth0 接口的实时流量 (需要安装)
sudo iftop -i eth0
# 按进程显示网络带宽使用情况 (需要安装)
sudo nethogs

总结表格

命令 主要用途 关键选项/示例
ip / ifconfig 查看和配置网络接口 ip a, ip link set eth0 up
ss / netstat 查看网络连接和端口 ss -tulpn, netstat -an
ping 测试网络连通性 ping -c 4 google.com
traceroute / mtr 追踪网络路由路径 mtr google.com
nslookup / dig DNS 域名查询 dig google.com MX, nslookup google.com
curl / wget 下载文件或与 Web 服务交互 curl -I google.com, wget -c file.zip
nmap 端口扫描与服务探测 nmap -sV target.com
nc / telnet 网络连接测试和调试 nc -l 1234, telnet google.com 80
iftop / nethogs 实时网络流量监控 sudo iftop -i eth0, sudo nethogs

掌握这些命令,您将能够应对绝大多数 Unix/Linux 环境下的网络诊断和管理任务。

分享:
扫描分享到社交APP
上一篇
下一篇