端口 80 连接被拒绝

端口 80 连接被拒绝

我无法连接到我的网络服务器上的端口 80。我的 iptables 处于默认状态:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

当我启动不同的服务器(nginx、nodejs……)时,我可以让它们监听端口 80,但尝试访问时,我总是收到“连接被拒绝”的提示。监听任何其他端口(81、8080 等)都可以正常工作。只有端口 80 不知为何被阻止了。通过 localhost 访问端口 80 确实有效,因此出于测试目的,我甚至关闭了外部防火墙,但仍然没有成功。我该怎么做才能找出是谁阻止了这个端口 80?

根据要求,netstat -tlpn 的输出(在端口 80 上运行 nginx 时):

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      710/vsftpd      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1179/sshd       
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      1661/master     
tcp        0      0 0.0.0.0:5984            0.0.0.0:*               LISTEN      980/beam.smp    
tcp        0      0 87.106.64.11:3306       0.0.0.0:*               LISTEN      1346/mysqld     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3274/nginx: master 
tcp6       0      0 :::22                   :::*                    LISTEN      1179/sshd       
tcp6       0      0 :::25                   :::*                    LISTEN      1661/master  

答案1

我做了一个tcptraceroute 87.106.64.11 80,肯定是我的服务器阻塞了端口。在跟踪的某个时刻,我得到了这个:

s18132051.onlinehome-server.info (87.106.64.11) [closed]

所以我[重置了我的 IP 表][1],这成功了。

因此,要么表中存在一些隐藏规则,要么iptable -L没有提供所有规则。我会将此标记为答案,因为它解决了问题。
我仍然很想听听,为什么我在执行时没有得到任何阻止规则iptables -L

[1]:链接不再有效

答案2

我遇到了同样的问题,但使用的是 Debian 8.4 (Jessie)。与上述情况一样,解决方案是 IPTables 刷新脚本,如以下所列http://insanelabs.net/linux/linux-reset-iptables-firewall-rules/。虽然 iptables 没有报告任何规则,但肯定存在一些“隐藏”规则,或者 iptables 本身存在错误。我正在向 Debian 维护人员报告此错误。

如果链接的网站出现故障,这里是相关脚本的全文,为方便起见,在此重现。

#!/bin/sh
echo "Flushing iptables rules..."
sleep 1
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

答案3

您没有列出所有规则。我发现获取任何活动 netfilter 表的一个好方法是:

对于 blah in sudo /bin/cat /proc/net/ip_tables_names; 执行 sudo /sbin/iptables -t $blah -L -vn --line-numbers|sed "s/^/$blah: /" ; 完成 |less -RXF

另一个选择是运行:

/sbin/iptables-保存

如果您有耐心,您可以逐一检查每个规则,并将任何 DENY 目标更改为 ACCEPT,然后查看哪一个可以解决问题。

相关内容