Beste Möglichkeit, Ubuntu 20.04 Dekstop Host und Ubuntu 20.04 Server Guest für Internetzugang, SSH und Host-zu-Gast-Kommunikation zu konfigurieren

Beste Möglichkeit, Ubuntu 20.04 Dekstop Host und Ubuntu 20.04 Server Guest für Internetzugang, SSH und Host-zu-Gast-Kommunikation zu konfigurieren

AKTUALISIEREN
Sollte jemand auf jeden Fall über diesen Beitrag stolpern, funktioniert die folgende Lösung tatsächlich. Negative Stimmen für diese Frage ohne Feedback/konstruktive Kritik oder Fehleridentifizierung scheinen ungerechtfertigt.

Ziel

Ich brauche die beste Möglichkeit, einen Ubuntu-Server vbox6.1 als Gast einzurichten, damit er Internetzugriff hat und dem Ubuntu 20.04-Desktop-Host den Zugriff per SSH auf die Box ermöglicht.

Fortschritt / Forschung
Obwohl die Verwendung von zwei Netzwerkadapterkombinationen mit Virtualbox-Servern zum Herstellen der Host-Gast-Kommunikation und des Internetzugangs für die Virtualbox eine sehr gängige Lösung ist, sind mit diesen gängigen Methoden bestimmte Einschränkungen verbunden.

Kombinationsmethode mit überbrücktem Adapter und NAT-Adapter – bei weitem die einfachste und schnellste Methode, aber mit dem Vorbehalt, dass Sie, wenn Sie einen Killswitch mit Ihrer UFW-Firewall/Ihrem VPN verwenden, die Firewall-Einstellungen sehr oft basierend auf dem Wi-Fi-Netzwerk anpassen müssen, mit dem Sie verbunden sind, da sich Gateway-Adressen ändern (häufiges Problem bei Verwendung statischer IP-Adressen auf Vbox). Wenn Sie sich sehr gut mit Firewall-Regeln auskennen, ist diese Methode für Sie geeignet.

Kombinationsmethode aus NAT-Adapter und Host-Only-Adapter - Der NAT-Adapter bietet einfachen Internetzugang innerhalb der Box und der Host-Only-Adapter bietet Host-Gast-Kommunikation für Anwendungen wie Apache. Der Vorbehalt hierbei ist, dass sich einige Anwendungen bei der Installation basierend auf der primären Adapter-IP-Adresse selbst konfigurieren (das ist mein aktuelles Problem) und da die NAT-IP-Adresse nicht mit dem Host kommunizieren kann, entsteht ein Problem.

Die Lösung, an der ich arbeite und die anfangs vielleicht etwas schwierig einzurichten ist, besteht darin, einen Host-Only-Adapter so zu konfigurieren, dass der Internetzugriff über den primären Netzwerkadapter des Hosts erfolgt.

BEDEUTUNG
EINSvboxnet0-Host-Only-Adapter zur Bereitstellung von SSH, Host-Gast-Kommunikation und externem Internetzugriff für beliebig viele Vboxen mit statischen oder dynamischen IPs … keine Probleme mehr mit der Vbox-Konnektivität.

Hier sind die Vor- und Nachteile zusammen mit meinen Fortschrittsschritten.

Schritt 1
Erstellen Sie einen Host-Only-Adapter für Ihre Maschine (vboxnet0). Meine hat die IP-Adresse 192.168.51.1

PROFI:
Sie haben die Möglichkeit, den DHCP-Server zu aktivieren, wenn Sie mehrere Vboxen auf demselben Host-Only-Adapter betreiben möchten

Schritt 2:
Erstellen Sie eine statische IP-Konfiguration für Ihre vbox (meine ist ein Ubuntu 20.04-Server). Sie können diesen Schritt optional überspringen und einfach eine dynamische IP verwenden

ich benutze

network:
  version: 2
  renderer: networkd
  ethernets:
        enp0s3:
            addresses: ['192.168.51.47/24']
            gateway4: 192.168.51.1
            nameservers:
                addresses: [127.0.0.1, 192.168.51.1, 8.8.8.8]

Profi
Mit einer statischen IP auf Ihrem Computer können Sie per SSH auf die Box zugreifen, ohne einen zweiten NAT-Adapter zu verwenden.

Schritt drei

Erstellen Sie eine einfache, minimale UFW-Firewall-Regel für die Host-Gast-Kommunikation

Dies ist alles, was zum Konfigurieren eines Host-Only-Adapters für die Arbeit mit UFW erforderlich ist:

ufw allow allow in|out on vboxnet0

Profi

  • Mit dieser Methode können Sie sofort Host-Gast-Kommunikation für mehrere Vboxen mit einer einzigen Firewall-Regel erstellen, solange sich jede Box auf vboxnet0 befindet (ideal, wenn Sie viele Vboxen erstellen möchten, die Host-Gast-Kommunikation benötigen).

Schritt vier
ErstellendauerhaftInternetzugang für vboxnet0 durch gemeinsame Nutzung des primären Netzwerkadapters des Hostcomputers mithilfe von MASQUERADE

Das ist mein aktuellerPROBLEM. Ich kann nur einen temporären Internetzugang für vboxnet0 erstellen, da ich mich mit IP-Tabellen und MASQUERADE einfach nicht gut genug auskenne.

Als vorübergehende Lösung verwende ich diese 4 Befehle in einem Bash-Skript:

sudo iptables -A FORWARD -o wg0 -i vboxnet0 -s 192.168.51.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE

Wobei wg0 der primäre Netzwerkadapter meines Hostcomputers ist.

An diesem Punkt sollten Sie in der Lage sein, 8.8.8.8 aus der Vbox heraus anzupingen, um sicherzustellen, dass es über Internetzugriff verfügt.

Die obigen Befehle habe ich erhalten von:
https://help.ubuntu.com/community/Internet/ConnectionSharing

Kann jemand die Host-Only-Adaptermethode zum Erstellen des Internetzugangs für eine oder mehrere Vboxen fertigstellen/verfeinern?

Das scheint vielen Ubuntu-Benutzern zu helfen. Mit dieser Methode sind Ihre Vboxen "netzwerk tragbar" und haben Sie nach der Erstkonfiguration mit minimalem Aufwand Zugriff auf das Internet.

Die einzigeNachteilehier sind: Schwierige Ersteinrichtung & Vboxen sind für andere Maschinen in Ihrem LAN nicht zugänglich, was vernachlässigbar ist, wenn Sie nur lokale Webentwicklung betreiben.

Antwort1

Diese Lösung soll das Leben von Ubuntu-Entwicklern wesentlich bequemer und sicherer machen. Ich hoffe, dass ein Administrator und/oder andere es für angebracht halten, meine ursprüngliche Frage wieder hochzustufen, da dies eine ziemlich häufige Frage für Leute ist, die Ubuntu für die Webentwicklung verwenden möchten.

Auf jeden Fall hatte ich kürzlich die Softwareanforderung für einen Host-Only-Adapter für Virtualbox mit Internetzugang. Das bedeutet, dass die weit verbreitete Dual-Adapter-Methode nicht ausreichen würde. Während ich dieses Problem löste, stieß ich im Wesentlichen auf eine supersichere, superpraktische und supereffiziente Ubuntu/Virtualbox-Entwicklungsumgebung. Ich veröffentliche unten alle meine Schritte, um anderen Webentwicklern zu helfen, die nach einer effizienteren Web-Entwicklungsumgebung suchen.

Zunächst ein kurzer Überblick:

Kombimethode für Bridged-Adapter und NAT-Adapter

Vorteile:

  • Einfach und schnell einzurichten, wenn Sie mit UFW vertraut sind

Nachteile:

  • erfordert die Konfiguration von 2 Netzwerkschnittstellen im Gast
  • Gäste mit statischen IP-Adressen haben möglicherweise aufgrund von Gateway-Werten Probleme beim Wechsel des WLAN-Netzwerks
  • erfordert eine erweiterte Konfiguration der Firewall
  • fördert die Verwendung von /etc/hostszur Auflösung lokaler Domänennamen (wird mit der Zeit umständlich)

NAT-Adapter und Host-Only-Adapter

Vorteile:

  • Einfach einzurichten
  • Minimale Firewall-Konfiguration

Nachteile:

  • erfordert die Konfiguration von 2 Netzwerkschnittstellen im Gast
  • Einige Softwarepakete verwenden bei der Installation die Standard-IP, sodass die Standardadressen 10.XXX nicht geeignet sind
    (in meiner Situation würde das Erstellen einer benutzerdefinierten NAT-Adresse über die Virtualbox-Einstellungen nicht helfen, da meine Software nur unter der Standard-NAT-Adresse installiert wird und die NAT-Adresse nicht geroutet werden kann und für den Host nicht zugänglich ist).
  • erfordert eine erweiterte Konfiguration der Firewall
  • fördert die Verwendung von /etc/hostszur Auflösung lokaler Domänennamen (wird mit der Zeit umständlich)

Die effizienteste Lösung:
Einzelner Host-Only-Adapter mit Internetzugang.

Host-Only-Adapter mit Internet-Zugriffsmethode

Vorteile:

  • ein Adapter für alle Gäste
  • vereinfachte Firewall-Konfiguration
  • vereinfachte Vernetzung der Gäste
  • Gäste verhalten sich eher wie Produktionsserver, die normalerweise über eine einzige Netzwerkschnittstelle „eth0“ verfügen.
  • völliger Verzicht auf /etc/hostsdie Nutzung

Nachteile:

  • schwierigere Erstkonfiguration.

Nachdem wir das oben Gesagte verstanden haben, können wir beginnen:

Ich gehe davon aus:

  1. Sie haben die neueste Version von Virtualbox installiert
  2. du hast einUFW-Firewall mit VPN-KillSwitchbereits konfiguriert. (Achten Sie auf den Abschnitt „IP-Masquerade“, wir werden noch einmal darauf zurückkommen.)
  3. Sie haben bereits einen Gastserver in Virtualbox erstellt und einen SSH-Pub-Schlüssel für Ihren Benutzer hinzugefügt
  4. Ein Webprojekt, das für den Webzugriff in Ihrem Gast bereit ist und eine Domäne mit der Endung ".test" hat (d. h. www.beispiel.test)

Schritt 1

InVirtualbox>Dateien>Host-Netzwerk-ManagerErstellen Sie einen Host-Only-Adapter für Ihre Maschine (z. B. vboxnet0). Für diese Anleitung hat meiner die IP-Adresse 192.168.51.1

Schritt 2

InVirtualbox > Einstellungen > Netzwerk, klicken "Adapter aktivieren" für Adapter 1 und für "Angefügt an" Wählen Sie den vboxnet0-Namen aus, den Sie in " erstellt haben.Schritt 1"

Schritt 3

Erstellen Sie eine statische IP-Konfiguration für Ihren Gastserver (meiner ist ein Ubuntu 20.04-Server). Dies ist für die SSH- und Domänennamenauflösung erforderlich, aber Sie können eine dynamische IP verwenden, wenn Sie SSH/DNS nicht benötigen.

Für Ubuntu Server verwende ich:

network:
  version: 2
  renderer: networkd
  ethernets:
        enp0s3:
            addresses: ['192.168.51.47/24']
            gateway4: 192.168.51.1  #**NOTE** Your vboxnet0 ip address is the gateway for your static ip address.
            nameservers:
                addresses: [127.0.0.1, 192.168.51.1, 8.8.8.8]

Erinnern
Führen Sie #netplan applyund/oder aus, #netplan --debug generateum Ihre Tippfehler und Fehler zu finden.

Starten Sie Ihren Gast neu, um sicherzustellen, dass die Einstellungen wirksam werden.

Schritt vier

Erstellen Sie eine einfache, minimale UFW-Firewall-Regel, um die Host-Gast-Kommunikation zu ermöglichen. Das ist alles, was Sie brauchen, um einen Host-Only-Adapter für die Arbeit mit UFW zu konfigurieren:

$sudo ufw allow in on vboxnet0 && sudo ufw allow out on vboxnet0

An diesem Punkt sollten Sie die statische IP Ihres Gastes vom Host aus anpingen und sich per SSH beim Host anmelden.

Testen mit: ssh -p 22 -i ~/.ssh/id_rsa root@your-guest's-static-ip address

ping -c 5 your-guest's-static-ip address

Schritt fünf

Erstellen Sie permanenten Internetzugriff für vboxnet0, indem Sie den primären Netzwerkadapter des Hostcomputers mithilfe von MASQUERADE freigeben. Als Sie Ihren VPN-Killswitch konfiguriert haben, mussten Sie IP-Masquerading für die Adresse Ihres VPN verwenden, indem Sie Folgendes bearbeiten /etc/ufw/before.rules. Wir werden diese Datei erneut bearbeiten.

sudo nano /etc/ufw/before.rules

In diesem Abschnitt der Datei:

#NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]

Hinzufügen:

-A POSTROUTING -s 192.168.51.1/24 -j MASQUERADE#NOTIZDies ist die IP-Adresse Ihres vboxnet0-Host-Only-Adapters, der als Gateway für die statische IP-Adresse Ihres Gastes fungiert.

Schließen und speichern Sie die Datei

Jetzt wird der gesamte Datenverkehr 192.168.51.1 über die primäre Netzwerkschnittstelle des Hosts gesendet, auch wenn sich diese ändert (z. B. WLAN vs. LAN).

Sie können dies testen, indem Sie auf Ihren VBox-Gast zugreifen und in der Befehlszeile Folgendes ausführen:
ping -c 5 8.8.8.8

Bei Erfolg hat Ihr Host-Only-Adapter jetzt Internetzugang.

Schritt 6

Dies ist der letzte und bei weitem komplexeste Schritt. An diesem Punkt müssen Sie nur noch dnsmasq installieren und konfigurieren, damit Ihre Virtualbox-Webentwicklungsumgebung einsatzbereit ist, damit Domänennamen von Ihrem Gastserver lokal aufgelöst werden können.Seitenleistednsmasq kann offensichtlich mit den oben genannten kombinierten Netzwerkadaptermethoden verwendet werden, um die Verwendung von zu vermeiden /etc/hosts, aber bei Verwendung eines einzelnen Host-Only-Adapters ist dnsmasq erforderlich, um lokale Domänennamen aufzulösen.

  1. Deaktivieren und Stoppen von systemd behoben

    $ sudo systemctl deaktiviert systemd-aufgelöst
    $ sudo systemctl stoppt systemd-aufgelöst

  2. Symlink entfernen /etc/resolv.confund Datei entfernen

    $ ls -lh /etc/resolv.conf
    $ sudo rm /etc/resolv.conf

  3. Erstellen Sie ein neues / etc/resolv.conmit den folgenden Werten:

    $ sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolv.conf' #(Auflösung von Domänennamen durch den Hostcomputer)

    $ sudo bash -c 'echo "nameserver 208.67.222.222" >> /etc/resolv.conf' #(OpenDNS öffentliche DNS-Server-IP für externes Internet)

    $ sudo bash -c 'echo "Nameserver - statische IP-Adresse Ihres Gastes" >> /etc/resolv.conf'

  4. Installieren Sie dnsmasq

    $ sudo apt installiere dnsmasq

  5. Fügen Sie .test zur dnsmasq-Konfigurationsdatei hinzu:

    $ sudo bash -c 'echo "address=/.test/statische IP-Adresse Ihres Gastes" >> /etc/dnsmasq.conf'

NOTIZ: Leute, die WordPress-Multisites entwickeln, die eine Wildcard-Domänenauflösung benötigen, können Folgendes verwenden:

$ sudo bash -c 'echo "address=/example.test/your-guest's-static-ip address" >> /etc/dnsmasq.conf'
  1. Erstellen Sie einen Verzeichnisauflöser für die statische IP-Adresse des Gastes:

    $sudo mkdir -v /etc/resolver und sudo bash -c 'echo "Nameserver - statische IP-Adresse Ihres Gastes" > /etc/resolver/test'

  2. Starten Sie dnsmasq und den Netzwerkmanager neu.

    $ sudo systemctl restart dnsmasq $ sudo systemctl restart Netzwerkmanager

  3. Testen Sie Ihr DNSMASQ-Setup

a.) Öffnen Sie Ihren Browser und bestätigen Sie, dass Sie weiterhin externen Internetzugang haben

b.) ausführen dig example.testSie sollten die statische IP-Adresse Ihres Gastservers sehen können

c.) Öffnen Sie im Browser Ihres Hostcomputers example.test

KNALL!Erledigt.

Mit dieser Web-Entwicklungsumgebung können Sie Wi-Fi-Netzwerke nach Belieben ändern, ohne dass Probleme mit UFW-/Gast-IP-Adressen auftreten. Sie haben nur einen Host-Only-Adapter, den Sie für alle zukünftigen Gäste verwenden, die Sie erstellen, können Gäste einfacher miteinander vernetzen und müssen /etc/hostsfür Ihre Projekte keine Datei mehr zum Auflösen lokaler Domänennamen verwenden, da dies automatisch von dnsmasq erledigt wird.

Meine Quellen:
https://unix.stackexchange.com/questions/304050/how-to-avoid-conflicts-between-dnsmasq-and-systemd-resolved
https://brunopaz.dev/blog/einen-lokalen-DNS-Server-für-Ihre-Projekte-unter-Linux-mit-DNSMASQ einrichten/
https://www.stevenrombauts.be/2018/01/use-dnsmasq-instead-of-etc-hosts/#configure-dnsmasq
https://linuxize.com/post/wie-man-eine-firewall-mit-ufw-unter-ubuntu-20-04-einrichtet/
https://superuser.com/questions/1237463/virtualbox-host-only-with-internet
https://www.stevenrombauts.be/2018/01/use-dnsmasq-instead-of-etc-hosts/#configure-dnsmasq https://medium.com/soulweb-academy/docker-local-dev-stack-with-traefik-https-dnsmasq-locally-trusted-certificate-for-ubuntu-20-04-5f036c9af83d

verwandte Informationen