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.
fuente
Respuestas:
La solución más obvia sería no enviar anuncios de enrutador en eth0:
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:
Del
radvd.conf
manual:fuente
AdvDefaultLifetime 0;
cambia la RA (¡es hora de romper Wirehark!).AdvDefaultLifetime
0 para indicar que no es una puerta de enlace predeterminada y agregue unaroute
opción para indicar que es una puerta de enlace para esa ruta específica. No necesita anunciar laprefix
opció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.Ambas Ethernet tienen el mismo "prefijo 2001: xxxx: xxxx: xxxx :: / 64"?
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.
fuente