如何在Linux中打开端口

0 股票
0
0
0
0

介绍

端口是通信的端点。在操作系统中,端口会打开或关闭,以允许特定进程或网络服务的数据包通过。.

通常,端口用于标识分配给它的特定网络服务。虽然可以通过手动配置服务来更改端口,但通常情况下,可以使用默认设置。.

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

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

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

在本教程中,您将在 Linux 中打开一个临时端口,因为大多数常用服务都使用众所周知的端口。.

先决条件
  • 熟悉终端的使用

所有开放端口列表

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

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

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

使用 ss 命令列出已打开端口的监听套接字,验证是否获得一致的输出:

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 未被占用:

netstat -na | grep :4000

或者使用 ss 命令:

ss -na | grep :4000

输出结果应为空,因此请检查该端口当前是否未被使用,以便您可以手动向 iptables 系统防火墙添加端口规则。.

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

使用 ufw – 一款命令行客户端,可轻松配置防火墙。.

您的命令类似于:

sudo ufw allow 4000
适用于 CentOS 和基于防火墙的系统

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

您的命令类似于:

firewall-cmd --add-port=4000/tcp
对于其他Linux发行版

使用 iptables 修改系统的 IPv4 数据包过滤规则。.

iptables -A INPUT -p tcp --dport 4000 -j ACCEPT
测试新打开的端口是否支持 TCP 连接

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

首先,启动 netcat (nc) 并监听 (-l) 端口 (-p) 4000,同时将 ls 命令的输出发送给每个已连接的客户端:

ls | nc -l -p 4000

现在,当客户端在 4000 端口上打开 TCP 连接后,它将收到 ls 命令的输出。暂时离开此会话。.

在同一设备上打开另一个终端会话。.

既然你已经打开了 TCP 端口,请使用 telnet 命令检查 TCP 连接。如果该命令不存在,请使用软件包管理器安装它。.

输入您的服务器 IP 地址和端口号(本例中为 4000),然后运行以下命令:

telnet localhost 4000

此命令尝试在本地主机的 4000 端口上打开 TCP 连接。.

您将收到类似这样的输出,表明已与监听程序 (nc) 建立连接:

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

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

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

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 系统上打开一个新端口。.

但这只是暂时的,因为每次重启系统后,这些更改都会被重置。.

可持续发展规则

本文介绍的方法仅临时更新防火墙规则,直至系统关闭或重启。因此,重启后必须重复相同的步骤才能重新打开同一端口。.

对于 ufw 防火墙

ufw 规则不会在重启后重置。这是因为 ufw 已集成到启动过程中,内核会通过应用相应的配置文件来存储使用 ufw 的防火墙规则。.

防火墙

如果要将端口添加到永久防火墙配置中并立即应用更改,可以使用 --permanent 和 --reload 标志:

sudo firewall-cmd --permanent --add-port=4000/tcp 
sudo firewall-cmd --reload
对于 iptables

您需要保存配置规则并使用 iptables-persistent 命令。.

结果

在本教程中,您学习了如何在Linux中打开一个新端口并配置它以接受传入连接。您还使用了netstat、ss、telnet、nc和nmap等工具。.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢