20 个你应该知道的 Linux 网络命令 - Ubuntu/Debian/Rocky Linux 通用教程

简介

在管理 Linux 系统时,你偶尔会遇到阻碍你访问网络上的设备和资源的问题。有时,你需要检索关键的网络相关数据,例如 IP 地址和 DNS 信息,并在网络上执行其他任务。

我们整理了一份 Linux 用户或管理员应该熟悉的 20 个顶级网络命令行工具和实用程序的列表,用于网络故障排除和诊断。这些命令在大多数 Linux 发行版中都能一致地工作,无论你使用哪个 Linux 发行版,都可以按照本教程进行操作。

本教程的目标是手把手教你如何在 Linux 服务器上使用这些网络命令。

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品云服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

  • 到此为止,我们的云服务器就远程连接上了。

命令详解

第一:ip 命令

ip 命令是 Linux 中最基本和最有用的网络命令之一。该命令通常显示网络接口的状态以及分配给系统的 IP 地址。它取代了现在已弃用的旧 ifconfig 命令。

要显示系统上的 IP 地址,请运行以下命令:

ip a

或者

ip addr

在此示例中,我们有第一个标记为 lo 的接口,也通常称为环回地址或本地主机。它始终带有 127.0.0.1 的 IP,并且永不偏离。它主要用于诊断。

第二个接口 (enp0s3) 是系统的物理接口,IP 为 192.169.2.105。你的物理网络接口可能具有不同的标签,例如 eth0,并根据你局域网的子网获取 IP 地址。

第二:ping 命令

ping 命令通过发送 ICMP 回显请求来检查远程主机的可用性,等待回复。当远程目标收到请求时,它会确认并发送回显数据包作为回复。

该命令采用以下语法:

ping ip-address or domain

例如:

ping 192.168.2.105 -c 4

  • c 选项表示我们已向远程节点发送了 4 个回显数据包。如果远程主机由于任何原因不可用,则会显示 Destination Host Unreachable 通知。

在此示例中,ping 命令使用其域名测试系统的可用性:

ping cherryservers.com -c 4

第三:hostname 命令

hostname 命令显示服务器的主机名。没有任何命令行参数,它会显示你服务器的主机名。

hostname

  • I 标志显示活动网络接口的 IP 地址。
hostname -I

第四:ss 命令

ss 命令是 “Socket Statistics” 的缩写,是一个显示 UNIX 套接字连接的实用程序。该命令是旧的 netstat 命令的改进版本。它可以提供有关打开的端口、侦听 TCP 和 UDP 套接字、活动连接、路由表、进程统计信息等方面的宝贵见解。

以下是带有几个选项的命令用法示例。

sudo ss -nltu

在此命令中:

n 选项显示数字地址。
l 选项显示侦听套接字。
t 标志包括 TCP 套接字
u 选项包括 UDP 套接字
查看手册页以获取更多命令行选项和用法。

man ss

第五:netstat 命令

netstat 命令是 “network statistics” 的组合词,是一个用于显示有价值的网络相关统计信息的有用工具。尽管已被 ss 命令取代,但该命令行实用程序在显示侦听套接字(TCP 和 UDP)以及打开的端口和端口统计信息方面仍然发挥着有用的作用。

以下示例显示所有侦听的 TCP 端口、进程名称及其 PID。

sudo netstat -antpl

在命令语法中:

a 选项显示侦听和非侦听套接字
n 显示数字地址
t 标志仅指定 TCP 套接字
p 标志包括进程名称和相应的 PID
l 标志仅显示侦听套接字。

第六:traceroute 命令

traceroute 命令仔细跟踪数据包从一个路由器到另一个路由器(称为跳跃)时所经过的路径。跳跃中的数据包丢失表明应采取补救措施来解决数据包丢失和连接问题。

traceroute 命令采用以下语法。

traceroute ip-address

以下示例探测数据包流向 Google 的 DNS (8.8.8.8)。

traceroute 8.8.8.8

第七:mtr 命令

mtr 命令是 My Traceroute 的缩写,它结合了 tracerouteping 的功能。它在探测数据包到达目的地的路径的同时,检查目标主机的可访问性。

mtr google.com

第八:dig 命令

dig 命令是 Domain Information Groper 的缩写。它是一种 DNS 查找网络实用程序,主要用于验证和诊断 DNS 问题。dig 命令取代了旧的 nslookuphost 命令。

该命令可以返回以下 DNS 记录:

A 记录:将主机名直接映射到 IP 地址。

MX 记录:邮件交换记录。指定域的电子邮件服务器。

SIG:用于加密协议的签名记录。

例如,要对 cherrryservers.com 执行 DNS 查找,请运行以下命令:

dig cherryservers.com

请密切注意 ANSWER SECTION

第一列指示服务器的域名
第二列是 TTL(生存时间),在本例中为 30。
第三列指示查询类。在这里,指令 IN 是 Internet 的缩写。
第四列显示查询类型,在本例中为 A 记录。
最后一列显示映射到域名的 IP 地址。

要仅显示 ANSWER 部分,请运行以下命令:

dig cherryservers.com +noall +answer

要查询映射到域名的 IP 地址并省略其他详细信息,请使用 +short 标志。

dig cherryservers.com +short

值得注意的是,dig 命令非常冗长,包含大量注释。要减少冗长程度,请包含 +nocomments 选项。

dig cherryservers.com +nocomments

要查询 MX 记录,请使用 MX 标志。

dig cherryservers.com MX

第九:nslookup 命令

nslookup 是 “Name Server Lookup” 的缩写,是另一个用于执行 DNS 查找的有用工具。该命令探测 DNS 服务器以获取信息,例如 IP 地址、域名映射和其他 DNS 记录。尽管已被 dig 命令取代,但 nslookup 实用程序是用于排除 DNS 相关问题的便捷网络诊断工具。

以下命令对域 cherryservers.com 执行 DNS 查找。

nslookup cherryservers.com

你可以使用 type= 选项指定记录类型并指定记录类型。例如,要查看域的 MX 记录,请运行以下命令:

nslookup -type=mx cherryservers.com

要检查名称服务器 (ns) 记录(将域映射到一组名称服务器),请使用 ns 参数。

nslookup -type=ns google.com

要获取邮件服务器信息,请传递 mx 参数。

nslookup -type=mx google.com

第十:host 命令

host 命令是一个用户友好的 DNS 查找工具,用于显示域的 IP 和邮件服务器(如果存在)。要显示已注册域的信息,只需提供域名作为参数,如下所示。

host domain

第十一:whois 命令

whois 命令是一种通过查询分布式数据库系统来执行域查找的协议。该协议返回有关域的信息,例如域所有权、注册日期、商业联系信息等。

要运行该命令,请在 whois 指令后提供域名。

whois domain

第十二:wget 命令

wget 命令使用资源的 URL 从 Internet 下载文件。该工具采用以下语法:

wget [options] [URL]

所示示例下载名为 latest.zip 的 WordPress 安装 zip 文件。

wget https://wordpress.org/latest.zip

大写 -O 选项将要下载的文件另存为其他名称。在这里,我们将该文件另存为 wordpress.zip

wget -O wordpress.zip https://wordpress.org/latest.zip

  • P 选项指定用于保存文件的其他目录。在这里,我们将文件保存在 /tmp 文件夹中。
wget -P /tmp https://wordpress.org/latest.zip

你可以通过将文件 URL 保存在文本文件中并将 -i 选项传递给 wget 命令来按顺序下载多个文件。在此示例中,sample_file.txt 文件包含以下链接。

https://www.python.org/ftp/python/3.13.0/Python-3.13.0.tgz
https://wordpress.org/latest.zip

要下载文件,请传递 -i 选项,如下所示。

wget -i sample_file.txt

第十三:curl 命令

curl(客户端 URL)是一个网络 CLI 工具,它通过指定服务器的 URL 将数据传输到服务器或主机系统以及从服务器或主机系统传输数据。它支持一系列协议,包括 HTTP、HTTPS 和 FTP。

该命令使用以下语法:

curl [options] [URL]

没有任何命令行选项,curl 命令会获取网页的内容。以下命令将 example.com HTML 页面的内容打印到标准输出。

curl example.com

要下载资源,例如,WordPress 压缩文件,请运行以下命令。-O 选项包含一个下载进度表,用于测量下载速度、数据传输速率、总耗时和剩余下载时间。

curl -O https://wordpress.org/latest.zip

要将文件另存为其他名称,请传递小写 o 开关。此示例将文件另存为 wordpress.zip

curl -o wordpress.zip https://wordpress.org/latest.zip

I 选项可让你检索文件的 HTTP 标头。

第十四:ssh 命令

ssh 命令用于通过 TCP/IP 网络安全地连接到远程主机。该命令使用以下语法:

ssh username@ip- address

其中:
username 是远程主机上的用户

ip-address 表示远程主机的 IP。此外,还可以提供注册的域名。

例如:

ssh  root@5.199.168.47

默认情况下,SSH 在端口 22 上侦听。如果不是这种情况,则 -p 标志允许你在连接期间指定端口号。在此示例中,远程主机上的 SSH 在端口 5422 上侦听。要连接到主机,我们将运行以下命令:

ssh -p 5422  root@5.199.168.47

第十五:scp 命令

scp(安全复制)是一个命令行工具,它利用 SSH 的强大加密算法通过网络安全地复制文件。

这是语法:

scp filename username@hostname_or_IP:/remote/path/

以下命令将文件 sample_file.txt 复制到远程服务器上 /home/cherry 路径中,这是远程用户的主目录。

scp sample_file.txt  root@5.199.168.47:/home/cherry

要复制目录,请使用 -r 进行递归复制。这会将目录及其所有内容复制到远程服务器。在这里,我们将名为 data 的目录复制到远程服务器。

scp -r data root@5.199.168.47:/home/cherry

相反,你可以将文件/目录从远程服务器复制到本地系统。

scp username@hostname_or_IP:/remote/file/ /local/path

所示命令将 file1.txt 从远程主机复制到本地计算机的主目录,该目录由 $HOME 环境变量指定。

scp root@5.199.168.47:/home/cherry/file1.txt  $HOME

第十六:nmap 命令

Network Mapper 或简称为 Nmap,是一个灵活的开源实用程序,主要用于网络扫描和侦察。它用于对主机系统执行漏洞评估。

在此示例中,nmap 扫描 192.168.2.0/24 子网中的所有主机。

nmap 192.168.2.0/24

要显示更详细或复杂的信息(例如服务版本),请传递 -A 开关。

nmap -A 192.168.2.0/24

要扫描单个主机,请提供其 IP 地址。

nmap -A 192.168.2.1

第十七:arp 命令

arp 命令管理系统上的 ARP 缓存。它用于显示或修改 ARP 缓存信息。ARP 缓存只是一个表,它提供了网络中 IP 地址到其 MAC 地址的映射。除了显示条目之外,你还可以从缓存中修改和删除它们。

要显示条目,请运行:

arp

要显示单个主机的映射,请传递 -D 开关,后跟其 IP 地址。

arp -D 192.168.2.103

第十八:nmcli 命令

nmcli 是一个多功能的 CLI 工具,用于显示、修改、激活和删除网络连接。如果没有命令标志,nmcli 会提供所有网络接口的详细摘要。

nmcli

这提供了接口详细信息,包括硬件型号、Mac 地址、MTU、路由和 IP 地址。

你可以使用 nmcli device show 命令显示特定的接口连接,如下所示。

nmcli device show enp0s3

要显示所有连接的状态,请运行:

nmcli connection show

第十九:iftop 命令

iftop 是 Interface TOP 的缩写,是一种用于监视特定网络接口上的带宽使用情况的命令行工具。以 sudo 用户或 root 用户身份运行它以监视流经接口的所有流量。

默认情况下,未安装 iftop。你可以通过运行以下命令来安装它:

在 Ubuntu / Debian 系统上

sudo apt install iftop -y

在 RHEL / Fedora 上

sudo dnf install iftop -y

第二十:bmon 命令

bmon 命令是 iftop 的改进替代品。它以直观且人类可读的格式显示带宽统计信息。

默认情况下未安装 Bmon,你可以通过运行以下命令来安装它:

在 Ubuntu / Debian 系统上

sudo apt install bmon -y

在 RHEL / Fedora 上

sudo dnf install bmon -y

要启动它并开始监视带宽,只需运行以下命令:

bmon

结尾

虽然这不是所有网络命令的详尽列表,但本概述总结了一些你可以利用的有用的命令,以解决网络故障、监视带宽以及检索有关网络设备和注册域的突出信息。