我有一台新安装的 CentOS 5.6 机器,可以通过 elinks 在本地访问 httpd。但是它无法从其他 IP 访问。我可以 ping 该 IP,但如果我连接到端口 80,则无法获得到主机的路由。我假设某些防火墙规则阻止了对端口 80 的访问,并且检查了 iptables,一切似乎正常。
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
答案1
您似乎没有允许端口 80 上的流量的规则,请尝试此操作
/sbin/iptables -I RH-Firewall-1-INPUT -p tcp -m tcp --dport 80 -j ACCEPT
如果有效,则使用以下命令保存防火墙配置
/sbin/service iptables save
另外要检查的是 Apache 是否已配置为监听您的外部 IP 地址。检查听文件中的指令/etc/httpd/conf/httpd.conf
。它应该是这样的
Listen 80
监听所有可用的地址。
答案2
如果启用了 SELinux - 首先检查所有与 apache 相关的 SELinux 布尔值:
[root@localhost ~]# getsebool -a | grep httpd
. . . . . .
httpd_builtin_scripting --> on
httpd_can_network_connect --> off
httpd_can_network_connect_db --> off
httpd_can_network_relay --> off
httpd_disable_trans --> off
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> on
. . . . . . . .
如果httpd_can_network_connect --> off
禁用 httpd 上的 SELinux 限制:
[root@localhost ~]# setsebool -P httpd_can_network_connect on
或者使用系统配置-selinux,也称为 SELinux 管理图形工具,用于控制特定守护进程的布尔值。