ufw 允许端口 9999 但连接被拒绝

ufw 允许端口 9999 但连接被拒绝

允许端口但连接被拒绝?

# sudo ufw allow 9999/tcp
  Rule added
  Rule added (v6)

当我检查状态时

# sudo ufw status
  9999/tcp           ALLOW       Anywhere
  9999/tcp (v6)      ALLOW       Anywhere (v6)

一切看起来都很好,但连接仍被拒绝。我尝试从本地计算机远程登录

# telnet 127.0.0.1 9999
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

以及来自外部机器(实际 IP 已编辑)

# telnet 1.1.1.1 9999
Trying 1.1.1.1...
telnet: Unable to connect to remote host: Connection refused

虽然可以建立其他端口连接,但这个新添加的端口不起作用。可能是什么原因?

附言。服务器操作系统是Ubuntu 16.04

答案1

您需要侦听该端口才能连接到它。对于简单测试,您可以使用ncnetcat

nc -l -p 9999

现在nc正在侦听端口9999,您可以telnet从另一个终端(或机器)访问此端口:

$ telnet localhost 9999
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

连接后,您可以在一个终端中输入内容,然后按 后Enter,文本应显示在另一个终端中。

答案2

让我们暂时忽略防火墙。当客户端进程尝试创建到主机的 TCP 连接时,该主机需要运行一些服务器进程来“侦听”该端口上的传入连接。如果端口不是“开放”的,即没有进程正在侦听该端口,那么当客户端进程尝试连接时,主机的内核将发回一个响应,表明没有进程正在侦听该端口。当你Connection refused在客户端看到的时候,就是这个意思。

进入防火墙。如果主机安装了防火墙,则防火墙可以阻止进出该主机的网络流量。然后,客户端进程可能会尝试连接到给定端口上的服务器进程,并且即使有服务器进程正在侦听该端口,该连接也会被防火墙拒绝。然而,这不是您遇到的问题。

相关内容