在 Linux 中打开端口并使用 Linux 网络工具列出和验证打开的端口是网络通信管理的关键职责。计算机网络中的端口号是一个虚拟概念,用于为特定服务或应用程序分配网络标识。

在本文中,我们将研究打开端口的过程,并展示如何利用几个 Linux 网络工具来检查和测试 Linux 中打开的端口。

目录+目录硬件需求初始设置列出所有可用端口检查活动连接测试 TCP 连接的开放端口使用 Netcat 实用程序进行测试目的结语目录硬件需求初始设置列出所有可用端口检查活动连接测试 TCP 连接的开放端口 使用 Netcat 实用程序进行测试目的结语

前 1024 个端口(从 0 到 1023)称为知名端口号,因为它们是为最常用的服务保留的。例如 SSH(端口 22)、HTTP(端口 80)和 HTTPS(端口 443)。大于 1024 的端口号称为临时端口。

注册/用户端口范围从 1024 到 49151。

动态/私有端口是编号为 49152 至 65535 的端口。

硬件需求

访问系统(sudo or root 使用权)。

初始设置

首先将服务器包更新为最新版本。

在 Linux 系统上,启动终端或命令行界面。

sudo apt update

列出所有可用端口

如何安装 netstat?

“”sudo”命令以管理权限执行以下命令,允许您进行系统级别的更改。

那么最常见的 Linux 分布提供 netstat 命令作为 网络工具 软件包。您列出的用于安装的命令 netstat 在各种分布上都是正确的。

这是安装指南 net-tools 在所有主要发行版中:

对于 Fedora/CentOS/RHEL 8:

sudo dnf install net-tools

对于 CentOS/RHEL 7:

sudo yum install net-tools

对于 Debian/Ubuntu:

sudo apt install net-tools

对于拱门:

sudo pacman -S netstat-nat

对于 OpenSuse:

sudo zypper install net-tools

TCP 和 UDP 协议

netstat 程序可用于列出 Linux 中所有开放端口,包括 TCP 和 UDP 协议。以下是如何使用它的:

执行以下命令:

netstat -lntu

让我们看一下该命令的选项:

-l:仅显示监听的套接字/端口。

-n:显示端口号而不是将其解析为服务名称。

-t:显示 TCP 端口列表。

-u:显示 UDP 端口列表。

运行 netstat 命令时 -lntu,你会得到类似这样的结果:

cloudbooklet@ubuntu:~$ netstat -lntu

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN

tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN

tcp6 0 0 :::22 :::* LISTEN

udp 0 0 127.0.0.1:323 0.0.0.0:*

udp 0 0 127.0.0.53:53 0.0.0.0:*

udp 0 0 10.128.0.11:68 0.0.0.0:*

udp6 0 0 ::1:323 :::*

cloudbooklet@ubuntu:~$

请注意: 如果您的发行版不包含 netstat,您可以通过查找监听套接字来显示开放端口 ss 命令。

在 Linux 上,使用 ss 命令检查一致的输出并列出具有开放端口的监听套接字。 ss 命令取代了之前的 netstat 命令,可提供更详细、更最新的统计信息。以下是如何使用它的:

在 Linux 系统上,启动终端或命令行界面。

ss -lntu

- -ltn 选项用于过滤和显示特定信息:

-l:仅显示监听的套接字/端口。

-t:显示 TCP 端口列表。

-n:显示端口号而不是将其解析为服务名称。

- ss 然后,命令将提供打开的侦听套接字及其对应的本地地址和端口号的列表。输出如下:

cloudbooklet@ubuntu:~$ ss -lntu

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process

udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:*

udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*

udp UNCONN 0 0 10.128.0.11%ens4:68 0.0.0.0:*

udp UNCONN 0 0 [::1]:323 [::]:*

tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*

tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:*

tcp LISTEN 0 511 0.0.0.0:443 0.0.0.0:*

tcp LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*

tcp LISTEN 0 128 [::]:22 [::]:*

cloudbooklet@ubuntu:~$

在此示例中,端口 22(SSH)和 80(HTTP)均处于打开状态且正在主动监听。

检查活动连接

您可以使用 netstat 命令检查端口 4000 上是否有任何活动连接或监听套接字,以确保该端口当前未被使用。操作方法如下:

在 Linux 系统上,启动终端或命令行界面。

netstat -na | grep :4000

或者,使用 ss 命令:

ss -na | grep :4000

如果没有提供输出或结果,则表示端口 4000 当前未被使用且可以打开。

对于基于 Ubuntu 和 Debian 的系统

如果您尚未安装 UFW,您可以使用以下命令进行安装。

sudo apt install ufw

查看有关使用 UFW 的更多详细信息 点击这里

你的命令看起来会像这样:

sudo ufw allow 4000

对于 CentOS 和基于防火墙的系统

使用firewall-cmd,即防火墙守护进程的命令行客户端。

你的命令看起来会像这样:

firewall-cmd --add-port=4000/tcp

未使用 UFW 或防火墙的 Linux 发行版

了解一些 Linux 系统使用的配置 IP 数据包过滤的传统 iptables 方法。了解如何安装和使用 iptables 创建强大的防火墙规则,以提高系统安全性和网络流量控制。

使用以下方式更改系统 IPv4 数据包过滤规则 iptables.

iptables -A INPUT -p tcp --dport 4000 -j ACCEPT

请参阅如何为您的发行版安装 Iptables 以获取更多信息。

测试 TCP 连接的开放端口

您可以使用 nmap 命令通过指定端口号以及目标 IP 地址或主机名来测试特定端口。您可以使用以下命令:

安装 nmap 应使用以下命令

sudo apt-get install nmap

nmap localhost -p 4000

使用 Netcat 实用程序进行测试目的

使用以下方法测试 Linux 中的开放端口 netcat 效用(通常缩写为 nc),请执行以下操作:

要监听指定端口(例如端口 4000)并显示任何接收到的数据,请打开终端窗口并运行以下命令:

echo "Testing port 4000" | nc -l -p 4000

在打开另一个终端窗口时保持命令运行。

在该终端窗口中,键入 telnet 以连接到本地套接字。

telnet localhost 4000

此命令连接到本地主机(localhost)的端口 4000。

您可以在运行的终端窗口中输入一条消息 telnet 如果端口开放并且连接成功。

另请阅读:您可能还会发现我们的指南很有用 如何在 Ubuntu 中升级 Linux 内核

结语

最后,在 Linux 中打开端口的方法有很多种。最适合您的方法取决于您的发行版和防火墙设置。但是,典型的过程是显示所有打开的端口,检查您需要的端口是否已经打开,然后使用适当的命令打开该端口。打开端口后,您可以对其进行测试以确保其正常运行。

请在下面的评论部分随意分享您的想法和反馈。