web-dev-qa-db-fra.com

Comment contrôler la commande des interfaces réseau?

Je tente de configurer une machine avec 3 NICS, les deux premiers sont des contrôleurs GBE intégrés, le troisième est un contrôleur 10GBE. Via NetworkManager, j'ai configuré le "premier" gbe NIC (à l'heure étant ETH0) d'utiliser une adresse IP statique. Le deuxième gbe NIC sera configuré sur un réseau privé séparé et le 10GBE NIC n'est pas utilisé maintenant.

Lorsque je redémarre la machine, la commande d'ETH0, eth1, eth2, etc. semble être aléatoire. Parfois, eth0 décrochera l'adresse IP statique, d'autres fois, il est reconnu comme ETH1 et attrape une adresse DHCP. Dans ce cas, je dois échanger les câbles avant de reconfigurer correctement.

Comment puis-je contrôler la commande afin qu'un physique particulier NIC apparaisse toujours comme éth0 ou Eth1 sans changer le redémarrage suivant?

6
Andy

La méthode toujours prise en charge dans RHEL 6 est via les règles de périphérique UDEV.

Il devrait y avoir une générée automatiquement /etc/udev/rules.d/70-persistent-net.rules qui oblige la nommée cohérente:

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.

# PCI device 0x8086:0x10c9 (igb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:90:1d:d1:30", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x8086:0x10c9 (igb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:90:1d:d1:31", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

Sinon, vous pouvez utiliser une syntaxe similaire avec vos propres adresses MAC pour forcer la nommage du périphérique persistant.

3
HBruijn

La manière prise en charge de le faire, pour Rhel 6 et à l'avenir, est Dispositif de réseau cohérent . Cela garantit que toutes les interfaces obtiennent un nom significatif basé sur le matériel et restent les mêmes tout au long de la vie du système (si vous ne changez pas le matériel, de toute façon, et même si vous le faites).

(Notez que dans RHEL 7, n format de dénomination différent est utilisé.)

Pour le basculer sur Rhel 6, vous devez réinstaller le système , et lorsque vous installez, vous devez passer l'option de ligne de commande du noyau biosdevname=1 Lorsque vous démarrez le support d'installation et chaque fois que vous démarrez le système.

4
Michael Hampton

Peut-être que quelqu'un trouvera ces informations utiles: Tout d'abord dans RHEL7, vous n'avez pas besoin de réinstaller votre système pour modifier la convention de dénomination d'interface.

Remarque: paramètres de démarrage requis:

a) With no parameters or net.ifnames=1 used, the names will use systemd Predictable Network Interface Names
b) With biosdevname=1 used, the names will be managed by udev (technically systemd-udev) using Consistent Network Device Naming
c) With net.ifnames=0 and biosdevname=0 both specified, traditional ("kernel names") ethX names will be used; if udev rules are also added they can rename the interfaces to anything except eth

Exemple:

Edit /etc/default/grub
append selected params eg.
biosdevname=0 net.ifnames=0
grub2-mkconfig -o /boot/grub2/grub.cfg

Et en cas de sujet principal: lorsque vous devez régler l'ordre de toutes les interfaces, la procédure est facile:

mv /etc/udev/rules.d/70-persistent-net.rules /root/ 
(New udev rules will be generated at next boot)

Adjust configuration files in
/etc/sysconfig/network-scripts/ifcfg-eth*
[Edit device name, connection name, HWADDR etc.] 

Reboot and then udev will generate rules basing on configuration files - if you did it properely.
4
windoo

Comme suggéré par Redhat Documentation Vous pouvez spécifier HWADDR=MAC-address Paramètre dans votre fichier de configuration de l'interface.

Hwaddr = adresse MAC où l'adresse MAC est l'adresse matérielle du périphérique Ethernet dans le formulaire AA: BB: CC: DD: EE: FF. Cette directive doit être utilisée dans des machines contenant plus d'un NIC pour s'assurer que les interfaces sont attribuées aux noms de périphérique appropriés indépendamment de l'ordre de charge configuré pour chaque module de Nic. Cette directive ne doit pas être utilisée dans conjonction avec macaddr.

2
grekasius

Comme indiqué par HBRUJN, la commande dans RHEL6 est /etc/udev/roules.d/70-persistent-net.rules. Ce fichier est écrit par/lib/udev/write_net_rules.

Si, pour une raison quelconque, vous avez besoin d'une commande arbitraire et prédéterminée de vos interfaces réseau, vous pouvez remplacer ce script par votre propre, afin de créer le fichier 70-persistant-net.rules. Cela garantit que cela ne sera pas écrasé.

Vous pouvez obtenir des informations sur le périphérique pour le faire en utilisant

lspci | grep -i ethernet

pour obtenir la liste des périphériques

ethtool -i ethx
ethtool -P ethx

pour obtenir le Mac-Addr de chacun (corrélate PCI @/Mac @).

0
tonioc