如何找出 Linux 中的所有开放端口?

在本教程中,我们将学习如何找出 Linux 中的所有开放端口。

有不同的命令可以知道打开了哪些端口,例如 nmap、netstat 和 lsof。 但是我们知道什么是端口吗? 有些人可能认为它是进入系统的门户。 有很多关于端口号的神话概念。 让我们详细讨论一下。

什么是端口号?

系统中运行着很多服务,如httpd、Hadoop服务等。 网络客户端如何从系统上运行的服务包中识别特定服务? 每当我们启动 Web 服务器时,不是为每个服务创建唯一的名称,而是分配一个端口号,该服务侦听数据包的位置。 让我们来看看一些常见的端口。

  • HTTP 端口号:80
  • SMTP端口号:25
  • FTP端口号:21
  • DNS端口号:53

用户也可以使用他自己的个人端口。 端口内部存储在 2 个字节,即 2^16 = 65536. 端口号的范围是从 0 到 65535。这分为不同的类别:

  • 0 – 1023: 此范围内的端口称为 众所周知的端口或系统端口。
  • 1024 – 49151: 这个范围内的端口被称为 注册端口或用户端口。
  • 49152-65535: 此范围内的端口称为 动态端口和专用端口。

我希望这个概念很清楚。 让我们了解如何找出 Linux 中的开放端口列表。

列出所有服务及其端口

如果您想知道所有服务及其端口的列表,可以使用 cat 命令来完成。 /etc/ 目录中名为 services 的文件由所有服务的名称和端口组成。 它还将显示与服务相关的协议。 让我们看看下面的命令:

cat /etc/services 
服务清单

您可以看到它显示了服务及其端口和协议的列表。

使用 netstat 命令找出 Linux 中所有打开的端口

之前,我们描述了如何列出所有服务。 如果用户想知道在 Linux 中找出所有开放的端口,我们可以使用 netstat 命令。 它将列出系统中的所有网络连接。 除此之外,它还打印路由表、接口统计信息和多播成员。

有关更多详细信息,请查看 Linux 官方文档。

用户将在 netstat 命令中使用 -lntu 选项,其中,

  • -l: 它只会打印监听套接字
  • -n: 它将显示端口号
  • -t: 它启用 TCP 端口列表。
  • -u: 它启用 UDP 端口列表。

让我们看看下面的命令:

netstat -lntu 
当前运行的服务列表

使用 ss 命令显示正在运行的端口

之前我们使用 netstat 命令来显示正在运行的端口。 在这里,我们使用 ss 命令来执行此操作。 您可能会想,这两者之间有什么区别。

ss 命令是 netstat 命令的替代品。 虽然它类似于 netstat 命令,但它显示的信息更多。 它用于跟踪 TCP 连接和套接字。 ss 包含在 iproute2 包中,而 netstat 使用 /proc/net/tcp 来收集有关系统网络的信息。

有关更多详细信息,请查看 ss 命令的 Linux 官方文档。

让我们看看下面的命令:

ss -lntu 
SSSS

-lntu 的意义在上面的 netstat 命令中有描述。

使用 lsof 命令找出 Linux 中的所有开放端口

之前,我们讨论了如何使用 netstat 命令和 ss 命令列出端口。 两者都用于显示正在运行的服务。 在这里,我们将讨论 lsof 命令。 LSOF 代表列出打开的文件。 该命令用于列出系统中所有打开的文件和进程。 它用于 Unix-Linux 操作系统。

更多详细信息,请查看 lsof 命令的 Linux 官方文档。

让我们看看下面的命令:

sudo lsof -i -P -n | grep LISTEN 
左下角左下角

与此命令相关的选项是:

  • -一世: 会列出特定端口的所有运行进程
  • -P: 它将端口号转换为网络文件的端口名。
  • -n:它将网络名称转换为网络文件的主机名。

Grep 命令用于搜索特定的单词。 在这里,它将打印处于 LISTEN 状态的端口。

使用 ps 命令找出所有打开的端口

之前,我们使用 lsof 命令打印端口。 这里我们将讨论 ps 命令。 ps命令用于显示系统中正在运行的进程的相关信息。 在这里,我们将使用 ps -aux 命令打印用户拥有的所有进程。 请记住,使用“ps aux”将打印警告。

更多详细信息,请查看 ps 命令的 Linux 官方文档。

让我们看看下面的命令:

ps -aux 
ps命令ps命令

结论

我们已经讨论了如何使用 ps、netstat、lsof 和 ss 命令找出 Linux 中所有打开的端口。 由于除了此处描述的内容之外,大多数命令都有其他用途,因此请继续使用 Linux 中的 man 命令来使用手册页。 我们希望这个概念被清除。 如果您遇到任何问题,请在评论中告诉我们。