Wie rufe ich die Host-IP vom NAT-Virtualbox-Gast ab?

Wie rufe ich die Host-IP vom NAT-Virtualbox-Gast ab?

Ich habe einen Windows 7-Host, der einen VirtualBox-Debian-Gast mit NAT verwaltet. Dieser Gast führt einige Webdienste aus, die von außen über eine Portumleitung erreichbar sind.

Ich muss den externen Zugriff auf diese Dienste über URLs ermöglichen, kann mich aber nicht auf eine ordnungsgemäße DNS-Auflösung verlassen, daher muss ich die Host-IP an die Gastumgebung weitergeben. Wie kann ich das mit minimalen Auswirkungen auf den Host tun?

Einige Klarstellungen: „Von außen“, „externer Zugriff“ bezieht sich auf Webbrowser, die auf derselben Ebene wie der Host gehostet werden, d. h. sie können sich nicht nur auf die Hostadresse verlassen.

Eine Zeichnung sagt mehr als tausend Worte:

+--------------+  External                         
| Windows Host |  network   +---------------------+
| +----+       |            |      Web client     |
| |    |      NAT           |  +----------------+ |
| |    ------------------------> Page generated | |
| |    |       |            |  |by VM with URLs | |
| | VM |       |            |  |to host         | |
| |    |       |            |  +--------|-------+ |
| |    |      FWD           |           |         |
| |    <--------------------------------+         |
| |    |       |            +---------------------+
| +----+       |                                   
+--------------+

Antwort1

Eine Möglichkeit, dies zu erreichen, ist der Trick hinter Websites wieWas ist Whatsmyip?. alles was Sie brauchen ist ein Webserver in Ihrem Netzwerk, der die IP-Adresse, von der er eine Anfrage empfängt, an den Client zurücksendet.

Denken Sie daran, da Sie NAT verwenden, sieht der Server die Adresse des NAT-Routers (in diesem Fall des VM-Hosts) als Ursprungsadresse.

Um dies zu erreichen, könnten Sie ein PHP-Skript (dh whatsmyip.php) im Web-Root Ihres Webservers erstellen, wie

//whatsmyip.php
<?php 
//Gets the IP address
$ip = getenv("REMOTE_ADDR") ; 
Echo "$ip; 
?> 

und greifen Sie von Ihrem Gast darauf zu wiehttp://webserver/whatsmyip.php

(Quelle:Thoughtco.com )

Jetzt müssen Sie diese Antwort nur noch in Ihrem Service auswerten

Antwort2

Unter Berücksichtigung der Antwort von Guntbert bedeutet dies:

  • Verwenden Sie einen Webserver eines Drittanbieters im „externen“ Netzwerk, um einen Remote-Adress-Responder zu hosten, wie in der gegebenen Antwort beschrieben.
  • Durchsuchen Sie während der VM-Initialisierungsphase (und/oder regelmäßig je nach Netzwerkkontext) die VM, um die externe Adresse des Windows-Hosts abzurufen
  • Verwenden Sie die abgerufene Adresse, um beim Erstellen von Seiten URLs zu fälschen.

verwandte Informationen