我对服务器和 iptables 还不熟悉。我的 Centos 6.7 apache/httpd 服务器上运行着一个 Web 应用程序(恰好是 bugzilla),它尝试通过端口 80 连接到 Web(updates.bugzilla.org)。它还尝试使用端口 465 连接到(smtp.gmail.com)。但是,它无法连接。尽管默认输出策略为 ACCEPT,并且已打开相关端口进行输入,但仍然无法连接。
我不知道接下来该怎么办。我应该从哪里着手解决此问题?可能的罪魁祸首是什么?
一些输出:
$ 服务 iptables 状态
表格:过滤器
链输入(策略接受)
数量 目标 保护 选项 源 目标
1 接受全部 -- 0.0.0.0/0 0.0.0.0/0
2 接受全部 -- 0.0.0.0/0 0.0.0.0/0 状态 RELATED,ESTABLISHED
3 接受 tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
4 接受 tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
5 接受 tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
6 接受 tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:25
7 接受 tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:587
链转发(策略丢弃)数量目标保护选择源目标
链输出(策略接受)num 目标 prot opt 源目标
和:
iptables -L -v Chain INPUT(策略接受881个数据包,106K字节)
pkts 字节数 目标 协议 选择加入 退出 源 目标
0 0 接受全部 -- lo 任何地点任何地点
436 183K 接受全部 -- 任何任何地点任何位置状态已关联,已建立
0 0 接受 tcp -- 任何 任何 任何地方 任何 tcp dpt:ssh
1 60 接受 tcp -- 任何 任何 任何地方 任何 tcp dpt:http
0 0 接受 tcp -- 任何 任何 任何地方 任何 tcp dpt:https
0 0 接受 tcp -- 任何 任何 任何地方 任何 tcp dpt:smtp
0 0 接受 tcp -- 任何 任何 任何地点 任何地点 tcp dpt:提交
链转发(策略丢弃 0 个数据包,0 字节)数据包字节目标协议选择加入退出源目标
链输出(策略接受 348 个数据包,56741 字节)
pkts 字节数 目标 协议 选择加入 退出 源 目标
我希望这不是 bugzilla 或 centos 特有的问题,因为我已经在 ubuntu 桌面上成功安装了 bugzilla,尽管那是在使用 ubuntu 的 ufw 时(我想我也尝试过使用 iptables,但必须再试一次以验证)。
更新:
对于那些在网上搜索并在之后看到这个问题的人来说,这原来是一个 SELinux 问题!需要启用布尔值“httpd_can_network_connect”(对于其他人,请使用“getsebool -a”)。
答案1
尝试这个:
service iptables save
service iptables stop
chkconfig iptables off
砰,防火墙没了。再测试一下。
尝试使用 telnet 测试该端口:
telnet updates.bugzilla.org 80
一旦连接到 telnet,键入“get”并查看是否有响应。
Example:
# telnet updates.bugzilla.org 80
Trying 63.245.223.29...
Connected to updates.bugzilla.org.
Escape character is '^]'
get
<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx/1.0.15</center>
</body>
</html>
Connection closed by foreign host.
没有用?
尝试 tcptraceroute 来查看它在哪里被阻止:
tcptraceroute updates.bugzilla.org 80
还有其他东西阻塞端口吗?防火墙、路由器、ISP?