Wie bringe ich meine sekundäre Netzwerkschnittstelle in meiner Ubuntu EC2-Instance zum Laufen?
Ich möchte, dass meine sekundäre Netzwerkschnittstelle in meiner Ubuntu Amazon Elastic Compute Cloud (Amazon EC2)-Instance funktioniert.
Kurzbeschreibung
Warnung: Die Verwendung einer sekundären elastischen Netzwerkschnittstelle ist für fortgeschrittene Benutzer vorgesehen. Verwenden Sie diese Lösung nur für den folgenden Anwendungsfall: Sie können keine einzige Netzwerkschnittstelle verwenden. Sie müssen zwei Netzwerkschnittstellen aus demselben Subnetz an eine Instance anschließen. Um Probleme mit asymmetrischem Routing zu vermeiden, verwenden Sie eine einzige elastische Netzwerkschnittstelle oder platzieren Sie doppelte elastische Netzwerkschnittstellen in nicht überlappenden Subnetzen. Oder verwenden Sie Ubuntu 24.04 LTS oder höher.
Das Hinzufügen einer sekundären Netzwerkschnittstelle zu einer Instance, die keine EC2-Instance von Amazon Linux ist, verursacht Probleme mit dem Datenverkehr. Diese Probleme treten auf, weil sich die primären und sekundären Netzwerkschnittstellen im selben Subnetz befinden und es eine Routing-Tabelle mit einem Gateway gibt. Datenverkehr, der in die sekundäre Netzwerkschnittstelle gelangt, verwendet die primäre Netzwerkschnittstelle, um die Instanz zu verlassen. Da die sekundäre IP-Adresse nicht zur MAC-Adresse der primären Netzwerkschnittstelle gehört, funktioniert die sekundäre Schnittstelle nicht.
Hinweis: Die folgenden Schritte sind für Ubuntu 24.04 nicht erforderlich. Ubuntu 24.04 kümmert sich automatisch um diese erweiterte Konfiguration.
Gehen Sie wie folgt vor, damit die sekundäre Schnittstelle funktioniert, nachdem Sie sie erstellt haben:
- Konfigurieren Sie die Routing-Tabelle.
- Richten Sie Regeln in der Richtliniendatenbank für benutzerdefinierte Routing-Tabellen ein, sodass der Datenverkehr für die sekundäre Schnittstelle die neue Routing-Tabelle verwendet.
Bevor Sie beginnen, beachten Sie, dass sich Amazon EC2-Instances in der AWS-Cloud befinden und daher nicht alle Anwendungsfälle von mehreren Schnittstellen profitieren. Die folgenden Beispiele zeigen, wann Sie möglicherweise keine sekundäre Netzwerkschnittstelle verwenden müssen:
- Um den Netzwerkdurchsatz zu erhöhen: Da die Grenzwerte auf der Grundlage des Instance-Typs und der Größe festgelegt werden, steigt der Netzwerkdurchsatz nicht. Weitere Informationen finden Sie unter Amazon-EC2-Instance-Typen.
- So erhöhen Sie elastische IP-Adressen: Sie müssen der Instance keine elastische IP-Adressen hinzufügen, da die meisten Anwendungen gut mit dem DNS funktionieren. Apache kann beispielsweise namensbasierte virtuelle Hosts verwenden. Weitere Informationen finden Sie auf der Apache-Website unter Unterstützung namensbasierter virtueller Hosts.
Hinweis: Die Schritte zum Hinzufügen einer sekundären Netzwerkschnittstelle sind für jede der folgenden Ubuntu-Versionen unterschiedlich:
- Ubuntu 14.04
- Ubuntu 16.04
- Ubuntu 18.04
- Ubuntu 20.04
- Ubuntu 22.04
Behebung
Hinweis: Obwohl die Schritte in der folgenden Lösung auf den aufgeführten Linux-Versionen getestet wurden, müssen Sie möglicherweise die benutzerdefinierten Einstellungen Ihrer Konfiguration ändern. Alle Verfahren müssen mit Root-Benutzerrechten ausgeführt werden. Werden Sie entweder der Root-Benutzer mit sudo -i oder führen Sie alle Befehle mit sudo aus.
Konfigurieren von Ubuntu 14.04 oder 16.04
Sie können eine einzelne Datei verwenden, um die Konfigurationsdatei für die sekundäre Schnittstelle zu erstellen, die Routingtabelle zu konfigurieren und dann Routing-Richtlinienregeln für Ubuntu festzulegen.
Gehen Sie wie folgt vor, um Ubuntu 14.04 oder 16.04 zu konfigurieren:
-
Führen Sie den folgenden Befehl aus, um den Namen der primären Netzwerkschnittstelle abzurufen:
ip a | grep ^[[:digit:]]
Sie erhalten eine Ausgabe, die dem folgenden Beispiel ähnelt:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
Wichtig: Im vorangehenden Beispiel heißen die primären Schnittstellen eth0, eth1 usw. Bei Instances, die eine bessere Vernetzung unterstützen, wie z. B. bei den Familientypen m4 und m5, kann es jedoch zu einer Inkonsistenz bei der Benennung kommen. Beispielsweise könnte die primäre den Namen ens3 haben, wenn die sekundäre den Namen eth0 trägt. Diese Namensinkonsistenz tritt auf, wenn Sie die sekundäre Schnittstelle hinzufügen, während die Instance ausgeführt wird. Um eine Inkonsistenz bei der Benennung zu vermeiden, fügen Sie die Schnittstelle beim Start hinzu oder starten Sie die Instance neu. Oder, wenn die Schnittstelle läuft, verwenden Sie den folgenden Befehl, um den Namen zu ändern:
ip link set eth0 name ens4 ip link set ens4 up ip link show ens4 --->verify
-
Erstellen Sie eine Konfigurationsdatei für die sekundäre Schnittstelle:
vi /etc/network/interfaces.d/51-eth1.cfg
Hinweis: Ändern Sie eth1, dass es Ihrem sekundären Schnittstellennamen entspricht.
Der folgende Befehl ist ein Beispiel für eine einzelne IP-Adresse von 172.31.21.115 und mit einem Gateway von 172.31.16.1 auf der sekundären Schnittstelle:
auto eth1 iface eth1 inet static address 172.31.21.115 netmask 255.255.240.0 # Gateway configuration up ip route add default via 172.31.16.1 dev eth1 table 1000 # Routes and rules up ip route add 172.31.21.115 dev eth1 table 1000 up ip rule add from 172.31.21.115 lookup 1000
Hinweis: Ersetzen Sie die Beispiel-IP-Adresse und das Gateway durch Ihre eigene Informationen. Ihr Gateway muss die erste gültige IP-Adresse in Ihrem Subnetz sein.
Der folgende Befehl ist ein Beispiel für mehrere IP-Adressen. In diesem Beispiel lauten die IP-Adressen 172.31.21.115 und 172.31.18.46, und das Gateway ist 172.31.16.1:
auto eth1 # Enter one or more IP settings iface eth1 inet static address 172.31.21.115 netmask 255.255.240.0 iface eth1 inet static address 172.31.18.46 netmask 255.255.240.0 # Default gateway for eth1 up ip route add default via 172.31.16.1 dev eth1 table 1000 # A route for every IP up ip route add 172.31.21.115 dev eth1 table 1000 up ip route add 172.31.18.46 dev eth1 table 1000 # A policy rule for every IP up ip rule add from 172.31.21.115 lookup 1000 up ip rule add from 172.31.18.46 lookup 1000
Hinweis: Ersetzen Sie die Beispiel-IP-Adressen und das Gateway durch Ihre eigenen.
-
Erstellen Sie die Datei restrict-default-gw, um zu verhindern, dass das Standard-Gateway in der Haupttabelle überschrieben wird:
vi /etc/dhcp/dhclient-enter-hooks.d/restrict-default-gw
-
Fügen Sie der Datei restrict-default-gw die folgenden Zeilen hinzu:
case ${interface} in eth0) ;; *) unset new_routers ;; esac
**Hinweis:**Ersetzen Sie eth0 durch Ihren primären Schnittstellennamen.
-
Starten Sie das Netzwerk neu.
Führen Sie für Ubuntu 14.04 den folgenden Befehl aus:
(ifdown eth1 && ifup eth1)
Führen Sie für Ubuntu 16.04 den folgenden Befehl aus:
systemctl restart networking
Konfigurieren von Ubuntu 18.04, 20.04 und 22.04
Ubuntu 18.04, 20.04 und 22.04 verwenden die Netplan-Netzwerkkonfiguration. Beachten Sie, dass Netplan das YAML-Format verwendet. Dieses YAML-Format bedeutet, dass Einrückungen von entscheidender Bedeutung sind. Das folgende Netplan-Beispiel verwendet Einrückungen mit zwei Leerzeichen.
Gehen Sie wie folgt vor, um Ubuntu 18.04, 20.04 und 22.04 zu konfigurieren:
-
Erstellen Sie eine Konfigurationsdatei für die sekundäre Schnittstelle:
vi /etc/netplan/51-eth1.yaml
-
Fügen Sie der Datei 51-eth1.yaml die folgenden Zeilen hinzu:
network: version: 2 renderer: networkd ethernets: eth1: addresses: - 172.31.24.153/20 - 172.31.28.195/20 dhcp4: no routes: - to: 0.0.0.0/0 via: 172.31.16.1 # Default gateway table: 1000 - to: 172.31.24.153 via: 0.0.0.0 scope: link table: 1000 - to: 172.31.28.195 via: 0.0.0.0 scope: link table: 1000 routing-policy: - from: 172.31.24.153 table: 1000 - from: 172.31.28.195 table: 1000
Hinweis: Ersetzen Sie die vorherigen Beispielinformationen durch Informationen, die für Ihren Anwendungsfall spezifisch sind. Die YAML-Datei im vorherigen Beispiel konfiguriert zwei IP-Adressen auf eth1, der sekundären Schnittstelle.
Gehen Sie wie folgt vor, um den CIDR-Bereich zu finden, der in der YAML-Datei verwendet werden soll:
- Öffnen Sie die Amazon EC2-Konsole, wählen Sie Instances und dann die Instance aus.
- Scrollen Sie auf der Registerkarte Netzwerk zu Netzwerkschnittstellen und notieren Sie sich die Subnetz-ID Ihrer sekundären Netzwerkschnittstelle.
- Öffnen Sie die Amazon Virtual Private Cloud (Amazon VPC)-Konsole, wählen Sie Subnetze aus und notieren Sie sich dann den IPv4-CIDR-Bereich, der für die Subnetz-ID aufgeführt ist.
- Führen Sie den folgenden Befehl aus, um die Netzwerkkonfiguration anzuwenden:
netplan --debug apply
Ähnliche Informationen
Ähnliche Videos
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren