Como fazer com que o servidor OpenVPN encaminhe pacotes tun0 para a rede local?

Como fazer com que o servidor OpenVPN encaminhe pacotes tun0 para a rede local?

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

FREEBSDcaixa 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 em VPN

WEBSERVER
10.0.200.31/24 na sub-rede local

Posso acessar REMOTEa VPN FREEBSDvia OpenVPN e a conexão está boa, mas está configurada incorretamente. Quando tento conectar- REMOTEme WEBSERVERdigitando WEBSERVERo endereço IP de REMOTEno navegador, WEBSERVERfica inacessível. É acessível se eu me conectar REMOTEdiretamente à sub-rede local.

Aprendi o seguinte durante a solução de problemas.

  • REMOTEpode fazer ping FREEBSDe até mesmo SSH para ele.
  • Uma captura de pacotes configurada na FREEBSDporta Ethernet de não captura pacotes de ou para REMOTEo IP VPN de 10.0.202.6. Portanto, os pacotes do REMOTE não estão chegando à sub-rede local.
  • Oopenvpn.logfile on FREEBSDtem 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 FREEBSDo adaptador Ethernet e 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"

Tentei adicionar esta linha, mas não ajudou.
route 10.0.200.0 255.255.255.0


Aqui está a tabela de roteamento emFREEBSD

Tabelas de roteamento

Internet:
Sinalizadores de gateway de destino Refs usam Netif Expire
padrão 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
link do host local#11 UH 0 193743 lo0


Eu li online sobre a GET INST BY VIRT: 10.0.200.31 [failed]mensagem e foi recomendado que máquinas Linux executassem o seguinte comando.
echo 1 > /proc/sys/net/ipv4/ip_forward
Tenho medo de rodar porque não entendo e não quero entrar FREEBSDem uma configuração estranha. Eu também prefiro fortemente uma solução que modifique o arquivo server.conf para criar automaticamente a configuração necessária para que seja gerenciado e desmontado adequadamente quando o OpenVPN for fechado.

Qual é a solução para este problema?

Responder1

Encontrei o problema. Acontece que o FreeNAS, o software do dispositivo NAS baseado no FreeBSD e ao qual estou me referindo FREEBSDacima, tem o net.inet.ip.forwardingvalor definido como 0. Isso pode ser visualizado usando o comando sysctl -a | grep net.inet.ip.forwarding. Para encaminhar os pacotes, tive que fazer um arquivo sysctl net.inet.ip.forwarding=1.

Essa alteração não persiste durante as reinicializações. Acho que talvez seja necessário usar o arquivo /etc/rc.conf e set gateway_enable="YES", mas até agora descobri que essa configuração não é processada até a reinicialização e, infelizmente, no FreeNAS, o rc.conf parece ser substituído a cada reinicialização. Pode ser possível gravar esta variável em /etc/defaults/rc.conf, que supostamente armazena os padrões do sistema e é substituída por configurações personalizadas em rc.conf, mas o /etc/defaults/rc.conf arquivo tem um aviso na parte superior para não editá-lo.

Então, esse problema não está totalmente resolvido, mas pelo menos descobri quais parecem ser os problemas. Agora que entendi isso, estou percebendo um problema ao fazer login em dispositivos de gerenciamento da web https na sub-rede local. Esse será outro problema a resolver.

Responder2

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

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

informação relacionada