In realtà, ci sono un sacco di buoni motivi per usare NAT con le tue VM, piuttosto che un'interfaccia a ponte. (Questa è una vecchia domanda, ma è emersa come il mio primo risultato cercando come farlo, migrando da VirtualBox dove lo faccio sempre, quindi ho pensato che valesse la pena aggiungere)
Alcuni dei motivi per utilizzare NAT sono:
- È facile e portatile
- se sei su una LAN cliente che richiede un indirizzo MAC noto per ottenere un IP (altrimenti dovrai provare a indovinare quelli inutilizzati e rischiare un conflitto, e in genere attirare cattiva attenzione su te stesso :)),
- cose come consentire alle VM di utilizzare un singolo server proxy sul tuo host (IE se non controlli la rete su cui ti trovi), o essere in grado di firewall / filtrare il loro traffico di trasmissione (windows ecc.) in uscita in uno posto conveniente.
- essere in grado di assegnare loro un IP fisso o riservato in modo da poter fare riferimento a loro per nome / IP dall'esterno dell'host (di nuovo, se non è possibile ottenere prenotazioni sulla rete con un'interfaccia a ponte)
- ma soprattutto, ti permette di nasconderti dietro una singola configurazione del firewall sul tuo host e condividere le cose tra di loro in modo più protetto, piuttosto che esporre ogni VM alla "natura" e doverle proteggere tutte individualmente ecc. .. Proprio come fai con un modem / router Internet
Ad ogni modo, per il mio caso (VMWare Workstation 10, host Linux, OS X Guest) e chiunque si imbatti in questo, questa è la panoramica di ciò che ha funzionato per me. Oltre ai waffling e ai what-if, ci sono davvero solo 3 passaggi principali.
- Quindi, per prima cosa devi decidere cosa vuoi consentire alla tua VM / guest "dall'esterno" del tuo host (nota come sotto, sarai in grado di accedervi facilmente dall'host stesso). Una scommessa sicura sarebbe solo quella di esporre / consentire solo SSH (porta 22) alle macchine della tua sottorete. Potresti anche consentire la porta 80/443 se avessi un server web sulla VM, ecc. E puoi anche usare un "tunnel" per accedere ad altri servizi usando SSH (forniremo l'esempio di seguito) e usare FUSE / SSHFS per dare il tuo host accesso al filesystem .. (O la funzione di cartella condivisa su VMWare, ma non l'ho ancora usata).
Quindi l'idea è qualcosa del tipo: "Consenti alle cose sulla rete locale del mio host (ad es. 10.1.1.0/24 o 192.168.1.0/24) di connettersi alla porta 22222 sull'host, che inoltreremo alla porta 22 di un ospite specifico ". Ovviamente deve essere un ospite specifico (Questo rende la configurazione dei tuoi IP ancora più utile e puoi cambiarli tutti in un posto senza aprire ogni VM), proprio come farlo attraverso il tuo router Internet per consentire cose di gioco attraverso ecc.
Quindi, una volta fatto tutto, potresti essere sul tuo laptop o altra macchina sulla LAN, ssh sulla tua stazione di lavoro (host vmware) su 22222, e verrai trasferito all'ospite a cui gli hai detto di inoltrarti. Come accennato in precedenza, se si dice anche che si desidera essere in grado di connettersi al server Postgres sul guest (o server vnc, che spesso non è crittografato), è possibile eseguire il tunneling nello stesso comando (invece di aggiungerlo anche alla configurazione dhcp). Per es
console ~> ssh root@hostip -p 22222 -L 54320:localhost:5432
e verrai inviato al guest tramite l'ip forward in vmware e potresti indirizzare il tuo strumento pgadmin3 su localhost: 54320 (non priveleged) sul tuo laptop e il tuo traffico sulla rete verrebbe crittografato. (Nota 'localhost' è già stato inoltrato al guest)
Appunti
- Ci sono molti modi per farlo. Per prima cosa, potresti semplicemente tunnelare per ospitare e specificare l'ip dell'ospite in -L e "scoppiare" e indicarti lì, ma l'opzione nat.conf è bella e conveniente e non è necessario digitarlo ogni volta. Esistono anche altri modi di port forwarding
- Avevo visto il riferimento a un paio di thread di una GUI di rete virtuale per fare questo (come ha virtualbox), ma non riuscivo a trovarlo in questa versione
- Non uso Windows, quindi anche se presumo che sarebbe molto simile da configurare come host, non ne sono sicuro. Le configurazioni NAT dovrebbero funzionare per qualsiasi guest vmware (anche se non ho usato altre versioni di VMWare)
VMware imposta una route in modo che l'host possa contattare direttamente l'ospite NAT, IE dalla console dell'host, posso eseguire ping / ssh ecc. L'ospite NAT 192.168.198.10 (definito sopra) direttamente
console ~> route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
<snip>
192.168.198.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
192.168.233.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
- Da una nota di Linux, c'è un po 'di confusione con vmware con systemd init per avviarsi in modo `automatico', e insieme a quello che ho scoperto non posso semplicemente riavviare vmware (vmci non si carica di nuovo) e devo riavviare la mia macchina per rendere le cose NAT / DHCP sopra stick, ma potresti non avere il problema. Tuttavia, ci sono alcuni thread con soluzioni systemd