Proxmox VE 9 • Netzwerk für virtuelle Maschinen • Anleitung

Einer Proxmox-VM eine öffentliche IP-Adresse zuweisen

Bei der Übergabe Ihres Servers wurde eine IPv4-Adresse darauf eingerichtet, der Rest blieb unangetastet. Das ist Absicht, und diese Seite zeigt Ihnen, wie Sie den Rest erledigen. Es gibt drei Wege, und keiner dauert lange: Setzen Sie die Maschine mit eigener Adresse direkt ins Netz, leiten Sie ihren Verkehr über den Host oder verstecken Sie eine ganze Reihe von Maschinen hinter der Adresse, die Sie bereits haben. Wir haben alle drei vor dem Schreiben dieser Anleitung im eigenen Netz getestet.

Keine vorherige Registrierung nötig Kein Neustart erforderlich Immer jemand am Telefon

Schritt-für-Schritt-Anleitung

Lesen Sie die ersten beiden. Danach sind die Schritte drei, vier und fünf Alternativen — wählen Sie den, der zu Ihrem Vorhaben passt.

1

Wo Ihre Adressen liegen und welches Gateway jede einzelne nutzt

Suchen Sie nach der E-Mail mit dem Betreff Dedicated Server Setup, die am Tag der Bereitstellung verschickt wurde. Sie listet alles auf, was dem Server zugeteilt ist: zuerst die IPv4-Adressen, dann eventuelle IPv6. Dieselbe Liste finden Sie in Ihrem Konto auf der Seite des Servers im Bereich Access, Networking & rDNS.

Auf einem Proxmox-Server ergänzt diese E-Mail eine Zeile unter der Liste: Der Host hat nur die erste Adresse erhalten, die übrigen sind für Sie bestimmt — für virtuelle Maschinen oder auch für den Host, falls er mehr als eine halten soll. Wir richten eine einzige Adresse ein, damit die Maschine erreichbar hochfährt, und hören dann auf. Konfigurieren Sie alle auf dem Host, antwortet er für alle, und Ihren virtuellen Maschinen bleibt nichts zu beanspruchen.

Zwei Zahlen zählen bei jeder Adresseingabe. Die Netzmaske ist /24, also 255.255.255.0. Das Gateway ist der eigene Bereich der Adresse, endend auf .1 — eine Adresse in 203.0.113.0/24 nutzt also 203.0.113.1. Gemeinsam vergebene Adressen liegen nebeneinander und teilen sich ein Gateway. Adressen, die Monate später zu einem Server hinzukommen, können aus einem anderen Bereich von uns stammen und nutzen dann ihr eigenes .1. Genau hier zu irren ist der häufigste Grund, warum eine neue virtuelle Maschine nichts erreicht, und es kostet einen ganzen Nachmittag.

Für DNS richten wir auf dem Host 209.244.0.3 ein. Richten Sie Ihre virtuellen Maschinen dorthin aus, wohin Sie möchten.

2

Sehen, was auf dem Host bereits eingerichtet ist

Melden Sie sich per SSH als root an und werfen Sie einen Blick darauf:

ip -br addr
cat /etc/network/interfaces

Auf einer frisch von uns gebauten Maschine liest sich diese Datei ungefähr so, mit Ihrem Interface-Namen und Ihrer eigenen ersten Adresse statt der gezeigten:

auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet static
    address 203.0.113.10/24
    gateway 203.0.113.1
    bridge-ports eno1
    bridge-stp off
    bridge-fd 0

Wichtig zu bemerken: vmbr0 ist bereits eine Bridge, und die Netzwerkkarte steckt schon darin. Mehr braucht Schritt drei nicht, und genau deshalb verlangt Schritt drei hier keine Änderung.

Proxmox VE 9 basiert auf Debian 13 und nutzt ifupdown2, daher greifen Netzwerkänderungen ohne Neustart der Maschine. Speichern Sie die Datei und führen Sie aus:

ifreload -a

Wer stattdessen über die Proxmox-Weboberfläche bearbeitet, schreibt die Änderungen nach /etc/network/interfaces.new und hält sie zurück, bis Sie Apply Configuration drücken. Egal wofür Sie sich entscheiden: Öffnen Sie zuerst die Konsole aus Ihrem Konto. Ein Tippfehler in dieser Datei wirft die Maschine aus dem Netz; die Konsole geht einen anderen Weg und funktioniert weiter.

3

Der schnelle Weg: Maschine direkt ins Netz setzen

Beginnen Sie hier. Ihre virtuelle Maschine verhält sich wie ein separater Computer am selben Switch, spricht selbst mit unseren Routern, und der Host braucht keinerlei Änderungen.

Fügen Sie in Proxmox der Maschine ein Netzwerkgerät hinzu, setzen Sie die Bridge auf vmbr0 und lassen Sie die von Proxmox eingetragene MAC-Adresse unverändert. Dann setzen Sie die Adresse innerhalb der Maschine. Debian oder Ubuntu mit klassischem Setup:

auto lo
iface lo inet loopback

auto ens18
iface ens18 inet static
    address 203.0.113.58/24
    gateway 203.0.113.1
    dns-nameservers 209.244.0.3 1.1.1.1

Ubuntu mit netplan, in /etc/netplan/01-netcfg.yaml:

network:
  version: 2
  ethernets:
    ens18:
      addresses: [203.0.113.58/24]
      routes:
        - to: default
          via: 203.0.113.1
      nameservers:
        addresses: [209.244.0.3, 1.1.1.1]

Unter Windows tragen Sie dieselben drei Werte in die IPv4-Einstellungen des Adapters ein. Es spielt wirklich keine Rolle, was auf der Maschine läuft; für uns ist sie ein weiterer Computer am Kabel.

Sie müssen uns vorher nichts mitteilen. Sie müssen uns nicht die MAC-Adresse jeder virtuellen Maschine schicken, und wir begrenzen nicht, wie viele Ihr Port nutzen darf. Manche Hosting-Anbieter tun das, und deren Anleitungen lassen Sie für jede neue Maschine ein Formular ausfüllen. Wir haben nachgeprüft statt anzunehmen: Der Port Ihres Servers hat kein MAC-Limit gesetzt und Port-Security ist ausgeschaltet, und vor der Veröffentlichung dieser Seite haben wir eine zweite Adresse und MAC auf den eigenen Port einer Mitarbeiter-Maschine gelegt und sie aus dem öffentlichen Internet erreicht.

Drei Dinge, die Sie richtig machen sollten:

• Jede Maschine braucht ihre eigene MAC-Adresse. Teilen sich zwei Maschinen eine oder kopieren die des Hosts, funktioniert keine richtig.
• Nutzen Sie das Gateway, das zum Bereich dieser Adresse gehört, aus Schritt eins.
Verwenden Sie nur Adressen, die in Ihrem Konto stehen. Diese Bridge liegt an einem echten Netz mit den Maschinen anderer Leute. Eine Adresse, die nicht Ihnen gehört, reißt deren Verkehr mit.

Aus demselben Grund gehört nichts, das Adressen verteilt, auf vmbr0. Kein DHCP-Server, keine Router-Advertisements. Wenn Sie Ihren eigenen Maschinen automatisch Adressen geben wollen, nutzen Sie Schritt fünf, wo die Bridge keinen Ausgang hat und niemanden sonst erreichen kann.

4

Der kontrollierte Weg: alles über den Host

Wählen Sie das, wenn der Host jedes Paket sehen soll, damit seine Firewall darauf reagieren kann, oder wenn Ihre Maschinen lieber gar nicht erst im gemeinsamen Netz auftauchen sollen. Sie bekommen weiterhin echte öffentliche Adressen aus Ihrem Konto; nur der Weg ändert sich.

Die öffentliche Adresse kommt von der Bridge herunter und auf die Netzwerkkarte, der Host wird zum Weiterleiten angewiesen und antwortet stellvertretend für die Maschinen dahinter. Auf dem Host:

auto lo
iface lo inet loopback

auto eno1
iface eno1 inet static
    address 203.0.113.10/24
    gateway 203.0.113.1
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up echo 1 > /proc/sys/net/ipv4/conf/eno1/proxy_arp

auto vmbr0
iface vmbr0 inet manual
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    up ip route add 203.0.113.58/32 dev vmbr0
    down ip route del 203.0.113.58/32 dev vmbr0

Eine up- und down-Zeile für jede Adresse, die Sie auf diese Weise routen. Innerhalb der Maschine ist die Adresse eine /32, und der Host muss vor der Standardroute über eine explizite Route erreichbar sein:

auto lo
iface lo inet loopback

auto ens18
iface ens18 inet static
    address 203.0.113.58/32
    post-up ip route add 203.0.113.10 dev ens18
    post-up ip route add default via 203.0.113.10
    dns-nameservers 209.244.0.3 1.1.1.1

Lassen Sie die proxy_arp-Zeile nicht weg. Unsere Router fragen das Netz, wer welche Adresse hält, und diese Zeile sorgt dafür, dass der Host für die Maschinen dahinter antwortet. Ohne sie sind sie schlicht unsichtbar. Die beiden post-up echo-Zeilen sind Proxmox' eigene Schreibweise dafür. Um sie dauerhaft zu setzen, legen Sie stattdessen eine Datei in /etc/sysctl.d/ ab mit:

net.ipv4.ip_forward=1
net.ipv4.conf.eno1.proxy_arp=1

Was Sie sich mit der Mehrarbeit einkaufen, ist ein Host, der jedes Paket filtern und protokollieren kann. Brauchen Sie das nicht, bietet Schritt drei weniger Fehlerquellen.

5

Maschinen, die keine eigene Adresse brauchen

Viele Maschinen eröffnen Gespräche nur selbst: Build-Runner, Queue-Worker, eine Datenbank, die von außen niemand anfassen soll. Geben Sie denen eine private Adresse auf einer Bridge ohne eigenen Ausgang und lassen Sie den Host ihren Verkehr auf dem Weg nach draußen auf seine Adresse übersetzen. Das verbraucht nichts von Ihrer Zuteilung, Sie können also so viele betreiben, wie die Hardware trägt.

Fügen Sie eine zweite Bridge hinzu und lassen Sie vmbr0 exakt, wie sie ist:

auto vmbr1
iface vmbr1 inet static
    address 10.10.10.1/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o eno1 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o eno1 -j MASQUERADE

Setzen Sie die Maschinen auf vmbr1, geben Sie jeder eine Adresse aus diesem Bereich mit 10.10.10.1 als Gateway, und sie laufen. Für den Rest des Internets sehen sie aus wie Ihr Server. Von außen erreicht sie nichts, außer Sie verlangen es, und das Verlangen ist eine weitere Regel neben der ersten, auf einem Port, den der Host noch nicht nutzt:

post-up iptables -t nat -A PREROUTING -i eno1 -p tcp --dport 8443 -j DNAT --to 10.10.10.2:443
post-down iptables -t nat -D PREROUTING -i eno1 -p tcp --dport 8443 -j DNAT --to 10.10.10.2:443

Diese Bridge hat keinen physischen Port, daher ist ein DHCP-Server darauf ungefährlich und eine saubere Methode, die Maschinen dahinter zu adressieren.

6

Ihre IPv6-Adressen hinzufügen

Was Sie haben, ist eine Handvoll einzelner IPv6-Adressen, kein Block zum Aufteilen. Sie stehen am Ende derselben Einrichtungs-E-Mail und werden einzeln platziert, genau wie IPv4-Adressen: eine auf dem Host, wenn der Host über IPv6 erreichbar sein soll, die übrigen auf den Maschinen, die sie brauchen. Der Installer richtet keine davon ein, also ist all das von Ihnen hinzuzufügen.

Schreiben Sie jede mit einem /64 am Ende, und das Gateway ist der Präfix mit ::1 dahinter — eine Adresse innerhalb von 2001:db8:1234::/64 nutzt 2001:db8:1234::1. Auf dem Host, neben der bereits vorhandenen Bridge:

iface vmbr0 inet6 static
    address 2001:db8:1234::2/64
    gateway 2001:db8:1234::1

Und in einer Maschine auf der Bridge:

iface ens18 inet6 static
    address 2001:db8:1234::5/64
    gateway 2001:db8:1234::1

Dann ifreload -a, wie zuvor. Da es sich um einzelne Adressen handelt und nicht um einen eigenen Block, bewerben Sie keine Routen und verteilen Sie keine Adressen, die Ihnen nicht zugeteilt wurden. Zu wenig? Fragen Sie uns.

7

Ihre Adressen benennen: Reverse-DNS

Reverse-DNS richten Sie selbst ein, für jede Adresse, ohne jemanden zu fragen. Melden Sie sich an, öffnen Sie den Server und suchen Sie den Bereich Access, Networking & rDNS. Jede Adresse ist dort mit dem Namen aufgelistet, auf den sie derzeit antwortet, und einem Edit rDNS-Button daneben. IPv6-Adressen funktionieren genauso.

Das Feld erwartet einen Hostnamen: Buchstaben, Zahlen, Bindestriche und Punkte, jeder Teil zwischen 1 und 63 Zeichen, mindestens zwei Teile, und der abschließende Punkt wird für Sie ergänzt. Geben Sie ihm ein paar Minuten, bis es wirkt.

Wenn die Maschine E-Mails versendet, ist die zu benennende Adresse die, von der die Post tatsächlich ausgeht — bei Schritt fünf ist das die Adresse des Hosts, nicht die der Maschine — und Sie wollen außerdem den passenden Forward-Eintrag bei Ihrem DNS-Anbieter. Mailserver am anderen Ende prüfen, ob beides übereinstimmt, und verweigern die Annahme, wenn nicht.

FAQ

Was man uns fragt, nachdem man dieser Seite gefolgt ist.

Die virtuelle Maschine läuft, aber nichts funktioniert. Wo suche ich?

Das Gateway, in neun von zehn Fällen. Es muss die .1 des Bereichs sein, zu dem die Adresse selbst gehört, und ein Server, dessen Adressen zu verschiedenen Zeiten gekauft wurden, kann leicht zwei Bereiche mit zwei Gateways haben. Prüfen Sie danach, ob die Adresse wirklich in Ihrem Konto steht, ob Sie /24 verwendet haben und ob keine andere Maschine dieselbe MAC-Adresse trägt.

Muss ich Ihnen die MAC-Adresse jeder virtuellen Maschine schicken?

Nein, und es gibt nirgends etwas auszufüllen. Ihr Port lernt so viele MAC-Adressen, wie Sie darauf legen, und Port-Security ist aus, daher erscheint eine virtuelle Maschine im Netz exakt wie eine physische. Behalten Sie die von Proxmox erzeugte MAC-Adresse und stellen Sie sicher, dass keine zwei Maschinen eine teilen.

Warum war bei Ankunft des Servers nur eine Adresse eingerichtet?

Weil ein Host, der jede Adresse trägt, für jede Adresse antworten würde und Ihre virtuellen Maschinen keine zum Übernehmen hätten. Wir konfigurieren die erste, damit die Maschine erreichbar hochfährt, und überlassen Ihnen die übrigen. Die Einrichtungs-E-Mail sagt das direkt unterhalb der Liste.

Was soll ich wählen, Schritt drei oder Schritt vier?

Schritt drei, außer Sie wissen, warum Sie Schritt vier wollen. Er ändert nichts am Host, verlangt keine ungewöhnlichen Einstellungen in der Maschine und verhält sich so, wie sich ein echter Computer in einem Netz verhält. Schritt vier ist für den Fall, dass der Host alles auf dem Weg nach draußen prüfen und filtern soll und Sie bereit sind, jede Maschine dafür etwas sorgfältiger zu konfigurieren.

Kann ich Adressen automatisch per DHCP verteilen?

Auf einer privaten Bridge ohne physischen Port: unbedingt, und es ist eine elegante Art, viele Maschinen zu betreiben. Niemals auf vmbr0, die mit einem Netz verbunden ist, in dem auch andere Kunden liegen: Ein DHCP-Server oder Router-Advertisements dort beginnen, für Maschinen zu antworten, die nicht Ihnen gehören.

Ich habe eine fehlerhafte Datei gespeichert und der Server ist weg. Was nun?

Nutzen Sie die Konsole in Ihrem Konto. Sie erreicht die Maschine über ihre Management-Karte statt über das Netz und funktioniert daher weiter, wenn das Netzwerk es nicht tut. Reparieren Sie /etc/network/interfaces, führen Sie ifreload -a aus, und Sie sind zurück. Die Konsole zu öffnen, bevor Sie eine Änderung anwenden, ist eine lohnende Gewohnheit.

Kann ich mehr Adressen bekommen?

Ja. Schreiben Sie uns im Live-Chat oder eröffnen Sie ein Ticket und sagen Sie uns, wofür jede einzelne gedacht ist — die Adressregister verlangen für jede Zuteilung eine Begründung, daher ist das das Erste, was wir festhalten müssen. Zusätzliche IPv4-Adressen werden monatlich auf demselben Konto berechnet und erscheinen in Ihrem Panel, sobald sie zugeteilt sind.

Suchen Sie einen Server, auf dem das läuft?

Proxmox VE ist eines der Betriebssysteme, die Sie per Klick installieren können, auf Hardware, die Ihnen allein gehört, mit Konsolenzugang und ohne Lizenzkauf.