端口的状态可以是打开、已过滤、关闭或未过滤。如果目标计算机上的应用程序正在侦听该端口上的连接/数据包,则称该端口已打开。
在本文中,我们将解释检查开放端口的四种方法,并向您展示如何查找 Linux 中哪个应用程序正在侦听哪个端口。
1.使用Netstat命令
Netstat是一种广泛使用的工具,用于查询有关 Linux 网络子系统的信息。您可以使用它来打印所有打开的端口,如下所示:
$ 须藤 netstat -ltup
该标志-l
告诉 netstat 打印所有侦听套接字、-t
显示所有 TCP 连接、-u
显示所有 UDP 连接并-p
启用打印侦听端口上的应用程序/程序名称。
![](https://www.alaica.com/wp-content/uploads/linux-394.png)
要打印数值而不是服务名称,请添加该-n
标志。
$ sudo netstat -lntup
![](https://www.alaica.com/wp-content/uploads/linux-395.png)
例如,您还可以使用grep 命令找出哪个应用程序正在侦听特定端口。
$ sudo netstat -lntup | sudo netstat -lntup grep “nginx”
![](https://www.alaica.com/wp-content/uploads/linux-396.png)
或者,您可以指定端口并查找绑定到的应用程序,如图所示。
$ sudo netstat -lntup | sudo netstat -lntup grep ":80"
![](https://www.alaica.com/wp-content/uploads/linux-397.png)
2.使用ss命令
ss 命令是另一个用于显示有关套接字信息的有用工具。它的输出看起来与netstat类似。以下命令将以数值形式显示TCP和UDP连接的所有侦听端口。
$ sudo ss -lntu
![](https://www.alaica.com/wp-content/uploads/linux-398.png)
3. 使用Nmap命令
Nmap是一款功能强大且流行的网络探索工具和端口扫描器。要在系统上安装 nmap,请使用默认的包管理器,如图所示。
$ sudo apt install nmap [在 Debian/Ubuntu 上] $ sudo yum install nmap [在 CentOS/RHEL 上] $ sudo dnf install nmap [在 Fedora 22+ 上]
要扫描 Linux 系统中的所有打开/侦听端口,请运行以下命令(这可能需要很长时间才能完成)。
$ sudo nmap -n -PN -sT -sU -p- localhost
4.使用lsof命令
我们将介绍的用于查询开放端口的最后一个工具是lsof 命令,它用于列出 Linux 中打开的文件。由于在 Unix/Linux 中一切都是文件,因此打开的文件可能是流或网络文件。
要列出所有 Internet 和网络文件,请使用该-i
选项。请注意,此命令显示服务名称和数字端口的混合。
$ sudo lsof -i
![](https://www.alaica.com/wp-content/uploads/linux-399.png)
要查找哪个应用程序正在侦听特定端口,请以此形式运行lsof 。
$ sudo lsof -i :80
![](https://www.alaica.com/wp-content/uploads/linux-400.png)
就这样!在本文中,我们解释了在 Linux 中检查开放端口的四种方法。我们还展示了如何检查哪些进程绑定在特定端口上。您可以通过下面的反馈表分享您的想法或提出任何问题。