如何从virtualbox获取传入的IP地址

我在VB下设置一个http服务器(apache),并使用VB中的可用工具从主机转发端口。 我的VBnetworking是NAT连接到主机。

但是,当这样做时,http的访问日志只显示每个连接的相同的IP地址。 (从10.xxx这是主机的IP地址)。

有无论如何看到真正的IP地址? 我试图在主机上设置一个iptables日志,但它不显示数据(只有src,dest.ttl ..你知道..)

您的虚拟机在您的设置中位于NAT之后,并且实际上通过端口转发来访问networking服务器,因此无法使用virtualbox来显示客户端的IP。 你可以做的一件事就是在你的主机上设置一个轻量级的networking服务器(比如nginx或者lighttpd),这个networking服务器将在你的networking上监听80端口,而在反向代理模式下工作到你的转发端口,这样你的虚拟机就像后端一样工作。 为了得到客户端的IP地址,这个web服务器应该传递一些额外的variables,比如X-Real-IPHostX-Forwarded-For (这里是虚拟主机for nginx假设你的虚拟机将80端口转发到本地8080)

 server { listen 80; server_name example.com; location / { proxy_pass http://localhost:8080; proxy_set_header X-Real-IP $remote_arrd; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } } 

你可以用你的虚拟机设置NAT

vboxmanage --nataliasmode1 proxyonly

禁用别名并将NAT切换到透明模式。

有关更多信息,请参见此处: https : //www.virtualbox.org/manual/ch09.html#nat-adv-alias