关于监听和开放端口的一些困惑,监听、开放和阻塞之间的区别

Mar*_*ead 1 networking firewall port port-forwarding

一段时间以来,我一直在努力在一些 Linux 机器上打开端口,并且遵循了一些教程,我在 2 个不同的 Linux 虚拟机中尝试了这些教程,但都失败了,经过一些研究,我想我已经找到了失败的原因。

因此,所做的就是下载 gufw,设置规则以允许到特定端口的入站连接或禁用防火墙并重新启动。之后,当我用zenmap扫描时,我可以看到端口仍然关闭。

但是当我使用 nc -l -p port 时,我可以看到该端口已打开。当 apache 服务器在该机器上运行时,端口 80 上也发生了同样的情况。

然后,我将防火墙配置为拒绝所有入站流量并重新启动。我启动了apache服务并运行了nc -l -p port,然后用zenmap扫描,它说端口80和nc选择的端口被过滤了

由此我得出以下结论:

  • 侦听意味着该端口不受防火墙保护,或者防火墙允许入站流量到达该端口,并且有服务正在侦听该端口
  • 已过滤意味着可能有也可能没有服务侦听该端口,但防火墙拒绝入站流量
  • 关闭意味着该端口不受防火墙保护,但没有服务/应用程序侦听该端口

因此,打开端口意味着如果应用程序正在侦听,则使其可供外部使用。如果不是,它将在 nmap 扫描中显示为“已关闭”。

总而言之,如果我希望外部可以访问某个应用程序,我必须将其(是这个词吗?)绑定到某个端口,然后在防火墙上打开该端口。

它是否正确?如果您可以添加一些内容,我将不胜感激,我问了另一个与此类似的问题,但当时我对端口和防火墙了解不多,所以如果我的结论是正确的,我可以回答这个问题,并希望这将对某人有帮助。

另外,即使端口没有监听,是否仍然可以以某种方式连接到端口?

Ron*_*pin 5

端口只是应用程序和第 4 层协议之间连接的概念。确实不存在这样的“端口”。当应用程序想要从第 4 层协议(TCP、UDP 等)接收流量时,它会请求该协议向该应用程序发送使用特定端口号寻址的该协议的任何第 4 层数据段。

当第 4 层协议没有应用程序请求将第 4 层数据段寻址到特定端口号时,该端口将被关闭

当应用程序请求并被第 4 层协议授予使用端口号时,该端口是Open 的

可以将防火墙设置为丢弃包含寻址到特定端口的特定第 4 层协议的第 4 层段的第 3 层数据包。这意味着该端口在防火墙上被过滤阻止。

每个第 4 层协议都有自己的端口,或者许多协议甚至不使用端口。例如,一个应用程序可以接收 TCP 12345 端口的流量,而另一个应用程序可以接收 UDP 端口 12345 的流量;它们不是同一个端口,因为端口实际上并不存在。特定第 4 层协议上特定端口号的使用仅限于由第 4 层协议授予使用该端口的应用程序。