web-dev-qa-db-fra.com

La redirection de port du port hôte 80 vers le port VirtualBox 80 ne fonctionne pas

J'ai lu le guide de transfert de port VirtualBox, des questions similaires sur ce site et sur d'autres sites, mais je n'ai pas trouvé de solution.

UFW est activé sur le SE invité (Ubuntu), les ports 80 et 22 sont ouverts. Je peux passer de l'hôte à Ubuntu et accéder au site Ubuntu à partir du navigateur de l'hôte.

Sur Guest, j'ai configuré les adaptateurs Nat et hostonly (vboxnet3). Le port du routeur 80 également ouvert (192.168.1.90) L'IP invité est 192.168.70.10

Donc, dans les paramètres invités> Nat> redirection de port, je mets:

TCP Host-ip: 192.168.1.90 Port hôte: 80 guest-ip: 192.168.70.10 guestost-port: 80

Cependant, ce paramètre ne fonctionne pas. J'apprécie si vous me dirigez sur le bon chemin.

20
john206

Comme William l'a mentionné, un système d'exploitation Linux/Unix ne permettra pas à un processus d'écouter sur des ports <1024 à moins qu'ils ne soient exécutés en tant que root. Vous pouvez exécuter VirtualBox en tant que root, même si j'ai lu des avertissements désastreux à ce sujet. C'est probablement horriblement précaire.

Au lieu de cela, configurez Apache2 sur le système hôte pour écouter sur le port 80 (il devrait déjà être configuré pour cela), mais au lieu de servir un site Web sur la machine hôte, demandez-lui de diriger le trafic vers un port supérieur - disons, 8080 - sur l'hôte.

Ensuite, demandez à VirtualBox de transmettre ce port supérieur au port 80 du système d'exploitation invité.

La configuration d'Apache ressemblerait à ceci:

  1. Installez le module proxy HTTP

    a2enmod proxy_http

  2. Assure-toi /etc/Apache2/ports.conf a un Listen 80 directive dedans

  3. Ajouter un autre site dans /etc/Apache2/sites-available ou modifier le site par défaut (ou simplement le gifler dans ports.conf)

     <VirtualHost *: 80> 
     ProxyPreserveHost On 
     ProxyRequests Off 
     ProxyPass/http: // localhost: 8080/
     ProxyPassReverse/http://localhost:8080/
     </VirtualHost> 
    
  4. rebondir Apache

    service Apache2 restart

La configuration de VirtualBox serait Host port: 8080, guest port: 80.

Le trafic irait:

client --> Host:80 --> Apache --> Host:8080 ---> vbox NAT ----> guest:80

Ceci est similaire au tunnel ssh de William, mais ne nécessite pas d'intervention manuelle (ressaisir un mot de passe) à chaque redémarrage de l'hôte.

27
Peter

Voici une autre approche qui pourrait fonctionner si vous n'êtes pas à l'aise avec VirtualBox en tant qu'utilisateur root. Vous pouvez utiliser SSH pour configurer la redirection de port depuis le port hôte 80 vers un port non restreint (dans l'exemple ci-dessous, j'utilise le port 8080), qui sera ensuite à son tour transféré vers le port invité 80. Compliqué, mais cela fonctionne.

  1. Transférer du port hôte 8080 au port invité 80. Assurez-vous qu'il fonctionne en pointant un navigateur sur le port 8080 sur votre machine hôte.
  2. Assurez-vous que sshd est en cours d'exécution sur votre hôte. Sous Mac OS X, accédez à System Preferences -> Internet & Wireless -> Sharing et assurez-vous que Remote Login est vérifié.
  3. Devenez root sur votre hôte

    $ Sudo su -
    
  4. Transférer le port hôte 80 vers le port hôte 8080 à l'aide de SSH (l'adresse de liaison \* rend le port disponible sur toutes les interfaces).

    # ssh yourusername@localhost -L \*:80::8080
    

Notez qu'il vous demandera de vous connecter avec toutes les informations d'identification que vous utilisez pour votre nom d'utilisateur, donc il vous demandera très probablement votre mot de passe et lorsque vous réussirez, vous vous connecterez réellement.

Vous devriez maintenant être en mesure d'atteindre le port 80 sur votre machine hôte et de voir le même service que de toucher le port 8080 sur votre machine hôte, alias le port 80 sur votre système d'exploitation invité.

Si vous ne voulez pas que d'autres personnes sur votre réseau puissent accéder au port 80 sur cette machine, mais souhaitez toujours pouvoir y accéder à partir d'un navigateur sur votre système hôte, liez le port à localhost:

# ssh yourusername@localhost -L localhost:80::8080
8
William Drury

Selon http://www.virtualbox.org/manual/ch06.html#natforward

Transfert des ports d'hôte <1024 impossible:

Sur les hôtes basés sur Unix (par exemple Linux, Solaris, Mac OS X), il n'est pas possible de se lier à des ports inférieurs à 1024 à partir d'applications qui ne sont pas exécutées par root. Par conséquent, si vous essayez de configurer une telle redirection de port, le VM refusera de démarrer.

Il est possible d'exécuter VirtualBox en tant que root, ce qui vous permettra de transférer des ports d'hôte <1024, donc si vous êtes catégorique à ce sujet avec VirtualBox, vous pouvez devenir root et exécuter VirtualBox de cette façon:

$ Sudo su -
# VirtualBox
6
William Drury