2012-07-09 14 views
17

Ho letto la guida di inoltro porte VirtualBox, domande simili in questo sito e altri siti ma non ho trovato una soluzione.Il port forwarding dalla porta host 80 alla porta VirtualBox 80 non funziona

UFW è abilitato sul sistema operativo guest (Ubuntu), le porte 80 e 22 sono aperte. Posso ssh da host a ubuntu e posso accedere al sito di Ubuntu dal browser host.

In Ospite, ho configurato gli adattatori Nat e hostonly (vboxnet3). aperto anche porta del router 80 (192.168.1.90) Ospite IP è 192.168.70.10

So In impostazioni ospiti> Nat> port forwarding ho messo:

TCP host-IP: 192.168.1.90 host-port: 80 guest-ip: 192.168.70.10 guestost-port: 80

Tuttavia, questa impostazione non funziona. Apprezzo se mi indirizzassi sulla strada giusta.

+0

Anche io sto affrontando lo stesso problema, ma porta più di 1024 sulla macchina host sulla macchina ospite 80 sta funzionando, ma la porta 80 della macchina host su una qualsiasi porta sulla macchina guest non funziona ... Sto usando Virtual box su Mac. Per favore fatemi sapere se trovate qualche soluzione al vostro problema? –

risposta

5

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

porte host Forwarding < 1024 impossibile:

Su host basati su Unix (ad esempio Linux, Solaris, Mac OS X), non è possibile collegarsi alle porte di sotto 1024 da applicazioni che non sono eseguite da root. Di conseguenza, se si tenta di configurare un tale port forwarding, la VM si rifiuterà di avviarsi.

E 'possibile eseguire VirtualBox come root, che -will- consentono di inoltrare le porte host < 1024, quindi se siete convinti di fare questo con VirtualBox, è possibile diventare root ed eseguire VirtualBox in questo modo:

$ sudo su - 
# VirtualBox 
8

Ecco un altro approccio che potrebbe funzionare se non ti senti a tuo agio nell'esecuzione di VirtualBox come utente root. È possibile utilizzare SSH per configurare il port forwarding dalla porta host 80 a una porta non limitata (nell'esempio seguente, utilizzo la porta 8080), che a sua volta verrà inoltrata alla porta guest 80. Convoluta, ma funziona.

  1. Inoltro dalla porta host 8080 alla porta ospite 80. Assicurarsi che funzioni puntando un browser sulla porta 8080 sul computer host.
  2. Assicurati che sshd sia in esecuzione sul tuo host. In Mac OS X, vai su System Preferences -> Internet & Wireless -> Sharing e assicurati che sia selezionato Remote Login.
  3. Diventate root sul proprio host

    $ sudo su - 
    
  4. porta host Forward 80 per ospitare porta 8080 usando SSH (l'indirizzo bind \* rende la porta disponibile su tutte le interfacce).

    # ssh [email protected] -L \*:80::8080 
    

Nota che vi chiederà di accedere con qualsiasi credenziali utilizzate per nomeutente, quindi è molto probabile che chiederà la password e quando si ha successo, effettivamente il login.

Ora dovresti essere in grado di colpire la porta 80 sul tuo computer host e vedere lo stesso servizio di come colpire la porta 8080 sul tuo computer host, ovvero la porta 80 sul tuo SO guest.

Se non si desidera che altri utenti della rete per essere in grado di colpire la porta 80 su quella macchina, ma ancora voglia di essere in grado di arrivare ad essa da un browser sul vostro sistema host, associare la porta a localhost:

22

Come menzionato da William, un sistema operativo Linux/unix non consente a un processo di ascoltare le porte < 1024 a meno che non vengano eseguite come root. Potresti eseguire VirtualBox come root, anche se ho letto terribili avvertimenti per farlo. Probabilmente è orribilmente insicuro.

Configurare invece Apache2 sul sistema host per l'ascolto sulla porta 80 (dovrebbe essere già impostato per tale), ma invece di servire un sito Web sul computer host, fare in modo che il traffico proxy raggiunga una porta più elevata, ad esempio , 8080 - sull'host.

Poi, hanno VirtualBox in avanti che l'aumento porta l'ospite porta OS 80.

La configurazione di Apache sarebbe qualcosa di simile a questo:

  1. Installare il modulo proxy HTTP

    a2enmod proxy_http

  2. Assicurarsi che /etc/apache2/ports.conf abbia una direttiva Listen 80

  3. Aggiungere un altro sito in /etc/apache2/sites-available o modificare il sito predefinito (o semplicemente schiaffo questo ports.conf)

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

    service apache2 restart

La configurazione di VirtualBox sarebbe host port: 8080, guest port: 80.

traffico sarebbe andato:

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

Questo è simile al tunnel ssh di William, ma non richiede l'intervento manuale (re-immettere una password) ogni volta che l'host viene riavviato.

+3

Se il sistema operativo host è un sistema operativo * nix, è possibile utilizzare [iptables] (http://www.catonmat.net/blog/unprivileged-programs-privileged-ports/) per reindirizzare il traffico dalla porta 80 a una porta superiore su il sistema operativo host. Sembra molto meglio che coinvolgere i tunnel Apache o SSL. – Peter

+1

È altrettanto semplice inoltrare richieste SSL utilizzando il modulo proxy? Ad esempio: 'o ci sono altri passaggi? –

Problemi correlati