2011-10-14 56 views
3

我在连接到VirtualBox中的客户操作系统时遇到了问题。 我environtment如下:如何正确使用VirtualBox进行端口转发?

  • 主持人:MacOSX的(狮子)
  • 嘉宾:CentOS的(5.7,2.6.18-274.3.1.el5)
  • VirtualBox的:4.1.4 r74291 - 网络适​​配器类型:NAT

在guest OS,我可以看到的httpd就像正常运行:

$ ps aux | grep httpd 
root  2571 0.0 3.5 258440 8824 ?  Ss 08:20 0:00 /usr/sbin/httpd 
apache 2573 0.0 2.2 258440 5780 ?  S 08:20 0:00 /usr/sbin/httpd 
apache 2574 0.0 2.0 258440 5184 ?  S 08:20 0:00 /usr/sbin/httpd 
apache 2575 0.0 2.0 258440 5180 ?  S 08:20 0:00 /usr/sbin/httpd 
apache 2576 0.0 2.0 258440 5180 ?  S 08:20 0:00 /usr/sbin/httpd 
apache 2577 0.0 2.0 258440 5180 ?  S 08:20 0:00 /usr/sbin/httpd 
apache 2578 0.0 2.0 258440 5180 ?  S 08:20 0:00 /usr/sbin/httpd 
apache 2579 0.0 2.0 258440 5180 ?  S 08:20 0:00 /usr/sbin/httpd 
apache 2580 0.0 2.0 258440 5180 ?  S 08:20 0:00 /usr/sbin/httpd 
$ curl localhost 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
... 

在主机操作系统,我做了配置上做端口转发如下​​:

$ VBoxManage showvminfo CentOS_3 | grep "NIC 1" 
NIC 1:   MAC: 080027B1FA87, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny 
NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64) 
NIC 1 Rule(0): name = http, protocol = tcp, host ip = , host port = 8003, guest ip = , guest port = 80 
NIC 1 Rule(1): name = ssh, protocol = tcp, host ip = , host port = 2203, guest ip = , guest port = 22 

因为这些信息去了,我试图做端口转发,从8003至80和2203至22 事实上,我可以通过“ssh -p 2203 localhost”将ssh连接到客户操作系统。 但是,当我尝试查看http://localhost:8003时,浏览器显示为 “由于服务器未发送任何数据,因此无法加载网页”。

当我尝试在主机操作系统 “telnet localhost 8003”似乎端口正在侦听,但 没有出现在客户操作系统的访问日志中的日志。

我该怎么做才能解决这个问题?提前致谢!

(另外:10月14日15:55)

$ netstat -nl | grep tcp | grep 127.0.0.1 # Host OS 
tcp4  0  0 127.0.0.1.8003   127.0.0.1.64698  ESTABLISHED 
tcp4  0  0 127.0.0.1.64698  127.0.0.1.8003   ESTABLISHED 
tcp4  0  0 127.0.0.1.26164  127.0.0.1.53917  ESTABLISHED 
tcp4  0  0 127.0.0.1.53917  127.0.0.1.26164  ESTABLISHED 
tcp4  0  0 127.0.0.1.2203   127.0.0.1.53183  ESTABLISHED 
tcp4  0  0 127.0.0.1.53183  127.0.0.1.2203   ESTABLISHED 

$ netstat -nl | grep tcp # Guest OS 
tcp  0  0 0.0.0.0:111     0.0.0.0:*     LISTEN 
tcp  0  0 0.0.0.0:952     0.0.0.0:*     LISTEN 
tcp  0  0 127.0.0.1:25    0.0.0.0:*     LISTEN 
tcp  0  0 :::80      :::*      LISTEN 
tcp  0  0 :::22      :::*      LISTEN 
tcp  0  0 :::443      :::*      LISTEN 
+0

愚蠢的问题时间:客人是否配置了防火墙? – mkj

+0

发布“netstat -nl | grep tcp”请 – evildead

+0

谢谢回复!我添加了netstat结果。我认为没有问题... – yinkyweb

回答

1

似乎像MKJ写道,你安装了防火墙。

尝试运行(作为root): 百胜安装系统配置防火墙的TUI

运行的system-config-防火墙TUI,选择自定义并确保 “WWW(HTTP)” 被选中。

0

虽然老问题,但这可能对某人有所帮助,因为我今天面临这个问题。 正如mkj所提到的,问题出在Guest OS(我的情况下是Centos 6)防火墙上。它允许ssh(端口22)连接,但阻止其他人。我在Host上访问在Guest OS(在端口5432)上运行的postgresql服务器时遇到问题。因此,执行下面的iptables命令对客户机操作系统奋力:运行时

$ sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT 

我从来没有遇到过这样的问题:

$ sudo iptables -I INPUT -p tcp -m tcp --dport 5432 -j ACCEPT 

在你的情况,为httpd服务器在端口80上运行,你可以有下面做ubuntu/debian作为Guest OS,因此可能防火墙没有在其中配置。

相关问题