如何在 Linux 上打开一个端口如何在 Linux 上打开一个端口如何在 Linux 上打开一个端口如何在 Linux 上打开一个端口
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 上打开一个端口

介绍

端口 是一个通信端点。在操作系统中,端口对特定进程或网络服务的数据包打开或关闭。

通常,端口标识分配给它们的特定网络服务。这可以通过手动将服务配置为使用不同的端口来更改,但通常可以使用默认值。

前 1024 个端口(端口号 0 到 1023)被称为众所周知的端口号,并为最常用的服务保留.这些包括 SSH(端口 22)、HTTP(端口 80)、HTTPS(端口 443)。

大于 1024 的端口号称为临时端口。

  • 端口号 1024 到 49151 称为注册/用户端口。
  • 端口号 49152 到 65535 称为动态/私有端口。

在本教程中,您将在 Linux 上打开一个临时端口,因为最常见的服务使用众所周知的端口。

先决条件

要完成本教程,您需要:

  • 熟悉使用终端。

列出所有打开的端口

在 Linux 上打开端口之前,您必须检查所有打开端口的列表,并选择一个不在该列表中的临时端口打开。

使用netstat命令列出所有开放的端口,包括TCP和UDP,这是网络层数据包传输最常用的协议。

  1. netstat -lntu

这将打印:

  • 所有侦听套接字(-l)
  • 端口号 (-n)
  • TCP 端口 (-t)
  • UDP 端口 (-u)

Output
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp6 0 0 ::1:5432 :::* LISTEN tcp6 0 0 ::1:6379 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN udp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN

注意:如果您的发行版没有 netstat,您可以使用 ss 命令通过检查侦听套接字来显示打开的端口。

使用 ss 命令列出具有开放端口的侦听套接字,验证您是否收到一致的输出:

  1. ss -lntu

这将打印:

Output
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* tcp LISTEN 0 128 127.0.0.1:5432 0.0.0.0:* tcp LISTEN 0 128 127.0.0.1:27017 0.0.0.0:* tcp LISTEN 0 128 127.0.0.1:6379 0.0.0.0:* tcp LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:* tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* tcp LISTEN 0 128 [::1]:5432 0.0.0.0:* tcp LISTEN 0 128 [::1]:6379 0.0.0.0:* tcp LISTEN 0 128 [::]:22 0.0.0.0:*

这提供了与 netstat 大致相同的开放端口。

在 Linux 上打开端口以允许 TCP 连接

现在,打开一个关闭的端口并让它监听 TCP 连接。

出于本教程的目的,您将打开端口 4000。但是,如果该端口在您的系统中未打开,请随意选择另一个关闭的端口。只需确保它大于 1023。

使用 netstat 命令确保未使用端口 4000:

  1. netstat -na | grep :4000

或者 ss 命令:

  1. ss -na | grep :4000

输出必须保持空白,从而验证它当前未被使用,以便您可以手动将端口规则添加到系统 iptables 防火墙。

对于 Ubuntu 用户和基于 ufw 的系统

使用 ufw - UncomplicatedFirewall 的命令行客户端。

您的命令将类似于:

  1. sudo ufw allow 4000

请参阅如何为您的发行版设置 ufw 防火墙设置。

笔记:

  • Ubuntu 14.0.4:“允许特定端口范围”
  • Ubuntu 16.0.4/18.0.4/20.0.4/22.0.4:“允许其他连接/特定端口范围”
  • Debian 9/10/11:“允许其他连接/特定端口范围”

对于 CentOS 和基于 firewalld 的系统

使用 firewall-cmd - firewalld 守护程序的命令行客户端。

您的命令将类似于:

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

请参阅如何为您的发行版设置 firewalld。

笔记:

  • CentOS 7/8:“为您的应用程序设置规则/为您的区域打开一个端口”
  • Rocky Linux 8/9:“为您的应用程序设置规则/为您的区域打开端口”

对于其他 Linux 发行版

使用 iptables 更改系统 IPv4 数据包过滤规则。

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

请参阅如何使用 iptables 为您的发行版设置防火墙。

笔记:

  • Ubuntu 12.04:“一个基本的防火墙”
  • Ubuntu 14.04:“接受其他必要的连接”

测试 TCP 连接新打开的端口

现在您已经成功打开了一个新的 TCP 端口,是时候对其进行测试了。

首先,启动 netcat (nc) 并在端口 (-p) 4000 上侦听 (-l),同时将 ls 的输出发送到任何连接的客户端:

  1. ls | nc -l -p 4000

现在,客户端在端口 4000 上打开 TCP 连接后,他们将收到 ls 的输出。暂时不要管这个会话。

在同一台机器上打开另一个终端会话。

因为您打开了 TCP 端口,所以使用 telnet 检查 TCP 连接。如果该命令不存在,请使用您的包管理器安装它。

输入您的服务器 IP 和端口号(本例中为 4000)并运行此命令:

  1. telnet localhost 4000

此命令尝试在端口 4000 上的 localhost 上打开 TCP 连接。

你会得到类似这样的输出,表明已经与监听程序建立连接(nc):

Output
Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. while.sh

ls 的输出(在本例中为 while.sh)也已发送到客户端,表明 TCP 连接成功。

使用nmap检查端口(-p)是否打开:

  1. nmap localhost -p 4000

此命令将检查打开的端口:

Output
Starting Nmap 7.60 ( https://nmap.org ) at 2020-01-18 21:51 UTC Nmap scan report for localhost (127.0.0.1) Host is up (0.00010s latency). Other addresses for localhost (not scanned): ::1 PORT STATE SERVICE 4000/tcp open remoteanything Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds

端口已打开。您已经成功地在 Linux 系统上打开了一个新端口。

注意:nmap 仅列出具有当前侦听应用程序的打开端口。如果您不使用任何监听应用程序,例如 netcat,这将显示端口 4000 已关闭,因为当前没有任何应用程序监听该端口。同样,telnet 也不会工作,因为它还需要一个监听应用程序来绑定。这就是 nc 如此有用的工具的原因。这在一个简单的命令中模拟了这样的环境。

但这只是暂时的,因为每次重新启动系统时都会重置更改。

坚持规则

本文介绍的方法只会暂时更新防火墙规则,直到系统关闭或重新启动。因此必须重复类似的步骤以在重新启动后再次打开相同的端口。

对于 ufw 防火墙

ufw 规则不会在重启时重置。这是因为它集成到启动过程中,内核通过应用适当的配置文件使用 ufw 保存防火墙规则。

对于 firewalld

您将需要应用 --permanent 标志。

请参阅如何为您的发行版设置 firewalld。

笔记:

  • CentOS 7/8:“为您的应用程序设置规则”
  • Rocky Linux 8/9:“为您的应用程序设置规则”

对于 iptables

您将需要保存配置规则。这些教程推荐使用 iptables-persistent。

请参阅如何使用 iptables 为您的发行版设置防火墙。

笔记:

  • Ubuntu 12.04:“保存 Iptables 规则”
  • Ubuntu 14.04:“保存您的 Iptables 配置”

结论

在本教程中,您学习了如何在 Linux 上打开一个新端口并为传入连接设置它。您还使用了 netstat、ss、telnet、nc 和 nmap。

继续学习如何使用 Top、Netstat、Du 和其他工具来监视服务器资源。

©2015-2025 艾丽卡 support@alaica.com