Não é possível conectar-se ao OpenVPN fora da LAN

0

Eu configurei o OpenVPN atrás de um roteador e a porta enviou 1194 . A VPN está usando a sub-rede 10.3.15.0/24 e tem 192.168.1.14 na LAN.

Funciona quando me conecto localmente ou na minha rede doméstica, conectando-me ao IP público. Mas não em outras redes que eu tentei.

Não consigo estabelecer uma conexão com a VPN e, no cliente, obtenho:

Mon Apr 20 13:50:42 2015 UDPv4 link local: [undef]
Mon Apr 20 13:50:42 2015 UDPv4 link remote: [AF_INET]83.***.***.***:1194
Mon Apr 20 13:51:42 2015 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Mon Apr 20 13:51:42 2015 TLS Error: TLS handshake failed
Mon Apr 20 13:51:42 2015 SIGUSR1[soft,tls-error] received, process restarting
Mon Apr 20 13:51:42 2015 Restart pause, 2 second(s)

Eu pensei que poderia ser um problema de firewall, isso é do meu iptables:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  10.3.15.0/24         anywhere             ctstate NEW

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Mas eu tentei limpar a mesa, o que não funcionou. E quando rodando tcpdump -qni any port 1194 há alguma comunicação (em ambos os casos):

13:44:35.936684 IP 194.***.***.****.53929 > 192.168.1.14.1194: UDP, length 14
13:44:41.043704 IP 194.***.***.****.22955 > 192.168.1.14.1194: UDP, length 14
13:44:43.063426 IP 194.***.***.****.22955 > 192.168.1.14.1194: UDP, length 14
13:44:43.544690 IP 194.***.***.****.53929 > 192.168.1.14.1194: UDP, length 14

Eu também notei algo sobre destination port unreachable , mas esses erros desapareceram.

Esta é a configuração do meu servidor:

port 1194
proto udp
dev tun

ca openvpn_certs/host-ca.pem
cert openvpn_certs/host-cert.pem
key openvpn_certs/host-key.pem
dh openvpn_certs/dh1024.pem

server 10.3.15.0 255.255.255.0
route 10.3.15.0 255.255.255.0
ifconfig-pool-persist ipp.txt

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "redirect-gateway def1 bypass-dhcp"
push "remote-gateway 10.3.15.1"

client-to-client
max-clients 20

keepalive 10 120
comp-lzo

user nobody
group nobody

persist-key
persist-tun
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log

verb 11

Aqui está minha configuração de cliente:

client
dev vpn
dev-type tun
proto udp
remote server.remote 1194
resolv-retry infinite
nobind
ns-cert-type server
persist-key
persist-tun
pull
ca certs/ca-host.pem
cert certs/cert-local.pem
key certs/key-local.pem
comp-lzo
verb 11

O servidor executa o linux alpino enquanto o cliente executa o Gentoo.

Estou preso e não tenho ideia de onde procurar, alguma ideia ou orientação?

Obrigado!

    
por William Wennerström 20.04.2015 / 14:13

2 respostas

1

Primeiro de tudo, não sei qual versão do OpenVPN você está usando, mas 'remote-gateway' não é uma opção válida na v2.3.2. Se você estiver usando uma versão mais antiga, verifique sua página do manual local e remova essa diretiva, se necessário.

De acordo com o Wiki do OpenVPN , o erro" Negociação da chave TLS falhou ... "é quase sempre resultado de:

  1. Um firewall de perímetro na rede do servidor está sendo filtrado pacotes OpenVPN de entrada (por padrão, o OpenVPN usa a porta UDP ou TCP número 1194).

    • Isso parece improvável no seu caso, mas verifique o firewall do seu roteador apenas para ter certeza.
  2. Um firewall de software em execução na própria máquina do servidor OpenVPN está filtrando conexões de entrada na porta 1194.

    • A tabela de filtros que você forneceu parece bem, presumindo que você normalmente tenha o conjunto de políticas INPUT padrão para aceitar. Caso contrário, você precisa permitir a porta UDP 1194:

      iptables -A INPUT -p udp -m udp --dport 1194 -j ACCEPT
      
  3. Um gateway NAT na rede do servidor não possui uma regra de encaminhamento de porta para TCP / UDP 1194 para o endereço interno da máquina do servidor OpenVPN.

  4. A configuração do cliente OpenVPN não possui o endereço correto do servidor em seu arquivo de configuração. A diretiva remota no arquivo de configuração do cliente deve apontar para o próprio servidor ou o endereço IP público do gateway da rede do servidor.

  5. O firewall do Windows está bloqueando o acesso para o binário openvpn.exe. Você pode precisar colocar na lista de permissões (adicione-a à lista de "Exceções") para que o OpenVPN funcione.

Se você ainda tiver problemas, provavelmente há um problema com a Infra-estrutura de chave pública. Eu não estou familiarizado com o Linux Alpine e se o pacote OpenVPN vem com o easy-rsa, então vá em frente e faça o download da versão mais recente e extraí-lo para um local apropriado em seu servidor e em uma máquina (de preferência) sem conexão de rede (sua Autoridade de Certificação). Por simplicidade, assumirei que seu servidor está gerando solicitações para clientes. Nos dois sistemas, mude para o diretório onde você extraiu o EasyRSA e ...

cp vars.example vars
editor ./vars

No sistema de autoridade de certificação, remova o comentário e edite os campos organizacionais de acordo (EASYRSA_REQ_COUNTRY, etc.). No servidor, opcionalmente, altere "set_var EASYRSA_PKI" para que aponte para um local apropriado (por exemplo, / etc / openvpn / pki).

Gerar solicitações de certificado no servidor:

./easyrsa init-pki
./easyrsa gen-req <your_server_name> nopass
./easyrsa gen-req <some_client_name> nopass

No não servidor, crie uma nova autoridade de certificação:

./easyrsa init-pki
./easyrsa build-ca

Copie os arquivos .req para o sistema da CA, importe e assine-os:

./easyrsa import-req server /tmp/<your_server_name>.req
./easyrsa import-req client /tmp/<some_client_name>.req
./easyrsa sign-req server <your_server_name>
./easyrsa sign-req client <some_client_name>

Copie os certificados recém-assinados, bem como o certificado de autoridade de certificação, para um local apropriado no servidor e no cliente. Então, no servidor, gere os parâmetros dh:

 ./easyrsa gen-dh

Por fim, copie a chave do cliente para a máquina do cliente (se ainda não estiver lá) e atualize suas configurações com os novos locais de chave e certificado.

por 04.05.2015 / 06:17
0

Verifique se o certificado do seu servidor foi assinado com a designação nsCertType = server (isso é depreciado e não o padrão se você usou o easyrsa3). Caso contrário, a diretiva 'ns-cert-type server' na configuração do cliente faria com que o handshake do tls falhasse. Use 'remote-cert-tls server' em seu lugar.

    
por 09.05.2015 / 07:53