无法在我的 CentOS Virtualbox 中访问 Apache

无法在我的 CentOS Virtualbox 中访问 Apache

我正在设置一个带有 CentOS 的 VirtualBox,这样我就可以测试我的所有代码等。在 Linux 机器上,而不是在用于开发的 Windows 上。

我刚刚让 SSH 工作起来(我通过 SSH 连接到 localhost:2222 然后它将其端口转发到 virtualbox 端口 22)。

它正在使用 NAT,因为由于某种原因它拒绝使用桥接适配器启动。

我正在尝试使用 Apache 做同样的事情,以启动并运行 Web 服务器。

我已将 localhost 上的端口 8888 转发到 CentOS Virtualbox 中的端口 80,但似乎无法在浏览器中使用 localhost:8888 访问任何内容?

Apache 也确实正在运行:

ps -e | grep httpd
2108?00:00:00 httpd
2110?00:00:00 httpd
2111 ? 00:00:00 httpd
2112 ? 00:00:00 httpd
2113 ? 00:00:00 httpd
2114 ? 00:00:00 httpd
2115 ? 00:00:00 httpd
2116 ? 00:00:00 httpd
2117 ? 00:00:00 httpd

Iptables:

# 由 iptables-save v1.4.7 于 2012 年 1 月 27 日星期五 18:26:36 生成
*筛选
:输入接受 [0:0]
:转发接受 [0:0]
:输出接受 [32:2278]
-A 输入 -m 状态 --状态相关,已建立 -j 接受
-A 输入-p icmp -j 接受
-A 输入-i lo -j 接受
-A 输入 -p tcp -m 状态 --状态新 -m tcp --dport 22 -j 接受
-A 输入 -p tcp -m 状态 --状态新 -m tcp --dport 80 -j 接受
-A 输入 -j 拒绝 --拒绝 icmp 主机禁止
-A 转发 -j 拒绝 --拒绝与 icmp 主机禁止
-I 输入 -p tcp --dport 80 -m 状态 --状态 NEW,ESTABLISHED -j 接受
-I 输出 -p tcp --sport 80 -m 状态 --状态已建立 -j 接受
-I 输入 -p tcp --dport 443 -m 状态 --状态 NEW,ESTABLISHED -j 接受
-I 输出 -p tcp --sport 443 -m 状态 --状态已建立 -j 接受
犯罪
# 于 2012 年 1 月 27 日星期五 18:26:36 完成

我还停止了 iptables,所以这不会造成干扰。我尝试从我的 CentOS 虚拟机远程登录到端口 80,看看它是否能工作,结果显示 127.0.0.1 或 [vm ip] 都无法远程登录到端口 80。它到达然后connecting to [ip]显示connection closed by foreign host。对于我的 httpd.conf 中的 listen 行,它显示listen 0.0.0.0:80

输出netstat -tlnp | grep http

netstat -tlnp | grep http
tcp 0 0 0.0.0.0:80 0.0.0.0:* 监听 2032/httpd
tcp 0 0 :::443 :::* 侦听 2032/httpd

当我nmap 本地主机,我得到

[root@CentOS conf]# nmap 本地主机

于 2012-01-28 00:58 WST 启动 Nmap 5.21(http://nmap.org)
本地主机(127.0.0.1)的 Nmap 扫描报告
主机已启动(延迟时间为 0.0000090 秒)。
主机名 localhost 解析为 3 个 IP。仅扫描了 127.0.0.1
未显示:993 个关闭的端口
港口国服务
22/tcp 开启 ssh
23/tcp 开启 telnet
25/tcp 开启 smtp
80/tcp 开放 http
111/tcp 打开 rpcbind
443/tcp 打开 https
631/tcp 开放 ipp

答案1

您是否复制粘贴了 iptables 规则?如果是,则其中存在错误:

 _I OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

下划线代替连字符。

答案2

首先,您必须确保 apache 正在监听以太网接口(来自 VM 的接口)或所有地址。对于此运行:

sudo netstat -tlnp|grep http

如果它没有监听外部接口(而不是环回接口),那么您必须更改 apache 配置中的 Listen 指令并重新启动 apache(而不是重新加载)。

答案3

在 VirtualBox 中,尝试将网络设置更改为 Bridge Adapter 而不是 NAT,并选择要使用的适当接口(有线或无线)。启动 CentOS,然后重新检查您的以太网地址(运行 ifconfig)。

从那里检查您是否现在可以使用新的以太网地址访问 apache。

对于 centos 上的 ssh,您必须确保编辑 sshd_config 并取消注释以下内容:

Port 22
PermitRootLogin No

除了 root 之外还要创建另一个用户,然后在 sshd_config 中添加该用户:

AllowUsers username

相关内容