简短的介绍:
我的主机操作系统是 Ubuntu-12.04,我使用 VirtualBox 设置了 Oracle Linux 6.4(基于 RHEL)虚拟机和 Apache httpd Web 服务器。我需要从主机 Ubuntu 访问虚拟机提供的网页。
额外细节:
配置如下:
VM 的第一个网络适配器配置为
NAT
,因为我需要它使用主机的 Internet 连接。参见下图:我已将第二个适配器启用为仅主机,因此我可以从主机访问 VM(
ssh
或scp
从主机访问客户 VM,等等)。这工作正常。客户 VM 的 IP 已手动设置为10.10.10.15
,我可以成功访问客户 VMping
,ssh
并且scp
没有任何问题。见下文:
在虚拟机内部,我已经成功设置了 Apache,并且它可以正常工作,localhost
但是当我尝试通过输入 Chromium 或 Firefox 从主机访问页面时10.10.10.15
,却无法连接! :(
我也尝试过/etc/hosts
如下方式在里面添加一个条目,但是test-website.net
在 Chromium 或 Firefox 中输入仍然会出现同样的错误! :(
10.10.10.15 test-website.net
还有一件事需要注意SELinux
。您可能知道,SELinux
在基于 RHEL 的发行版(例如 CentOS 和 Oracle-Linux)上默认启用。为了确保 SELinux 不会弄乱我的工作,我已将其配置为permissive
模式/etc/selinux/config
,并在重启后使用确认效果sestatus
:
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: permissive
Policy version: 26
Policy from config file: targeted
这听起来像是以下问题的重复,但这些问题的答案建议为Host-only
客户机设置一个适配器并/etc/hosts
在主机中进行配置,这我已经测试过了,但对我不起作用:
有什么帮助吗?!
答案1
我弄清楚了问题的原因是什么......iptables
!
我为虚拟机设置的配置应该可以正常工作。
如果具有相同设置的人遇到问题,请查看以下内容:
- 系统防火墙(即
iptables
)配置; SELinux
配置;
干杯:)
答案2
您是否将 apache 绑定到所有接口或仅仅lo
?
顺便说一句:您不必使用第二个网络(仅主机)来访问访客服务。
通过使用NAT 端口转发,您可以设置规则来映射 web 和 ssh/sftp/ftp 端口,以便您可以通过访问主机上的 localhost:PORT 来访问这些端口。
例如要将客户 ssh 映射到主机端口 2222,您可以通过以下方式访问ssh -p 2222 user@localhost
VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22"
笔记:转发主机端口 < 1024 是不可能的,这是一个 NAT 限制。