在 Linux 中打开端口并使用 Linux 网络工具列出和验证打开的端口是网络通信管理的关键职责。计算机网络中的端口号是一个虚拟概念,它将网络标识分配给特定的服务或应用程序。
在本文中,我们将了解打开端口的过程,并展示如何利用几种 Linux 网络工具来检查和测试 Linux 中打开的端口。
前 1024 个端口(从 0 到 1023)被称为众所周知的端口号,因为它们是为最常用的服务保留的。例如 SSH(端口 22)、HTTP(端口 80)和 HTTPS(端口 443)。大于 1024 的端口号称为临时端口。
- 注册/用户端口范围从 1024 到 49151。
- 动态/专用端口的编号为 49152 至 65535。
先决条件
- 访问系统(
sudo
或root
访问)。
初始设置
首先将服务器软件包更新到可用的最新版本。
在 Linux 系统上,启动终端或命令行界面。
sudo apt update
列出所有可用端口
如何安装netstat?
“ sudo
”命令以管理权限执行以下命令,允许您进行系统级别的更改。
然后,最常见的Linux发行版提供该netstat
命令作为net-tools包的一部分。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
对于Arch:
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 实用程序进行测试
netcat
要使用该实用程序(通常缩写为)测试 Linux 中的开放端口nc
,请执行以下操作:
要侦听指定端口(例如端口 4000)并显示任何收到的数据,请打开终端窗口并运行以下命令:
echo "Testing port 4000" | nc -l -p 4000
打开另一个终端窗口时保持命令运行。
在该终端窗口中,键入 telnet 以连接到本地套接字。
telnet localhost 4000
此命令连接到端口 4000 上的本地主机 (localhost)。
telnet
如果端口打开并且连接成功,您可以在运行的终端窗口中键入消息。
另请阅读:您可能还会发现我们关于如何在 Ubuntu 中升级 Linux 内核的指南很有用
结论
最后,在 Linux 中打开端口的方法有很多种。最适合您的方法将取决于您的发行版和防火墙设置。但是,典型的过程是显示所有打开的端口,检查所需的端口是否已打开,然后使用正确的命令打开该端口。打开端口后,您可以对其进行测试以确保其正常运行。
请随时在下面的评论部分分享您的想法和反馈。
原创文章,作者:主机说,如若转载,请注明出处:https://www.hostingtalk.cn/how-to-open-port-in-linux/