Wie man eine große Anzahl von IP-Adressen mit Debian/Ubuntu registriert | INTROSERV
EUR
european

EUR

usa

USD

German De
Ex. VAT Ex. VAT 0%

Wie man eine große Anzahl von IP-Adressen mit Debian/Ubuntu registriert

Ein einzelner Server benötigt oft mehr als eine IP-Adresse. Diese Anleitung erklärt zwei Möglichkeiten, mehrere IPv4-Adressen einer einzelnen Netzwerkschnittstelle unter Debian und Ubuntu zuzuweisen:

  • automatisch, mit einem Shell-Skript und einem systemd-Dienst, empfohlen für große Adressbereiche;
  • direkt in netplan, empfohlen, wenn die Adressen sowohl eine Netzwerk-Neukonfiguration als auch einen Neustart überstehen müssen.

Beide Methoden sorgen dafür, dass die Konfiguration Neustarts übersteht. Lesen Sie den Hinweis am Ende jeder Methode, um diejenige auszuwählen, die zu Ihrem Fall passt.

Wann Sie mehrere IP-Adressen benötigen

Mehrere gängige Anwendungsfälle auf einem einzelnen Server erfordern mehr als eine öffentliche Adresse:

  • Mailserver, die separate Adressen und PTR-Einträge verwenden, um den Versand-Ruf verschiedener Domains voneinander zu isolieren.
  • Webserver, die dedizierte Adressen für Legacy-Anwendungen, Kundenisolierung oder spezifische Firewall-Richtlinien benötigen.
  • Proxy- und VPN-Infrastruktur, bei der jede Proxy-Instanz oder jeder VPN-Endpunkt an eine eigene öffentliche Adresse gebunden ist.
  • Container oder virtuelle Maschinen, die geroutete IP-Adressen verwenden.

INTROSERV VPS-Tarife beinhalten standardmäßig zwei IPv4-Adressen und ein /112-IPv6-Subnetz. Zusätzliche IPv4-Adressen sind an vielen Standorten verfügbar. Prüfen Sie im Bestellkonfigurator die Verfügbarkeit für die von Ihnen gewählte Region.

Bevor Sie beginnen

Sie benötigen Root-Zugriff sowie den Namen der Schnittstelle, die die zusätzlichen Adressen tragen soll. Aktuelle Debian- und Ubuntu-Versionen verwenden nicht mehr den alten Namen eth0, gehen Sie also nicht davon aus. Listen Sie die Schnittstellen zusammen mit ihren aktuellen Adressen auf und identifizieren Sie diejenige, die bereits Ihre primäre Adresse trägt:

ip -br addr show

Die Ausgabe zeigt Einträge wie ens3, enp1s0 oder eth0 neben den bereits darauf konfigurierten Adressen. Die Schnittstelle, die bereits Ihre Haupt-IP trägt, ist diejenige, die in den folgenden Schritten verwendet wird. Die Beispiele hier verwenden ens3.

Warning

Diese Schritte ändern die Netzwerkkonfiguration auf einem Server, auf den Sie höchstwahrscheinlich per SSH zugreifen. Ein Fehler kann Ihren eigenen Zugriff unterbrechen. Halten Sie einen zweiten Zugangsweg bereit, falls vorhanden, etwa die Provider-Konsole oder IP-KVM, und bevorzugen Sie die unten gezeigten sicheren Anwendungsoptionen.

Erstellen des Adressskripts

Ein kurzes Skript fügt in einem Durchgang einen Bereich von Adressen hinzu. Erstellen Sie es unter /usr/local/sbin:

nano /usr/local/sbin/extra-ips.sh

Fügen Sie das folgende Skript ein. Ersetzen Sie den Schnittstellennamen, das Präfix und den Bereich durch den Ihnen zugewiesenen Block. Die unten stehenden Adressen verwenden den Dokumentationsbereich aus RFC 5737 und dienen nur als Platzhalter:

#!/bin/bash set -euo pipefail # Interface that will carry the additional addresses. IFACE="ens3" # Common prefix and the first and last value of the host octet. # Replace these with the block assigned to you. PREFIX="203.0.113" FIRST=10 LAST=60 # Stop early with a clear message if the interface name is wrong. if ! ip link show "$IFACE" >/dev/null 2>&1; then echo "Interface $IFACE not found. Check the name with: ip -br addr show" >&2 exit 1 fi for HOST in $(seq "$FIRST" "$LAST"); do ip addr replace "${PREFIX}.${HOST}/32" dev "$IFACE" done

Info

Die Adressen verwenden absichtlich ein /32-Präfix. Die primäre Schnittstelle besitzt bereits die Route für ihr Subnetz, sodass jede sekundäre Adresse nur eine lokale Host-Route benötigt. Ein /32-Präfix verhindert, dass der Kernel eine doppelte Subnetzroute hinzufügt, und hält die Routing-Tabelle sauber. Das Skript verwendet ip addr replace anstelle von ip addr add, damit es gefahrlos erneut ausgeführt werden kann, ohne bei bereits bestehenden Adressen fehlzuschlagen.

Machen Sie das Skript ausführbar. Beachten Sie den vollständigen Pfad, der in der vorherigen Version dieser Anleitung fehlte:

chmod +x /usr/local/sbin/extra-ips.sh

Die Adressen mit einem systemd-Dienst dauerhaft machen

Das manuelle Ausführen des Skripts fügt die Adressen nur bis zum nächsten Neustart hinzu. Um sie automatisch beim Booten anzuwenden, erstellen Sie einen systemd-Dienst, der das Skript während des Bootvorgangs ausführt. Diese Methode funktioniert unabhängig davon, ob das System netplan, systemd-networkd oder den älteren ifupdown-Stack verwendet.

Erstellen Sie die Unit-Datei:

nano /etc/systemd/system/extra-ips.service

Fügen Sie Folgendes hinzu:

[Unit] Description=Assign additional IP addresses After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/usr/local/sbin/extra-ips.sh RemainAfterExit=yes [Install] WantedBy=multi-user.target

Laden Sie systemd neu und aktivieren Sie den Dienst, damit er sofort und bei jedem Neustart ausgeführt wird:

systemctl daemon-reload systemctl enable --now extra-ips.service

Bestätigen Sie, dass der Dienst korrekt gestartet wurde:

systemctl status --no-pager extra-ips.service

Warning

Von diesem Skript hinzugefügte Adressen sind nicht Teil der netplan- oder systemd-networkd-Konfiguration. Ein späteres netplan apply, ein networkctl reconfigure oder ein beliebiger Netzwerk-Neustart kann sie entfernen. Sie kehren beim nächsten Neustart zurück, oder sofort, wenn Sie systemctl restart extra-ips.service ausführen. Wenn die Adressen auch eine Netzwerk-Neukonfiguration überstehen müssen, verwenden Sie stattdessen die unten beschriebene netplan-Methode.

Alternative: Die Adressen in netplan definieren

Unter Ubuntu, wo netplan standardmäßig verwendet wird, können die Adressen direkt in netplan deklariert werden. Der Netzwerk-Stack behandelt sie dann als verwaltete Adressen, sodass sie eine Neukonfiguration überstehen. Dies eignet sich für eine kleine, feste Liste. Für einen großen Bereich skaliert der oben beschriebene systemd-Dienst besser, da netplan eine Zeile pro Adresse benötigt.

Wenn mehrere netplan-Dateien dieselbe Schnittstelle definieren, können sich ihre Einstellungen auf unerwartete Weise überschreiben oder zusammenführen, was Ihre primäre Adresse entfernen und den Zugriff unterbrechen kann. Das Bearbeiten der bestehenden Konfigurationsdatei ist in der Regel sicherer, als eine weitere Datei für dieselbe Schnittstelle anzulegen. Öffnen Sie die Datei, die Ihre Schnittstelle bereits konfiguriert, üblicherweise /etc/netplan/50-cloud-init.yaml oder /etc/netplan/00-installer-config.yaml:

ls /etc/netplan/ nano /etc/netplan/50-cloud-init.yaml

Behalten Sie alle bestehenden Einstellungen für die Schnittstelle bei, wie dhcp4, die primäre Adresse, das Gateway und die Nameserver. Fügen Sie die zusätzlichen Adressen unter einer addresses-Liste für dieselbe Schnittstelle hinzu. Das folgende Beispiel behält DHCP für die primäre Adresse bei und fügt drei sekundäre Adressen hinzu:

network: version: 2 ethernets: ens3: dhcp4: true addresses: - 203.0.113.10/32 - 203.0.113.11/32 - 203.0.113.12/32

Neuere netplan-Versionen warnen, wenn die Datei für andere Benutzer lesbar ist. Beschränken Sie die Berechtigungen, um diese Warnung zu beheben:

chmod 600 /etc/netplan/50-cloud-init.yaml

Testen Sie die Änderung mit netplan try. Dabei wird die Konfiguration angewendet und nach 120 Sekunden automatisch zurückgesetzt, sofern Sie sie nicht bestätigen — das schützt Sie davor, den Fernzugriff zu verlieren:

netplan try

Wenn die Verbindung bestehen bleibt und alles korrekt aussieht, bestätigen Sie bei der entsprechenden Aufforderung und wenden Sie die Konfiguration anschließend dauerhaft an:

netplan apply

Überprüfen des Ergebnisses

Listen Sie die derzeit an die Schnittstelle gebundenen Adressen auf und bestätigen Sie, dass die neuen vorhanden sind:

ip -br addr show ens3

Die zusätzlichen Adressen sollten nun in der Ausgabe erscheinen und werden nach jedem Neustart automatisch wiederhergestellt.

Entfernen der Adressen

Um eine einzelne Adresse zu entfernen, löschen Sie sie von der Schnittstelle:

ip addr del 203.0.113.10/32 dev ens3

Wenn Sie das Skript und den Dienst verwendet haben, beenden Sie die Zuweisung des gesamten Bereichs beim Booten, indem Sie den Dienst deaktivieren und entfernen:

systemctl disable --now extra-ips.service rm /etc/systemd/system/extra-ips.service systemctl daemon-reload

Wenn Sie netplan verwendet haben, entfernen Sie die zusätzlichen Zeilen aus der addresses-Liste in der netplan-Datei und führen Sie anschließend netplan apply aus.

Fehlerbehebung

Wenn der Dienst nicht startet, prüfen Sie seinen Status und die Protokolle:

systemctl status --no-pager extra-ips.service journalctl -u extra-ips.service

Überprüfen Sie Folgendes:

  • der Schnittstellenname im Skript stimmt mit dem tatsächlichen Namen aus ip -br addr show überein;
  • die Adressen gehören zu dem Ihnen zugewiesenen Block;
  • das Skript ist ausführbar.

Wenn Sie versehentlich ein /24-Präfix statt /32 verwendet haben, zeigt sich das Symptom in der Routing-Tabelle als mehrere doppelte Subnetzrouten. Prüfen Sie dies mit:

ip route

Diese Anleitung konzentriert sich auf IPv4. Wie bei IPv4 werden sekundäre IPv6-Adressen normalerweise als Host-Adressen mit einem /128-Präfix hinzugefügt, mit demselben Befehl ip addr replace, zum Beispiel ip addr replace 2001:db8::10/128 dev ens3.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA