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.
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:
Installez le module proxy HTTP
a2enmod proxy_http
Assure-toi /etc/Apache2/ports.conf
a un Listen 80
directive dedans
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>
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.
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.
System Preferences -> Internet & Wireless -> Sharing
et assurez-vous que Remote Login
est vérifié.Devenez root sur votre hôte
$ Sudo su -
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
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