Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
IP-Adresse einer zweiten Schnittstelle in einer Oracle Linux-Instanz zuweisen
Einführung
Dieses Tutorial enthält schrittweise Anweisungen zum Zuweisen einer IP-Adresse zu einer sekundären Netzwerkschnittstelle in einer Oracle Linux-Instanz. Unabhängig davon, ob Sie Ihre Netzwerkkonfiguration erweitern oder eine bestimmte Routing-Policy einrichten, ist das Hinzufügen und Konfigurieren einer zweiten Schnittstelle ein kritischer Skill.
Sie lernen Folgendes:
-
Identifizieren Sie die verfügbaren Netzwerkschnittstellen.
-
Konfigurieren Sie die sekundäre Schnittstelle mit einer statischen oder dynamischen IP-Adresse.
-
Aktualisieren Sie die Netzwerkkonfigurationsdateien für die Persistenz nach Neustarts.
-
Prüfen Sie die Konfiguration, und stellen Sie die Konnektivität sicher.
Am Ende dieses Tutorials können Sie die Netzwerkfunktionen Ihrer Oracle Linux-Instanz erweitern und eine nahtlose Interaktion über mehrere Subnetze oder Netzwerke hinweg ermöglichen.
Ziele
In diesem Tutorial erfahren Sie, wie Sie einer zweiten Netzwerkschnittstelle auf einer Oracle Linux-Instanz eine IP-Adresse zuweisen.
-
Verständnis der Konfigurationsdateien für die Einrichtung einer sekundären Netzwerkschnittstelle.
-
Erfahren Sie, wie Sie der zweiten Schnittstelle eine statische IP-Adresse zuweisen.
-
Prüfen Sie die Konnektivität und die ordnungsgemäße Funktionalität der neu konfigurierten Schnittstelle.
Voraussetzungen
- Erstellen Sie ein virtuelles Cloud-Netzwerk (VCN) und 2 x Subnetze.
Aufgabe 1: OCI-Compute-Instanz erstellen
In dieser Aufgabe erstellen wir eine neue Instanz in Oracle Cloud Infrastructure (OCI).
-
Gehen Sie zur OCI-Konsole, navigieren Sie zu Compute, Instanzen, und klicken Sie auf Instanz erstellen.
-
Geben Sie unter Compute-Instanz erstellen die folgenden Informationen ein.
- Geben Sie einen Namen für die Instanz ein. In diesem Beispiel verwenden wir
sriov-test-01
. - Bildlauf nach unten.
- Klicken Sie auf Ausprägung ändern.
- Wählen Sie VM.Standard.E4. Flex, aber Sie können auch E5 verwenden.
- Bildlauf nach unten.
- Klicken Sie auf Vorhandenes virtuelles Cloud-Netzwerk auswählen.
- Wählen Sie das VCN aus. In diesem Beispiel wird das VCN
oke
verwendet. - Wählen Sie das vorhandene Subnetz für die primäre vNIC aus.
- Bildlauf nach unten.
- Wählen Sie für die erste VNIC-Schnittstellen-IP-Adresse unter Private IPv4-Adresse die Option Private IPv4-Adresse automatisch zuweisen aus.
- Wenn Sie ein öffentliches Subnetz für die primäre Schnittstelle ausgewählt haben, wählen Sie unter Öffentliche IPv4-Adresse die Option Öffentliche IPv4-Adresse automatisch zuweisen aus.
- Bildlauf nach unten.
- Klicken Sie auf Public-Key-Dateien (.pub) hochladen, um vorhandene (zuvor generierte) öffentliche und private SSH-Schlüssel hochzuladen.
- Klicken Sie auf Durchsuchen, um den vorhandenen Public Key auszuwählen.
- Prüfen Sie, ob der vorhandene Public Key zum Hochladen ausgewählt wurde.
- Klicken Sie auf Erstellen.
- Wenn die Instanz erfolgreich bereitgestellt wurde, zeigt der Status Wird ausgeführt an.
- Beachten Sie, dass die primäre VNIC konfiguriert ist und die IP-Adressen automatisch zugewiesen werden.
- Geben Sie einen Namen für die Instanz ein. In diesem Beispiel verwenden wir
Aufgabe 2: Zweite VNIC zur Instanz hinzufügen
-
Gehen Sie zur Seite Instanzdetails.
- Klicken Sie auf Angehängte VNICs.
- Beachten Sie, dass nur eine VNIC vorhanden ist und wir diese in
sr-iov-test-01
umbenannt haben (der von OCI bereitgestellte Standardname ist anders). - Klicken Sie auf VNIC erstellen.
-
Geben Sie unter VNIC erstellen die folgenden Informationen ein.
- Geben Sie einen Namen für die zweite VNIC ein. In diesem Beispiel verwenden wir
secondary-vnic
. - Wählen Sie das VCN aus. In diesem Beispiel wird das VCN
oke
verwendet. - Wählen Sie das vorhandene Subnetz für die sekundäre VNIC aus. Dies ist ein anderes Subnetz als das, an das die primäre VNIC angehängt ist.
- Wählen Sie Netzwerksicherheitsgruppen zur Kontrolle des Traffics verwenden (optional) aus.
- (Optional) Wählen Sie Zulassen aus, um eine Netzwerksicherheitsgruppe zu erstellen, die den gesamten Ingress- und Egress-Traffic zulässt.
- Bildlauf nach unten.
- Wählen Sie für die IP-Adresse der zweiten VNIC-Schnittstelle unter Private IPv4-Adresse die Option Private IPv4-Adresse automatisch zuweisen aus.
- Klicken Sie auf Änderungen speichern.
- Geben Sie einen Namen für die zweite VNIC ein. In diesem Beispiel verwenden wir
-
Beachten Sie, dass die zweite VNIC jetzt erstellt und an die Instanz und das andere Subnetz angehängt wird.
Hinweis: Obwohl wir die Option ausgewählt haben, automatisch eine IP-Adresse für die zweite VNIC von OCI abzurufen, konfiguriert das Betriebssystem (Oracle Linux) die IP-Adresse auf der VNIC nicht. Die IP-Adresse wird von der OCI-Konsole reserviert, ist jedoch noch nicht konfiguriert.
Aufgabe 3: IP-Adresse bei zweiter VNIC konfigurieren
Die Konfiguration der IP-Adresse auf der zweiten VNIC kann mit mehreren Methoden erfolgen.
-
Methode 1: Mit der Oracle Cloud Infrastructure-Befehlszeilenschnittstelle (OCI-CLI) (Package
oci-utils
) können Sie der zweiten Schnittstelle einer OCI Compute-Instanz mit dem Befehl OCI-network-config eine IP-Adresse zuweisen. -
Methode 2: Mit der OCI-CLI (Package
oci-utils
) weisen Sie der zweiten Schnittstelle einer OCI Compute-Instanz mit dem ocid-Daemon eine IP-Adresse zu. -
Methode 3: Verwenden Sie das Skript OCI_Multi_VNIC_Setup.
-
Methode 4: Erstellen Sie die Schnittstellenkonfigurationsdatei manuell für die neue VNIC im Ordner
/etc/sysconfig/network-scripts/
.
Hinweis: Um eine umfassende und praktische Lernerfahrung zu erhalten, beginnen Sie mit Methode 1 oder Methode 2, da diese native OCI-Tools nutzen und ein einfaches Setup bereitstellen. Machen Sie sich mit Methode 3 für Skripting und Automatisierung vertraut, und testen Sie schließlich Methode 4 für erweiterte manuelle Konfigurationen.
Methode 1: Mit OCI-CLI (Package oci-utils
) eine IP-Adresse der zweiten Schnittstelle mit dem Befehl oci-network-config
zuweisen
Bei dieser Methode erstellen Sie eine neue Instanz mit dem Namen sriov-test-04
und weisen der zweiten Schnittstelle mit dem Befehl oci-network-config eine IP-Adresse zu.
Voraussetzungen: Sie haben eine neue Instanz bereitgestellt und eine zweite VNIC hinzugefügt.
-
Führen Sie die folgenden Befehle aus.
- Führen Sie den Befehl
ip a
aus, um die IP-Adresse aus allen Schnittstellen abzurufen. - Notieren Sie sich die Schnittstelle
ens3
. - Beachten Sie, dass für die Schnittstelle
ens3
eine IP-Adresse konfiguriert ist. - Notieren Sie sich die Schnittstelle
ens5
. - Beachten Sie, dass für die Schnittstelle
ens5
keine IP-Adresse konfiguriert ist. - Führen Sie den Befehl
route -n
aus, um alle Routen und Standardgateways für alle Schnittstellen abzurufen. - Beachten Sie, dass nur ein Gateway für die Schnittstelle
ens3
verfügbar ist.
- Führen Sie den Befehl
-
Mit den folgenden Befehlen wurde getestet, ob die
oci-utils
-Befehle sofort einsatzbereit sind.- Führen Sie den Befehl
sudo oci-compartmentid
aus, um die OCID des Compartments abzurufen, zu dem die Instanz gehört. - Führen Sie den Befehl
sudo oci-instanceid
aus, um die OCID der Instanz abzurufen.
Hier haben wir bewiesen, dass
oci-utils
-Befehle sofort einsatzbereit sind. - Führen Sie den Befehl
-
Führen Sie die folgenden Befehle aus.
- Führen Sie den Befehl
sudo oci-network-config show
aus, um die gesamte Netzwerkkonfiguration von der Instanz abzurufen. - Beachten Sie den Fehler: Informationen können nicht angezeigt werden: API-Session konnte nicht abgerufen werden. Die Informationen zu den VNICs der Instanz werden nicht auf Betriebssystemebene und nicht auf OCI-Ebene bereitgestellt.
- Notieren Sie sich die Informationen auf Betriebssystemebene in der
ens3
-Schnittstelle. - Notieren Sie sich die Informationen auf Betriebssystemebene in der
ens5
-Schnittstelle. - Notieren Sie sich das Flag
ADD
für die Schnittstelleens5
.
Um die Schnittstelle
ens5
zu konfigurieren, die derzeit mitADD
gekennzeichnet ist, führen Sie den Befehlsudo oci-network-config configure
aus.Dies ist nicht möglich, da derselbe Fehler angezeigt wird, wenn Sie den Befehl
oci-network-config show
ausführen, der "Informationen können nicht angezeigt werden: API-Session konnte nicht abgerufen werden" lautet.Frage: Warum wird dieser Fehler angezeigt?
Lösung: Ein VCN ist kein Objekt, das einer Instanz gehört. Das bedeutet, dass die Instanz ohne ordnungsgemäße Authentifizierung nicht direkt auf VCN-Informationen zugreifen kann. Damit die Instanz VCN-Details aus der API abrufen kann, müssen Sie eine dynamische Gruppe mit der Instanz erstellen und eine Policy zuweisen, die die erforderlichen Berechtigungen erteilt.
- Führen Sie den Befehl
-
So aktivieren Sie, dass eine OCI-Compute-Instanz VCN-Details über die API abruft:
-
Dynamische Gruppe erstellen: Diese dynamische Gruppe enthält die Instanzen, die Zugriff auf die API erfordern. Sie definieren die Gruppe mit Regeln basierend auf Attributen wie Instanz-OCID oder Compartment.
-
Berechtigungen mit einer Policy zuweisen: Sie müssen eine Oracle Cloud Infrastructure Identity and Access Management-(OCI IAM-)Policy erstellen, die der dynamischen Gruppe die Berechtigung zum Lesen oder Verwalten von VCN-bezogenen Ressourcen erteilt. Beispiel:
allow dynamic-group <dynamic-group-name> to read virtual-network-family in compartment <compartment-name>
-
Instanz-Principals für Authentifizierung verwenden: Instanzen in der dynamischen Gruppe authentifizieren sich direkt mit ihrer Identität und ermöglichen einen sicheren API-Zugriff, ohne Zugangsdaten in die Anwendung einzubetten. Diese Methode vereinfacht das Sicherheitsmanagement und behält gleichzeitig eine robuste Zugriffskontrolle bei.
-
-
Gehen Sie zur OCI-Konsole.
- Klicken Sie auf das Hamburger-Menü (≡), navigieren Sie zu Compute, Instanzen, und wählen Sie die Compute-Instanz aus, für die Sie die folgenden Befehle ausführen möchten:
sudo oci-network-config show
undsudo oci-network-config configure
. - Klicken Sie auf Anzeigen, um den Instanz-OCID-Wert anzuzeigen.
- Klicken Sie auf Kopieren, um den Instanz-OCID-Wert zu kopieren.
- Klicken Sie auf das Hamburger-Menü (≡), navigieren Sie zu Identität, Domains, Standarddomain, und klicken Sie auf Dynamische Gruppen.
- Klicken Sie auf Dynamische Gruppe erstellen.
- Geben Sie einen Namen für die dynamische Gruppe ein. In diesem Beispiel verwenden wir
sriov-test-04
. - Klicken Sie auf Regel-Builder.
- Wählen Sie unter Instanzen abgleichen mit die Option Instanz-OCID aus.
- Geben Sie den Wert der Instanz-OCID in Wert ein.
- Klicken Sie auf Regel hinzufügen.
- Beachten Sie, dass der Gruppe eine neue Regel hinzugefügt wird.
- Klicken Sie auf Erstellen.
- Klicken Sie auf das Hamburger-Menü (≡), navigieren Sie zu Compute, Instanzen, und wählen Sie die Compute-Instanz aus, für die Sie die folgenden Befehle ausführen möchten:
-
Nachdem die Gruppe vorhanden ist, zu der die Instanz gehört, müssen Sie eine Policy in den Compartments erstellen, die die Instanz enthalten. Mit dieser Policy können Instanzen in der Gruppe Vorgänge für VCN-Objekte ausführen, wie Subnetze.
- Klicken Sie auf das Hamburger-Menü (≡), navigieren Sie zu Identität, und klicken Sie auf Compartments.
- Klicken Sie auf das Root Compartment. In diesem Beispiel handelt es sich um
oraseemeaocids4
.
- Beachten Sie, dass wir uns jetzt in den untergeordneten Compartments befinden.
- Klicken Sie auf das nächste untergeordnete Compartment. In diesem Beispiel handelt es sich um
NETWORK
.
- Beachten Sie, dass wir uns jetzt im nächsten untergeordneten Compartment befinden.
- Klicken Sie auf das nächste untergeordnete Compartment. In diesem Beispiel handelt es sich um
Iwan
.
- Stellen Sie sicher, dass das richtige Compartment ausgewählt ist.
- Klicken Sie auf Policys.
- Klicken Sie auf Policy erstellen.
-
Geben Sie unter Policy erstellen die folgenden Informationen ein.
- Geben Sie einen Namen für die Policy ein. In diesem Beispiel verwenden wir
allow-sriov-test-04-to-vcn
. - Geben Sie eine Beschreibung für die Policy ein. In diesem Beispiel verwenden wir
allow-sriov-test-04-to-vcn
. - Wählen Sie Manuellen Editor anzeigen aus.
- Geben Sie die folgende Policy ein:
allow dynamic-group sriov-test-04 to manage all-resources in compartment Iwan
. - Klicken Sie auf Erstellen.
- Geben Sie einen Namen für die Policy ein. In diesem Beispiel verwenden wir
-
Beachten Sie die neue Policy-Anweisung innerhalb der neu erstellten Policy.
-
Jetzt haben wir der Instanz erlaubt, API-Aufrufe über die OCI-CLI an das VCN auszuführen.
- Führen Sie den Befehl
ip a
aus, um die IP-Adresse aus allen Schnittstellen abzurufen. - Beachten Sie, dass für die Schnittstelle
ens5
keine IP-Adresse konfiguriert ist. - Führen Sie den Befehl
sudo oci-network-config show
aus, um die gesamte Netzwerkkonfiguration von der Instanz auf OCI-Ebene abzurufen. Der Fehler ist nun verschwunden. - Beachten Sie die Informationen auf OCI-Ebene in der Schnittstelle
ens5
und das FlagADD
für die Schnittstelleens5
. - Beachten Sie die Informationen auf Betriebssystemebene in den Schnittstellen
ens3
undens5
.
- Führen Sie den Befehl
-
Bevor Sie den Befehl
sudo oci-network-config configure
ausführen, um die IP-Adresse der zweiten VNIC zu konfigurieren, müssen Sie ein neues Verzeichnis namens/etc/iproute2
und eine neue Datei namens/etc/iproute2/rt_tables
erstellen. Dies ist erforderlich, damit das System das Routing und das Standardgateway für diese neue Schnittstelle korrekt konfigurieren kann.Mit der Datei
/etc/iproute2/rt_tables
werden mehrere Routing-Tabellen in Linux definiert und verwaltet sowie Policy-basiertes Routing aktiviert. Sie ordnet menschenlesbare Namen Routing-Tabellennummern zu, sodass erweiterte Setups wie das Routing von spezifischem Datenverkehr über verschiedene Gateways, Schnittstellen oder ISPs möglich sind.Führen Sie den Befehl
sudo mkdir -p /etc/iproute2
aus, um ein Verzeichnis mit dem Namen/etc/iproute2
und den Befehlsudo touch /etc/iproute2/rt_tables
zu erstellen, um die Datei mit dem Namenrt_tables
zu erstellen. -
Führen Sie die folgenden Befehle aus.
- Führen Sie den Befehl
sudo oci-network-config configure
aus, um die IP-Adresse der zweiten VNIC zu konfigurieren. - Notieren Sie sich die Meldung Konfiguriert.
- Führen Sie den Befehl
sudo oci-network-config show
aus, um die gesamte Netzwerkkonfiguration von der Instanz auf OCI-Ebene abzurufen. - Die Informationen auf OCI-Ebene auf der Schnittstelle
ens5
und das FlagADD
für die Schnittstelleens5
sind jetzt verschwunden. - Führen Sie den Befehl
ip a
aus, um die IP-Adresse aus allen Schnittstellen abzurufen. - Für die Schnittstelle
ens5
ist jetzt eine IP-Adresse konfiguriert. - Führen Sie den Befehl
route -n
aus, um alle Routen und Standardgateways für alle Schnittstellen abzurufen. - Beachten Sie, dass das Gateway jetzt für die Schnittstelle
ens5
verfügbar ist.
- Führen Sie den Befehl
more /etc/iproute2/rt_tables
aus, um zu prüfen, ob ein neuer Eintrag erstellt wurde. - Beachten Sie den Eintrag
11 ort
. - Führen Sie den Befehl
ip route show table 11
aus, um die Routing-Tabelle für dieses Mapping zu prüfen. - Beachten Sie, dass eine Standardroute für die Schnittstelle
ens5
der neuen zweiten VNIC auf der Instanz vorhanden ist.
- Führen Sie den Befehl
Methode 2: Mit der OCI-CLI (Package oci-utils
) können Sie der zweiten Schnittstelle mit ocid daemon
eine IP-Adresse zuweisen
Bei dieser Methode erstellen Sie eine neue Instanz mit dem Namen sriov-test-01
und weisen der zweiten Schnittstelle mit dem ocid-Daemon eine IP-Adresse zu.
Voraussetzungen: Sie haben eine neue Instanz bereitgestellt und eine zweite VNIC hinzugefügt.
-
Führen Sie die folgenden Befehle aus.
- Führen Sie den Befehl
ip a
aus, um die IP-Adresse aus allen Schnittstellen abzurufen. - Beachten Sie, dass für die Schnittstelle
ens5
keine IP-Adresse konfiguriert ist.
- Führen Sie den Befehl
route -n
aus, um alle Routen und Standardgateways für alle Schnittstellen abzurufen. - Beachten Sie, dass nur ein Gateway für die Schnittstelle
ens3
verfügbar ist.
- Führen Sie den gefilterten Befehl
ip -f inet -o addr
aus, um alle konfigurierten IP-Adressen auf allen Schnittstellen anzuzeigen. - Beachten Sie, dass nur eine konfigurierte Schnittstelle vorhanden ist und die IP-Adresse die
ens3
-Schnittstelle ist.
- Führen Sie den Befehl
systemctl list-unit-files ocid.service
aus, um zu prüfen, ob der OCID-Daemon aktiviert ist. - Beachten Sie, dass der OCID-Daemon deaktiviert ist.
- Führen Sie den Befehl
sudo systemctl start ocid
aus, um den OCID-Daemon zu starten. - Führen Sie den Befehl
sudo systemctl status ocid
aus, um den Status des OCID-Daemons zu prüfen. - Beachten Sie, dass der OCID-Daemon aktiv ist und ausgeführt wird.
- Führen Sie den gefilterten Befehl
ip -f inet -o addr
aus, um alle konfigurierten IP-Adressen auf allen Schnittstellen anzuzeigen. - Beachten Sie, dass die Schnittstelle
ens5
jetzt konfiguriert ist und über eine IP-Adresse verfügt.
- Führen Sie den Befehl
ip a
aus, um die IP-Adresse aus allen Schnittstellen abzurufen. - Beachten Sie, dass für die Schnittstelle
ens5
jetzt eine IP-Adresse konfiguriert ist.
- Führen Sie den Befehl
route -n
aus, um alle Routen und Standardgateways für alle Schnittstellen abzurufen. - Beachten Sie, dass das Gateway jetzt für die Schnittstelle
ens5
verfügbar ist.
- Führen Sie den Befehl
-
Um sicherzustellen, dass der OCID-Service nach einem Neustart automatisch gestartet wird, führen Sie den Befehl
sudo systemctl enable ocid
aus. -
Wie bei Methode 1 müssen Sie ein Verzeichnis namens
/etc/iproute2
und eine Datei namens/etc/iproute2/rt_tables
erstellen. Dies ist erforderlich, damit das System das Routing und das Standardgateway für diese neue Schnittstelle korrekt konfigurieren kann.Mit der Datei
/etc/iproute2/rt_tables
werden mehrere Routing-Tabellen in Linux definiert und verwaltet sowie Policy-basiertes Routing aktiviert. Sie ordnet menschenlesbare Namen Routing-Tabellennummern zu, sodass erweiterte Setups wie das Routing von spezifischem Datenverkehr über verschiedene Gateways, Schnittstellen oder ISPs möglich sind.Führen Sie den Befehl
sudo mkdir -p /etc/iproute2
aus, um ein Verzeichnis mit dem Namen/etc/iproute2
und den Befehlsudo touch /etc/iproute2/rt_tables
zu erstellen, um die Datei mit dem Namenrt_tables
zu erstellen. -
Führen Sie den Befehl
sudo reboot
aus.- Führen Sie den Befehl
more /etc/iproute2/rt_tables
aus, um zu prüfen, ob ein neuer Eintrag erstellt wurde. - Beachten Sie den Eintrag
11 ort3
. - Führen Sie den Befehl
ip route show table 11
aus, um die Routing-Tabelle für dieses Mapping zu prüfen. - Beachten Sie, dass eine Standardroute für die Schnittstelle
ens5
der neuen zweiten VNIC auf der Instanz vorhanden ist.
- Führen Sie den Befehl
Methode 3: Verwenden Sie das Skript OCI_Multi_VNIC_Setup
Erstellen Sie bei dieser Methode eine neue Instanz mit dem Namen sriov-test-02
, und konfigurieren Sie die IP-Adresse für die zweite VNIC mit dem Skript OCI_Multi_VNIC_Setup.
Voraussetzungen: Sie haben eine neue Instanz bereitgestellt und eine zweite VNIC hinzugefügt.
-
Führen Sie die folgenden Befehle aus.
- Führen Sie den Befehl
ip a
aus, um die IP-Adresse aus allen Schnittstellen abzurufen. - Beachten Sie, dass für die Schnittstelle
ens5
keine IP-Adresse konfiguriert ist. - Führen Sie den Befehl
route -n
aus, um alle Routen und Standardgateways für alle Schnittstellen abzurufen. - Beachten Sie, dass nur ein Gateway für die Schnittstelle
ens3
verfügbar ist.
-
Laden Sie das Skript mit dem folgenden curl-Befehl herunter.
curl -o OCI_Multi_VNIC_Setup.sh https://raw.githubusercontent.com/Olygo/OCI_Multi_VNIC_Setup/refs/heads/main/OCI_Multi_VNIC_Setup.sh
-
Führen Sie den Befehl
ls -l
aus, um alle Dateien aufzulisten. -
Beachten Sie, dass das Skript
CI_Multi_VNIC_Setup.sh
erfolgreich heruntergeladen wurde. -
Führen Sie den Befehl
chmod +x ./OCI_Multi_VNIC_Setup.sh
aus, um das heruntergeladene Skript ausführbar zu machen. -
Führen Sie den Befehl
sudo ./OCI_Multi_VNIC_Setup.sh
aus, um das Skript auszuführen.
- Führen Sie den Befehl
-
Sammeln Sie einige Informationen aus der OCI-Konsole, die wir bei der Ausführung des Skripts als Eingabe verwenden müssen.
- Notieren Sie sich auf der Seite Instanzdetails die private IPv4-Adresse der primären Schnittstelle.
- Bildlauf nach unten.
- Klicken Sie auf Angehängte VNICs.
- Klicken Sie auf die zweite VNIC.
- Notieren Sie sich die MAC-Adresse der zweiten VNIC.
- Notieren Sie sich die IP-Adresse der zweiten VNIC.
Hinweis: Obwohl die IP-Adresse nicht im Instanzbetriebssystem konfiguriert ist, ist die IP-Adresse bereits von der OCI-Konsolenverwaltung reserviert.
-
Legen Sie anhand der IP-Adresse und der Subnetzinformationen das Standardgateway für das Subnetz fest, da für das Skript diese Informationen erforderlich sind.
Hinweis: Die OCI-Konsole enthält keine Details zum Standardgateway, ist jedoch in der Regel die erste verwendbare IP-Adresse im Subnetz.
Wir haben folgende Informationen:
Primäre Schnittstelle (ens3) Sekundäre Schnittstelle (ens5) IPv4-Subnetz: 10.0.0.0/29 10.0.3.0/27 IPv4-Adresse: 10.0.0.4 10.0.3.5/27 IPv4-Gateway: 10.0.0.1 10.0.3.1 MAC-Adresse: Für Skript nicht erforderlich 2:0:17:0:61:1 -
Geben Sie folgende Informationen ein.
- Name der primären VNIC-Schnittstelle: Geben Sie
ens3
ein. - Primäre VNIC-IP: Geben Sie
10.0.0.4
ein. - Primäre VNIC-Gateway-IP: Geben Sie
10.0.0.1
ein. - Sekundärer VNIC-Schnittstellenname: Geben Sie
ens5
ein. - Sekundäre VNIC-IP-Adresse (CIDR-Notation): Geben Sie
10.0.3.5/27
mit vollständiger CIDR-Notation ein. - Sekundäre VNIC-MAC-Adresse: Geben Sie
02:00:17:00:61:01
ein. - Diese Schnittstelle ist Teil eines anderen Subnetzes. Geben Sie hier
y
ein. - Sekundäres VNIC-Gateway: Geben Sie
10.0.3.1
ein.
- Prüfen Sie die Informationen, und geben Sie zur Bestätigung
y
ein. - Geben Sie
y
ein, um die Einstellungen erneut zu bestätigen. - Beachten Sie, dass das Skript die Schnittstellenkonfiguration startet und dabei Statusaktualisierungen bereitstellt.
- Name der primären VNIC-Schnittstelle: Geben Sie
-
Die vollständige Ausgabe der Statusmeldungen finden Sie unten:
Summary of your configuration: - The primary Vnic name is: ens3 - The primary Vnic IP is: 10.0.0.4 - The primary Vnic GW is: 10.0.0.1 - The secondary Vnic name is: ens5 - The secondary Vnic IP with CIDR is: 10.0.3.5/27 - The secondary Vnic MAC is: 02:00:17:00:61:01 - The secondary Vnic GW is: 10.0.3.1 Do you confirm these settings ? (y)es/(n)o/(q)uit: y User settings confirmed... Summary of your configuration: - The primary Vnic name is: ens3 - The primary Vnic IP is: 10.0.0.4 - The primary Vnic GW is: 10.0.0.1 - The secondary Vnic name is: ens5 - The secondary Vnic IP with CIDR is: 10.0.3.5/27 - The secondary Vnic MAC is: 02:00:17:00:61:01 - The secondary Vnic GW is: 10.0.3.1 Do you confirm these settings ? (y)es/(n)o/(q)uit: y User settings confirmed... *** Checking if NetworkManager CLI (nmcli) is installed *** nmcli is already installed. *** Configuring NetworkManager *** NetworkManager is already enabled. NetworkManager is already running. NetworkManager is configured and running. *** Check and install iproute if not installed *** Package 'iproute' is already installed. Proceeding. *** Ensure /etc/iproute2 directory exists *** Directory '/etc/iproute2' does not exist. Creating it... Directory '/etc/iproute2' created successfully. *** Ensure /etc/iproute2/rt_tables file exists *** File '/etc/iproute2/rt_tables' does not exist. Creating it... File '/etc/iproute2/rt_tables' created successfully with a default header. *** Starting ens5 configuration and persistence setup *** *** Configure secondary VNIC with NetworkManager *** Connection 'ens5' (582dd2d7-3a3e-45b9-8289-ce3d474f4b74) successfully added. Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3) *** Enable IP forwarding and configure reverse path filtering *** # Enable IP forwarding net.ipv4.ip_forward=1 # Configure reverse path filtering net.ipv4.conf.all.rp_filter=2 net.ipv4.conf.default.rp_filter=2 net.ipv4.conf.ens3.rp_filter=2 net.ipv4.conf.ens5.rp_filter=2 *** Apply sysctl settings immediately *** kernel.unknown_nmi_panic = 1 net.ipv4.ip_forward = 1 net.ipv4.conf.all.rp_filter = 2 net.ipv4.conf.default.rp_filter = 2 net.ipv4.conf.ens3.rp_filter = 2 net.ipv4.conf.ens5.rp_filter = 2 *** Adding custom routing tables *** 100 vnic_1 200 vnic_2 *** Adding IP rules and routes *** *** Creating policy routing persistence script *** *** Creating systemd service for policy routing *** Created symlink /etc/systemd/system/multi-user.target.wants/policy-routing.service → /etc/systemd/system/policy-routing.service. *** Testing connectivity *** PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data. 64 bytes from 10.0.0.4: icmp_seq=1 ttl=64 time=0.059 ms 64 bytes from 10.0.0.4: icmp_seq=2 ttl=64 time=0.037 ms 64 bytes from 10.0.0.4: icmp_seq=3 ttl=64 time=0.031 ms 64 bytes from 10.0.0.4: icmp_seq=4 ttl=64 time=0.027 ms --- 10.0.0.4 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3073ms rtt min/avg/max/mdev = 0.027/0.038/0.059/0.013 ms PING 10.0.3.5 (10.0.3.5) 56(84) bytes of data. 64 bytes from 10.0.3.5: icmp_seq=1 ttl=64 time=0.026 ms 64 bytes from 10.0.3.5: icmp_seq=2 ttl=64 time=0.022 ms 64 bytes from 10.0.3.5: icmp_seq=3 ttl=64 time=0.023 ms 64 bytes from 10.0.3.5: icmp_seq=4 ttl=64 time=0.035 ms --- 10.0.3.5 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3069ms rtt min/avg/max/mdev = 0.022/0.026/0.035/0.007 ms PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. 64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.098 ms 64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.097 ms 64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.067 ms 64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=0.060 ms --- 10.0.0.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3069ms rtt min/avg/max/mdev = 0.060/0.080/0.098/0.019 ms *** Network configuration completed *** IP rules: 0: from all lookup local 32764: from 10.0.3.5 lookup vnic_2 32765: from 10.0.0.4 lookup vnic_1 32766: from all lookup main 32767: from all lookup default $ nmcli device show ens5 GENERAL.DEVICE: ens5 GENERAL.TYPE: ethernet GENERAL.HWADDR: 02:00:17:00:61:01 GENERAL.MTU: 9000 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: ens5 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/3 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: 10.0.3.5/27 IP4.GATEWAY: 10.0.3.1 IP4.ROUTE[1]: dst = 10.0.3.0/27, nh = 0.0.0.0, mt = 101 IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 10.0.3.1, mt = 101 IP4.ROUTE[3]: dst = 0.0.0.0/0, nh = 10.0.3.1, mt = 0, table=200 IP6.ADDRESS[1]: fe80::70ba:d30f:3dac:6462/64 IP6.GATEWAY: -- IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 1024 *** Configuration complete! ens5 is set up and all settings are persistent *** [opc@sriov-test-02 ~]$
- Führen Sie den Befehl
ip a
aus, um die IP-Adresse aus allen Schnittstellen abzurufen. - Beachten Sie, dass für die Schnittstelle
ens5
jetzt eine IP-Adresse konfiguriert ist. - Führen Sie den Befehl
route -n
aus, um alle Routen und Standardgateways für alle Schnittstellen abzurufen. Beachten Sie, dass das Gateway jetzt für die Schnittstelleens5
verfügbar ist.
Hinweis:
- Die Konfiguration einer IP-Adresse und die Sicherstellung, dass das Routing korrekt funktioniert, sind zwei verschiedene Dinge.
- Das Skript konfiguriert auch das Routing-Teil für uns.
- Achten Sie auf die spezifischen Ausgaben des Skripts.
- Führen Sie den Befehl
-
Im folgenden Teil des Skripts wird ein Verzeichnis mit dem Namen
/etc/iproute2 directory
und eine Datei mit dem Namenrt_tables
erstellt.*** Ensure /etc/iproute2 directory exists *** Directory '/etc/iproute2' does not exist. Creating it... Directory '/etc/iproute2' created successfully. *** Ensure /etc/iproute2/rt_tables file exists *** File '/etc/iproute2/rt_tables' does not exist. Creating it... File '/etc/iproute2/rt_tables' created successfully with a default header.
-
Der folgende Teil des Skripts fügt die erforderlichen Einträge in die Datei
rt_tables
ein.*** Adding custom routing tables *** 100 vnic_1 200 vnic_2
-
Der folgende Teil des Skripts fügt die IP-Routingregeln hinzu, um Policy-basiertes Routing auf der Instanz zuzulassen. Außerdem wird der Service für Policy-basiertes Routing aktiviert, das erforderlich ist, wenn Sie eine Instanz mit mehreren VNICs haben.
*** Adding IP rules and routes *** *** Creating policy routing persistence script *** *** Creating systemd service for policy routing *** Created symlink /etc/systemd/system/multi-user.target.wants/policy-routing.service → /etc/systemd/system/policy-routing.service.
-
Führen Sie die folgenden Befehle aus.
- Führen Sie den Befehl
more /etc/iproute2/rt_tables
aus, um zu prüfen, ob ein neuer Eintrag erstellt wurde. - Beachten Sie, dass die Einträge
100 vnic_1
und200 vnic_2
vorhanden sind. - Führen Sie den Befehl
ip route show table 100
aus, um die Routingtabelle für diese Zuordnung zu prüfen. Beachten Sie, dass eine Standardroute für die Schnittstelleens3
der primären VNIC auf der Instanz vorhanden ist. - Führen Sie den Befehl
ip route show table 200
aus, um die Routingtabelle für diese Zuordnung zu prüfen. Beachten Sie, dass für die Schnittstelleens5
die neue zweite VNIC auf der Instanz eine Standardroute vorhanden ist.
- Führen Sie den Befehl
Methode 4: Schnittstellenkonfigurationsdatei manuell erstellen
Erstellen Sie eine neue Instanz mit dem Namen sriov-test-03
, und konfigurieren Sie die IP-Adresse für die zweite VNIC anhand einer Definition für die neue VNIC im Verzeichnis /etc/sysconfig/network-scripts/
.
Hinweis: Bei dieser Methode konfigurieren wir fast alle Schritte, die automatisch vom Skript in Methode 3 ausgeführt wurden.
Voraussetzungen: Sie haben eine neue Instanz bereitgestellt und eine zweite VNIC hinzugefügt.
-
Führen Sie den folgenden Befehl aus.
- Führen Sie den Befehl
ip a
aus, um die IP-Adresse aus allen Schnittstellen abzurufen. - Beachten Sie, dass für die Schnittstelle
ens5
keine IP-Adresse konfiguriert ist. - Führen Sie den Befehl
route -n
aus, um alle Routen und Standardgateways für alle Schnittstellen abzurufen. - Beachten Sie, dass nur ein Gateway für die Schnittstelle
ens3
verfügbar ist.
- Führen Sie den Befehl
-
Navigieren Sie zu Instanz, Angehängte VNICS, und wählen Sie die zweite VNIC aus, um die IP-Adresse der zweiten VNIC abzurufen. Notieren Sie sich die IP-Adresse.
-
Gehen Sie mit dem Befehl
cd /etc/sysconfig/network-scripts/
zum Ordner/network-scripts
, und erstellen Sie mit dem Befehlsudo nano ifcfg-ens5
eine neue Datei im selben Ordner mit dem Namenifcfg-ens5
. -
Konfigurieren Sie die Schnittstelle
ens5
mit den folgenden Parametern.NAME="ens5" DEVICE="ens5" IPADDR=10.0.3.19 NETMASK=255.255.255.224 GATEWAY=10.0.3.1 ONBOOT=yes
- Die IP-Adresse entspricht der von der OCI-Konsole abgerufenen IP-Adresse.
- Das Subnetz wird aus dem Subnetz innerhalb des VCN abgeleitet, mit dem diese Schnittstelle verbunden ist.
- Die Gateway-IP-Adresse ist die erste IP-Adresse im Subnetz.
-
Speichern Sie die Konfigurationsdatei
ifcfg-ens5
mit dem nano-Editor.- Listen Sie die Dateien im Verzeichnis
/etc/sysconfig/network-scripts/
mit dem Befehlls -l
auf. - Beachten Sie, dass eine Schnittstellenkonfigurationsdatei für
ens3
vorhanden ist. - Beachten Sie, dass eine Schnittstellenkonfigurationsdatei für
ens5
vorhanden ist.
- Prüfen Sie den Inhalt der Datei
ifcfg-ens5
mit dem Befehlmore ifcfg-ens5
. - Stellen Sie sicher, dass alle Parameter korrekt konfiguriert sind.
- Führen Sie den Befehl
ip a
aus, um die IP-Adresse aus allen Schnittstellen abzurufen. - Beachten Sie, dass für die Schnittstelle
ens5
noch keine IP-Adresse konfiguriert ist.
- Listen Sie die Dateien im Verzeichnis
-
Starten Sie die Instanz mit dem Befehl
sudo reboot
neu.- Führen Sie den Befehl
ip a
aus, um die IP-Adresse aus allen Schnittstellen abzurufen. - Beachten Sie, dass für die Schnittstelle
ens5
jetzt eine IP-Adresse konfiguriert ist. - Führen Sie den Befehl
route -n
aus, um alle Routen und Standardgateways für alle Schnittstellen abzurufen. Beachten Sie, dass das Gateway jetzt für die Schnittstelleens5
verfügbar ist.
Hinweis: Konfigurieren Sie eine IP-Adresse, und stellen Sie sicher, dass das Routing ordnungsgemäß funktioniert, sind zwei verschiedene Dinge.
- Führen Sie den Befehl
-
Routing konfigurieren. Mit der Datei
/etc/iproute2/rt_tables
werden mehrere Routing-Tabellen in Linux definiert und verwaltet sowie Policy-basiertes Routing aktiviert. Sie ordnet menschenlesbare Namen Routing-Tabellennummern zu, sodass erweiterte Setups wie das Routing von spezifischem Datenverkehr über verschiedene Gateways, Schnittstellen oder ISPs möglich sind.Führen Sie den Befehl
sudo mkdir -p /etc/iproute2
aus, um das Verzeichnis/etc/iproute2
zu erstellen, und den Befehlsudo nano /etc/iproute2/rt_tables
, um die Dateirt_tables
zu erstellen. -
Konfigurieren Sie die folgenden Parameter in der Datei
rt_tables
.100 vnic_1 200 vnic_2
-
Erstellen Sie das Policy-Routingpersistenzskript mit dem Befehl
sudo nano /usr/local/bin/setup_policy_routing.sh
.#!/bin/bash # Reapply IP rules ip rule add from 10.0.0.3 table vnic_1 ip rule add from 10.0.3.19 table vnic_2 # Reapply routing rules ip route add default via 10.0.0.1 dev ens3 table vnic_1 ip route add default via 10.0.3.1 dev ens5 table vnic_2
-
Führen Sie den Befehl
sudo chmod +x /usr/local/bin/setup_policy_routing.sh
aus, um das Policy-Routingpersistenzskript ausführbar zu machen. -
Erstellen Sie einen systemd-Service für das Policy-Routing-Skript mit dem Befehl
nano /etc/systemd/system/policy-routing.service
. Dies ist erforderlich, wenn Sie über eine Instanz mit mehreren VNICs mit dem Befehl verfügen. -
Konfigurieren Sie die folgenden Parameter in der Datei
policy-routing.service
.[Unit] Description=Setup Policy Routing for Multiple VNICs After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/usr/local/bin/setup_policy_routing.sh RemainAfterExit=true [Install] WantedBy=multi-user.target
-
Führen Sie den Befehl
sudo chmod +x /etc/systemd/system/policy-routing.service
aus, um die Servicedatei für policy-basiertes Routing ausführbar zu machen. -
Führen Sie den Befehl
sudo systemctl start policy-routing.service
aus, um den Service für Policy-basiertes Routing zu starten. -
Führen Sie den Befehl
sudo systemctl status policy-routing
aus, um sicherzustellen, dass der Service für Policy-basiertes Routing geladen und aktiv ist.[opc@sriov-test-03 ~]$ sudo systemctl status policy-routing ● policy-routing.service - Setup Policy Routing for Multiple VNICs Loaded: loaded (/etc/systemd/system/policy-routing.service; enabled; vendor preset: disabled) Active: active (exited) since Wed 2024-12-11 09:07:16 GMT; 4 weeks 1 days ago Process: 2415 ExecStart=/usr/local/bin/setup_policy_routing.sh (code=exited, status=0/SUCCESS) Main PID: 2415 (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 99891) Memory: 0B CGroup: /system.slice/policy-routing.service Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable. [opc@sriov-test-03 ~]$
-
Führen Sie den Befehl
sudo systemctl enable policy-routing.service
aus, um sicherzustellen, dass der Service für Policy-basiertes Routing gestartet wird, wenn die Instanz neu gestartet wird. -
Starten Sie die Instanz mit dem Befehl
sudo reboot
neu. -
Führen Sie nach dem Neustart die folgenden Befehle aus.
- Führen Sie den Befehl
more /etc/iproute2/rt_tables
aus, um zu prüfen, ob ein neuer Eintrag erstellt wurde. - Notieren Sie sich die Einträge
100 vnic_1
und200 vnic_2
, die manuell konfiguriert wurden. - Führen Sie den Befehl
ip route show table 100
aus, um die Routingtabelle für diese Zuordnung zu prüfen. Beachten Sie, dass eine Standardroute für die Schnittstelleens3
der primären VNIC auf der Instanz vorhanden ist. - Führen Sie den Befehl
ip route show table 200
aus, um die Routingtabelle für diese Zuordnung zu prüfen. Beachten Sie, dass für die Schnittstelleens5
die neue zweite VNIC auf der Instanz eine Standardroute vorhanden ist.
- Führen Sie den Befehl
Nächste Schritte
Die Auswahl der richtigen Methode zur Konfiguration einer zweiten Schnittstelle auf einer OCI Linux-Instanz hängt von Ihren Anforderungen, Ihrem technischen Know-how und Ihrem gewünschten Kontrollniveau ab. Wenn Sie nach einem einfachen und effizienten Setup suchen, werden Methoden 1 und Methode 2, die das Package oci-utils
und die nativen Oracle-Tools verwenden, dringend empfohlen. Diese Methoden sind ideal für Benutzer, die die integrierte Funktionalität von OCI nutzen möchten, ohne in die manuelle Konfiguration oder externe Skripte einzutauchen.
Und da Automatisierung und Skalierbarkeit von entscheidender Bedeutung sind, bietet Methode 3 unter Verwendung des Skripts OCI_Multi_VNIC_Setup
eine flexible Lösung. Es ist besonders nützlich, wenn mehrere Schnittstellen über verschiedene Instanzen hinweg verwaltet werden, was Zeitersparnis und Konsistenz bei der Konfiguration bietet.
In der Zwischenzeit bietet Methode 4, der manuelle Konfigurationsansatz, das höchste Maß an Anpassung. Diese Methode eignet sich am besten für fortgeschrittene Benutzer oder bestimmte Umgebungen, in denen Automatisierungstools entweder nicht verfügbar oder nicht bevorzugt sind. Es dient auch als hervorragende Möglichkeit, die Funktionsweise von Netzwerken auf Oracle Linux-Instanzen zu verstehen.
Durch das Verständnis dieser Methoden erhalten Sie die Flexibilität, sekundäre Schnittstellen in einer Vielzahl von Szenarien zu konfigurieren, von der Basiseinrichtung bis hin zu komplexen Multi-Cloud-Architekturen. Mit dem richtigen Ansatz können Sie zuverlässige und effiziente Netzwerkkonfigurationen sicherstellen, die auf Ihre OCI-Workloads zugeschnitten sind.
Danksagungen
- Autor - Iwan Hoogendoorn (OCI Network Specialist)
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Assign an IP Address to a Second Interface on an Oracle Linux Instance
G25213-01
January 2025