Comment faire fonctionner mon interface réseau secondaire sur mon instance Amazon EC2 sous Ubuntu ?
Je souhaite faire fonctionner mon interface réseau secondaire sur mon instance Amazon Elastic Compute Cloud (Amazon EC2) sous Ubuntu.
Brève description
Important : l’utilisation d’une deuxième interface réseau Elastic est destinée aux utilisateurs avancés. Utilisez cette solution uniquement lorsque vous ne pouvez pas utiliser une seule interface réseau.
Si vous ajoutez une interface réseau secondaire à une instance Amazon EC2 qui n’utilise pas Amazon Linux, vous risquez de rencontrer des problèmes de flux de trafic. Ces problèmes se produisent car l’interface réseau secondaire achemine le trafic entrant via l’interface réseau principale. Comme l’adresse IP secondaire n’appartient pas à l’adresse MAC de l’interface réseau principale, l’interface secondaire ne fonctionne pas.
Remarque : Ubuntu 24.04 ne nécessite pas les étapes suivantes et gère automatiquement cette configuration avancée.
Pour assurer le fonctionnement de l’interface secondaire après sa création, procédez comme suit :
- Configurez la table de routage.
- Définissez des règles dans la base de données de la stratégie de routage personnalisée afin que le trafic de l’interface secondaire utilise la nouvelle table de routage.
Remarque : les instances Amazon EC2 se trouvent dans le Cloud AWS, et toutes les instances ne tirent pas parti de l’utilisation de plusieurs interfaces.
Il est possible que vous n’ayez pas besoin d’une deuxième interface réseau pour augmenter le débit réseau. AWS définit des quotas en fonction du type et de la taille de l’instance, et cette configuration limite le débit réseau. Pour plus d’informations, consultez Types d’instances Amazon EC2.
Il est également possible que vous n’ayez pas besoin d’une deuxième interface réseau pour augmenter le nombre d’adresses IP Elastic. Vous n’avez pas besoin d’ajouter d’adresses IP Elastic à votre instance, car la plupart des applications fonctionnent correctement avec le DNS. Par exemple, Apache peut utiliser des hôtes virtuels basés sur le nom. Pour plus d’informations, consultez la page Prise en charge des hôtes virtuels basés sur le nom sur le site Web d’Apache.
Les étapes pour ajouter une interface réseau secondaire diffèrent selon les systèmes d’exploitation suivants :
- Ubuntu 14.04
- Ubuntu 16.04
- Ubuntu 18.04, 20.04 et 22.04
- Debian 12 (sous-réseaux différents)
Résolution
Remarque : les étapes de la résolution suivante ont été testées sur les versions Linux répertoriées. Modifiez les paramètres personnalisés de votre configuration pour exécuter les étapes suivantes avec les autorisations d’utilisateur racine. Utilisez l’utilisateur racine avec sudo -i, ou exécutez toutes les commandes avec sudo.
Configurer Ubuntu 14.04 ou 16.04
Utilisez un seul fichier pour créer le fichier de configuration de l’interface secondaire, configurer la table de routage, puis définir les règles de stratégie de routage pour Ubuntu.
Procédez comme suit :
-
Pour obtenir le nom de l’interface réseau primaire, exécutez la commande suivante :
ip a | grep ^[[:digit:]]Exemple de sortie :
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 1000Important : dans l’exemple précédent, les interfaces principales sont nommées eth0 et eth1. Cependant, pour les instances qui prennent en charge la mise en réseau améliorée, telles que les familles m4 et m5, vous pouvez constater une incohérence de nommage. Par exemple, l’interface principale peut être nommée ens3 tandis que l’interface secondaire est nommée eth0. Cette incohérence de dénomination se produit lorsque vous ajoutez l’interface secondaire pendant que l’instance est en cours d’exécution. Pour éviter une incohérence de dénomination, ajoutez l’interface au moment du lancement ou redémarrez l’instance. Si l’interface est en cours d’exécution, utilisez la commande suivante pour modifier son nom :
ip link set eth0 name ens4 ip link set ens4 up ip link show ens4 -
Créez un fichier de configuration pour l’interface secondaire :
vi /etc/network/interfaces.d/51-eth1.cfgRemarque : remplacez eth1 par le nom de votre interface secondaire.
La commande suivante est un exemple avec une seule adresse IP, 172.31.21.115, et une passerelle, 172.31.16.1, sur l’interface secondaire :
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 1000Remarque : remplacez 172.31.21.115 par votre adresse IP et 172.31.16.1 par votre passerelle. Votre passerelle doit être la première adresse IP valide de votre sous-réseau.
La commande suivante est un exemple avec plusieurs adresses IP :auto eth1 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 1000Remarque : remplacez 172.31.21.115 et 172.31.18.46 par vos adresses IP et 172.31.16.1 par votre passerelle.
-
Créez le fichier restrict-default-gw pour empêcher le remplacement de la passerelle par défaut dans la table principale :
vi /etc/dhcp/dhclient-enter-hooks.d/restrict-default-gw -
Ajoutez les lignes suivantes au fichier restrict-default-gw :
case ${interface} in eth0) ;; *) unset new_routers ;; esacRemarque : remplacez eth0 par le nom de votre interface principale.
-
Redémarrez le réseau.
Pour Ubuntu 14.04, exécutez la commande suivante :(ifdown eth1 && ifup eth1)Pour Ubuntu 16.04, exécutez la commande suivante :
systemctl restart networking
Configurer Ubuntu 18.04, 20.04 et 22.04
Ubuntu 18.04, 20.04 et 22.04 utilisent la configuration réseau Netplan. Netplan utilise le format YAML. Une indentation correcte est essentielle dans le format YAML. L’exemple Netplan suivant utilise une indentation de deux espaces.
Procédez comme suit :
-
Créez un fichier de configuration pour l’interface secondaire :
vi /etc/netplan/51-eth1.yaml -
Ajoutez les lignes suivantes au fichier 51-eth1.yaml :
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 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: 1000Remarque : remplacez les informations de l’exemple précédent par des informations propres à votre cas d’utilisation. L’exemple de fichier YAML précédent configure deux adresses IP sur eth1, l’interface secondaire.
Pour identifier la plage CIDR à utiliser dans le fichier YAML, procédez comme suit :
- Ouvrez la console Amazon EC2.
- Choisissez Instances, puis sélectionnez l’instance.
- Dans l’onglet Réseau, dans Interfaces réseau, notez l’ID de sous-réseau de votre interface réseau secondaire.
- Ouvrez la console Amazon VPC.
- Choisissez Sous-réseaux, puis notez la plage CIDR IPv4 indiquée pour l’ID de sous-réseau.
- Pour appliquer la configuration réseau, exécutez la commande suivante :
netplan --debug apply
Configurer Debian 12 avec une ENI secondaire dans un sous-réseau différent
Debian 12 utilise systemd-networkd pour la configuration réseau par défaut. Lorsque vous placez une ENI secondaire dans un sous-réseau différent, vous devez créer une table de routage par stratégie avec des règles de routage basées sur la source. Sans ces règles, le trafic provenant de l’interface secondaire utilise la route par défaut de l’interface principale et échoue.
Important : cette section traite d’une configuration avec des sous-réseaux différents. Les sections Ubuntu ci-dessus couvrent uniquement les configurations dans un même sous-réseau.
Procédez comme suit :
-
Vérifiez que systemd-networkd est le service réseau actif :
for SVC in networking systemd-networkd NetworkManager; do echo "${SVC}: $(systemctl is-active "${SVC}")"; doneSortie attendue :
networking: inactive systemd-networkd: active NetworkManager: inactiveSi systemd-networkd n’est pas actif, activez-le avant de continuer.
-
Testez la configuration manuellement avant de la rendre persistante :
IF=ens6 IP=10.0.2.100 CIDR=10.0.2.64/26 GW=10.0.2.65 TABLE=101 sudo ip link set $IF up mtu 9001 sudo ip addr add $IP/26 dev $IF sudo ip route add $CIDR dev $IF proto static src $IP table $TABLE sudo ip route add default via $GW dev $IF table $TABLE sudo ip rule add from $IP/32 lookup $TABLE priority $TABLERemarque : remplacez ens6 par le nom de votre interface secondaire, 10.0.2.100 par l’adresse IP de votre ENI secondaire, 10.0.2.64/26 par le CIDR de votre sous-réseau secondaire et 10.0.2.65 par la passerelle de votre sous-réseau secondaire.
-
Vérifiez que l’interface secondaire achemine le trafic via sa propre passerelle :
ip route get 8.8.8.8 from 10.0.2.100Sortie attendue :
8.8.8.8 from 10.0.2.100 via 10.0.2.65 dev ens6 table 101 uid 0 cache -
Si le test réussit, supprimez la configuration temporaire :
sudo ip rule del from $IP/32 lookup $TABLE priority $TABLE sudo ip route flush table $TABLE sudo ip addr flush dev $IF -
Créez un fichier de configuration systemd-networkd persistant :
sudo touch /etc/systemd/network/60-ens6.networkRemarque : remplacez ens6 par le nom de votre interface secondaire.
-
Ajoutez le contenu suivant au fichier 60-ens6.network :
[Match] Name=ens6 [Link] MTUBytes=9001 [Network] Address=10.0.2.100/26 IPv6AcceptRA=no [Route] Destination=0.0.0.0/0 Gateway=10.0.2.65 Table=101 [Route] Destination=10.0.2.64/26 Scope=link PreferredSource=10.0.2.100 Table=101 [RoutingPolicyRule] From=10.0.2.100/32 Table=101 Priority=101Remarque : remplacez ens6 par le nom de votre interface secondaire, 10.0.2.100/26 par l’adresse IP et le CIDR de votre ENI secondaire, 10.0.2.65 par la passerelle de votre sous-réseau secondaire et 10.0.2.64/26 par le CIDR de votre sous-réseau secondaire.
-
Rechargez la configuration réseau :
sudo networkctl reload && sudo networkctl reconfigure ens6Remarque : remplacez ens6 par le nom de votre interface secondaire.
-
Réglez le filtre de chemin inverse en mode permissif pour autoriser le trafic entrant sur l’interface secondaire. Vérifiez les valeurs actuelles :
sysctl net.ipv4.conf.all.rp_filter net.ipv4.conf.ens6.rp_filterSi l’une des valeurs est
1, créez ou mettez à jour /etc/sysctl.d/99-multihome.conf avec les lignes suivantes :net.ipv4.conf.all.rp_filter = 2 net.ipv4.conf.default.rp_filter = 2Appliquez les modifications :
sudo sysctl --systemRemarque : le réglage
rp_filter=2active le mode permissif. Cela permet aux paquets d’arriver sur l’interface secondaire même si le chemin de retour utilise une interface différente. -
Vérifiez que chaque interface achemine le trafic via sa propre passerelle.
Pour l’ENI principale :
ip route get 8.8.8.8 from 10.0.2.12Sortie attendue :
8.8.8.8 from 10.0.2.12 via 10.0.2.1 dev ens5 uid 0 cachePour l’ENI secondaire :
ip route get 8.8.8.8 from 10.0.2.100Sortie attendue :
8.8.8.8 from 10.0.2.100 via 10.0.2.65 dev ens6 table 101 uid 0 cache -
Redémarrez l’instance et répétez les commandes de vérification de l’étape 9 pour confirmer que la configuration persiste.
Informations connexes
- Sujets
- Compute
- Balises
- LinuxAmazon EC2Windows
- Langue
- Français
Vidéos associées


This article was reviewed and updated on 2026-08-26.
Contenus pertinents
demandé il y a 3 ans
- Réponse acceptée
demandé il y a 2 ans
demandé il y a 2 ans
demandé il y a 7 mois
demandé il y a 4 ans
AWS OFFICIELA mis à jour il y a un an