Elija la interfaz de red predeterminada

12

Tengo un servidor con 2 interfaces. eth0 es 100 veces más rápido que eth1. Aunque por alguna razón, cada reinicio, la interfaz predeterminada se elige al azar. Para hacer las cosas más molestas, ambos usan la misma puerta de enlace, por lo que seleccionar la puerta de enlace predeterminada no funcionará. ¿Cómo elige Linux la interfaz predeterminada y cómo selecciono la predeterminada?

Aquí está mi route -npara ayudar a explicar un poco la situación.

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

PD. Este es un VPS, por lo que mi proveedor también podría tener la culpa en alguna parte. La razón para la segunda interfaz es tener otra IP para dns, porque solo tiene DNS, es muy lenta.

EDITAR: Este es un servidor Ubuntu 10.04

user163365
fuente
Interesante, ya que la página de manual de ifconfig dice esto en la sección sobre "métrica": este parámetro establece la métrica de la interfaz. No está disponible bajo GNU / Linux.
wzzrd
1
Me alegra que hayas descubierto esto. Si nadie más respondió esto y su edición representa la solución, debe agregarla a continuación en una sección de respuesta propia y luego aceptarla como la respuesta correcta (después del tiempo de espera). Por favor no ponga respuestas en la sección de preguntas.
Caleb
@Caleb: Todavía estaba en el tiempo de espera, he publicado mi respuesta
user163365

Respuestas:

15

Se usa ifmetricpara cambiar el valor métrico de ambas interfaces. El aumento de eth1 por encima de eth0 hará que se use eth0 para todas las conexiones. Resuelve el problema por completo.

user163365
fuente
2
¿Cambia esto la puerta de enlace predeterminada inmediatamente o después de reiniciar?
CMCDragonkai
2

Debe deshabilitar la segunda interfaz lenta y luego agregar la IP secundaria a la primaria. Para hacer esto, edite su archivo de interfaces con:

sudo vi /etc/network/interfaces

Una vez que haya accedido al archivo de red, probablemente se le presentará algo como lo siguiente:

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

Vuelva a configurarlo para que se vea así:

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

Esto asignará ambas IP a la primera NIC. Una vez que hayas hecho esto, guarda el archivo y ejecuta:

/etc/init.d/networking restart

Y los cambios serán comprometidos.

<- EDITAR ->

En mi experiencia, si está en el mismo conmutador virtual, no debería importar, aunque los entornos alojados pueden bloquearlo aún más. Sin embargo, puede valer la pena, si no funciona, puede pedirle a su empresa de alojamiento que cambie la interfaz virtual a algo más capaz.

<- EDITAR ->

Además, si su IP principal no está actualmente sirviendo DNS, ¿por qué no usarla también para DNS? Puede alojar varios servicios diferentes en una IP ya que usan puertos diferentes.

Alex Berry
fuente
0

Parece que tiene dos interfaces en la misma subred, lo cual es un poco extraño. Linux (suponiendo que está utilizando un derivado de Red Hat) elige la puerta de enlace predeterminada al leer el valor de GATEWAY /etc/sysconfig/network. Sin embargo, esta variable contiene una dirección IP como identificador de puerta de enlace, no un nombre de interfaz. Entonces, en su caso, la única dirección IP puede ser la puerta de entrada para ambas interfaces, lo que lleva (creo) a algún tipo de condición de carrera.

Todavía no estoy seguro de por qué necesita la segunda interfaz. ¿Qué sucederá si derribas la interfaz lenta por completo?

wzzrd
fuente
en primer lugar, uso ubuntu, pero al ver que esto no es un problema de puerta de enlace, no debería importar. En segundo lugar, si apago la segunda interfaz, el tráfico usa la primera interfaz, pero pierdo la segunda IP, razón por la cual tengo la segunda interfaz en primer lugar.
user163365
1
Puede configurar fácilmente dos direcciones en una sola interfaz con un alias. Todo el tráfico a través de la interfaz rápida, dos IP configuradas, problema resuelto, ¿no? Y teniendo en cuenta "¿Cómo elige Linux la interfaz predeterminada y cómo selecciono la predeterminada?", ¿Cómo no se trata de un problema de puerta de enlace?
wzzrd
1
No funcionará, ya que estas son interfaces virtuales, probablemente configuradas para enrutar solo los datos que ingresan en la IP especificada. Además, este problema se trata de la interfaz, no de la puerta de enlace, ya que la puerta de enlace es la misma en ambas interfaces.
user163365
2
Las solicitudes entrantes pueden llegar a una interfaz, pero las cosas salientes ya están pasando a través de una interfaz aleatoria de todos modos. Pruebe el consejo, descarte una de las interfaces, coloque la otra IP en la otra con un alias y vea si funciona. Si son, como usted dice, virtuales, ¿por qué la diferencia de velocidad y por qué el intento de separación? Algo no se gelifica.
EightBitTony