Rotas persistentes para o cliente VPN DD-WRT PPTP

3

Minha rede doméstica nos EUA está atrás de um roteador Buffalo (G300NH) executando sua versão do DD-WRT. Eu uso o cliente VPN PPTP interno para se conectar a um provedor de VPN no Reino Unido. Eu roteio determinado tráfego pela VPN (por isso, ele tem um endereço de origem no Reino Unido, por várias razões inteiramente legais), o que consegui seguindo as instruções nos documentos do DD-WRT e as instruções do meu provedor de VPN. Eu coloquei dois comandos como este no script de firewall:

route add -net xxx.xxx.0.0 netmask 255.255.0.0 dev ppp0
route add -net yyy.yyy.0.0 netmask 255.255.0.0 dev ppp0

Eu não coloquei nenhuma das regras do iptables porque minha configuração não parece precisar delas. Ele funciona como um encanto. O tráfego para as sub-redes xxx passa pela VPN, todo o resto passa pelos canos do próprio provedor.

O problema surge quando a VPN cai, o que acontece ocasionalmente. O DD-WRT faz um bom trabalho de reconectá-lo automaticamente, mas as rotas são descartadas toda vez que isso acontece.

Como eu automatizo o processo de restabelecimento de minhas rotas? Pensei em rotas estáticas, mas o endereço IP da conexão VPN foi atribuído dinamicamente (e é por isso que estou usando dev ppp0 ).

    
por Tim Kemp 06.01.2011 / 17:18

4 respostas

3

O comando sed funciona bem, exceto que o dd-wrt não cria o arquivo ip-up até que o daemon pptpd seja iniciado. Então adicionei um atraso ao script de inicialização para dar tempo e também executar o comando ip-up após adicionar as rotas. Isso deve resolver isso para você.

Aqui está o comando de inicialização do seu roteador:

sleep 40
sed -i '' -e 's|exit 0|route add -net xxx.xxx.0.0 netmask 255.255.0.0 dev ppp0\nroute add -net yyy.yyy.0.0 netmask 255.255.0.0 dev ppp0\n&\n|' /tmp/pptpd_client/ip-up
/tmp/pptpd_client/ip-up

Você pode alternativamente fazer isso:

sleep 40
sed -i '' -e 's|exit 0|route add -net xxx.xxx.0.0 netmask 255.255.0.0 dev ppp0\n&\n|' /tmp/pptpd_client/ip-up
sed -i '' -e 's|exit 0|route add -net xxx.xxx.0.0 netmask 255.255.0.0 dev ppp0\n&\n|' /tmp/pptpd_client/ip-up
sed -i '' -e 's|exit 0|route add -net xxx.xxx.0.0 netmask 255.255.0.0 dev ppp0\n&\n|' /tmp/pptpd_client/ip-up
/tmp/pptpd_client/ip-up

adicionando quantas rotas forem necessárias. O & substitui o exit 0 .

    
por 07.06.2011 / 06:55
3

O problema com a implementação do dd-wrt é que o cliente pptp configura a tabela de rotas corretamente, mas o servidor não. Normalmente, você pode se conectar a partir do cliente, mas não do servidor. Isso consertará a tabela de roteamento no lado do servidor toda vez que a conexão for ativada e funcionará durante as reinicializações e reconecta-se.

A partir do DD-WRT executando como o pptp SERVER, clique na aba 'administration' e então na aba 'command', então digite:

/bin/sh -c 'echo "ip route add XX.XX.XX.0/24 dev ppp0" >> /tmp/pptpd/ip-up'

Em seguida, salve como 'Startup Script' para torná-lo permanente. Claro, mude os XX's para a sub-rede da rede CLIENT. Se você tiver várias sub-redes de clientes, basta adicionar várias linhas acima com as sub-redes corretas para cada rede de cliente.

    
por 15.05.2011 / 09:59
1

Você gostaria de colocar os comandos de rota em um script de ip-up que é chamado quando o link é ativado. Não sei exatamente onde colocá-los em dd-wrt; Eu mudei para openwrt mas aqui está um link que pode ajudar?

link

    
por 06.01.2011 / 17:36
0

Você não pode editar ou adicionar arquivos com facilidade em alguns roteadores ddwrt.

Todos os 4 roteadores ddwrt que eu uso geram esses arquivos quando o cliente pptp é executado, tornando impossível apenas alterar ou adicionar arquivos.

Aqui está uma solução que parece funcionar na maioria dos roteadores link

    
por 28.03.2014 / 10:43