O Linux pode ser feito para honrar as preferências do Anúncio de Rota do IPv6?

2

Bottom Line Up Front: Não consigo fazer com que uma caixa do Linux receba RAs para usar a RFC4191 "Preferência do roteador padrão "valor para preferir rotas de prioridade mais alta. Em vez disso, a rota padrão que aprendeu primeiro é o que usa, em detrimento de todos. Estou faltando uma opção de configuração, ou uma atualização do kernel, ou eu sou apenas condenado por todo o tempo ?

Versão longa:

Eu tenho uma rede com um gateway padrão de HA (VRRP / keepalived). O ISP do upstream está roteando um / 48 para o gateway, e eu então retiro / 64 pedaços para atribuir às máquinas na minha infraestrutura (para que eles possam designar endereços globalmente roteáveis para os containers que eles executam). Cada máquina então anuncia seu container / 64 para o resto da rede via radvd (com AdvDefaultLifetime 0 para mostrar que não tem uma rota padrão). As caixas de gateway também têm contêineres em execução, então eles têm seus próprios / 64 e anunciam isso, mas com AdvDefaultLifetime 30 porque os gateways do têm uma rota padrão.

Eu quero poder fazer o firewall com informações de estado no gateway, portanto, todo o tráfego em ambas as direções precisa passar pelo mesmo membro do par de gateway de alta disponibilidade. Tudo bem, eu posso fazer isso - um keepalive tem uma prioridade mais alta, eu apenas digo ao radvd nessa máquina para também anunciar sua rota padrão em uma prioridade mais alta. Dessa forma, se a máquina "primária" cair do poleiro, tudo será encaminhado para a outra máquina e estaremos OK.

Exceto ... o Linux não parece fazer fazer qualquer coisa com o valor de preferência do roteador. Eu me recuperei do código-fonte do kernel, e enquanto ele cuidadosamente preserva o valor nos flags de rota, e rt6_score_route parece que faz alguma coisa com a preferência, o comportamento que eu observei na produção (Ubuntu 14.04 com o kernel 3.13) é que qualquer rota padrão que seja aprendida primeiro é aquela que é usada, independente de qual tenha maior preferência.

Além de haxxing up keepalived para alterar os arquivos de configuração do radvd (um com AdvDefaultLifetime 30 , quando MASTER e outro com AdvDefaultLifetime 0 quando BACKUP ) e recarregando o radvd sempre que promovem / rebaixam o keepalive, o que posso fazer para garantir que as rotas com maior preferência na AR sejam preferidas?

    
por womble 08.04.2016 / 02:40

1 resposta

0

Os kernels recentes do Linux têm o recurso que você pede. Se você configurar o kernel, defina CONFIG_IPV6_ROUTER_PREF , consulte Networking support -> Networking options -> The IPv6 protocol -> Router Preference (RFC 4191) support . Você pode precisar recompilar o kernel se sua distro usar como padrão para desativar este recurso.

    
por 08.04.2016 / 10:07