X
X
X
X

Wissensdatenbank

StartseiteWissensdatenbankLinux - MultiVPS IPv6+IPv4My application needs an IPv4-format...

My application needs an IPv4-formatted IP on Linux, but ip addr shows IPv6s only. How can I communicate to/from it?

Achtung: Dieser Leitfaden wurde von einem automatischen System übersetzt. Im Zweifelsfall sollten Sie immer die englische Version konsultieren, indem Sie die Sprache auf „EN“ ändern und ein neues Fenster öffnen.

Häufige Probleme erfordern manchmal ungewöhnliche Lösungen

Gelegentlich kann es vorkommen, dass die eine oder andere (nicht aktualisierte/faulere) Anwendung die direkte Nutzung nicht unterstützt, wenn der Ausgangspunkt eine IPv6-Adresse ist, weil sie für die Verwendung einer IPv4-formatierten Adresse ausgelegt ist. Trotzdem sind sie in der Regel tolerant gegenüber dem IPv4-Bereich, den Sie verwenden, und erlauben Ihnen, interne IPv4-Adressen anzugeben (die im Bereich 10.x.x.x/8, 172.16.x.x/12 - 172.32.x.x/12 oder 192.168.x.x/16 liegen), wie Sie es bereits bei jedem anderen gekauften NAT-VPS tun würden, da sie nicht zwischen den Adressen unterscheiden.

Der einzige Unterschied zwischen C-Servern und anderen Anbietern von NAT-VPS besteht darin, dass wir eine öffentliche IPv6-Adresse mit Doppelfunktion anbieten (die auch IPv4-Anfragen sendet/empfängt), während andere Anbieter standardmäßig eine interne IPv4-NAT-Adresse bereitstellen (die nicht öffentlich, sondern nur privat ist) und Ihre Anfrage dann intern von/nach der IPv4-Adresse des Hauptservers übersetzen und weiterleiten.

Da die SolusVM 2 Templates und Cloud-Init-Images keine alternative interne IPv4-Adresse vorhersagen und C-Servers eine IPv6-erste Firma ist, bieten wir standardmäßig keine solchen Adressen an. In dieser Anleitung zeigen wir Ihnen jedoch, wie Sie IPv4-Konnektivität für Anwendungen erhalten, die eine reine IPv4-Adresse benötigen. Dies wird durch einen einfachen dreistufigen Prozess erreicht:

- Deaktivieren von cloud-init auf Ihrem VPS;
- Hinzufügen der internen IPv4-Adresse zum System;
- Erstellen eines internen SoCat zwischen dieser IPv4- und IPv6-Adresse für volle Konnektivität.

Pakete, die in Ihrem VPS von IPv6 ankommen, sind bereits vollständig, die Umleitung erfolgt vollständig intern auf der TCP/IP-Socket-Ebene, und diese Lösung wird schon seit geraumer Zeit verwendet.

So erhalten Sie native interne IPv4-Konnektivität auf MultiVPS

Deaktivieren wir zunächst die Cloud-init-Änderungen für Ihren VPS. Dies ist nur ein Beispiel; vielleicht möchten Sie einen anderen Bereich manuell bearbeiten, um cloud-init zu deaktivieren oder sogar direkt den Netzwerkbereich Ihrer Linux-Distribution bearbeiten.

Melden Sie sich per SSH oder VNC bei Ihrem Server an und erstellen Sie eine Datei, die verhindert, dass cloud-init beim nächsten Start ausgeführt wird:

sudo touch /etc/cloud/cloud-init.disabled

Wenn dies nicht funktioniert, sollten Sie die Datei direkt bearbeiten, um zu vermeiden, dass eine Schnittstellenneugestaltung das, was wir gleich tun werden, auslöscht. Da cloudinit (manchmal als cloud-init formatiert) lediglich ein Skript ist, das von SolusVM 2 am Ende eines jeden Neustarts ausgeführt wird, können Sie einfach

welches cloudinit

oder

welches cloud-init

aufrufen, um zu sehen, wo sich Ihr Skript auf der Festplatte befindet - manchmal wird es aus dem Abschnitt der Netzwerkkonfigurationsdatei geladen, manchmal ist es ein eigenständiges Skript. Eine andere Alternative ist, direkt im Linux-Systemprotokoll nachzusehen. Schreiben Sie einfach in Ihre Kommandozeile:

journalctl

und scrollen Sie mit der Taste PgDn / Page Down auf Ihrer Tastatur nach unten bis zum letzten Bootlog, das Sie auf Ihrem VPS erstellt haben - das ist genau der Bildschirm, den Sie bei jedem Linux-Boot sehen. Achten Sie auf die Stunden/Tage, die auf der linken Seite jedes Logs angegeben sind, um die Cloud-Init-Aktionen und -Standorte zu verfolgen.

Für weitere Unterstützung können Sie bei der Konfiguration immer Google oder eine KI verwenden.
Fügen Sie eine statische IPv4-Adresse zu Ihrer Netzwerkschnittstelle hinzu. Dies ist nur ein Beispiel für Enterprise Linux und Debian-basierte Distributionen. Bitte überprüfen Sie den spezifischen Prozess, der für Ihr gewähltes Betriebssystem und Ihre Version erforderlich ist Bearbeiten Sie die Netzwerkkonfigurationsdatei (der Ort hängt von Ihrer Distribution ab):
Für Ubuntu 22.04/24.04 (mit Netplan):

sudo nano /etc/netplan/01-netcfg.yaml

Löschen Sie in dieser Datei nichts anderes und fügen Sie hinzu (auch hier nur ein Beispiel, überprüfen Sie den Prozess für Ihr Betriebssystem):

network:
Version: 2
ethernets:
eth0: # Ihr Schnittstellenname könnte anders lauten
Adressen:
- 10.0.0.10/24 # Fügen Sie den Eintrag hinzu und ersetzen Sie ihn eventuell durch Ihren gewünschten internen IPv4-Bereich und das Subnetz (Blöcke 172.16.x.x/12, 192.168.x.x/16)

Strg+O zum Speichern, Enter zum Bestätigen, Strg+X zum Verlassen des Nano-Editors.
Für Enterprise Linux (RHEL/CentOS/Tencent/AlmaLinux/Rocky Linux, Beispiel für RHEL 9/AlmaLinux 9), auf einer normalen Kommandozeile über SSH oder VNC, schreiben

nmcli con mod eno1 ipv4.addresses 192.168.1.100/24 [Sie können jeden anderen privaten IPv4-Bereich einfügen, stellen Sie sicher, dass Subnetz und IP in Ordnung sind]
nmcli con mod eno1 ipv4.gateway 192.168.1.1 [aus dem gleichen privaten IPv4 Bereich, immer die erste Adresse davon]
nmcli con mod eno1 ipv4.dns 8.8.8.8 [benutze irgendeinen regulären IPv4 DNS]
nmcli con mod eno1 ipv4.method manual [fügen Sie NICHT auto ein, dies ist eine Nicht-DHCP-Adresse]
Um die Verbindung aufzubauen, einfach einfügen:

nmcli con up eno1

Installieren Sie socat, falls es nicht bereits installiert ist:

sudo apt update && sudo apt install socat -y # Für Debian/Ubuntu, ODER
sudo dnf install socat # Für RHEL-basierte Distributionen (das Beispiel funktioniert für RHEL8/RHEL9-basierte Distributionen)

Und aktivieren Sie die IPv4- und IPv6-Weiterleitungsunterstützung in sysctl:

echo „net.ipv4.ip_forward=1“ | sudo tee -a /etc/sysctl.conf
echo „net.ipv6.conf.all.forwarding=1“ | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Erstellen Sie einen systemd-Dienst, um socat auszuführen und den Datenverkehr von Ihrer internen IPv4 zu IPv6 weiterzuleiten:
sudo nano /etc/systemd/system/ipv4-to-ipv6-routing.service
Fügen Sie den folgenden Inhalt hinzu:

[Unit]
Beschreibung=IPv4 to IPv6 Socat-Routing-Dienst
Nach=Netz.Ziel

[Dienst]
Typ=einfach
ExecStart=/usr/bin/socat TCP4-LISTEN:PORT,bind=10.0.0.10,reuseaddr,su=nobody,fork TCP6:[IHRE_IPV6_ADRESSE]:PORT
Neustart=immer
NeustartSec=5

[Installieren]
WantedBy=multi-user.target

Ersetzen Sie:

10.0.0.10 mit Ihrer gewünschten internen IPv4-Adresse
[IHRE_IPV6_ADRESSE] mit der öffentlich bereitgestellten IPv6-Adresse für Ihren VPS
PORT mit einer Portnummer, die Sie weiterleiten möchten

Aktivieren Sie den Dienst und starten Sie ihn:

sudo systemctl enable ipv4-to-ipv6-proxy.service
sudo systemctl start ipv4-zu-ipv6-proxy.service

Dieser Dienst wird nun bei jedem Systemstart automatisch gestartet.

Wenn Sie mehrere Ports weiterleiten müssen, können Sie entweder mehrere Dienstdateien erstellen oder den Befehl socat so modifizieren, dass er mehrere Ports verarbeiten kann.
Socat arbeitet mit TCP/UDP, von IPv4 zu IPv6 und von IPv6 zu IPv4. Beispiele für Befehle sind:

socat UDP4-LISTEN:10683,bind=10.0.0.10,reuseaddr,su=nobody,fork UDP6:[2a00::212:4b00:615:a1f7]:10683 „ sagt, dass auf der internen IPv4-Verbindung auf UDP an Port 10683 gelauscht werden soll, und leitet zu einer öffentlichen IPv6-Adresse an der angegebenen Adresse und am selben Port weiter.

socat TCP6-LISTEN:10022,bind=[2a00::212:4b00:615:a1f7],reuseaddr,su=nobody,fork TCP4:10.0.0.10:10022 „ lauscht auf TCP unter IPv6 an Port 10022 auf der angegebenen öffentlichen IPv6-Adresse, leitet auf den internen IPv4-IP-Stack des VPS am selben Port weiter.

Faire Warnung

Diese Lösung ist beständig und bleibt bei jedem Neustart bestehen.

Wenn dies jedoch aus irgendeinem Grund fehlschlägt (z.B. Updates, die systemd, socat oder Netzwerkfunktionen ändern), müssen Sie möglicherweise ein Skript erstellen, das bei jedem Neustart ausgeführt wird - crontab oder ähnliche Skripting-Tools könnten dafür interessant sein - so dass die IPv4 bei jedem Neustart Ihres VPS wieder eingefügt wird. Wenn dies erforderlich ist, kann es auch eine gute Idee sein, dasselbe für socat zu tun.

Solus VM 2 verfügt über cloud-init, das normalerweise die Netzwerkinformationen bei jedem Booten bereitstellt und die vorherigen Informationen löscht - es sei denn, ein Benutzer deaktiviert es und automatisiert den Prozess der Einfügung einer IP beim Booten auf seinem VPS (der, da er aus dem Userspace stammt, niemals mit cloud-init kollidiert).

Wenn alles andere schief geht, nutzen Sie einfach unseren C-Servers GoBack-Backup-Service, um Ihren VPS zu einem früheren Zeitpunkt wiederherzustellen, oder installieren Sie den VPS einfach mit einer unserer Betriebssystemvorlagen von Grund auf neu.

Eine Sache ist sicher

Diese Lösung wird die meisten Probleme mit IPv4-only-Anwendungen beheben.

Finden Sie nicht die Informationen, die Sie suchen?

Ticket erstellen
Fanden Sie es nützlich?
(534 mal angesehen / 1 Kunden fanden es hilfreich)

Powered by WISECP
Top