情况如下。可以访问基于 Apache 的站点内部(从其服务器内)via curl
,但无法访问外在地(除了 之外,没有任何ping
方法有效:我已经尝试过curl
浏览器访问) - 它超时。我尝试使用netcat
、netstat
和traceroute
(iptables
按照上的建议确定问题的根源这一页),但无济于事。
这是iptables
配置(请注意,我的活动网络接口是eth1
):
iptables -L -nv
Chain INPUT (policy DROP 108K packets, 18M bytes)
pkts bytes target prot opt in out source destination
4575 394K fail2ban-ssh tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22
11433 3923K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
5262 481K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3 156 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:389
0 0 ACCEPT tcp -- venet0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- venet0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 ACCEPT tcp -- venet0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
0 0 ACCEPT tcp -- venet0 * 0.0.0.0/0 0.0.0.0/0 tcp dpts:830:831
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:1170
3 180 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- venet0 * 10.0.0.0/8 0.0.0.0/0
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED,DNAT
0 0 ACCEPT tcp -- venet0 eth0 0.0.0.0/0 0.0.0.0/0 tcp dpts:830:831
0 0 ACCEPT tcp -- venet0 eth0 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- venet0 eth0 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 ACCEPT udp -- venet0 eth0 0.0.0.0/0 0.0.0.0/0 udp dpt:53
Chain OUTPUT (policy ACCEPT 15571 packets, 4718K bytes)
pkts bytes target prot opt in out source destination
Chain fail2ban-ssh (1 references)
pkts bytes target prot opt in out source destination
4575 394K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
答案1
首先尝试禁用服务器上的 iptables 并尝试访问该页面,
#service iptables stop
对于Debian:
#iptables -F
这将刷新所有规则
如果端口号不是默认的 80,还要用 ip 指定端口号。还要尝试将 selinux 设置为宽容模式。
#setenforce 0
如果网页服务服务器位于 virtualbox 内,您还需要进行端口转发。
我想你所说的外部是指本地局域网。
还
在 apache 配置文件(httpd.conf、apache2.conf、listen.conf...)中搜索 LISTEN 指令,如果您看到 localhost 或 127.0.0.1,则需要用您的服务器 IP 覆盖。
listen 192.168.1.15:80
如果您在发现这是一个selinux问题后想要启用selinux,那么您应该在selinux中允许httpd,
# setsebool -P httpd_can_network_connect=1
如果您发现这是 iptables 问题,并且想要启用 ip 表并继续访问该页面,则在防火墙中允许端口 80。
要在 debian iptables 中允许 http 和 https,请参阅此链接:
https://github.com/iahmad-khan/system-admin/blob/master/iptables-debian