是否可以使用 NAT 网络让 FTP 在 VirtualBox 中工作或让 php 的 ftp 功能工作

Posted

技术标签:

【中文标题】是否可以使用 NAT 网络让 FTP 在 VirtualBox 中工作或让 php 的 ftp 功能工作【英文标题】:Is it possible to get FTP to work in VirtualBox using NAT networking or get php's ftp functions to work 【发布时间】:2015-03-15 10:04:06 【问题描述】:

我正在尝试让 php 的 ftp 方法在 VM 中工作。我可以使用 ftp_connect 进行连接,但之后实际上什么也做不了。

主机:Ubuntu 14.10 来宾:Debian 7 堆栈:Vagrant - VirtualBox - Debian - LAMP

我正在使用 vagrant 来运行一个运行灯堆栈的虚拟盒 VM。在 php 中,我正在运行一些不起作用的方法调用(ftp_pasv、ftp_nlist)。 我发现由于 FTP 协议使用随机端口进行连接,问题是由于在 virtualbox 中使用 NAT 网络引起的。除了这个问题,我有完美的 vagrant-virtualbox 设置。有谁知道在这种情况下让 ftp 在来宾操作系统上工作的方法。我知道我可以尝试使用桥接设置,但这意味着需要做更多的工作来设置它,这台机器将可供公众使用。所以我更愿意尝试让它在那个 NAT 后面工作。

我也尝试过使用 ftp_pasv 来开启被动模式,这样可以解决问题。但是当我调用它打开被动模式时,该方法返回false。

【问题讨论】:

【参考方案1】:

据我所知,这是不可能的。也许如果您想破解一些源代码并编译自定义解决方案,它会起作用。但这比仅仅使用不同的设置更难。我已经使用 curl 来建立 ftp 连接。这适用于列出文件并下载它们。

任何遇到此问题并实际找到解决方案的人请在此处发布。

【讨论】:

【参考方案2】:

问题很可能与网络配置有关。事实上,例如创建目录与获取目录列表相反,表明反向通道存在问题。

一个潜在的根本原因是网络路由器的配置。如果从不同的mac地址(主机与客户系统)发送包,某些路由器处理的包似乎不同。

【讨论】:

【参考方案3】:

我遇到了这个问题,结果发现升级 Virtual Box 解决了这个问题。可能是 NAT 接口中的一些错误。

【讨论】:

以上是关于是否可以使用 NAT 网络让 FTP 在 VirtualBox 中工作或让 php 的 ftp 功能工作的主要内容,如果未能解决你的问题,请参考以下文章

virt-install和virsh详解

kvm2

iptables的nat网络转发

请高手指教下:腾讯云主机由linux系统重装改到windows系统后,FTP远程连接失败怎么解决

Centos7 ftp环境搭建

Mac OS X 是不是有 virt-manager 替代品? [关闭]