Tabela de roteamento com openvpn sobre uma rede sem fio instável

1

Estou conectado à Internet por meio de uma rede de campus: a faixa de IPs é, digamos, 10.42.0.0/16 e tudo precisa passar por um servidor proxy 10.42.0.42 .

Às vezes, estou conectado a essa rede por meio de um ponto de acesso sem fio, em um intervalo de IP local 192.168.0.0/24 , esse roteador sem fio sendo conectado à rede do campus.

Eu também estou usando uma VPN pessoal, baseada no OpenVPN. Meu intervalo de IP da VPN é 10.8.0.0/24 .

Quando estou conectado a essa rede sem fio, minha tabela de roteamento é:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    304    0        0 wlan0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
192.168.1.0     0.0.0.0         255.255.255.0   U     304    0        0 wlan0

E quando eu inicio minha VPN nessa rede sem fio:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.41       128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.1     0.0.0.0         UG    304    0        0 wlan0
10.8.0.0        10.8.0.41       255.255.255.0   UG    0      0        0 tun0
10.8.0.41       0.0.0.0         255.255.255.255 UH    0      0        0 tun0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
128.0.0.0       10.8.0.41       128.0.0.0       UG    0      0        0 tun0
10.42.0.0       192.168.1.1     255.255.0.0     UG    0      0        0 wlan0
10.42.0.42      192.168.1.1     255.255.255.255 UGH   0      0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     304    0        0 wlan0

Como você pode ver, configurei minha VPN para que a rede do campus não seja redirecionada para tun0 , para que os servidores nessa zona privada permaneçam disponíveis.

Mas aí vem o problema: o Wireless sendo instável (e eu não posso fazer nada sobre isso), eu estou regularmente desconectado e reconectado. Durante esse processo, todas as entradas na tabela de roteamento sobre wlan0 são liberadas, e minha tabela fica assim:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.41       128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.1     0.0.0.0         UG    304    0        0 wlan0
10.8.0.0        10.8.0.41       255.255.255.0   UG    0      0        0 tun0
10.8.0.41       0.0.0.0         255.255.255.255 UH    0      0        0 tun0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
128.0.0.0       10.8.0.41       128.0.0.0       UG    0      0        0 tun0

E nada funciona mais: todo o tráfego é redirecionado para tun0 , que não existe mais, e o openVPN não pode se reconectar ao meu servidor ( No route to host. ). A única solução que encontrei é reiniciar manualmente o meu cliente OpenVPN.

É possível estabilizar isso e como?

Estou executando o Gentoo Linux, gerenciando minha rede com o Wicd.

    
por Levans 31.05.2014 / 11:50

2 respostas

0

É possível, usando scripts do Wicd, reiniciar o OpenVPN quando a conexão com o Wireless for restabelecida.

Basta criar um script executável em /etc/wicd/scripts/postconnect/restart-openvpn.sh para verificar a existência do arquivo PID OpenVPN e reiniciá-lo, se já tiver sido iniciado:

#!/bin/bash
[ -f /var/run/openvpn.pid ] && /etc/init.d/openvpn restart
    
por 31.05.2014 / 15:56
0

Você pode tentar o seguinte. Adicione estas duas linhas ao seu arquivo de configuração do cliente:

 route-delay 2
 route-up "/path/to/shell/script.sh"

O arquivo script.sh (que deve ser feito como executável) consiste em um único comando:

 #!/bin/bash
 ip route add 10.42.0.0/24 via 192.168.1.1 dev wlan0

O comando route-delay força os seguintes comandos a serem executados em 2 segundos (mude isso da maneira que você achar melhor) após todas as rotas terem sido configuradas; o seguinte comando, toda vez que as rotas são ativadas, executa um shell script, cuja única finalidade é adicionar de volta a rota ad-hoc que você criou.

    
por 31.05.2014 / 12:12