Préférence d'interface réseau

8

Comment Linux détermine-t-il quelle interface réseau utiliser, lorsque les deux sont connectés au même réseau?

Notez que ce n'est pas une question de routage. Je sais comment cela fonctionne. Par exemple, si mon ordinateur portable est connecté à mon routeur sans fil via ma carte Ethernet et ma carte sans fil, ou si j'ai deux cartes Ethernet connectées au même routeur.

Je peux dire par expérience que dans mon cas, mon ordinateur portable semble privilégier la carte Ethernet (eth0) par rapport au sans fil (eth1 - je sais que ce n'est pas un nom typique pour une interface sans fil, mais c'est ce que j'ai), mais j'étais se demandant, comment décide-t-il cela? S'il choisit simplement à partir de l'interface numérotée la plus basse, que se passe-t-il si les deux choix sont, disons, eth0 et wlan0?

Edit: @Nils a souligné que c'est toujours une question de routage, et la table de routage fournit la réponse (voir sa réponse). Cela laisse toujours ma question d'origine, mais sous une forme différente. Qu'est-ce qui détermine l'ordre des entrées dans la table de routage sous Linux? Par exemple, voici ma table de routage en étant connecté aux deux interfaces:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.4.1     0.0.0.0         UG        0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
192.168.4.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.4.0     0.0.0.0         255.255.255.0   U         0 0          0 eth1

Il est clair que eth0 a une priorité plus élevée dans la table que eth1 pour les destinations du réseau local, mais est-ce décidé sous Linux à partir de la latence de la liaison, du débit de la liaison, même du nom de l'interface, ou quoi? (La même question pourrait se poser pour savoir pourquoi eth0 est l'interface pour la route par défaut.)

Dominick Pastore
la source

Réponses:

6

Eh bien - c'est une question de routage.

La réponse est simple: la première entrée qui donnera la meilleure entrée de routage est "le gagnant". Regardez donc netstat -rnpour voir quelle interface est la première.

Mise à jour: les paramètres de routage de l'interface réseau sont normalement configurés au démarrage du système. Ainsi, l'ordre de démarrage des périphériques réseau sera l'ordre dans ce tableau. Avec les périphériques PCI, ceux-ci sont normalement traités en premier par le numéro d'emplacement le plus bas. Les périphériques externes (par exemple USB) viennent normalement plus tard.

Mais l'ordre exact dépend du script de démarrage réseau de votre version Linux (c'est quelque chose où ils diffèrent beaucoup).

BTW: Si vous souhaitez utiliser vos deux liens, vous devriez opter pour la liaison . Là, vous pouvez configurer l'ordre d'utilisation de vos liens.

Nils
la source
1
Ça a du sens. Quand j'ai dit routage, ce que je voulais dire, ce n'était pas simplement une question de choisir quelle interface est connectée au réseau de destination (directement ou indirectement), car les deux le sont. J'aurais dû être plus prudent avec ma terminologie. Merci pour les conseils utiles (en particulier sur le collage). Cela laisse cependant ma question initiale sous une forme légèrement différente. Comment l'ordre de routage des entrées est-il déterminé sous Linux (j'ai édité la question d'origine)?
Dominick Pastore
@Dominick J'ai mis à jour ma réponse en conséquence. Quelle distribution et quelle version principale utilisez-vous?
Nils
Ah. Je ne savais pas que cela pouvait varier tellement entre les distributions. J'ai cherché partout des informations à ce sujet, mais je n'ai trouvé que des articles sur la façon de définir les entrées de routage, pas sur la façon dont les entrées d'origine sont déterminées. J'utilise Xubuntu 12.04. Cela soulève une autre question (petite cependant; je me sens très éclairé par votre réponse :-)). Si je suis connecté via sans fil (eth1) et que je me connecte plus tard via Ethernet (eth0), la route par défaut et les entrées supérieures de la table de routage reviennent à eth0. Cela semble aller à l'encontre de votre réponse. Suis-je un malentendu, ou est-ce une idiosyncrasie NetworkManager, ou quoi?
Dominick Pastore
@Dominick Ubuntu est très spécial. Il fait des choses magiques en arrière-plan lors du branchement / débranchement des périphériques réseau. Je suppose que cela redémarre toute la pile réseau là-bas. (J'utilise normalement SLES / RH et je ne suis pas trop profondément dans Ubuntu)
Nils
-3

Ne pas vous offenser, mais si vous connaissez la portion de routage de votre pile de communications TCP / IP sur n'importe quelle machine Linux, vous devez également savoir que, les résultats de la connexion de deux interfaces réseau au même réseau sont, au mieux, imprévisibles. Si j'étais vous, je désactiverais le sans fil sur mon ordinateur portable ou exécuterais une ifconfig eth0 downcommande (en supposant que eth0 est votre connexion Ethernet filaire) pour l'éteindre. Linux peut avoir une certaine intelligence pour faire la même sélection pour chaque paquet, mais en cas de hoquet réseau à un moment donné, il peut en résulter des résultats inattendus. Mes 2 cents.

MelBurslan
la source
1
Ce n'est pas imprévisible. Le premier hit dans la table de routage est utilisé comme expliqué par @Nils.
gertvdijk