GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So konfigurieren Sie das Netzwerk in Vagrant

Landstreicher ist bei Entwicklern und DevOps-Ingenieuren so beliebt, weil sie bestehende Entwicklungswerkzeuge (z. B. Editoren, Browser, Debugger usw.) auf ihrem lokalen System weiter verwenden können. Beispielsweise können die Entwickler die Dateien von einem Gastcomputer mit dem lokalen System synchronisieren, ihren bevorzugten Editor verwenden, um diese Dateien zu bearbeiten und sie schließlich wieder mit dem Gastcomputer zu synchronisieren. Ebenso können sie, wenn sie eine Webanwendung auf der VM erstellt haben, über den Webbrowser ihres lokalen Systems auf diese Anwendung zugreifen und sie testen. In diesem Handbuch erfahren Sie, wie Sie das Netzwerk in Vagrant konfigurieren, um den Zugriff auf den Gastcomputer vom lokalen Hostsystem aus zu ermöglichen.

Konfigurieren Sie das Netzwerk in Vagrant

Vagrant bietet die folgenden drei Netzwerkoptionen an:

  1. Portweiterleitung
  2. Privates Netzwerk (Host-Only-Netzwerk)
  3. Öffentliches Netzwerk (überbrücktes Netzwerk)

1. Portweiterleitung konfigurieren

Standardmäßig können wir mit vagrant ssh Befehl. Wenn wir über SSH auf eine VM zugreifen, leitet Vagrant Port 22 vom Gastcomputer an einen offenen Port im Hostcomputer weiter. Dies wird als Portweiterleitung bezeichnet. Vagrant verarbeitet diesen Portweiterleitungsprozess automatisch ohne Eingriff des Benutzers. Sie können auch einen bestimmten Port Ihrer Wahl weiterleiten. Zum Beispiel, wenn Sie Port 80 weitergeleitet haben in der Gastmaschine auf Port 8080 Auf dem Host-Rechner können Sie dann auf den Webserver zugreifen, indem Sie zu http://localhost:8080 navigieren auf Ihrem Host-Rechner.

Die Portweiterleitung kann im "Vagrantfile" konfiguriert werden. Gehen Sie zu Ihrem Vagrant-Projektverzeichnis und öffnen Sie Vagrantfile in Ihrem bevorzugten Editor.

Suchen Sie die folgende Zeile:

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

Kommentieren Sie es aus und definieren Sie, welche Ports wohin weitergeleitet werden sollen. In diesem Beispiel leite ich Port 80 im Gast an Port 8080 im Host weiter.

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

Starten Sie nun den Vagrant-Rechner mit der aktualisierten Vagrant-Datei neu:

$ vagrant reload --provision

Sie werden sehen, dass die Portweiterleitung in der Ausgabe konfiguriert ist:

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

Sie können die VM auch zerstören und mit aktualisierter Vagrantfile erneut ausführen:

$ vagrant destroy <VM-name>
$ vagrant up

Verbinden Sie sich nun per SSH mit dem Befehl:

mit dem Gastcomputer
$ vagrant ssh

Installieren Sie den Apache-Webserver darin. Wenn die VM Deb-basiert ist, führen Sie Folgendes aus:

$ sudo apt install apache2

Wenn es sich um ein RHEL-basiertes System handelt, führen Sie Folgendes aus:

$ sudo yum install httpd

Starten Sie den Apache-Dienst:

$ sudo systemctl enable --now httpd

Öffnen Sie nun den Webbrowser in Ihrem Hostsystem und navigieren Sie zu http://localhost:8080 Adresse aus Ihrem Browser. Sie sehen die Apache-Testseite in Ihrem Browser.

Obwohl wir mit der URL http://localhost:8080 auf den Webserver zugreifen im Hostsystem wird es nicht vom lokalen Webserver bereitgestellt. Die eigentliche Website (d. h. die Apache-Testseite) wird von der virtuellen Gastmaschine bereitgestellt, und alle tatsächlichen Netzwerkdaten werden an den Gast gesendet.

1.1. Was ist, wenn der Port 8080 von einer anderen Anwendung verwendet wird?

In unserem vorherigen Beispiel haben wir den Port 80 vom Gast an den Port 8080 im Host weitergeleitet. Mit anderen Worten, der an Port 8080 gesendete Datenverkehr wird tatsächlich an Port 80 auf dem Gastcomputer weitergeleitet. Was ist, wenn eine andere Anwendung derzeit den Port 8080 verwendet? Portkollisionen treten auf, wenn mehrere VMs ausgeführt werden. Sie können einen bereits verwendeten Port unwissentlich weiterleiten. Keine Bange! Vagrant verfügt über eine integrierte Unterstützung für die Erkennung von Portkollisionen. Wenn der Port bereits von einer anderen Anwendung verwendet wird, meldet Vagrant dies in der Ausgabe, sodass Sie entweder den Port freigeben oder einen anderen Port verwenden können.

Vagrant ist auch intelligent genug, um Portkollisionen automatisch zu finden und zu korrigieren. Wenn es feststellt, dass ein Port mit einem anderen Port kollidiert, wird es automatisch korrigiert, indem es einen anderen unbenutzten Port für Sie verwendet.

Um die Autokorrektur zu aktivieren, fügen Sie eine zusätzliche Option auto_correct: true hinzu in der Portweiterleitungsdefinition in Ihrem Vagrantfile.

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

Standardmäßig wählt Vagrant den Autokorrekturport zwischen Port 2200 und Port 2250 Angebot. Sie können auch Ihren eigenen benutzerdefinierten Bereich wählen, indem Sie die folgende Zeile in der Vagrant-Datei wie unten definieren.

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

Starten Sie den Vagrant-Computer neu, um die Änderungen zu übernehmen:

1.2. Netzwerkprotokoll ändern

Standardmäßig verwendet Vagrant das TCP-Protokoll für die Portweiterleitung. Sie können jedoch das UDP-Protokoll verwenden, wenn Sie UDP-Pakete weiterleiten möchten.

Um den UDP-Port zu verwenden, fügen Sie die folgende Definition in Ihrer Vagrant-Datei hinzu:

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

Starten Sie Vagrant VM neu, um die Änderungen zu übernehmen.

2. Privates Netzwerk konfigurieren

Bei privaten oder Host-only-Netzwerken wird eine Netzwerkverbindung zwischen dem Hostsystem und den VMs auf dem Hostsystem erstellt. Das private Netzwerk wird mithilfe eines virtuellen Netzwerkadapters erstellt, der für das Hostbetriebssystem sichtbar ist. Die anderen Systeme im Netzwerk können nicht mit den VMs kommunizieren. Alle Netzwerkoperationen sind innerhalb des Hostsystems erlaubt.

Das private Netzwerk kann auch als DHCP-Server fungieren und hat ein eigenes Subnetz. Jede VM im privaten Netzwerk erhält eine IP-Adresse aus diesem IP-Bereich. Wir können also direkt über die IP des Hostsystems auf die VMs zugreifen.

Um private oder Host-Only-Netzwerke in Vagrant mit statischer IP-Adresse zu konfigurieren, öffnen Sie die Vagrant-Datei, suchen Sie die folgende Zeile und kommentieren Sie sie aus.

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

Hier, 192.168.121.60 ist die IP-Adresse der VM. Ersetzen Sie diese durch Ihre eigene IP.

Starten Sie die VM neu, um die Änderungen zu übernehmen.

Wenn Sie die IP-Adresse automatisch von DHCP festlegen möchten, ändern Sie die Definition des privaten Netzwerks wie folgt:

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

Der VM wird eine zufällige IP-Adresse zugewiesen. Um die IP einer VM zu finden, müssen Sie mit vagrant ssh Befehl und finden Sie dann seine IP-Adresse mit ip Befehl.

3. Öffentliches Netzwerk konfigurieren

In öffentlichen oder überbrückten Netzwerken befinden sich alle VMs im selben Netzwerk wie Ihr Hostcomputer. Jede VM erhält ihre eigene IP-Adresse von einem DHCP-Server (falls im lokalen Netzwerk verfügbar). Alle VMs verhalten sich also wie ein weiteres physisches System im Netzwerk und können mit jedem System im Netzwerk kommunizieren.

Um öffentliche oder überbrückte Netzwerke zu konfigurieren, bearbeiten Sie Vagrantfile, suchen Sie die folgende Zeile und kommentieren Sie sie aus:

config.vm.network "public_network"

Speichern und schließen Sie die Datei. Starten Sie die VM neu, um die Änderungen zu übernehmen. Die VM erhält automatisch eine IP-Adresse.

Wenn Sie eine statische IP festlegen möchten, ändern Sie einfach die Netzwerkdefinition wie folgt:

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

4. Hostnamen festlegen

Sie können den Hostnamen mit config.vm.hostname definieren Einstellung in der Vagrantfile.

Bearbeiten Sie Vagrantfile in Ihrem bevorzugten Editor und fügen Sie die folgende Zeile hinzu/ändern Sie sie:

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

Speichern und schließen Sie die Datei. Die obige Definition fügt myhost.ostechnix.example hinzu Zeile in /etc/hosts Datei.

Starten Sie Vagrant VM neu, um die Änderungen zu übernehmen.

Überprüfen Sie, ob der Hostname geändert wurde:

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

Sie können den Inhalt von /etc/hosts auch direkt überprüfen Datei.

$ cat /etc/hosts

Beispielausgabe:

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. Aktivieren Sie mehrere Netzwerkoptionen

Jede Netzwerkoption hat ihre eigenen Vor- und Nachteile. Aus irgendeinem Grund möchten Sie möglicherweise alle Netzwerkoptionen für eine einzelne VM konfigurieren. In diesem Fall kann Vagrant mehrere Netzwerkoptionen aktivieren. Alles, was Sie tun müssen, ist, die Netzwerkoptionen einzeln in der Vagrant-Datei wie unten zu definieren:

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"

Wenn Sie mit dieser Vagrant-Datei eine neue VM erstellen, erstellt Vagrant eine VM mit den folgenden Netzwerkdetails:

  • setzen Sie den Hostnamen als myhost.ostechnix.example
  • Portweiterleitung konfigurieren
  • konfiguriere einen privaten mit der statischen IP 192.168.121.60

Neben der Konfiguration mehrerer Arten von Netzwerken können wir auch mehrere Netzwerke definieren. Beispielsweise können Sie mehrere Host-Only-Netzwerke mit unterschiedlichen IP-Adressen wie unten definieren.

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

Hoffe das hilft. In dieser Phase haben Sie möglicherweise eine grundlegende Vorstellung von Vagrant-Netzwerktypen und der Konfiguration von Netzwerken in Vagrant über die Befehlszeile. Es gibt noch mehr zu lernen. Ich empfehle Ihnen, die offizielle Vagrant-Dokumentation für eine detailliertere Konfiguration zu lesen.


Linux
  1. So ändern Sie den SSH-Port unter Linux

  2. So installieren Sie Vagrant unter Linux

  3. So installieren Sie Vagrant unter Linux

  4. So richten Sie SSH-Tunneling ein

  5. So konfigurieren Sie die UFW-Firewall unter Ubuntu 18.04

So pingen Sie eine Portnummer in Linux an

So pingen Sie eine bestimmte Portnummer an

So installieren und konfigurieren Sie Grafana

So konfigurieren Sie NGINX auf einem CentOS 7-Server

Wie ändere ich den SSH-Port auf Centos 7.x?

Wie ändere ich den SSH-Port auf Ubuntu?