configurationVirtualBox的networking服务器来查看访问者的IP地址

我终于设法将我的服务器移动到VirtualBox虚拟机。

虚拟机正在运行在NAT模式下。 我已经转发了必要的端口,包括我第一次使用iptables到端口8888的端口80,然后通过VirtualBox转发到客户端OS上的端口80。

-A PREROUTING -i p10p1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8888 

一切都很好! 除了…我无法从PHP $ _SERVER ['REMOTE_ADDR']看到网站访问者的IP地址。 我只看到1个IP地址,这是主机的NAT地址。

如何configuration我的系统(主机操作系统和VirtualBox)能够运行networking服务器并查看访客的IP地址?

我的主机通过一个固定的IP地址直接连接到互联网。 为客人的桥接连接获得另一个IP不是一个选项(它已经是一个非常昂贵的互联网连接)。

使用NAT,您无法将访问者的IP地址传递给networking服务器。 到networking服务器的所有连接将来自运行Virtual Box的主机。

为了能够做到这一点,您将需要在VirtualBox运行的主机操作系统上设置HAproxy实例或nginx,以便在每个HTTP请求上添加一个自定义HTTP标头和访问者的真实源IP地址。

然后在后台Web服务器上parsing该头文件,并用于Web服务器的访问/错误日志和统计信息。

如果您的后端Web服务器是Apache,您将需要以下模块来parsing自定义HTTP标头。 http://stderr.net/apache/rpaf/

请尝试我在virtualbox论坛中find的解决scheme,它适用于我!

这是没有桥模式的可能! 出于某种奇怪的原因,VirtualBox中的默认NAT模式会重写原始源文件。

你想要的是将NAT切换到透明模式

 VBoxManage modifyvm <your-vm name> --nataliasmode1 proxyonly 

更多细节可以从这里find:

https://forums.virtualbox.org/viewtopic.php?f=7&t=43500#p260181