Escolha a interface de rede padrão

10

Eu tenho um servidor com 2 interfaces. A eth0 é 100 vezes mais rápida que a eth1. Embora por algum motivo, a cada reinicialização, a interface padrão é escolhida aleatoriamente. Para tornar as coisas mais irritantes, ambos usam o mesmo gateway, portanto, selecionar o gateway padrão não funcionará. Como o Linux escolhe a interface padrão e como eu seleciono o padrão?

Aqui está o meu route -n para ajudar a explicar a situação um pouco.

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. Este é um VPS, então meu provedor também pode estar com defeito em algum lugar. Razão para a segunda interface é ter outro IP para dns, porque ele só faz DNS, é muito lento.

EDIT: Este é um servidor Ubuntu 10.04

    
por user163365 24.06.2011 / 14:15

3 respostas

13

Use ifmetric para alterar o valor da métrica de ambas as interfaces. Aumentar eth1 acima de eth0 fará com que eth0 seja usado para todas as conexões. Resolve completamente o problema.

    
por 25.06.2011 / 12:17
2

Você deve desativar a segunda interface lenta e adicionar o IP secundário ao primário. Para isso, edite seu arquivo de interfaces com:

sudo vi /etc/network/interfaces

Depois de acessar o arquivo de rede, você provavelmente terá algo como o seguinte:

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

Reconfigure para ficar assim:

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

Isso atribuirá os dois IPs ao primeiro NIC. Depois de fazer isso, salve o arquivo e execute:

/etc/init.d/networking restart

E as alterações serão confirmadas.

< - EDITAR - >

Na minha experiência, se estiver no mesmo Virtual Switch, não importa, embora os ambientes hospedados possam bloqueá-lo ainda mais. Pode valer a pena uma tentativa, se não funcionar, você pode pedir a sua empresa de hospedagem para alterar a interface virtual para algo mais capaz.

< - EDITAR - >

Além disso, se o seu IP principal não está servindo DNS, por que não usá-lo também para o DNS? Você pode hospedar vários serviços diferentes em um IP, já que eles usam portas diferentes.

    
por 24.06.2011 / 14:40
0

Você parece ter duas interfaces na mesma sub-rede, o que é um pouco estranho. O Linux (supondo que você esteja usando um derivativo da Red Hat) escolhe o gateway padrão lendo o valor GATEWAY de /etc/sysconfig/network . Essa variável, no entanto, contém um endereço IP como um identificador de gateway, não um nome de interface. Então, no seu caso, o único endereço IP pode ser o gateway para ambas as interfaces, levando (eu acho) a algum tipo de condição de corrida.

Ainda não sei por que você precisa da segunda interface. O que acontecerá se você derrubar completamente a interface lenta?

    
por 24.06.2011 / 14:19