尽管尝试了几次,仍无法打开 25 端口

尽管尝试了几次,仍无法打开 25 端口

这个问题可能已经被问过很多次了,但是经过几次失败的尝试,我重复了一遍历史:

如何在运行 CentOS 的服务器上打开端口 25 端口。

这是我的 iptables 配置:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
REJECT     all  --  anywhere             loopback/8          reject-with icmp-port-unreachable 
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ftp 
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ftp 
ACCEPT     icmp --  anywhere             anywhere            
LOG        all  --  anywhere             anywhere            limit: avg 5/min burst 5 LOG level debug prefix `iptables denied: ' 
DROP       all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere            tcp spt:ftp-data 

以下是 sudo netstat -plntu 的输出

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      1283/nginx          
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1039/sshd           
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      5981/master         
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      1297/php-cgi        
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      1177/mysqld         
tcp        0      0 :::22                       :::*                        LISTEN      1039/sshd           
tcp        0      0 :::25                       :::*                        LISTEN      5981/master 

每当我尝试像这样进行 telnet

远程登录 158.549.236.54 25

连接超时。这里使用的IP是随机的。

答案1

问题不在于您的防火墙(您似乎在顶部添加了一条允许所有流量的规则)。

您的主要问题是端口 25 仅监听 127.0.0.1 和 ::1,这两个都是本地主机。您需要将 SMTP 服务器配置为监听 158.549.236.54 接口(或所有接口)

答案2

配置似乎很好(防火墙允许所有流量和邮件服务器暴露在:25),很可能是您的 ISP 正在阻止到邮件端口的流量(为了打击垃圾邮件)。

一种解决方法是在服务器中添加一个 NAT 重定向,从随机端口(例如 2525)到端口 25 iptables -t nat -I PREROUTING -p tcp --dport 2525 -j REDIRECT --to-port 25,然后尝试 telnet 到该端口:telnet ip 2525

答案3

我强烈怀疑问题出在你的防火墙规则上。尽管第一条规则似乎允许一切,但这就是为什么 的输出iptables -L对于诊断这些问题来说毫无用处 -它没有给出接口限制

我怀疑如果您粘贴输出iptables -L -n -v,我们会看到第一条规则仅适用于环回接口上的流量。

尝试

iptables -I INPUT 1 -p tcp --dport 25 -j ACCEPT

看看是否能解决任何问题。

相关内容