Como posso configurar um roteador BIRD para se comunicar com um vizinho em uma sub-rede diferente?

1

Introdução

Estou tentando configurar uma comunicação básica com o protocolo RIPv2 entre dois hosts que executam o daemon de roteamento BIRD .

Eu tenho Host A com uma interface enp0 que tem o endereço 10.0.1.50/24 .
Eu tenho outro host Host B com uma interface enp1 que tem o endereço 10.1.1.25/24 . Essas interfaces são conectadas diretamente por cabo. Posso fazer ping entre as duas máquinas se adicionar uma rota estática em ambas as máquinas.

Arquivos de configuração

Eu tenho o seguinte bird.conf on Host A :

protocol kernel {
        learn;                  # Learn all alien routes from the kernel
        persist;                # Don't remove routes on bird shutdown
        scan time 20;           # Scan kernel routing table every 20 seconds
        export all;             # Default is export none
}

protocol device {
    scan time 10;           # Scan interfaces every 10 seconds
}

protocol direct {
        interface "enp0"
}

protocol rip MyRIP {    
    export all;
    import all;
    interface "enp0" { mode multicast;};
}

O bird.conf on Host B é idêntico, exceto que enp0 é substituído por enp1

Resultados iniciais

Depois de iniciar o daemon de ave em ambos os hosts, posso fazer um tcpdump -ni enp0 -vv

13:21:41.943537 IP (tos 0xc0, ttl 1, id 4933, offset 0, flags [none], proto UDP (17), length 132)
    10.1.1.25.520 > 224.0.0.9.7742: [udp sum ok] UDP, length 104
13:21:41.943704 IP (tos 0xc0, ttl 1, id 150, offset 0, flags [none], proto UDP (17), length 272)
    10.0.1.50.520 > 224.0.0.9.7742: [bad udp cksum 0xec48 -> 0x1219!] UDP, length 244

Eu posso pular dentro da linha de comando birdcl e executar show rip neighbors e obter uma tabela vazia.

Fazendo funcionar

Se eu definir os endereços para estarem na mesma sub-rede, posso executar show rip neighbors e posso ver 10.0.1.50 em minhas listas de vizinhos.

Finalização

Como posso fazer com que esses roteadores se listem como vizinhos se as duas extremidades do link não estiverem na mesma sub-rede?

Eu devo ter algum tipo de imagem mental incorreta de como as redes funcionam, os roteadores não precisam falar com vizinhos que não estão na mesma sub-rede o tempo todo?

Não estou preso a uma resposta específica do BIRD.

    
por karobar 25.07.2016 / 19:59

1 resposta

3

De volta aos tempos antigos, quando havia mais protocolos na rede do que o TCP / IP, executei o RIP. Naquela época, era o RIPv1 e usava transmissões. As topologias de rede pareciam assim:

[10.0.0.0/24] <-- router --> [10.0.1.0/24] <-- router --> [10.0.2.0/24]
[10.0.3.0/24] <-- router ------^        ^---- router  --> [10.0.4.0/24]
[10.0.5.0/24] <-- router -------^      ^----- router  --> [10.0.6.0/24]

Onde todos os roteadores compartilhariam uma sub-rede que só tinha roteadores nela. Para configurações de dois roteadores, havia um único cabo amarrado entre eles como você está fazendo. Para configurações maiores, haveria um dispositivo de rede rápido executando a sub-rede (esperançosamente um switch, mas nem sempre). Dessa forma, tudo estava a 2 saltos e a convergência de rotas foi simples. É o que tínhamos na época.

Depois veio o RIPv2 e o multicast, e ter mais saltos era menos propenso a problemas de convergência. Se o TTL multicast fosse definido como +1 no diâmetro do salto, cada roteador anunciava diretamente a todos os outros roteadores, o que tornava a convergência mais rápida.

A principal coisa a se pensar, no entanto: Veja os endereços de origem na sua saída TCPDUMP.

 10.1.1.25.520 > 224.0.0.9.7742
 10.0.1.50.520 > 224.0.0.9.7742

O roteador 10.0.1.50 foi informado de que o roteador em 10.1.1.25 tem uma sub-rede de 10.1.1.0/24 local para ele. No entanto, o roteador em 10.0.1.50 não tem uma rota para endereçar 10.1.1.25 , por isso não irá adicioná-lo à tabela. Multicast é o seu canal de anúncio, mas não pode transportar tráfego roteado.

Nem tudo está perdido.

Se você estiver restrito a um único cabo por algum motivo, poderá definir interfaces virtuais. Onde enp0.0 está em 10.3.1.0/24 e enp0.1 está em 10.0.1.0/24. Dessa forma, você pode usar 10.3.1.0/24 como sua "rede de roteamento".

    
por 25.07.2016 / 23:03