Choisissez l'interface réseau par défaut

12

J'ai un serveur avec 2 interfaces. eth0 est 100 fois plus rapide que eth1. Bien que pour une raison quelconque, à chaque redémarrage, l'interface par défaut soit choisie au hasard. Pour rendre les choses plus ennuyeuses, ils utilisent tous les deux la même passerelle, donc la sélection de la passerelle par défaut ne fonctionnera pas. Comment Linux choisit-il l'interface par défaut et comment puis-je sélectionner celle par défaut?

Voici mon route -naide pour expliquer un peu la situation.

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
173.246.100.0   0.0.0.0         255.255.252.0   U     0      0        0 eth1
173.246.100.0   0.0.0.0         255.255.252.0   U     0      0        0 eth0
0.0.0.0         173.246.103.254 0.0.0.0         UG    0      0        0 eth1
0.0.0.0         173.246.103.254 0.0.0.0         UG    100    0        0 eth0

PS. Il s'agit d'un VPS, donc mon fournisseur peut également être en faute quelque part. La raison de la deuxième interface est d'avoir une autre IP pour le DNS, car elle ne fait que du DNS, c'est très lent.

EDIT: Ceci est un serveur Ubuntu 10.04

user163365
la source
Intéressant, comme l'indique la page de manuel ifconfig dans la section "métrique": ce paramètre définit la métrique de l'interface. Il n'est pas disponible sous GNU / Linux.
wzzrd
1
Heureux que vous ayez compris cela. Si personne d'autre n'a répondu à cette question et que votre modification représente la solution, vous devez ajouter cela ci-dessous dans une section de réponse qui lui est propre, puis l'accepter comme la bonne réponse (après le délai). Veuillez ne pas mettre de réponses dans la section des questions.
Caleb
@Caleb: J'étais toujours sur le timeout, j'ai posté ma réponse
user163365

Réponses:

15

Utilisez ifmetricpour modifier la valeur métrique des deux interfaces. Si vous augmentez eth1 au-dessus de eth0, eth0 sera utilisé pour toutes les connexions. Résout entièrement le problème.

user163365
la source
2
Cela change-t-il la passerelle par défaut immédiatement ou après le redémarrage?
CMCDragonkai
2

Vous devez désactiver la deuxième interface lente, puis ajouter l'IP secondaire au primaire. Pour ce faire, modifiez votre fichier d'interface avec:

sudo vi /etc/network/interfaces

Une fois que vous aurez accédé au fichier réseau, il vous sera probablement présenté quelque chose comme ceci:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 173.246.100.1
    network 173.246.100.0
    netmask 255.255.252.0
    broadcast 173.246.100.255
    gateway 173.246.103.254

auto eth1
iface eth0 inet static
    address 173.246.100.2
    network 173.246.100.0
    netmask 255.255.252.0
    broadcast 173.246.100.255
    gateway 173.246.103.254

Reconfigurez-le pour qu'il ressemble à ceci:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 173.246.100.1
    network 173.246.100.0
    netmask 255.255.252.0
    broadcast 173.246.100.255
    gateway 173.246.103.254

iface eth0:1 inet static
    address 173.246.100.2
    network 173.246.100.0
    netmask 255.255.252.0

Cela affectera les deux IP au premier NIC. Une fois que vous avez fait cela, enregistrez le fichier et exécutez:

/etc/init.d/networking restart

Et les changements seront validés.

<- MODIFIER ->

D'après mon expérience, s'il est sur le même commutateur virtuel, cela ne devrait pas avoir d'importance, bien que les environnements hébergés puissent le verrouiller davantage. Cela peut valoir la peine d'essayer, si cela ne fonctionne pas, vous pouvez demander à votre hébergeur de changer l'interface virtuelle pour quelque chose de plus performant.

<- MODIFIER ->

De plus, si votre IP principale ne sert pas actuellement de DNS, pourquoi ne pas l'utiliser également pour DNS? Vous pouvez héberger plusieurs services différents sur une seule IP car ils utilisent différents ports.

Alex Berry
la source
0

Vous semblez avoir deux interfaces dans le même sous-réseau, ce qui est un peu bizarre. Linux (en supposant que vous utilisez un dérivé de Red Hat) choisit la passerelle par défaut en lisant la valeur GATEWAY à partir de /etc/sysconfig/network. Cette variable, cependant, contient une adresse IP comme identifiant de passerelle, pas un nom d'interface. Donc, dans votre cas, la même adresse IP peut être la passerelle pour les deux interfaces, menant (je pense) à une sorte de condition de concurrence.

Je ne sais toujours pas pourquoi vous avez besoin de la deuxième interface. Que se passera-t-il si vous supprimez complètement l'interface lente?

wzzrd
la source
tout d'abord, j'utilise ubuntu, mais voyant que ce n'est pas un problème de passerelle, cela ne devrait pas avoir d'importance. Deuxièmement, si j'arrête la deuxième interface, le trafic utilise la première interface, mais je perds la deuxième IP, ce qui explique pourquoi j'ai la deuxième interface en premier lieu.
user163365
1
Vous pouvez facilement configurer deux adresses sur une seule interface avec un alias. Tout le trafic sur l'interface rapide, deux adresses IP configurées, problème résolu, non? Et considérant "Comment Linux choisit-il l'interface par défaut, et comment puis-je sélectionner celle par défaut?", En quoi cela n'est-il pas un problème de passerelle?
wzzrd
1
Ne fonctionnera pas, car ce sont des interfaces virtuelles, probablement configurées pour acheminer uniquement les données qui arrivent à l'adresse IP spécifiée. En outre, ce problème concerne l'interface, pas la passerelle, car la passerelle est la même dans les deux interfaces.
user163365
2
Les demandes entrantes peuvent arriver sur une interface, mais les choses sortantes passent déjà par une interface aléatoire de toute façon. Essayez le conseil, supprimez l'une des interfaces, mettez l'autre IP sur l'autre avec un alias et voyez si cela fonctionne. S'ils sont, comme vous le dites, virtuels, alors pourquoi la différence de vitesse et pourquoi la tentative de séparation? Quelque chose ne gèle pas.
EightBitTony