![从主机访问在 Fedora 客户机 VirtualBox 中运行的 Apache 服务器](https://linux22.com/image/1344980/%E4%BB%8E%E4%B8%BB%E6%9C%BA%E8%AE%BF%E9%97%AE%E5%9C%A8%20Fedora%20%E5%AE%A2%E6%88%B7%E6%9C%BA%20VirtualBox%20%E4%B8%AD%E8%BF%90%E8%A1%8C%E7%9A%84%20Apache%20%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我无法从主机访问 Apache 服务器。
我在 Windows 7 上安装了 Fedora 15 VM VirtualBox。在此 VM 中,我的客户机中的 Apache 服务器正在运行并且工作正常。
不确定我还能做什么来让它工作。
以下是我的配置。主机操作系统 IP:
IPv4 Address. . . . . . . . . . . : 192.168.0.10
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.0.2
对于虚拟机我安装了两个网络适配器:
- NAT 使得虚拟机可以访问互联网,它可以工作。
- 仅主机适配器。
以下是来宾上的配置:
[root@localhost network-scripts]# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1394 (1.3 KiB) TX bytes:1394 (1.3 KiB)
p2p1 Link encap:Ethernet HWaddr 08:00:27:DD:DD:EA
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fedd:ddea/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1289 errors:0 dropped:0 overruns:0 frame:0
TX packets:1207 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:936406 (914.4 KiB) TX bytes:137003 (133.7 KiB)
p7p1 Link encap:Ethernet HWaddr 08:00:27:44:A3:DB
inet addr:192.168.56.101 Bcast:192.168.56.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe44:a3db/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:313 errors:0 dropped:0 overruns:0 frame:0
TX packets:386 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:30505 (29.7 KiB) TX bytes:44783 (43.7 KiB)
当我ping 192.168.56.101
从主机执行此操作时,我得到了正确的响应,但所有访问 Web 服务的尝试都失败了。我收到超时错误。
答案1
通常,当允许 ICMP 流量(例如 ping)到虚拟化客户机但阻止 TCP 流量(例如 HTTP 请求)时,问题就出在客户机操作系统上运行的软件防火墙上。
笔记:本说明中的命令语法是 Fedora Core 特有的,但可以抽象出一般步骤以供在其他 Linux 发行版上使用。
Fedora Core 的默认安装已启用 IPTables。检查 IPTables 服务的状态以查看其是否处于“活动”状态。
[root@gauss ~]# /bin/systemctl status iptables.service
此外,要查看当前活动的 IPTables 规则,请检查 IPTables 初始化脚本的状态。
[root@gauss ~]# /usr/libexec/iptables.init status
如果 INPUT 链中存在与下面类似的 IPTables 规则,则它负责阻止到主机的 TCP/IP 和 UDP 流量。
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
关于如何启用 HTTP 流量,有多种选项(例如,在 INPUT 链中添加 IPTables 规则,以明确接受来自虚拟机管理程序的仅主机网络 IP 192.168.56.1 的端口 80 上的 TCP 流量,删除 INPUT 链中的通用 DROP 规则等)。
由于客户机不面向外界并且处于仅主机网络上,因此最简单的选择是停止 IPTables 并禁用它,以便它不会在重启时自动启动。
[root@gauss ~]# /bin/systemctl stop iptables.service
[root@gauss ~]# /bin/systemctl disable iptables.service
一旦完成后,Fedora Core 客户机将能够通过其公共接口提供 HTTP 请求,并且可以通过在浏览器或任何其他 HTTP 客户端中访问 192.168.56.101 在 Windows 7 虚拟机管理程序上查看页面。