Scegli l'interfaccia di rete predefinita


12

Ho un server con 2 interfacce. eth0 è 100 volte più veloce di eth1. Anche se per qualche motivo, ad ogni riavvio, l'interfaccia predefinita viene scelta a caso. Per rendere le cose più fastidiose, usano entrambe lo stesso gateway, quindi la selezione del gateway predefinito non funzionerà. In che modo Linux sceglie l'interfaccia predefinita e come seleziono quella predefinita?

Ecco il mio route -nper aiutare a spiegare un po 'la situazione.

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. Questo è un VPS, quindi il mio provider potrebbe anche essere in errore da qualche parte. Il motivo della seconda interfaccia è avere un altro IP per DNS, perché fa solo DNS, è molto lento.

EDIT: questo è un server Ubuntu 10.04


Interessante, come afferma la manpage ifconfig nella sezione "metrica": questo parametro imposta la metrica dell'interfaccia. Non è disponibile in GNU / Linux.
wzzrd,

1
Sono contento che tu l'abbia capito. Se nessun altro ha risposto a questa domanda e la modifica rappresenta la soluzione, è necessario aggiungerla di seguito in una sezione di risposta a sé stante, quindi accettarla come risposta corretta (dopo il timeout). Si prega di non inserire le risposte nella sezione delle domande.
Caleb,

@Caleb: ero ancora in timeout, ho pubblicato la mia risposta
user163365

Risposte:


15

Utilizzare ifmetricper modificare il valore metrico di entrambe le interfacce. L'aumento di eth1 sopra eth0 farà sì che eth0 venga utilizzato per tutte le connessioni. Risolve completamente il problema.


2
Questo cambia il gateway predefinito immediatamente o dopo il riavvio?
CMCDragonkai,

2

È necessario disabilitare la seconda interfaccia lenta e quindi aggiungere l'IP secondario al primario. Per fare questo modifica il tuo file interfacce con:

sudo vi /etc/network/interfaces

Dopo aver effettuato l'accesso al file di rete, probabilmente ti verrà presentato qualcosa di simile al seguente:

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

Riconfiguralo per assomigliare a questo:

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

Ciò assegnerà entrambi gli IP alla prima scheda NIC. Una volta fatto, salva il file ed esegui:

/etc/init.d/networking restart

E le modifiche saranno impegnate.

<- EDIT ->

Nella mia esperienza, se si trova sullo stesso Switch virtuale, non dovrebbe importare, anche se gli ambienti ospitati potrebbero bloccarlo ulteriormente. Potrebbe valere la pena provare, se non funziona puoi chiedere alla tua società di hosting di cambiare l'interfaccia virtuale in qualcosa di più capace.

<- EDIT ->

Inoltre, se il tuo IP primario non sta attualmente servendo il DNS, perché non utilizzarlo anche per il DNS? È possibile ospitare diversi servizi su un solo IP poiché utilizzano porte diverse.


0

Sembra che tu abbia due interfacce nella stessa sottorete, il che è un po 'strano. Linux (supponendo che tu stia utilizzando un derivato Red Hat) seleziona il gateway predefinito leggendo il valore GATEWAY da /etc/sysconfig/network. Questa variabile, tuttavia, contiene un indirizzo IP come identificativo gateway, non un nome di interfaccia. Quindi, nel tuo caso, l'unico indirizzo IP può essere il gateway per entrambe le interfacce, portando (penso) a una sorta di condizione di competizione.

Non sono ancora sicuro del motivo per cui hai bisogno della seconda interfaccia. Cosa succederà se abbassi completamente l'interfaccia lenta?


prima di tutto, uso Ubuntu, ma visto che questo non è un problema di gateway, non dovrebbe importare. In secondo luogo, se abbasso la seconda interfaccia, il traffico utilizza la prima interfaccia, ma perdo il secondo IP, motivo per cui in primo luogo ho la seconda interfaccia.
user163365

1
Puoi facilmente configurare due indirizzi su una singola interfaccia con un alias. Tutto il traffico sull'interfaccia veloce, due IP configurati, problema risolto, no? E considerando "In che modo Linux seleziona l'interfaccia predefinita e come posso selezionare quella predefinita?", Come mai questo non è un problema di gateway?
wzzrd,

1
Non funzionerà, poiché si tratta di interfacce virtuali, probabilmente configurate per instradare solo i dati che arrivano all'ip specificato. Inoltre, questo problema riguarda l'interfaccia, non il gateway, poiché il gateway è lo stesso in entrambe le interfacce.
user163365

2
Le richieste in arrivo potrebbero arrivare su un'interfaccia, ma le cose in uscita stanno già passando attraverso un'interfaccia casuale. Prova il consiglio, rilascia una delle interfacce, metti l'altro IP sull'altro con un alias e vedi se funziona. Se sono, come dici tu, virtuali, allora perché la differenza di velocità e perché il tentativo di separazione? Qualcosa non gelifica.
EightBitTony,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.