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?