Conectando-se a máquinas locais através do OpenVPN

1

Eu já fiz algumas pesquisas sobre esse assunto e não consegui chegar a uma solução viável até agora. Houve muitas perguntas, a maioria delas não correspondendo exatamente ao meu problema e apenas algumas respostas. Então, espero conseguir alguma ajuda aqui. Aqui está a configuração:

Minha rede local usa o intervalo de endereços 10.1.0.0/24 sendo 10.1.0.1 o roteador e 10.1.0.2 a máquina que estou tentando acessar de fora da rede.

O roteador executa o firmware dd-wrt e é configurado para ser um servidor OpenVPN com um intervalo de endereço vpn de 10.2.0.0/24 . Na configuração dos servidores, eu estou tentando empurrar a rota para o meu local rede via:

push "route 10.1.0.0 255.255.255.0"

Eu posso estabelecer uma conexão de trabalho OpenVPN do meu cliente no trabalho e a rota ser enviada corretamente:

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         ds9-ds10.gate.u 0.0.0.0         UG    302    0        0 wlan0
10.1.0.0        10.2.0.1        255.255.255.0   UG    0      0        0 tun0
10.2.0.0        *               255.255.255.0   U     0      0        0 tun0
10.20.4.0       *               255.255.254.0   U     0      0        0 wlan0
10.20.4.0       *               255.255.254.0   U     302    0        0 wlan0

Eu também posso ssh no meu roteador ou usar sua interface web usando o seu ip 10.1.0.1 (o que só é possível quando estou enviando a rota) ou o vpn ip 10.2.0.1.

O encaminhamento de Ip está ativado no roteador:

# cat /proc/sys/net/ipv4/ip_forward 
1

Eu pensei que agora seria capaz de ssh para a outra máquina (que está configurada para aceitar conexões de endereços 10.1.0.0/24 e 10.2.0.0./24) usando seu lan ip 10.1.0.2, como todas as conexões para 10.1.0.0/24 agora deve ser roteado através do 10.2.0.1, ainda não consigo conexão.

Não consigo ver o bit ausente na minha configuração, provavelmente em algum lugar do roteador. Por que o meu pedido para se conectar ao 10.1.0.1 (intervalo de endereços local) funciona, mas a solicitação para 10.1.0.2 não atinge a máquina conectada ao roteador?

EDITAR:

Eu não sabia do problema que @MariusMatutiae apontou. Eu li sobre a necessidade de uma rota estática em algumas ocasiões, mas nunca ficou claro onde e o que adicionar, tenho que admitir que o meu conhecimento sobre os detalhes mais finos é bastante limitado. O esclarecimento em sua resposta faz perfeito sentido no entanto. Seguindo suas sugestões, modifiquei a tabela de roteamento no roteador para incluir agora

10.2.0.0        10.2.0.1        255.255.255.0   UG    0      0        0 tun2

levando à seguinte tabela:

root@DD-WRT:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         188-193-191-254 0.0.0.0         UG    0      0        0 vlan2
10.1.0.0        *               255.255.255.0   U     0      0        0 br0
10.2.0.0        10.2.0.1        255.255.255.0   UG    0      0        0 tun2
10.2.0.0        *               255.255.255.0   U     0      0        0 tun2
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
169.254.0.0     *               255.255.0.0     U     0      0        0 br0
188.193.184.0   *               255.255.248.0   U     0      0        0 vlan2

A cadeia FORWARD do iptables inclui as linhas

pkts bytes target     prot opt in     out     source               destination  
   0     0 ACCEPT     0    --  tun2   *       0.0.0.0/0            0.0.0.0/0
   0     0 ACCEPT     0    --  *      tun2    0.0.0.0/0            0.0.0.0/0

acima de quaisquer DROPs ou REJECTs com tun2 sendo o dispositivo tun do servidor OpenVPN. Deve ficar bem, eu acho.

A questão, no entanto, ainda permanece sem solução. O que há de errado?

    
por inVader 08.11.2013 / 13:23

1 resposta

2

Você acha que a afirmação

 push "route 10.1.0.0 255.255.255.0"

é o fim da história, no que diz respeito ao roteamento, mas não é. Tudo o que esta tarefa faz é tornar o cliente ciente da existência de uma LAN privada, 10.1.0.0/24, atrás do servidor VPN. No entanto, o próprio servidor VPN não está ciente da existência da rede VPN 10.2.0.0/24 porque ninguém o instruiu para adicionar uma rota adequada à sua tabela. Esse é o motivo de seus problemas: na verdade, seu cliente pode conectar-se aos membros da LAN, mas nunca recebe uma resposta porque o roteador não sabe como encaminhar suas respostas para o cliente VPN.

A saída é adicionar esse comando ao roteador,

 route add -net 10.2.0.0/24 gw 10.2.0.1

ou

 route add -net 10.2.0.0/24 dev tun0 

ou (depois de ter testado que este é o único problema que você tem) para adicionar esta declaração ao seu arquivo server.conf:

 route 10.2.0.0 255.255.255.0

Você precisa desta declaração, bem como da declaração

 push "route 10.1.0.0 255.255.255.0"

Você pode se surpreender que o roteador não conheça a rota de volta ao cliente VPN, porque você está pensando que o roteador e o servidor VPN são a mesma máquina, mas esta é exatamente a explicação porque o roteador não sabe o que o servidor está fazendo: o caso geral é aquele em que os dois estão hospedados por duas máquinas diferentes. Nesse caso, você não deseja alterar a tabela de roteamento do servidor VPN, porque isso significaria que os outros computadores na rede local não saberiam como acessar o cliente VPN, e você teria Para resolver isso, alterando todas as tabelas de roteamento de todos os PCs para informá-los de que o gateway para a VPN é o servidor VPN, não o roteador. Em vez disso, o que você realmente deseja fazer nesse caso é não alterar a tabela de roteamento do servidor VPN e alterar a tabela de roteamento do roteador, para que você faça isso apenas uma vez.

    
por 08.11.2013 / 14:11