我正在尝试在 Windows 7 主机上使用 CentOS 6 Minimalist Install 和 VirtualBox 4.1.4r74291 在 VM 中构建 CI 服务器。
在你提问之前:
- selinux 目前已被禁用(计划在问题解决后重新启用)
- 我可以通过 ssh 进入它,也可以使用 git 来推送/拉取它
- 我甚至可以使用 lynx 访问其中的 localhost:80 和 localhost:8080。(我安装了 512MB 内存,因此没有 GUI 可以执行任何操作。)
- 我还可以 ping/lynx google.com 等等。
以下是一些命令输出:
ifconfig -a eth1
eth1 Link encap:Ethernet HWaddr 08:00:27:2B:4E:3C
inet addr:192.168.1.104 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe2b:4e3c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:320629 errors:0 dropped:0 overruns:0 frame:0
TX packets:171826 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:445888239 (425.2 MiB) TX bytes:14540682 (13.8 MiB)
nmap localhost
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000080s latency).
Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
8009/tcp open ajp13
8080/tcp open http-proxy
9418/tcp open git
Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds
iptables -vL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
315K 441M ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
0 0 ACCEPT icmp -- any any anywhere anywhere
6010 281K ACCEPT all -- lo any anywhere anywhere
4 208 ACCEPT tcp -- any any anywhere anywhere state NEW tcp dpt:ssh
8676 668K REJECT all -- any any anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT all -- any any anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 184K packets, 13M bytes)
pkts bytes target prot opt in out source destination
netstat -aln | grep 80
tcp 0 0 :::8009 :::* LISTEN
tcp 0 0 :::8080 :::* LISTEN
tcp 0 0 :::80 :::* LISTEN
tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN
unix 2 [ ACC ] STREAM LISTENING 8093 public/cleanup
unix 3 [ ] STREAM CONNECTED 8099
unix 3 [ ] STREAM CONNECTED 8098
unix 3 [ ] STREAM CONNECTED 8096
unix 3 [ ] STREAM CONNECTED 8095
unix 3 [ ] STREAM CONNECTED 8092
unix 3 [ ] STREAM CONNECTED 8091
unix 3 [ ] STREAM CONNECTED 8089
unix 3 [ ] STREAM CONNECTED 8088
unix 2 [ ] DGRAM 8054
unix 2 [ ] DGRAM 8013
来自主持人:
telnet 192.168.1.104 80
Could not open connection to the host, on port 80: Connect failed
因此,两个端口都是打开的,并且看起来防火墙允许从外部连接这些端口(但是,说实话,我只是猜测。我真的不知道如何读取输出iptables -L
。)但是,每当我尝试从主机使用 Chrome 访问 192.168.1.104:(80|8080) 时,我都会得到臭名昭著的:
Oops! Google Chrome could not connect to 192.168.1.104
这是可能的,因为我以前在 Kubuntu 安装中(尽管如此,在 .1.103 上)已经这样做过,并且我试图移动到内存占用更小、安全性更高的虚拟机。
有什么建议吗?需要更多信息吗?我现在洗耳恭听。
编辑:
按照 Janne 的回答,httpd 现在正在监听192.168.1.104:80
。因此,我无法再 lynx 到 localhost,并且执行wget 127.0.0.1
会给我一个拒绝连接的错误。这是合适的,因为现在我必须 才能lynx/wget 192.168.1.104
获得之前使用 127.0.0.1 获得的结果(分别是来自 Apache 的“它有效!”页面和 index.html 的下载。)也许还有另一个线索?
答案1
我没有在您的 iptable4s 中看到允许端口 80 上的连接的规则(除了 lo 上的全面允许)尝试打开端口 80
iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
或者
iptables -I INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT
如果您想限制对 eth1 上的连接的访问。
答案2
这纯属瞎猜:我猜你的 Apache 正在听127.0.0.1
而不是听192.168.1.104
。
如果netstat -tlnp
返回 Apache 正在监听127.0.0.1:80
,那么它根本不会响应 eth1 流量。
参见Listen
httpd.conf 中的指令。它应该显示192.168.1.104:80
编辑:嘿,这肯定与 iptables 有关。当您说“我可以使用 git”时,您的意思是您通过 ssh 使用 git 吗?
目前,您的 iptables INPUT 规则似乎只允许与 ssh 端口建立新连接,而不允许与端口 80 建立新连接。请尝试将其添加到您的 iptables 规则中:
iptables -I INPUT 1 -i eth1 -p tcp -d 0/0 --dport 80 -j ACCEPT