Wie erreicht eine zusätzliche IPv4 den Proxmox-Gast, wenn kein Subnetz da ist?

Jede Maschine enthält eine IPv4. Diese Adresse bleibt auf dem Host und ist das Ziel für SSH. Braucht ein Gast eine eigene öffentliche Adresse, kommt sie einzeln dazu, $2 im Monat, höchstens 255 weitere. Das ist kein Prefix zum Aufteilen. Der Gast trägt eine davon als /32. Ohne Zusatzadresse gibt es nur Portweiterleitung.

vmbr0-Brücke oder NAT folgt der Adresszahl

Anleitungen zeigen zuerst zwei Bilder: den Gast an vmbr0 hängen oder auf dem Host NAT machen. Beides startet einen Gast. Auf dieser Maschine zählt zuerst die Adressliste. Die Konsole kann mehrere Adressen in einer Zeichenkette führen, getrennt durch Komma, Leerzeichen oder Semikolon. Nach dem Trennen ist die erste die Verwaltungsadresse, und SSH nutzt nur diese. Die folgenden dürfen an Gäste.

Die enthaltene Adresse kann nicht zugleich Login des Hosts und einzige öffentliche Adresse des Gasts sein. Wandert sie von vmbr0 in den Gast, fällt SSH zum Host weg. Jede Zusatzadresse gehört zu einem Gast. Ist die Zusatzzahl null, behält der Gast eine private Adresse, und von außen kommt Verkehr über einen gewählten Port der Verwaltungsadresse. Das ist NAT. Gibt es Zusatzadressen, teilt der Gast auf vmbr0 kein Prefix, das diese Bestellung nicht hat. Eine interne Brücke ohne physischen Port trägt jede Adresse als /32.

vmbr0Nur die Verwaltungsadresse
/32Jede Zusatzadresse
PortweiterleitungWenn nichts dazugekauft wurde
Adressen der BestellungBrücke des GastsWie der Gast nach außen tritt
Nur die VerwaltungsadresseInterne vmbr1Private Adresse, Ports leitet der Host weiter
IPv4 einzeln gekauftDieselbe vmbr1Eine öffentliche Adresse, Maske /32
/28 oder /29 aus einer AnleitungSo nicht anschließenDiese Bestellung hat dieses Prefix nicht

Welcher Name oder welches Zertifikat welche Adresse trägt, steht in einer anderen Notiz: Zusatzadressen einzeln zuweisen. Hier geht es nur um den Weg in den Proxmox-Gast.

Die Verwaltungsadresse bleibt auf dem Host

Bei der Bestellung Proxmox VE 8 oder Proxmox VE 9 wählen. Beide Images stehen in der Systemliste. Nach der Übergabe per SSH auf die Verwaltungsadresse. Ein USB-Installationsmedium gehört nicht zu diesem Ablauf, und die Netzwerkkarte wird im Installer nicht neu gewählt.

Vor dem Ändern der Datei den laufenden Stand lesen. In ip -4 addr liegt die SSH-Adresse auf vmbr0. In ip route show default ist das Gateway die Adresse nach via, und dev nennt vmbr0. Dieses Paar hat das Image schon gesetzt. Das Prefix muss nicht /32 sein. Es bleibt. Nicht auf das /24 oder /28 einer Anleitung umschreiben. Der physische Port steht bereits in bridge-ports von vmbr0 in /etc/network/interfaces. Nicht durch eth0 oder ens3 ersetzen, wenn ip link diesen Namen nicht zeigt.

Eine Zusatzadresse erscheint manchmal schon als Alias auf derselben Brücke, manchmal nur im Übergabehinweis. Die Zahl globaler IPv4 entspricht 1 plus der Zusatzmenge der Bestellung. Fehlt etwas, hier stoppen und ein Ticket öffnen. Keine Adresse einer anderen Maschine verwenden. Stimmt die Zahl, die Adressen für Gäste aus der Host-Konfiguration nehmen und die Verwaltungsadresse behalten. Dieselbe Adresse darf nicht Alias auf dem Host und Adresse auf dem Gast sein. Eingehender Verkehr trifft dann den Host, der Dienst im Gast sieht nichts.

Adresse, Prefix und Gateway auf vmbr0 nicht anfassen. Eine falsche Verwaltungsadresse beendet diese SSH-Sitzung. Die grafische Sitzung in der Konsole hängt nicht an dieser SSH; eine beschädigte Datei lässt sich von dort zurücksetzen. Die folgenden Schritte ändern die Verwaltungsadresse auf vmbr0 nicht.

Warum eine Subnetz-Anleitung den Gast startet und dann strandet

Eine allgemeine Anleitung setzt voraus, dass der Standort ein ganzes Prefix auf vmbr0 gelegt hat und das Gateway die erste Adresse dieses Prefix ist. Der Gast nimmt eine andere Adresse und kopiert die Maske des Hosts. Die NIC gilt als up, weil eine Adresse auf dem Interface steht. Beim Verlassen behandelt der Gast das Gateway als on-link und sendet ARP. Dieses Prefix gibt es auf dieser Maschine nicht, also antwortet nichts, und die Default-Route wird nicht benutzbar. Von außen ist der Gast eingeschaltet, der Port bleibt zu.

Eine andere Fassung hängt den Gast an vmbr0, trägt die Zusatz-IPv4 ein, kopiert das Gateway des Hosts und lässt die Maske bei /24 oder /28. Zusatzadressen sind Einzeladressen. Sie sind kein Prefix zum Unterteilen. Vorgelagert kommen sie an dieser Maschine an, nicht an einer Gast-MAC, die das Gateway beansprucht. ARP vom Gast auf vmbr0 erreicht den echten nächsten Hop nicht, oder der Rückweg landet noch auf dem alten Alias des Hosts. Die Adresse ist sichtbar. ping verlässt die Maschine nicht.

Eine dritte Stapelung schaltet Source-NAT ein, während der Gast glaubt, er besitze eine öffentliche Adresse. Ausgehende Pakete werden auf die Verwaltungsadresse umgeschrieben, der Rückweg passt nicht mehr zur Sitzung im Gast. Eine Adresse, die für sich stehen soll, bekommt kein Source-NAT. Ein Gast, der per Portweiterleitung erreicht wird, bekommt keine öffentliche Adresse. Beides liegt nicht auf derselben Adresse.

Jede Zusatzadresse als /32 auf eine interne Brücke

Die interne Brücke heißt vmbr1. Sie hat keinen physischen Port. Sie verbindet nur Host und Gäste. An /etc/network/interfaces anhängen. Der private Bereich darf wechseln, Host und Gast müssen ihn teilen. Ist 10.10.10.0/24 schon belegt, einen anderen privaten Bereich nehmen. 203.0.113.20 unten ist eine Dokumentationsadresse. Durch eine Zusatzadresse der Bestellung ersetzen, eine Route je Adresse.

Die Host-Strophe braucht auto vmbr1, address 10.10.10.1/24, bridge-ports none, bridge-stp off und bridge-fd 0. Jede Zusatzadresse ergänzt post-up ip route add 203.0.113.20/32 dev vmbr1. Nicht per via auf eine Gastadresse zeigen, die es noch nicht gibt. Zeigt die Route auf die Brücke, beantwortet der Gast mit der /32 dort ARP.

Weiterleitung und Reverse-Path stehen in /etc/sysctl.d/99-guest-route.conf, danach sysctl --system. Die Zeilen sind net.ipv4.ip_forward=1, net.ipv4.conf.all.rp_filter=2 und dasselbe rp_filter=2 auf vmbr0 und vmbr1. Ohne Weiterleitung erreicht der Host den Gast, der Gast das Außennetz nicht. Striktes Reverse-Path-Filtering verwirft diesen Verkehr: Die Zusatzadresse liegt auf dem Gast, die Antwort verlässt vmbr0, und der strikte Modus hält die Quelle nicht zu diesem Ausgang gehörig. Der lose Modus deckt nur diese Prüfung. Er ersetzt keine Firewall.

Die Interface-Datei mit ifreload -a anwenden. Danach in der bestehenden SSH-Sitzung einen Befehl ausführen und prüfen, dass die Verwaltungsadresse noch auf vmbr0 liegt. ip route get 203.0.113.20 soll dev vmbr1 zeigen. Eine Route nur in der laufenden Shell, nicht in der Datei, verschwindet nach dem Neustart, und der Gast sitzt wieder fest.

In Proxmox die Gast-NIC auf Brücke vmbr1 und Modell VirtIO stellen. An dieser NIC gibt es keinen NAT-Schalter. Im Gast die öffentliche Adresse als /32 setzen, Peer und Default-Gateway beide auf 10.10.10.1. Eine Debian-artige interfaces-Datei nutzt address 203.0.113.20/32, pointopoint 10.10.10.1 und gateway 10.10.10.1. Ubuntu-Netplan nutzt dieselbe /32, eine Default-Route via 10.10.10.1 und on-link: true. Nur die Cloud-Init-Felder in Proxmox mit /32 und Gateway zu füllen lässt diese On-Link-Route oft weg, der Gast sendet ARP für ein Gateway, das nicht auf dem Link liegt. Die Netzwerkdatei des Gasts schreiben, den Gast neu starten, ip route lesen.

Ein Gast mit eigener öffentlicher Identität nutzt eine Zusatzadresse. Der nächste Gast die nächste, weiter auf vmbr1, mit einer weiteren /32-Route. Mehrere Gäste nicht in ein erfundenes /28 legen. Auf dem Gast soll ip route get 1.1.1.1 als src die öffentliche Adresse zeigen, nicht 10.10.10.2. Ist die Quelle noch privat, sieht die Außenwelt die Verwaltungsadresse, und dieser Schritt ist nicht fertig.

Diese öffentliche Adresse nicht per Source-NAT umschreiben. Source-NAT gehört zum nächsten Abschnitt, wo der Gast keine Zusatzadresse hat. Liegt die öffentliche Adresse auf dem Gast, leitet der Host nur weiter.

Ohne Zusatzadresse nur Ports weiterleiten

Ist die Zusatzzahl null, keine öffentliche Adresse auf den Gast legen. vmbr1 bleibt bei 10.10.10.1/24. Der Gast nutzt eine Adresse daraus, zum Beispiel 10.10.10.2/24, Gateway 10.10.10.1. Der Gast hat keine eigene öffentliche Identität. Ein Dienst auf dem Gast ist erreichbar, indem ein Port der Verwaltungsadresse auf diese private Adresse zeigt.

Die Regeln in post-up der Host-Strophe vmbr1 schreiben, damit sie den Neustart überstehen. Eingehend: iptables -t nat -A PREROUTING -d VERWALTUNG -p tcp --dport 443 -j DNAT --to-destination 10.10.10.2:443. Ausgehend: iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o vmbr0 -j MASQUERADE. Auf Proxmox VE 8 und 9 laufen diese Befehle über iptables-nft. Vor -A mit -C prüfen und nicht anhängen, wenn die Regel schon da ist. Sonst stapelt jedes ifreload eine weitere Kopie.

TCP 22 der Verwaltungsadresse nicht weiterleiten. Das ist SSH zum Host. Sites, Schnittstellen und der eigene Fernzugriff des Gasts nutzen einen anderen externen Port. Braucht ein Windows-Gast RDP, kann ein gewählter Port der Verwaltungsadresse auf 3389 dieses Gasts zeigen. Port 22 des Hosts bleibt. Der Dienst im Gast muss auf der privaten Adresse oder auf allen Adressen lauschen. Lauscht er nur auf einer öffentlichen Adresse, die nie gesetzt wurde, hat die Weiterleitung keinen Prozess.

Portweiterleitung fügt keine Adressen hinzu und hebt die Portrate nicht. 250M, 1G und 2G sind eine eigene Zeile, keine davon begrenzt das Transfervolumen. Zehn Gäste, die über die Verwaltungsadresse hinausgehen, zeigen weiterhin diese eine Quelle. Verlangt eine Freigabeliste je Dienst eine eigene Quelle, zurück zum vorigen Abschnitt und Zusatzadressen einzeln kaufen. Weiterleitungsregeln erfinden kein Subnetz.

Dreimal von außerhalb des Standorts prüfen

  1. Die Verwaltungsadresse lässt noch einloggen

    Aus einem Büro- oder Heimnetz per SSH auf die erste Adresse. Die Sitzung landet auf dem Host, nicht auf einem Gast. Die ganze Konsolenzeichenkette nicht in SSH einfügen.

  2. Jede Zusatzadresse trifft ihren Gast

    Den echten Dienst auf jeder Zusatzadresse öffnen, die in Betrieb gehen soll. Auf dem Host zeigt ip route get auf vmbr1. Auf dem Gast zeigt ip -4 addr die /32. Ein curl der eigenen Adresse vom Host bleibt oft auf dem Loopback und sagt nichts über den Außenweg.

  3. Ohne Zusatzadresse den Port prüfen

    Von außen muss der weitergeleitete Port vom Gast antworten. Port 22 des Hosts muss weiter vom Host antworten. Beides muss gehen. Die Weiterleitung darf den Login nicht ersetzt haben.

  4. Nach dem Neustart noch einmal lesen

    Den Host neu starten. Verwaltungsadresse, interne Brücke, /32-Routen oder Portweiterleitungen müssen noch da sein. sysctl net.ipv4.ip_forward muss 1 sein. Fehlt ein Stück, die Interface-Datei korrigieren. Den Befehl nicht nur in dieser Sitzung wiederholen.

Stimmen Adresse und Route und der Außenweg bleibt zu, die Firewall ansehen. Ist die Firewall von Rechenzentrum oder Knoten aktiv, kann die Forward-Kette an der Default-Policy verwerfen. Zum Eingrenzen darf die Firewall an dieser einen Gast-NIC aus sein. Danach die konkreten Ports erlauben. Die Filterung des ganzen Hosts nicht dauerhaft leer lassen.

Im Gast kann die NIC ens18 oder eth0 heißen. Den Namen aus ip link in diesem Gast nehmen. Ein falscher Name heißt: Die Adresse erscheint nicht, und der Route-Befehl meldet nicht, dass ein Subnetz fehlt. Zuerst prüfen, ob das Interface up ist, dann ob der nächste Hop der Default-Route 10.10.10.1 ist.

Stückzahl und Monatsmiete laufen zusammen

Jede zusätzliche IPv4 kostet $2 im Monat. Die Bestellung nennt eine Stückzahl, keine Prefixlänge. Vier Adressen sind $8 im Monat. Zwanzig sind $40 im Monat. Zusammen mit der enthaltenen Adresse bleibt die Summe bei höchstens 256. Diese Adressen gehen mit Maschine, Platten, Bandbreite und System in eine Monatsmiete, danach gilt die Monatszahl. Ein Quartal ist das Dreifache, ein halbes Jahr das Sechsfache, ein Jahr das Zwölffache. Kein weiterer Rabatt. Keine Einrichtungsgebühr.

Die 128-GB-Maschine kostet $455 im Monat und enthält bereits eine IPv4 und 250M. Die 256-GB-Maschine kostet $612 im Monat, mit derselben Adressregel. Beide sind AMD EPYC 7543P, 32 Kerne und 64 Threads, mit DDR4-3200 ECC RDIMM. 256 GB ist diese Stufe, nicht zusätzlicher Speicher auf der 128-GB-Maschine. Die Speicherstufe bringt keine weiteren Adressen. Der Port auf 1G hebt die Miete um $248 im Monat und lässt die Adresszahl unverändert.

Die Maschine steht in Tokio, Japan. SSH zum Host nutzt die Verwaltungsadresse aus der Konsole. Ein Windows-Gast nutzt RDP auf diesem Gast. Das ersetzt die Verwaltungsadresse des Hosts nicht. Proxmox VE 8 und 9 stehen in der Liste der freien Images und werden als installiertes System geliefert, nicht als getrenntes Installationsmedium.

Jede Zusatzadresse als eigene /32.

Ab $455 im Monat