Firewalld 表示端口已打开,但 nmap 表示端口已关闭

Firewalld 表示端口已打开,但 nmap 表示端口已关闭

在我安装 CentOS 7 时,我无法连接在服务器上创建的作为 Gmail 别名的电子邮件帐户之一。

我已运行以下命令:

 firewall-cmd --permanent --zone=public --add-service=smtp
 firewall-cmd --permanent --zone=public --add-port=25/tcp

当我做一个

firewall-cmd --permanent --zone=public --query-port=25/tcp

它返回“是”

但是,我在 Gmail 和各种电子邮件测试网站上仍然收到“无法访问服务器”错误。

然后我做了一个

nmap -sT -O localhost

并看到我的端口没有在那里列出。有什么想法吗?

答案1

两件事情。首先,对于firewalld,您需要在使用firewall-cmd --reload或应用永久规则后重新加载--complete-reload。重新验证您的查询或firewall-cmd --list-all.

其次,如果您已经执行了上述操作,请检查ss -tuna | grep 25它是否正在侦听*:25。如果它正在侦听“127.0.0.1:25”,那么您需要重新配置 postfix 以侦听另一个接口。例子。

inet_interfaces = $myhostname
# or...
inet_interfaces = all

答案2

假设我们有三个设备接口:lo、LAN 和 WAN。

  • 瞧,本地主机 127.0.0.1
  • LAN、局域网 192.168.1.2
  • 广域网、世界区域网 169.254.8.8

如果您从 WAN 打开流量,假设您的帖子中的区域是公开的,则必须对其进行定向。这称为源和目的地。

外部来自 WAN,因此来源未知,因此我们可以允许所有:0.0.0.0

我们的邮件服务器运行在局域网上,所以也许更多的服务器可以在本地轻松使用它。 (如果防火墙允许的话)。为了从外部到达它,我们需要定义目的地。

端口 25 上的源 = 0.0.0.0,目标 = 192.168.1.2。端口也有源端口和目标端口。

0.0.0.0:25 -> 192.168.1.2:25

对于局外人来说,它看起来像这样:

my.ip.address -> 169.254.8.8:25

现在的问题是,隧道尽头有人吗?您可能将邮件服务器设置在 lo (127.0.0.1) 上。

要检查端口,您可以运行netstat -al.

  • -a 或 --all 显示当前使用的所有套接字
  • -l 或 --listening 仅显示当前侦听传入连接的套接字。

我认为 plesk 是一个虚拟托管提供商,通常在实例之上有一个防火墙层。那么不要在实例本身上配置防火墙,而是在顶层配置防火墙。

我没有使用 plesk 的经验,但请查看他们的常见问题解答

相关内容