Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : ✔️ Machines virtuelles Linux
Note
CentOS référencé dans cet article est une distribution Linux et atteint la fin de vie (EOL). Faites le point sur votre utilisation et organisez-vous en conséquence. Pour plus d’informations, consultez les conseils sur la fin de vie centOS.
Cet article explique comment configurer plusieurs interfaces de réseau virtuel dans des machines virtuelles Linux Azure qui exécutent les distributions Linux les plus courantes.
Résumé
Vous pouvez créer une machine virtuelle Azure qui a plusieurs interfaces réseau qui lui sont attachées. Un scénario courant consiste à avoir différents sous-réseaux pour la connectivité frontale et back-end, ou un réseau dédié à une solution de supervision ou de sauvegarde.
Cet article fournit la configuration requise pour que plusieurs interfaces réseau fonctionnent dans une machine virtuelle Linux Azure basée sur l’exemple de scénario suivant :
- La machine virtuelle a deux interfaces réseau ou plus dans le même sous-réseau.
- La machine virtuelle a deux interfaces réseau ou plus dans différents sous-réseaux, mais dans le même Réseau virtuel (réseau virtuel).
Pour plus d’informations, consultez les captures d’écran suivantes :
- Machine virtuelle avec 2 cartes réseau dans le même sous-réseau
- Machine virtuelle avec 2 cartes réseau dans différents sous-réseaux
Dans chaque scénario, la connectivité peut être testée à partir de n’importe quelle machine virtuelle dans le même réseau virtuel.
Important
Ce même processus peut également être suivi dans les machines virtuelles avec plus de deux cartes réseau.
Configurer le système d’exploitation invité pour plusieurs interfaces réseau
Lorsque vous ajoutez plusieurs interfaces réseau à une machine virtuelle Linux, vous devez créer des règles de routage. Ces règles permettent à la machine virtuelle d’envoyer et de recevoir du trafic appartenant à une interface réseau spécifique. Sinon, le trafic ne peut pas être traité correctement. Par exemple, le trafic qui appartient à eth1 ne peut pas être traité correctement par l’itinéraire par défaut défini.
Les sections suivantes fournissent la configuration requise pour que deux interfaces réseau fonctionnent dans des machines virtuelles Linux qui exécutent les distributions Linux les plus courantes.
Note
Exécutez toutes les commandes des sections suivantes à l’aide de privilèges racines (en basculant vers la racine ou à l’aide de l’utilitaire sudo
de commande).
Dans chaque section, supposons que la machine virtuelle a deux interfaces réseau qui ont l’un des paramètres suivants :
Routage (sortie de la
sudo ip route show
commande) :Deux cartes réseau dans le même sous-réseau :
default via 10.0.1.1 dev eth0 proto static metric 100 10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.4 metric 100 10.0.1.0/24 dev eth1 proto kernel scope link src 10.0.1.5 metric 101 168.63.129.16 via 10.0.1.1 dev eth0 proto dhcp metric 100 169.254.169.254 via 10.0.1.1 dev eth0 proto dhcp metric 100
Deux cartes réseau dans des sous-réseaux différents, mais dans le même réseau virtuel :
default via 10.0.1.1 dev eth0 proto static metric 100 10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.4 metric 100 10.0.2.0/24 dev eth1 proto kernel scope link src 10.0.2.5 metric 101 168.63.129.16 via 10.0.1.1 dev eth0 proto dhcp metric 100 169.254.169.254 via 10.0.1.1 dev eth0 proto dhcp metric 100
Interfaces (sortie de la
sudo ip address show
commande) :Deux cartes réseau dans le même sous-réseau :
lo: inet 127.0.0.1/8 scope host lo eth0: inet 10.0.1.4/24 brd 10.0.1.255 scope global eth0 eth1: inet 10.0.1.5/24 brd 10.0.1.255 scope global eth1
Deux cartes réseau dans des sous-réseaux différents, mais dans le même réseau virtuel :
lo: inet 127.0.0.1/8 scope host lo eth0: inet 10.0.1.4/24 brd 10.0.1.255 scope global eth0 eth1: inet 10.0.2.5/24 brd 10.0.2.255 scope global eth1
Ajoutez deux tables de routage au fichier /etc/iproute2/rt_tables en exécutant les commandes suivantes (vous avez besoin d’une entrée par carte réseau) :
sudo echo "200 eth0-rt" >> /etc/iproute2/rt_tables sudo echo "201 eth1-rt" >> /etc/iproute2/rt_tables
Si d’autres interfaces réseau sont attachées à la machine virtuelle, ajoutez des tables de routage supplémentaires (par exemple, 202 eth2-rt, 203 eth3-rt, etc.).
Vérifiez qu’un fichier de configuration existe pour chaque interface réseau dans le répertoire /etc/sysconfig/network-scripts/ . Vous pouvez créer de nouveaux fichiers de configuration d’interface réseau en fonction du fichier de configuration ifcfg-eth0 (modifier la
DEVICE
ligne et supprimer lesDHCP_HOSTNAME
lignesHWADDR
du nouveau fichier). Pour cela, exécutez les commandes suivantes :sudo cat /etc/sysconfig/network-scripts/ifcfg-eth0 > /etc/sysconfig/network-scripts/ifcfg-eth1 sudo sed -i 's/DEVICE=eth0/DEVICE=eth1/' /etc/sysconfig/network-scripts/ifcfg-eth1 sudo sed -i '/DHCP_HOSTNAME/d' /etc/sysconfig/network-scripts/ifcfg-eth1 sudo sed -i '/HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth1
Pour rendre la modification persistante et appliquée lors de l’activation de la pile réseau, modifiez les fichiers /etc/sysconfig/network-scripts/ifcfg-eth0 et /etc/sysconfig/network-scripts/ifcfg-eth1 (ifcfg-eth2, ifcfg-eth3, etc., si la machine virtuelle a plus de deux interfaces réseau) et modifiez la valeur de
NM_CONTROLLED
à .yes
no
Pour cela, exécutez les commandes suivantes :sudo cp -rp /etc/sysconfig/network-scripts/ifcfg-eth0 /tmp/ifcfg-eth0.bkp sudo cp -rp /etc/sysconfig/network-scripts/ifcfg-eth1 /tmp/ifcfg-eth1.bkp sudo sed -i 's/NM_CONTROLLED=yes/NM_CONTROLLED=no/' /etc/sysconfig/network-scripts/ifcfg-eth0 sudo sed -i 's/NM_CONTROLLED=yes/NM_CONTROLLED=no/' /etc/sysconfig/network-scripts/ifcfg-eth1
Note
Vérifiez que la
NM_CONTROLLED=no
ligne est ajoutée aux fichiers /etc/sysconfig/network-scripts/ifcfg-eth0 et /etc/sysconfig/network-scripts/ifcfg-eth1 à l’aide de lacat /etc/sysconfig/network-scripts/ifcfg-eth*
commande. Si la ligne ne se trouve pas dans les fichiers, ajoutez-la manuellement à l’aide des commandes etsudo echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/ifcfg-eth1
dessudo echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/ifcfg-eth0
commandes.Après avoir modifié cette configuration, redémarrez les services réseau pour appliquer les modifications en exécutant la commande suivante :
sudo systemctl restart network
Créez des fichiers de règle et de routage correspondants à l’aide de n’importe quel éditeur de texte (dans les exemples suivants, l’éditeur vi est utilisé) et ajoutez des règles et des itinéraires appropriés à chaque fichier. Utilisez les étapes suivantes pour créer un ensemble de fichiers rule-eth# et route-eth# par interface réseau. Remplacez l’adresse IP et les informations de sous-réseau en conséquence à chaque étape. Si vous avez plus d’interfaces réseau, créez le même ensemble de fichiers rule-eth# et route-eth# pour chaque interface à l’aide de l’adresse IP, du réseau et des détails de passerelle correspondants.
Créez des règles et des itinéraires pour eth0 :
Pour créer le fichier de règle pour eth0, ouvrez le fichier /etc/sysconfig/network-scripts/rule-eth0.
sudo vi /etc/sysconfig/network-scripts/rule-eth0
Ajoutez le contenu suivant au fichier de règle. Remplacez l’adresse IP en conséquence, vérifiez que vous spécifiez l’adresse IPv4 dans la configuration et conservez la valeur 32 bits :
from 10.0.1.4/32 table eth0-rt to 10.0.1.4/32 table eth0-rt
Pour créer le fichier de routage pour eth0, ouvrez le fichier /etc/sysconfig/network-scripts/route-eth0.
sudo vi /etc/sysconfig/network-scripts/route-eth0
Ajoutez le contenu suivant au fichier de routage. Remplacez les valeurs réseau et passerelle en conséquence.
10.0.1.0/24 dev eth0 table eth0-rt default via 10.0.1.1 dev eth0 table eth0-rt
Créez des règles et des itinéraires pour eth1 :
Pour créer le fichier de règle pour eth1, ouvrez le fichier /etc/sysconfig/network-scripts/rule-eth1.
sudo vi /etc/sysconfig/network-scripts/rule-eth1
Ajoutez le contenu suivant au fichier de règle. Remplacez l’adresse IP en conséquence, vérifiez que vous spécifiez l’adresse IPv4 dans la commande et conservez la valeur 32 bits.
Deux cartes réseau dans le même sous-réseau :
from 10.0.1.5/32 table eth1-rt to 10.0.1.5/32 table eth1-rt
Deux cartes réseau dans des sous-réseaux différents, mais dans le même réseau virtuel :
from 10.0.2.5/32 table eth1-rt to 10.0.2.5/32 table eth1-rt
Pour créer le fichier de routage pour eth1, ouvrez le fichier /etc/sysconfig/network-scripts/route-eth1.
sudo vi /etc/sysconfig/network-scripts/route-eth1
Ajoutez le contenu suivant au fichier de routage. Remplacez les valeurs réseau et passerelle en conséquence.
Deux cartes réseau dans le même sous-réseau :
10.0.1.0/24 dev eth1 table eth1-rt default via 10.0.1.1 dev eth1 table eth1-rt
Deux cartes réseau dans des sous-réseaux différents, mais dans le même réseau virtuel :
10.0.2.0/24 dev eth1 table eth1-rt default via 10.0.2.1 dev eth1 table eth1-rt
Pour appliquer les modifications, exécutez la commande suivante pour redémarrer le service réseau :
sudo systemctl restart network
Les règles de routage sont désormais correctement définies et la connectivité doit fonctionner à partir de n’importe quelle interface réseau. Vous pouvez tester la connectivité à l’aide de Secure Shell (SSH) ou effectuer un test ping sur les deux adresses IP d’une machine virtuelle dans le même réseau virtuel.
Vérifiez que les itinéraires et règles actuels sont chargés à l’aide des commandes suivantes :
sudo ip route show sudo ip rule show
Important
Si vous rencontrez toujours des problèmes de communication avec la deuxième carte réseau, redémarrez la machine virtuelle à l’aide de la commande, répétez l’étape sudo reboot
7 et testez à nouveau la connectivité.
Contactez-nous pour obtenir de l’aide
Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.