OpenBSD com apenas um / 32 exclui repetidamente sua rota estática para o mundo

2

Eu tenho o OpenBSD 5.9 em um servidor privado virtual. Como outras pessoas nestes dias de No More IPv4 Address Space For You, a máquina é alocada apenas com um / 32, ou seja, uma LAN de um único endereço IPv4. O (outro) outro nó na LAN é o gateway padrão para o mundo fornecido pelo provedor de hospedagem. É, na verdade, uma LAN de dois nós, mas sem transmissão IP.

A maneira de resolver isso é razoavelmente direta e bem conhecida. Configure a rota padrão como normal e crie uma rota estática na interface de rede da LAN para alcançar o próprio gateway padrão. O último é feito no meu /etc/hostname.vio0 com a seguinte linha

!route add 188.165.223.254 -static -link -iface vio0

Infelizmente, isso não funciona. A máquina perde a conectividade regularmente para o mundo inteiro.

Acho que, depois de um dia ou dois, a rota estática através da interface desapareceu completamente da tabela de roteamento, aparentemente ao acaso, em nenhuma hora do dia particularmente regular. Depois de adicioná-lo novamente, ele desaparecerá novamente. Verificando, não há tarefas agendadas ou outras tarefas agendadas que poderiam estar acionando-as, e isso não está acontecendo alinhado a um limite de minutos de qualquer maneira. Além disso, a máquina está em grande parte ociosa na maioria das vezes que isso acontece.

Acionar route monitor canalizado em cyclog para um diretório de log e deixá-lo funcionando por dias, para detectar o problema quando isso acontecer, revela que é o próprio kernel que está fazendo isso, não algum processo do usuário :

2016-07-29 06:27:08.436729680 got message of size 144 on Fri Jul 29 06:27:08 2016
2016-07-29 06:27:08.436740030 RTM_DELETE: Delete Route: len 144, priority 0, table 0, ifidx 1, pid: 0, seq 0, errno 0
2016-07-29 06:27:08.436747000 flags:
2016-07-29 06:27:08.436752930 use:        0   mtu:        0    expire:        0 
2016-07-29 06:27:08.436759100 locks:  inits: 
2016-07-29 06:27:08.436764620 sockaddrs: 
2016-07-29 06:27:08.436770290  188.165.223.254 link#1

Por que o kernel do OpenBSD está fazendo isso? E como eu paro isso?

Leitura adicional

por JdeBP 01.08.2016 / 12:53

1 resposta

3

Um colega opinou que "este é um para a lista de discussão do OpenBSD". Seguindo o sábio conselho para sempre ler a lista de discussão antes de postar eu descobri que já foi criado por Matthieu Herrb em fevereiro de 2016 .

Acontece que este é um erro do kernel do OpenBSD 5.9, uma regressão introduzida desde 5.8 pela "nova" tabela de roteamento do OpenBSD implementada por Martin Pieuchot.

A aplicação do patch de kernel de M. Pieuchot em sys/netinet e sys/netinet6 (e na reconstrução e instalação do kernel) impede que isso aconteça.

Leitura adicional

por 01.08.2016 / 12:53