Como obter o servidor OpenVPN para encaminhar pacotes tun0 para a rede local?

1

Eu tenho três máquinas que estou tentando coordenar por meio de uma conexão TUN.

FREEBSD box executando o servidor OpenVPN (tun)
10.0.200.21/24 na sub-rede local
10.0.202.1/24 na VPN

REMOTE
IP público
10.0.202.6/24 na VPN

WEBSERVER
10.0.200.31/24 na sub-rede local

Eu posso obter REMOTE para VPN para FREEBSD via OpenVPN e a conexão está bem, mas está configurada incorretamente. Quando tento conectar-me de REMOTE a WEBSERVER , digitando o endereço IP WEBSERVER no navegador REMOTE , WEBSERVER é inacessível. É alcançável se eu anexar REMOTE diretamente à sub-rede local.

Eu aprendi o seguinte durante a solução de problemas.

  • REMOTE pode pingar FREEBSD e até SSH para ele.
  • Uma captura de pacote configurada na porta ethernet FREEBSD não captura pacotes de ou para o IP VPN de 10.0.202.6 de REMOTE . Portanto, os pacotes do REMOTE não estão chegando à sub-rede local.
  • O arquivo openvpn.log em FREEBSD tem a seguinte linha: GET INST BY VIRT: 10.0.200.31 [failed]

Portanto, parece que o OpenVPN não está encaminhando pacotes recebidos no dispositivo TUN para o adaptador ethernet FREEBSD e saindo para a sub-rede local.

Eu tenho a seguinte linha no meu arquivo server.conf.
push "route 10.0.200.0 255.255.255.0"

Eu tentei adicionar essa linha, mas não ajudou.
route 10.0.200.0 255.255.255.0


Aqui está a tabela de roteamento em FREEBSD

Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            10.0.200.1         UGS         0     4306    re0
10.0.200.0         link#9             U           0    61582    re0
10.0.200.21        link#9             UHS         0       41    lo0
10.0.201.0         10.0.200.1         UGS         0        0    re0
10.0.202.0         10.0.202.2         UGS         0        0   tun0
10.0.202.1         link#12            UHS         0        0    lo0
10.0.202.2         link#12            UH          0        0   tun0
localhost          link#11            UH          0   193743    lo0


Eu li on-line sobre a mensagem GET INST BY VIRT: 10.0.200.31 [failed] e foi recomendado para as máquinas Linux executar o seguinte comando.
echo 1 > /proc/sys/net/ipv4/ip_forward
Eu tenho medo de executá-lo porque não o entendo e não quero colocar FREEBSD em uma configuração estranha. Eu também prefiro uma solução que modifique o arquivo server.conf para criar automaticamente a configuração necessária para que ela seja adequadamente gerenciada e destruída quando o OpenVPN for fechado.

Qual é a solução para esse problema?

    
por Shaun 25.01.2014 / 22:39

2 respostas

2

Encontrou o problema. Acontece que o FreeNAS, o software de dispositivo NAS baseado no FreeBSD e ao qual estou me referindo como FREEBSD acima, tem o net.inet.ip.forwarding definido como 0. Isso pode ser visualizado usando o comando sysctl -a | grep net.inet.ip.forwarding . Para fazer com que os pacotes fossem encaminhados, tive que fazer um sysctl net.inet.ip.forwarding=1 .

Esta alteração não persiste durante as reinicializações. Eu acho que posso ter que usar o arquivo /etc/rc.conf e definir gateway_enable="YES" , mas até agora eu descobri que esta configuração não é processada até a reinicialização, e infelizmente no FreeNAS, o rc.conf parece ser sobrescrito a cada reinicialize. Pode ser possível gravar essa variável em /etc/defaults/rc.conf, que deve armazenar os padrões para o sistema e é sobrescrita por configurações customizadas no rc.conf, mas o /etc/defaults/rc.conf arquivo tem um aviso no topo para não editá-lo.

Então, esse problema não está totalmente resolvido, mas pelo menos eu descobri quais são os problemas. Agora que eu entendi isso, agora estou percebendo um problema com o login em dispositivos de gerenciamento da Web https na sub-rede local. Esse será outro problema para resolver.

    
por 26.01.2014 / 19:45
0

Ok, seu cliente VPN tem uma rota para acessar a rede 10.0.200.0/24 e seu servidor VPN tem uma rota. Mas a questão é se o seu servidor web 10.0.200.31 tem uma rota para chegar à rede 10.0.202.0/24 ?

Faça um tcpdump na caixa freebsd. Suspeito que você verá o tráfego do seu host 10.0.202.6 sendo encaminhado, mas você não está vendo nenhum tráfego de retorno.

    
por 26.01.2014 / 00:12