Subred con dos enrutadores IPv6 / ¿Cómo obtener la ruta predeterminada correcta?

1

Estoy tratando de crear una subred con dos enrutadores IPv6, llámelos R1 y R2. Originalmente, mi subred solo tenía R1, conectándolo a Internet a través de un túnel Hurricane Electric. R1 estaba (y todavía está) ejecutando radvd, y todos los hosts en la subred funcionan bien (y todavía lo están, así que no publicaré radvd.conf de R1 aquí). Recientemente, agregué R2 a la subred y puse otra (nueva) subred detrás. Tengo radvd ejecutándose en R2, con el siguiente archivo radvd.conf:

interface eth2 {
  AdvSendAdvert on;
  MinRtrAdvInterval 3;
  MaxRtrAdvInterval 10;
  prefix 2001:xxxx:xxxx:xxxx::/64 {
    AdvOnLink on;
    AdvAutonomous on;
  };
};
interface eth0 {
  AdvSendAdvert on;
  MinRtrAdvInterval 3;
  MaxRtrAdvInterval 10;
  prefix 2001:xxxx:xxxx:xxxx::/64 {
    AdvAutonomous off;
    AdvOnLink off;
  };
  route 2001:470:291c:0002::/64 {};
};

Donde eth0 está conectado a la subred original y eth2 está conectado a la nueva subred.

Este es el problema : los RA de R2 anulan la ruta predeterminada en todos los hosts en la subred original (de modo que ya no tienen la ruta predeterminada correcta, como lo anuncia R1). La ruta predeterminada de R2 todavía apunta correctamente a R1, por lo que todo en la subred "funciona", ya que los nodos IPv6 externos son accesibles, pero todo el tráfico externo ahora se enruta incorrectamente a través de R2.

Entonces, mi pregunta es : ¿cómo puedo evitar que los RA de R2 establezcan la ruta predeterminada para los hosts en mi subred original (la que tiene ambos R1 y R2 conectados)? ¡Necesito los RA de R1 para proporcionar esa ruta predeterminada!

Muchas gracias de antemano.

Paul Heidmann
fuente
¿Por qué está enviando anuncios de enrutador en eth0? ¿Qué quieres lograr si no te dejas como una puerta de enlace predeterminada? Puede desactivar la publicidad de una puerta de enlace predeterminada al establecer la duración de esa interfaz en cero, pero si no hay otro propósito, no envíe anuncios de enrutador en absoluto ...
Sander Steffann
Por favor, no envíe más información de la realmente necesaria. Si puede, dibuje un diagrama de su red, con los enrutadores y sus interfaces marcados.
Grawity
1
Y no está relacionado con su pregunta, pero sus intervalos de publicidad son extremadamente cortos. He visto un termostato Nest que se calienta tanto que mediría mal la temperatura ambiente debido a tales ajustes. También son realmente malos para la duración de la batería de cualquier dispositivo inalámbrico en sus redes.
Sander Steffann

Respuestas:

2

La solución más obvia sería no enviar anuncios de enrutador en eth0:

interface eth0 {
    AdvSendAdvert off;
}

Si hay otras razones por las que desea enviar anuncios de enrutador, explíqueles explícitamente a los receptores que el enrutador no es una puerta de enlace predeterminada:

interface eth0 {
    AdvSendAdvert on;
    AdvDefaultLifetime 0;
}

Del radvd.confmanual:

Una vida útil de 0 indica que el enrutador no es un enrutador predeterminado y no debe aparecer en la lista de enrutadores predeterminados.

Sander Steffann
fuente
Muchas gracias. La razón por la que quiero enviar RAs eth0 es porque quiero que los hosts en mi subred 'original' puedan llegar a los hosts en mi 'nueva' subred. Espero con ansias ver cómo eso AdvDefaultLifetime 0;cambia la RA (¡es hora de romper Wirehark!).
Paul Heidmann
En ese caso, configure el valor AdvDefaultLifetime0 para indicar que no es una puerta de enlace predeterminada y agregue una routeopción para indicar que es una puerta de enlace para esa ruta específica. No necesita anunciar la prefixopción en eth0 de R2 porque R1 ya lo hará. También asegúrese de que R1 tenga una ruta (estática) a R2 para la subred detrás de ella. Los clientes que no entienden la opción de ruta utilizarán R1 como puerta de enlace predeterminada, y luego R1 necesita saber dónde enviar esos paquetes.
Sander Steffann
gracias por tu ayuda. Esta es una muy buena guía, y agradezco el tiempo que tomó para ayudar.
Paul Heidmann el
0

Ambas Ethernet tienen el mismo "prefijo 2001: xxxx: xxxx: xxxx :: / 64"?

  • Si es así, eso se ve muy mal.
  • Si no, sería mejor haber especificado 2001: db8: aaaa: aaaa "para que se vea diferente
    • 2001: db8 es bueno para ejemplos. Algunas otras direcciones válidas pueden usar 2001

Como mi memoria me sirve, creo que he trabajado más con BSD rtadvd que con el radvd de Linux: los mismos conceptos, una implementación un poco diferente.

Sin embargo, ofrezco este consejo: ¿puede iniciar radvd para escuchar solo en una interfaz y especificar un archivo de configuración? Además, ¿puede hacerlo por segunda vez, escuchando solo en otra interfaz y especificando otro archivo de configuración? Si es así, eso puede reducir sus posibilidades de que ciertos comportamientos parezcan filtrarse a otra interfaz.

¿Realmente desea que AdvSendAdvert esté "activado" para ambas subredes (en el enrutador 2)?

El hardware también podría causar esto, si el cableado permite otra conexión entre las subredes.

TOOGAM
fuente