端口使用VirtualBox直接转发到客户操作系统

时间:2010-10-04 07:41:10

标签: ruby-on-rails ubuntu port virtualbox forward

我目前正在使用Ubuntu 10.04进行一些rails开发。它在Windows 7 x64主机上使用VirtualBox作为来宾计算机安装。

在Ubuntu中,我试图将多个端口从远程服务器直接移植到Guest OS,以避免必须下载远程数据库。

假设我想将远程服务器上的端口5000转发到guest虚拟机操作系统上的端口5000。

我已经使用VBoxManage.exe为Windows端口设置了转发器。这会将HostPort 5000转发给GuestPort 5000。

然后在ubuntu中运行,ssh -L5000:127.0.0.1:5000。但是,每当我尝试访问“127.0.0.1:5000”时,都会收到消息“通道7:打开失败:连接失败:连接被拒绝”

我错过了什么吗?

感谢您的帮助!

3 个答案:

答案 0 :(得分:-1)

连接失败:拒绝连接

这意味着您无法连接到远程端的5000.

如果您只是通过SSH隧道在访客中使用此连接,那么您不需要VBoxManager的转发,因为这将打开操作,以便外部计算机可以直接连接到您的访客,它不会帮助您的客人连接到外面。

您确定连接的服务器(SSH)是否与运行数据库的服务器相同?是否在该服务器上运行数据库?

当您连接(SSH)到服务器时,您可以尝试列出正在侦听连接的端口,或者您可以尝试使用telnet连接到数据库。要列出监听器,您可以运行“netstat -lnt”(-l显示监听,-n是数字(显示IP和端口号),-t是tcp)。你应该有一个像“tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN”的行,如果你有一个服务在端口5000上监听TCP。要尝试连接你可以简单地做“telnet 127.0.0.1 5000”,如果您无法从服务器连接telnet,那么数据库不会监听/允许您的连接,或者服务器正在另一个端口或服务器上运行。

答案 1 :(得分:-1)

SSH默认使用TCP流量,对吗?

为了验证,VirtualBox中的NAT确实存在这些限制(根据User Manual):

用户应该注意的NAT模式有四个限制:

ICMP协议限制:一些常用的网络调试工具(例如ping或tracerouting)依赖于ICMP协议来发送/接收消息。虽然使用VirtualBox 2.1改进了ICMP支持(ping现在应该可以使用),但其他一些工具可能无法可靠地工作。

接收UDP广播不可靠:来宾不能可靠地接收广播,因为为了节省资源,它只在客户端在特定端口上发送UDP数据后侦听一定的时间。因此,基于广播的NetBios名称解析并不总是有效(但WINS始终有效)。作为解决方法,您可以在\ server \ share表示法中使用所需服务器的数字IP。

不支持GRE等协议:不支持TCP和UDP以外的协议。这意味着无法使用某些VPN产品(例如Microsoft的PPTP)。还有其他VPN产品只使用TCP和UDP。

转发低于1024的主机端口是不可能的:在基于Unix的主机(例如Linux,Solaris,Mac OS X)上,无法从非root运行的应用程序绑定到1024以下的端口。因此,如果您尝试配置此类端口转发,则VM将拒绝启动。

答案 2 :(得分:-1)

尝试使用ssh -L5000:0.0.0.0:5000代替ssh -L5000:127.0.0.1:5000

有一种称为“loopback”的东西与127.0.0.1混在一起,如果试图从另一台机器访问端口,会让你感到悲伤。即你的主机。