Não é possível excluir o túnel GRE

15

Estou configurando um túnel GRE no Linux 2.6.26 e estou enfrentando um problema muito estranho para o qual não encontrei nenhuma solução.

Eu criei um túnel GRE chamado gre0, mas não importa o que eu faça, simplesmente não consigo excluir este túnel. O comando ip tunnel del gre0falha com a resposta ioctl: Operation not permitted. Qualquer tentativa de alterar os endereços do túnel também falha.

Os seguintes comandos ilustram o problema:

# ip tunnel del gre0
ioctl: Operation not permitted
# ip tunnel change gre0
# ip tunnel change gre0 remote <some address> local <some address>
ioctl: No such file or directory

Posso criar, alterar e excluir outros túneis sem nenhum problema, mas gre0fico lá e não desaparece, mesmo que eu reinicie ou desative as interfaces.

Se eu remover o ip_gremódulo, o túnel desaparece. Assim que eu insiro o módulo novamente, gre0reaparece e o problema continua.

Eu tenho duas perguntas:

  1. O que posso fazer para me livrar desse túnel traquina? Eu suspeito que isso possa ser um bug do kernel ou do módulo.
  2. Onde esses dados persistentes (neste caso, as informações de gre0, mas isso se aplicam a qualquer outra configuração que eu desconheço) são armazenados?

Se qualquer outra informação for necessária, entre em contato.

Muito obrigado por qualquer ajuda.

alecov
fonte

Respostas:

2

A gre0interface do túnel é nomeada como interface de fallback e tem um significado especial. É criado pelo ip_gremódulo do kernel na inicialização do módulo. Você não pode desativar esse recurso.

Quando o host recebe pacotes gre para os quais a interface de encapsulamento adequada não foi encontrada, essa interface de fallback será usada. Infelizmente, é um recurso realmente não documentado. Somente no código fonte isso é descrito.

A mesma lógica é usada para outros tipos de encapsulamento.

Portanto, você não pode removê-lo completamente sem perder outros túneis gre. Mas você pode renomeá-lo com o comando ip link set dev gre0 name gre_fallback. E então você pode criar o outro túnel cinza com o gre0nome.

Anton Danilov
fonte
Após oito anos, a resposta correta aparece. Obrigado!
alecov 22/07/19
23

Acredito que encontrei uma resposta para esse problema.

Depois de mexer um pouco, decidi reproduzir o problema em uma instalação limpa.

O ip_gremódulo não é inserido por padrão no kernel após a instalação do Debian. ip tunnel shownão exibe nenhum túnel. Depois de inserir o ip_gremódulo, mas sem criar nenhum túnel, gre0aparece e é inviável e imutável conforme o esperado. Portanto, gre0parece ser um túnel fictício criado por padrão pelo ip_gremódulo.

A parte frustrante é que esse 'recurso' é totalmente indocumentado e até inesperado, pois pode ser natural tentar criar um gre0túnel como o primeiro (e único) túnel GRE em um sistema.

alecov
fonte
7
Isso também vale para tunl0 e sit0.
Oliver Torça
E, pelo tunl0contrário, é ipip.
i336_ 24/08/19
0

Você precisa verificar se o módulo gre foi completamente removido. Corre

sudo lsmod | grep gre

para verificar se o módulo está na lista. Se for, execute

sudo rmmod ip_gre
sudo rmmod gre

para removê-los do kernel.

Tony
fonte