Escolha a interface de rede padrão


12

Eu tenho um servidor com 2 interfaces. eth0 é 100 vezes mais rápido que eth1. Embora, por algum motivo, a cada reinicialização, a interface padrão seja escolhida aleatoriamente. Para tornar as coisas mais irritantes, os dois usam o mesmo gateway, portanto, a seleção do gateway padrão não funcionará. Como o linux escolhe a interface padrão e como seleciono a interface padrão?

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

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. Como é um VPS, o meu provedor também pode estar errado em algum lugar. O motivo da segunda interface é ter outro IP para o DNS, porque ele só faz DNS, é muito lento.

EDIT: Este é um servidor Ubuntu 10.04


Interessante, como a página de manual ifconfig afirma isso na seção sobre "métrica": Este parâmetro define a métrica da interface. Não está disponível no GNU / Linux.
wzzrd

1
Que bom que você descobriu isso. Se ninguém mais respondeu isso e sua edição representa a solução, adicione-a abaixo em uma seção de resposta própria e aceite-a como a resposta correta (após o tempo limite). Por favor, não coloque respostas na seção de perguntas.
Caleb

@Caleb: Eu ainda estava no tempo limite, eu
publiquei

Respostas:


15

Use ifmetricpara 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 o problema completamente.


2
Isso altera o gateway padrão imediatamente ou após a reinicialização?
precisa saber é o seguinte

2

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

sudo vi /etc/network/interfaces

Depois de acessar o arquivo de rede, você provavelmente verá 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-o 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 à primeira NIC. Depois de fazer isso, salve o arquivo e execute:

/etc/init.d/networking restart

E as mudanças serão confirmadas.

<- EDITAR ->

Na minha experiência, se estiver no mesmo comutador virtual, isso não deve importar, embora os ambientes hospedados possam travá-lo ainda mais. Vale a pena tentar, no entanto, se não funcionar, você pode solicitar à sua empresa de hospedagem que altere a interface virtual para algo mais capaz.

<- EDITAR ->

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


0

Você parece ter duas interfaces na mesma sub-rede, o que é um pouco estranho. O Linux (supondo que você esteja usando um derivado da Red Hat) escolhe o gateway padrão lendo o valor GATEWAY em /etc/sysconfig/network. Essa variável, no entanto, mantém um endereço IP como um identificador de gateway, não um nome de interface. Portanto, 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ê reduzir completamente a interface lenta?


primeiro, eu uso o ubuntu, mas como esse não é um problema de gateway, não deve importar. Segundo, se eu derrubar a segunda interface, o tráfego usa a primeira interface, mas perco o segundo IP, razão pela qual tenho a segunda interface em primeiro lugar.
user163365

1
Você pode configurar facilmente dois endereços em uma única interface com um alias. Todo o tráfego pela interface rápida, dois IPs configurados, problema resolvido, não? E considerando "Como o Linux escolhe a interface padrão e como seleciono a interface padrão?", Como isso não é um problema de gateway?
wzzrd

1
Não funcionará, uma vez que são interfaces virtuais, provavelmente configuradas para rotear apenas os dados que chegam no ip especificado. Além disso, esse problema é sobre a interface, não o gateway, pois o gateway é o mesmo nas duas interfaces.
user163365

2
As solicitações de entrada podem chegar em uma interface, mas as coisas de saída já estão passando por uma interface aleatória de qualquer maneira. Tente o conselho, solte uma das interfaces, coloque o outro IP na outra com um alias e veja se funciona. Se eles são, como você diz, virtuais, então por que a diferença de velocidade e por que a tentativa de separação? Algo não gel.
precisa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.