GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare la rete in Vagrant

Vagabondo è così popolare tra gli sviluppatori e gli ingegneri DevOps, perché possono continuare a utilizzare gli strumenti di sviluppo esistenti (ad esempio editor, browser, debugger, ecc.) sul proprio sistema locale. Ad esempio, gli sviluppatori possono sincronizzare i file da una macchina guest al sistema locale, utilizzare il loro editor preferito per modificare quei file e infine sincronizzarli nuovamente con la macchina guest. Allo stesso modo, se hanno creato un'applicazione Web nella macchina virtuale, possono accedere e testare tale applicazione dal browser Web del sistema locale. In questa guida vedremo come configurare la rete in Vagrant per fornire l'accesso alla macchina ospite dal sistema host locale.

Configura rete in Vagrant

Vagrant offre le seguenti tre opzioni di rete:

  1. Port forwarding
  2. Rete privata (rete solo host)
  3. Rete pubblica (rete con bridge)

1. Configura il port forwarding

Per impostazione predefinita, possiamo accedere alle VM Vagrant tramite ssh utilizzando vagrant ssh comando. Quando accediamo a una macchina virtuale tramite SSH, Vagrant inoltra la porta 22 dalla macchina guest a una porta aperta nella macchina host. Questo è chiamato port forwarding. Vagrant gestisce automaticamente questo processo di port forwarding senza alcun intervento da parte dell'utente. Puoi anche inoltrare una porta specifica a tua scelta. Ad esempio, se hai inoltrato la porta 80 nella macchina guest per portare 8080 sul computer host, puoi quindi accedere al server web navigando su http://localhost:8080 sul tuo computer host.

Il port forwarding può essere configurato nel "Vgrantfile". Vai alla directory del tuo progetto Vagrant e apri Vagrantfile nel tuo editor preferito.

Trova la riga seguente:

Vagrant.configure("2") do |config|
[...]
   # config.vm.network "forwarded_port", guest: 80, host: 8080
end

Decommentalo e definisci quali porte inoltrare e dove. In questo esempio, sto inoltrando la porta 80 nel guest alla porta 8080 nell'host.

Vagrant.configure("2") do |config|
[...]
   config.vm.network "forwarded_port", guest: 80, host: 8080
end

Ora riavvia la macchina Vagrant con il Vagrantfile aggiornato:

$ vagrant reload --provision

Vedrai che il port forwarding è configurato nell'output:

==> default: Halting domain…
==> default: Starting domain.
==> default: Waiting for domain to get an IP address…
==> default: Waiting for SSH to become available…
==> default: Creating shared folders metadata…
==> default: Forwarding ports…
==> default: 80 (guest) => 8080 (host) (adapter eth0)
==> default: Rsyncing folder: /home/sk/myvagrants/ => /vagrant

Puoi anche distruggere la VM e rieseguirla con Vagrantfile aggiornato:

$ vagrant destroy <VM-name>
$ vagrant up

Ora SSH nella macchina guest con il comando:

$ vagrant ssh

Installa il server web Apache al suo interno. Se la macchina virtuale è basata su Deb, eseguire:

$ sudo apt install apache2

Se è un sistema basato su RHEL, esegui questo:

$ sudo yum install httpd

Avvia il servizio Apache:

$ sudo systemctl enable --now httpd

Ora apri il browser web nel tuo sistema host e vai a http://localhost:8080 indirizzo dal tuo browser. Vedrai la pagina di test di Apache sul tuo browser.

Anche se accediamo al server web con l'URL http://localhost:8080 nel sistema host, non viene servito dal server web locale. Il sito Web effettivo (ovvero la pagina di test di Apache) viene servito dalla macchina virtuale guest e tutti i dati di rete effettivi vengono inviati al guest.

1.1. Cosa succede se la porta 8080 viene utilizzata da un'altra applicazione?

Nel nostro esempio precedente, abbiamo inoltrato la porta 80 dal guest alla porta 8080 nell'host. In altre parole, il traffico inviato alla porta 8080 viene effettivamente inoltrato alla porta 80 sulla macchina guest. Cosa succede se un'altra applicazione sta attualmente utilizzando la porta 8080? La collisione delle porte si verifica durante l'esecuzione di più macchine virtuali. È possibile inoltrare inconsapevolmente una porta già utilizzata. Nessun problema! Vagrant ha un supporto integrato per il rilevamento delle collisioni tra le porte. Se la porta è già utilizzata da un'altra applicazione, Vagrant lo segnalerà nell'output, quindi puoi liberare la porta o utilizzare un'altra porta.

Vagrant è anche abbastanza intelligente da trovare e correggere automaticamente le collisioni tra le porte. Se rileva che una porta è entrata in collisione con un'altra porta, la correggerà automaticamente utilizzando qualsiasi altra porta inutilizzata per te.

Per abilitare la correzione automatica, aggiungi un'opzione extra auto_correct: true nella definizione di port forwarding nel tuo Vagrantfile.

config.vm.network "forwarded_port", guest: 80, host: 8080, auto_correct: true

Per impostazione predefinita, Vagrant sceglierà la porta di correzione automatica tra la porta 2200 e porta 2250 allineare. Puoi anche scegliere il tuo intervallo personalizzato definendo la seguente riga nel Vagrantfile come di seguito.

config.vm.usable_port_range = (2200..2250)

Riavvia la macchina Vagrant per rendere effettive le modifiche:

1.2. Cambia protocollo di rete

Per impostazione predefinita, Vagrant utilizza il protocollo TCP per il port forwarding. Tuttavia, puoi utilizzare il protocollo UDP se desideri inoltrare pacchetti UDP.

Per utilizzare la porta UDP, aggiungi la seguente definizione nel tuo Vagrantfile:

config.vm.network "forwarded_port", guest: 80, host: 8080, auto_correct: true protocol: "udp"

Riavvia Vagrant VM per applicare le modifiche.

2. Configura rete privata

Nella rete privata o solo host, viene creata una connessione di rete tra il sistema host e le macchine virtuali sul sistema host. La rete privata viene creata utilizzando una scheda di rete virtuale visibile al sistema operativo host. Gli altri sistemi sulla rete non possono comunicare con le VM. Tutte le operazioni di rete sono consentite all'interno del sistema host.

La rete privata può funzionare anche come server DHCP e dispone di una propria sottorete. Ogni macchina virtuale nella rete privata riceverà un indirizzo IP da questo spazio IP. Quindi, possiamo accedere alle VM direttamente utilizzando l'IP dal sistema host.

Per configurare la rete privata o solo host in Vagrant con indirizzo IP statico, apri il file Vagrant, trova la riga seguente e decommenta.

config.vm.network "private_network", ip: "192.168.121.60"

Qui, 192.168.121.60 è l'indirizzo IP della VM. Sostituiscilo con il tuo IP.

Riavvia la VM per rendere effettive le modifiche.

Se desideri impostare automaticamente l'indirizzo IP da DHCP, modifica la definizione della rete privata come di seguito:

config.vm.network "private_network", type: "dhcp"

Un indirizzo IP casuale verrà assegnato alla VM. Per trovare l'IP di una VM, devi inserirla in SSH usando vagrant ssh comando e quindi trova il suo indirizzo IP con ip comando.

3. Configura rete pubblica

Nelle reti pubbliche o con bridge, tutte le macchine virtuali saranno nella stessa rete della macchina host. Ogni VM riceverà il proprio indirizzo IP da un server DHCP (se disponibile nella rete locale). Quindi tutte le VM agiranno come un semplice sistema fisico sulla rete e potranno comunicare con qualsiasi sistema nella rete.

Per configurare la rete pubblica o con bridge, modifica Vagrantfile, trova la seguente riga e decommentala:

config.vm.network "public_network"

Salva e chiudi il file. Riavvia la macchina virtuale per applicare le modifiche. La VM riceverà automaticamente un indirizzo IP.

Se vuoi impostare un IP statico, modifica la definizione di rete come di seguito:

config.vm.network "public_network", ip: "192.168.121.61"

4. Imposta il nome host

Puoi definire il nome host utilizzando config.vm.hostname impostazione nel Vagrantfile.

Modifica Vagrantfile nel tuo editor preferito e aggiungi/modifica la seguente riga:

config.vm.hostname = "myhost.ostechnix.example"

Salva e chiudi il file. La definizione sopra aggiungerà myhost.ostechnix.example riga in /etc/hosts file.

Riavvia Vagrant VM per rendere effettive le modifiche.

Verifica se il nome host è stato modificato:

[[email protected] ~]$ hostname -f
myhost.osechnix.example

Puoi anche controllare direttamente il contenuto di /etc/hosts file.

$ cat /etc/hosts

Risultato di esempio:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.1.1 myhost.osechnix.example myhost

5. Abilita più opzioni di rete

Ogni opzione di rete ha i suoi vantaggi e svantaggi. Per qualche motivo, potresti voler configurare tutte le opzioni di rete su una singola macchina virtuale. In tal caso, Vagrant ha la possibilità di abilitare più opzioni di rete. Tutto quello che devi fare è semplicemente definire le opzioni di rete una per una nel Vagrantfile come di seguito:

config.vm.hostname = "myhost.ostechnix.example"
config.vm.network "forwarded_port", guest: 80, host: 8080, auto_correct: true
config.vm.network "private_network", ip: "192.168.121.60"

Quando crei una nuova VM con questo Vagrantfile, Vagrant creerà una VM con i seguenti dettagli di rete:

  • imposta il nome host come myhost.otechnix.example
  • configurare il port forwarding
  • configura un privato con IP statico 192.168.121.60

Oltre a configurare più tipi di reti, possiamo anche definire più reti. Ad esempio, puoi definire più reti solo host con indirizzi IP diversi come di seguito.

config.vm.network "private_network", ip: "192.168.121.60"
config.vm.network "private_network", ip: "192.168.121.61"

Spero questo sia di aiuto. A questo punto, potresti avere un'idea di base sui tipi di rete Vagrant e su come configurare la rete in Vagrant dalla riga di comando. C'è altro da imparare. Ti consiglio di esaminare la documentazione ufficiale di Vagrant per una configurazione più dettagliata.


Linux
  1. Come modificare la porta SSH in Linux

  2. Come installare Vagrant su Linux

  3. Come configurare il tunneling SSH

  4. Come configurare UFW Firewall su Ubuntu 18.04

  5. Come configurare iptables in modo che una porta indesiderata non venga segnalata come filtrata

Come eseguire il ping di un numero di porta in Linux

Come eseguire il ping di un numero di porta specifico

Come installare e configurare Grafana

Come configurare NGINX su un server CentOS 7

Come modificare la porta SSH su Centos 7.x?

Come cambiare la porta SSH su Ubuntu?