GNU/Linux >> Znalost Linux >  >> Linux

Jak nakonfigurovat síť ve Vagrant

Vagrant je mezi vývojáři a inženýry DevOps tak populární, protože mohou nadále používat stávající vývojářské nástroje (např. editory, prohlížeče, debuggery atd.) na svém místním systému. Vývojáři mohou například synchronizovat soubory z hostujícího počítače do místního systému, použít svůj oblíbený editor k úpravě těchto souborů a nakonec je synchronizovat zpět do hostujícího počítače. Podobně, pokud vytvořili webovou aplikaci na virtuálním počítači, mohou k ní přistupovat a testovat ji z webového prohlížeče svého místního systému. V této příručce se podíváme, jak nakonfigurovat síť ve Vagrant tak, aby poskytovala přístup k počítači hosta z místního hostitelského systému.

Konfigurace sítě ve Vagrant

Vagrant nabízí následující tři možnosti sítě:

  1. Přesměrování portů
  2. Soukromá síť (síť pouze pro hostitele)
  3. Veřejná síť (přemostěná síť)

1. Konfigurace přesměrování portů

Ve výchozím nastavení můžeme přistupovat k virtuálním počítačům Vagrant přes ssh pomocí vagrant ssh příkaz. Když přistupujeme k virtuálnímu počítači přes SSH, Vagrant předá port 22 z hostujícího počítače na otevřený port v hostitelském počítači. Toto se nazývá přesměrování portů. Vagrant automaticky zpracovává tento proces přesměrování portů bez jakéhokoli zásahu uživatele. Můžete také přeposlat konkrétní port dle vašeho výběru. Pokud jste například přeposlali port 80 v hostujícím počítači na port 8080 na hostitelském počítači pak můžete přistupovat k webovému serveru přechodem na http://localhost:8080 na vašem hostitelském počítači.

Přesměrování portů lze nakonfigurovat ve "Vagrantfile". Přejděte do adresáře svého projektu Vagrant a otevřete Vagrantfile ve svém oblíbeném editoru.

Najděte následující řádek:

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

Odkomentujte jej a definujte, které porty kam přeposlat. V tomto příkladu přesměrovávám port 80 v hostu na port 8080 v hostiteli.

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

Nyní restartujte počítač Vagrant s aktualizovaným souborem Vagrant:

$ vagrant reload --provision

Ve výstupu uvidíte, že přesměrování portů je nakonfigurováno:

==> 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

Můžete také zničit virtuální počítač a znovu jej spustit pomocí aktualizovaného souboru Vagrantfile:

$ vagrant destroy <VM-name>
$ vagrant up

Nyní SSH do hostujícího počítače pomocí příkazu:

$ vagrant ssh

Nainstalujte si do něj webový server Apache. Pokud je virtuální počítač založený na Deb, spusťte:

$ sudo apt install apache2

Pokud se jedná o systém založený na RHEL, spusťte toto:

$ sudo yum install httpd

Spusťte službu Apache:

$ sudo systemctl enable --now httpd

Nyní otevřete webový prohlížeč ve svém hostitelském systému a přejděte na http://localhost:8080 adresu z vašeho prohlížeče. Ve vašem prohlížeči uvidíte testovací stránku Apache.

I když k webovému serveru přistupujeme pomocí URL http://localhost:8080 v hostitelském systému není obsluhován z místního webového serveru. Skutečný web (tj. testovací stránka Apache) je obsluhován z virtuálního počítače hosta a všechna skutečná síťová data jsou odesílána hostovi.

1.1. Co když port 8080 používá jiná aplikace?

V našem předchozím příkladu jsme předali port 80 z hosta na port 8080 v hostiteli. Jinými slovy, provoz odeslaný na port 8080 je ve skutečnosti přesměrován na port 80 na počítači hosta. Co když port 8080 aktuálně používá nějaká jiná aplikace? Ke kolizi portů dochází při spuštění více virtuálních počítačů. Můžete nevědomky přeposlat již použitý port. Bez obav! Vagrant má vestavěnou podporu pro detekci kolizí portů. Pokud je port již používán jinou aplikací, Vagrant to oznámí ve výstupu, takže můžete port buď uvolnit, nebo použít jiný port.

Vagrant je také dostatečně chytrý, aby automaticky našel a opravoval kolize portů. Pokud zjistí, že port je v kolizi s jiným portem, automaticky to opraví tím, že pro vás použije jakýkoli jiný nepoužívaný port.

Chcete-li povolit automatické opravy, přidejte další možnost auto_correct: true v definici přesměrování portů ve vašem Vagrantfile.

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

Ve výchozím nastavení Vagrant vybere port automatické opravy mezi portem 2200 a port 2250 rozsah. Můžete si také vybrat svůj vlastní rozsah definováním následujícího řádku ve Vagrantfile, jak je uvedeno níže.

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

Restartujte počítač Vagrant, aby se změny projevily:

1.2. Změnit síťový protokol

Ve výchozím nastavení používá Vagrant protokol TCP pro přesměrování portů. Pokud však chcete předávat pakety UDP, můžete použít protokol UDP.

Chcete-li použít port UDP, přidejte do souboru Vagrantfile následující definici:

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

Chcete-li použít změny, restartujte Vagrant VM.

2. Konfigurace privátní sítě

V privátní síti nebo síti pouze pro hostitele se vytvoří síťové připojení mezi hostitelským systémem a virtuálními počítači v hostitelském systému. Privátní síť je vytvořena pomocí virtuálního síťového adaptéru, který je viditelný pro hostitelský operační systém. Ostatní systémy v síti nemohou komunikovat s virtuálními počítači. V rámci hostitelského systému jsou povoleny všechny síťové operace.

Privátní síť může také fungovat jako DHCP server a má svou vlastní podsíť. Každý virtuální počítač v privátní síti získá IP adresu z tohoto IP prostoru. Můžeme tedy přistupovat k virtuálním počítačům přímo pomocí IP z hostitelského systému.

Chcete-li nakonfigurovat soukromou síť nebo síť pouze pro hostitele ve Vagrantu se statickou IP adresou, otevřete soubor Vagrantfile, najděte následující řádek a odkomentujte jej.

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

Zde 192.168.121.60 je IP adresa virtuálního počítače. Nahraďte to svou vlastní IP.

Restartujte virtuální počítač, aby se změny projevily.

Pokud chcete nastavit IP adresu automaticky z DHCP, upravte definici privátní sítě jako níže:

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

Virtuálnímu počítači bude přidělena náhodná IP adresa. Abyste mohli najít IP virtuálního počítače, musíte do něj vložit SSH pomocí vagrant ssh a poté vyhledejte jeho IP adresu pomocí ip příkaz.

3. Konfigurace veřejné sítě

Ve veřejných nebo přemostěných sítích budou všechny virtuální počítače ve stejné síti jako váš hostitelský počítač. Každý virtuální počítač obdrží svou vlastní IP adresu ze serveru DHCP (pokud je v místní síti k dispozici). Všechny virtuální počítače se tedy budou chovat jako další fyzický systém v síti a mohou komunikovat s jakýmkoli systémem v síti.

Chcete-li nakonfigurovat veřejné nebo přemostěné sítě, upravte soubor Vagrantfile, najděte následující řádek a zrušte jeho komentář:

config.vm.network "public_network"

Uložte a zavřete soubor. Chcete-li použít změny, restartujte virtuální počítač. VM automaticky získá IP adresu.

Pokud chcete nastavit statickou IP, stačí upravit definici sítě jako níže:

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

4. Nastavit název hostitele

Název hostitele můžete definovat pomocí config.vm.hostname nastavení ve Vagrantfile.

Upravte Vagrantfile ve svém preferovaném editoru a přidejte/upravte následující řádek:

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

Uložte a zavřete soubor. Výše uvedená definice přidá myhost.ostechnix.example řádek v /etc/hosts soubor.

Restartujte Vagrant VM, aby se změny projevily.

Ověřte, zda se název hostitele změnil:

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

Můžete také přímo zkontrolovat obsah /etc/hosts soubor.

$ cat /etc/hosts

Ukázkový výstup:

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. Povolit více možností sítě

Každá síťová možnost má své vlastní výhody a nevýhody. Z nějakého důvodu možná budete chtít nakonfigurovat všechny možnosti sítě na jeden virtuální počítač. Pokud ano, Vagrant má schopnost povolit více síťových možností. Jediné, co musíte udělat, je definovat možnosti sítě jednu po druhé ve Vagrantfile, jak je uvedeno níže:

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"
."

Když vytvoříte nový virtuální počítač pomocí tohoto souboru Vagrantfile, vagrant vytvoří virtuální počítač s následujícími podrobnostmi o síti:

  • nastavit název hostitele jako myhost.ostechnix.example
  • nakonfigurujte přesměrování portů
  • nakonfigurujte privátní se statickou IP 192.168.121.60

Kromě konfigurace více typů sítí můžeme také definovat více sítí. Můžete například definovat více sítí pouze pro hostitele s různými IP adresami, jak je uvedeno níže.

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

Snad to pomůže. V této fázi můžete získat základní představu o typech sítí Vagrant a jak konfigurovat sítě ve Vagrant z příkazového řádku. Je toho ještě co učit. Doporučuji vám nahlédnout do oficiální dokumentace Vagrant pro podrobnější konfiguraci.


Linux
  1. Jak změnit port SSH v Linuxu

  2. Jak nainstalovat Vagrant na Linux

  3. Jak nakonfigurovat UFW Firewall na Ubuntu 18.04

  1. Jak nainstalovat Vagrant v Linuxu

  2. Jak nakonfigurovat iptables tak, aby nechtěný port nebyl hlášen jako filtrovaný

  3. Vyčerpání síťového portu Linuxu

  1. Jak nakonfigurovat IP síť pomocí příkazu nmcli v Linuxu

  2. Jak změnit port SSH na VPS

  3. Jak nastavit SSH tunelování