web-dev-qa-db-fra.com

Choisissez l'interface réseau par défaut

J'ai un serveur avec 2 interfaces. eth0 est 100 fois plus rapide que l'ETH1. Bien que pour une raison quelconque, chaque redémarrage, l'interface par défaut est cueillie au hasard. Pour rendre les choses plus gênantes, elles utilisent tous les deux la même passerelle, alors sélectionner la passerelle par défaut ne fonctionnera pas. Comment Linux choisit-t-il l'interface par défaut et comment puis-je sélectionner l'une?

Voici mon route -n Pour aider à 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. Ceci est un VPS, mon fournisseur pourrait donc également être en faute quelque part. La raison de la deuxième interface est d'avoir une autre adresse IP pour DNS, car elle ne fait que DNS, c'est très lent.

EDIT: Ceci est un serveur Ubuntu 10.04

12
user163365

Utilisez ifmetric pour modifier la valeur métrique des deux interfaces. L'augmentation de l'ETH1 ci-dessus Eth0 provoquera l'utilisation de l'ETH0 pour toutes les connexions. Résout le problème entièrement.

15
user163365

Vous devez désactiver la seconde, l'interface lente, puis ajouter l'IP secondaire sur le primaire. Pour ce faire, modifiez votre fichier d'interfaces avec:

Sudo vi /etc/network/interfaces

Une fois que vous avez accédé au fichier réseau, vous serez probablement présenté à quelque chose comme ce qui suit:

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 ressembler à 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 à la première carte réseau. Une fois que vous avez fait cela, enregistrez le fichier et exécutez:

/etc/init.d/networking restart

Et les changements seront commis.

<- Edit ->

Dans mon expérience si c'est sur le même commutateur virtuel, cela ne devrait pas avoir d'importance, bien que des environnements hébergés puissent le verrouiller davantage. Cela vaut peut-être un essai, si cela ne fonctionne pas, vous pouvez demander à votre société d'hébergement de modifier l'interface virtuelle à quelque chose de plus capable.

<- Edit ->

De plus, si votre IP principale ne servait actuellement pas de DNS, alors pourquoi ne pas l'utiliser pour DNS aussi? Vous pouvez organiser plusieurs services différents sur une adresse IP car ils utilisent différents ports.

2
Alex Berry

Vous semblez avoir deux interfaces dans le même sous-réseau, qui est un peu bizarre. Linux (supposant que vous utilisiez un dérivé de chapeau rouge) choisit la passerelle par défaut en lisant la valeur de la passerelle de /etc/sysconfig/network. Cette variable contient toutefois une adresse IP comme identifiant de passerelle, et non un nom d'interface. Donc, dans votre cas, l'adresse IP peut être la passerelle pour les deux interfaces, menant (je pense) à une sorte de condition de course.

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

0
wzzrd