Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Assignation de plusieurs cartes réseau et un seul driver

8 réponses
Avatar
jbalaud
Bonjour,

Je rencontre le problème suivant :
J'ai un portable équipé de deux cartes réseau. L'une est interne et
l'autre dans le port PCMCIA. Les deux fonctionnent avec le même
driver. Par contre, le problème est que l'allocation eth0 et eth1 est
aléatoire. Une fois c'est eth0 qui est "mappée" sur la carte interne
et à un autre redémarrage, c'est eth1 qui est sur la carte interne.

Comment faire pour figer l'allocation des ethx?

Merci d'avance

8 réponses

Avatar
TiChou
Dans le message <news:,
*Jean-Luc Balaud* tapota sur f.c.o.l.configuration :

Bonjour,


Bonjour,

Je rencontre le problème suivant :
J'ai un portable équipé de deux cartes réseau. L'une est interne et
l'autre dans le port PCMCIA. Les deux fonctionnent avec le même
driver. Par contre, le problème est que l'allocation eth0 et eth1 est
aléatoire. Une fois c'est eth0 qui est "mappée" sur la carte interne
et à un autre redémarrage, c'est eth1 qui est sur la carte interne.

Comment faire pour figer l'allocation des ethx?


Sur quelle distribution ?

Par exemple sur les distributions utilisant le système de scripts
d'initialisation de la Red Hat (Fedora, Mandrake, ...) il suffit de définir
dans le fichier /etc/sysconfig/network-scripts/ifcfg-ethX la variable HWADDR
avec l'adresse MAC de l'interface correspondante :

$ cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=static
IPADDR2.168.0.1
NETMASK%5.255.255.0
NETWORK2.168.0.0
BROADCAST2.168.0.255
ONBOOT=yes
MII_NOT_SUPPORTED=no
HWADDRª:BB:CC:DD:EE:FF

$ cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
MII_NOT_SUPPORTED=no
HWADDR:22:33:44:55:66

Sur la distribution Debian on utilisera dans le fichier
/etc/network/interfaces l'option pre-up avec la commande 'nameif' (utilisée
conjointement ou non avec le fichier /etc/mactab).

$ cat /etc/network/interfaces

auto lo eth0 eth1

iface lo inet loopback

iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
pre-up nameif eth0 AA:BB:CC:DD:EE:FF

iface eth1 inet dhcp
pre-up nameif eth1 11:22:33:44:55:66


Sur une Gentoo on ajoutera en tête du fichier /etc/conf.d/net la ligne
suivante :

nameif

et on ajoutera dans le fichier /etc/mactab les bonnes entrées.

$ cat /etc/conf.d/net

nameif
iface_eth0="192.168.0.1 netmask 255.255.254.0 broadcast 192.168.0.255"
iface_eth1="dhcp"

$ cat /etc/mactab

eth0 AA:BB:CC:DD:EE:FF
eth1 11:22:33:44:55:66

Sur Slackware on procédera de la même manière en insérant la ligne 'nameif'
dans le fichier /etc/rc.d/rc.inet1.


man nameif

Merci d'avance


De rien.

--
TiChou

Avatar
Pascal
Salut,


Comment faire pour figer l'allocation des ethx?


Sur la distribution Debian on utilisera dans le fichier
/etc/network/interfaces l'option pre-up avec la commande 'nameif'
(utilisée conjointement ou non avec le fichier /etc/mactab).
[...]

iface eth0 inet static
[...]

pre-up nameif eth0 AA:BB:CC:DD:EE:FF

iface eth1 inet dhcp
pre-up nameif eth1 11:22:33:44:55:66


Comme les noms eth0 et eth1 existent déjà, nameif ne va pas râler dans
le cas où ils ne correspondent pas déjà aux bonnes interfaces ?

Je crains qu'on doive soit utiliser des noms d'interfaces n'existant pas
encore (par exemple "wan" et "lan" pour un routeur, ça peut être
pratique pour les reconnaître), soit passer par des noms temporaires
pour "libérer" les noms finaux avant de réaffecter ces derniers aux
interfaces désirées (ouais, c'est tordu) :

nameif tmp0 AA:BB:CC:DD:EE:FF
nameif tmp1 11:22:33:44:55:66
nameif eth0 AA:BB:CC:DD:EE:FF
nameif eth1 11:22:33:44:55:66

Par contre, cette dernière méthode n'a AMA pas sa place dans
/etc/network/interfaces. Il serait plus propre de la mettre en oeuvre
dans un script exécuté juste avant la configuration du réseau.

--
Pascal
Vous pouvez me tutoyer.
Piège à spam :


Avatar
TiChou
Dans le message <news:d0la1u$1grm$,
** tapota sur f.c.o.l.configuration :

Salut,


Salut Pascal,

[nameif]

Comme les noms eth0 et eth1 existent déjà, nameif ne va pas râler dans le
cas où ils ne correspondent pas déjà aux bonnes interfaces ?


Non, tant que les interfaces ne sont pas activées (UP).

[...]

Par contre, cette dernière méthode n'a AMA pas sa place dans
/etc/network/interfaces. Il serait plus propre de la mettre en oeuvre dans
un script exécuté juste avant la configuration du réseau.


Pas forcément. L'option pre-up est là pour ça justement. Faire tout ce qu'il
est nécéssaire de faire avant de configurer le réseau.

--
TiChou

Avatar
TiChou
Dans le message <news:,
*TiChou* tapota sur f.c.o.l.configuration :

Comme les noms eth0 et eth1 existent déjà, nameif ne va pas râler dans
le cas où ils ne correspondent pas déjà aux bonnes interfaces ?


Non, tant que les interfaces ne sont pas activées (UP).


Quoique j'ai un gros doute maintenant et à cette heure ci je n'ai pas de
quoi pouvoir tester.

--
TiChou


Avatar
Pascal

Comme les noms eth0 et eth1 existent déjà, nameif ne va pas râler dans
le cas où ils ne correspondent pas déjà aux bonnes interfaces ?


Non, tant que les interfaces ne sont pas activées (UP).


Ici (Debian Woody + 2.4.29) ça marche pas :'(

clementine:~# ip link
[...]
3: eth0: <BROADCAST,MULTICAST> mtu 1000 qdisc pfifo_fast qlen 1000
link/ether 00:20:18:52:e4:92 brd ff:ff:ff:ff:ff:ff
[...]
5: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
link/ether 00:60:97:2a:e6:88 brd ff:ff:ff:ff:ff:ff

Tu peux noter que ni eth0 ni eth2 ne sont UP. J'atteste qu'elles ne sont
pas non plus associées à un bridge ou un bonding.

clementine:~# nameif eth0 00:60:97:2A:E6:88
cannot change name of eth2 to eth0: File exists

clementine:~# nameif eth2 00:20:18:52:E4:92
cannot change name of eth0 to eth2: File exists

Bah. J'aurais loupé quelque chose ?
Aussi je me demande, si le premier nameif avait marché, quel nom l'autre
interface aurait-elle récupéré avant le second nameif ?

[...]

Par contre, cette dernière méthode n'a AMA pas sa place dans
/etc/network/interfaces. Il serait plus propre de la mettre en oeuvre
dans un script exécuté juste avant la configuration du réseau.


Pas forcément. L'option pre-up est là pour ça justement. Faire tout ce
qu'il est nécéssaire de faire avant de configurer le réseau.


A condition que le "nécessaire" en question n'impacte que l'interface
considérée. Si ça doit toucher à l'autre interface pour lui piquer son
nom, ce n'est plus l'endroit adapté AMA.

--
Pascal
Vous pouvez me tutoyer.
Piège à spam :


Avatar
TiChou
Dans le message <news:d0ldnp$1ifb$,
** tapota sur f.c.o.l.configuration :

Aussi je me demande, si le premier nameif avait marché, quel nom l'autre
interface aurait-elle récupéré avant le second nameif ?


Oui, c'est d'une logique implacable. En fait je n'avais pas, dans un premier
temps, percuté sur ta remarque. D'ailleurs, ça fait depuis un moment que je
ne percute plus beaucoup...

Par contre, cette dernière méthode n'a AMA pas sa place dans
/etc/network/interfaces. Il serait plus propre de la mettre en oeuvre
dans un script exécuté juste avant la configuration du réseau.


Pas forcément. L'option pre-up est là pour ça justement. Faire tout ce
qu'il est nécéssaire de faire avant de configurer le réseau.


A condition que le "nécessaire" en question n'impacte que l'interface
considérée. Si ça doit toucher à l'autre interface pour lui piquer son
nom, ce n'est plus l'endroit adapté AMA.


Pourquoi ? Les interfaces étant configurées dans l'ordre donné par la ligne
auto, je ne vois pas où serait le soucis.

--
TiChou



Avatar
Pascal

Pas forcément. L'option pre-up est là pour ça justement. Faire tout
ce qu'il est nécéssaire de faire avant de configurer le réseau.


A condition que le "nécessaire" en question n'impacte que l'interface
considérée. Si ça doit toucher à l'autre interface pour lui piquer son
nom, ce n'est plus l'endroit adapté AMA.


Pourquoi ? Les interfaces étant configurées dans l'ordre donné par la
ligne auto, je ne vois pas où serait le soucis.


Le souci est que /etc/network/interface n'est pas utilisé seulement au
démarrage du réseau mais aussi après par les commandes ifup et ifdown.
Les commandes pre-up sont exécutées à chaque ifup, alors qu'à ce stade
il n'y a pas de raison d'exécuter à nouveau les nameif. En fait, si on
fait ifup puis ifdown sur la première interface (qui a les nameif en
pre-up), les nameif concernant l'autre interface restée active n'auront
pas d'autre effet que de produire une erreur "device busy". Bref, je
trouve que c'est assez crade.

--
Pascal
Vous pouvez me tutoyer.
Piège à spam : (toujours rien attrapé)



Avatar
Kevin Denis
On 2005-03-08, Jean-Luc Balaud wrote:

Je rencontre le problème suivant :
J'ai un portable équipé de deux cartes réseau. L'une est interne et
l'autre dans le port PCMCIA. Les deux fonctionnent avec le même
driver. Par contre, le problème est que l'allocation eth0 et eth1 est
aléatoire. Une fois c'est eth0 qui est "mappée" sur la carte interne
et à un autre redémarrage, c'est eth1 qui est sur la carte interne.

Comment faire pour figer l'allocation des ethx?

J'avais use dans le temps d'un hack assez crade mais qui fonctionnait.

(enfin il y avait deux modules pour deux cartes)
Lors de l'insertion du module de la carte, j'enchainais derriere un
ifconfig eth0 up
puis apres le deuxieme module
ifconfig eth1 up

Ensuite, pour toi, vu que l'un est en pcmcia, peut etre voir s'il n'y a
pas moyen de charger tres tot le module de la carte en dur (avant que
les pcmcia soient charges) faire un ifconfig eth0 et laisser rouler
ensuite.
--
Kevin