por que o NetworkManager adiciona uma rota de host ao gateway?

0

Estou usando o Ubuntu 16.04.2 LTS e observei que quando eu exibo uma conexão VPN com a GUI (o servidor é openvpn), recebo uma rota de host adicionada ao gateway da VPN, além da rota para o Sub-rede VPN. Eu tenho as opções "Ignorar rotas obtidas automaticamente" e "Use esta conexão apenas para recursos em sua rede" selecionados.

Veja a primeira vista da minha tabela de roteamento:

$ ip route show | grep -v linkdown
default via 192.168.1.1 dev wlp2s0  proto static  metric 600 
192.168.1.0/24 dev wlp2s0  proto kernel  scope link  src 192.168.1.184  metric 600 

Agora eu abro uma conexão VPN e recebo:

$ ip route show | grep -v linkdown
default via 192.168.1.1 dev wlp2s0  proto static  metric 600 
10.8.0.0/24 dev tun0  proto kernel  scope link  src 10.8.0.4  metric 50 
52.90.159.97 via 192.168.1.1 dev wlp2s0  proto static  metric 600 
192.168.1.0/24 dev wlp2s0  proto kernel  scope link  src 192.168.1.184  metric 600 

A nova rota para 10.8.0.0/24 faz sentido para mim, porque essa é a sub-rede da VPN, mas por que eu também recebo uma rota para 52.90.159.97 (o gateway da VPN)?

Até agora, é apenas misterioso, mas se eu agora abrir uma segunda VPN que encapsula a primeira VPN, tenho um problema real:

$ ip route show | grep -v linkdown
default via 192.168.1.1 dev wlp2s0  proto static  metric 600 
10.8.0.0/24 dev tun0  proto kernel  scope link  src 10.8.0.4  metric 50 
10.8.0.2 via 192.168.1.1 dev wlp2s0  proto static  metric 600 
10.9.0.0/24 dev tun1  proto kernel  scope link  src 10.9.0.2  metric 50 
52.90.159.97 via 192.168.1.1 dev wlp2s0  proto static  metric 600 
192.168.1.0/24 dev wlp2s0  proto kernel  scope link  src 192.168.1.184  metric 600 

O segundo gateway da VPN é 10.8.0.2 e, como você pode ver, a nova entrada do host roteia sobre wlp2s0 , o que está errado (deve ser tun0 ). Eu tenho que excluir manualmente esta entrada para tornar a conexão utilizável.

Talvez eu deva registrar isso como um bug, mas gostaria de ouvir qualquer comentário aqui primeiro.

    
por Brent Baccala 27.03.2017 / 04:43

1 resposta

0

Depois de pensar sobre isso por algumas semanas, concluí que isso é feito para impedir que qualquer rota obtida pela VPN corresponda ao próprio gateway da VPN, criando um loop onde o kernel está tentando rotear a VPN para alcançar o gateway da VPN. O caso mais óbvio é se você adquirir uma rota padrão pela VPN.

Então, no meu caso, estou convencido de que isso é um bug. A lógica faz sentido, mas tem que ser aplicada de forma mais inteligente. Talvez adicionar uma rota ao gateway da VPN somente depois de verificar se você faria o roteamento do tráfego do gateway pela VPN.

    
por Brent Baccala 21.04.2017 / 16:16