Como o SSL VPN (openvpn) se conecta via UDP?

2

Eu preciso testar se um serviço OpenVPN (ssl-vpn) está escutando em um endereço IP e porta específicos de uma caixa linux. Eu gostaria de fazer isso com um script bash ou algum código em python ou c / c ++, mas esse não é o problema - eu posso implementá-lo assim que souber como o UDP funciona aqui.

Meu problema é: o serviço VPN na máquina remota está configurado para usar UDP e como o UDP não é um protocolo que suporte conexões como o TCP, presumo que qualquer resposta a uma mensagem / pacote que enviei para a máquina remota é respondeu a outra porta na minha máquina local.

Eu conheço o netcat, mas obviamente não receberei uma resposta usando o protocolo UDP sem conexão, portanto, verificar com nc -u ip port não funcionará.

Então, como posso verificar se a VPN está realmente funcionando atrás de um endereço IP e porta.

Editar:
É possível emular a VPN com um script bash? Algo como conectar com um HELO como no SMTP e verificar se o servidor VPN enviou uma resposta de volta? Eu sei como isso funciona com o tcp, mas não tenho idéia de como fazer isso com o UDP.

Edit2:
Acabei de encontrar esta resposta . Então, como ouço os pacotes ICMP que devem ser respondidos quando o servidor remoto não está disponível? Isso é possível com bash / python / c / c ++ ou netcat? Como sei se o servidor está lá, ouvindo as solicitações (não deveria haver uma resposta ICMP, certo?)?

    
por wullxz 25.12.2012 / 22:06

2 respostas

0

A única maneira que eu acho que você pode testar com segurança é simplesmente estabelecer uma conexão com a VPN.

Como você disse, o OpenVPN ao usar o TCP não pode ser testado usando uma conexão TCP simples. Eu suspeito que a única maneira de testar é falando o protocolo OpenVPN.

Eu suponho que seria possível modificar o cliente para testar enquanto não estivesse totalmente conectado.

    
por 25.12.2012 / 22:17
0

Isto é da minha resposta anterior a uma pergunta semelhante.
Como verificar se um servidor OpenVPN está escutando em uma porta remota sem usar o cliente OpenVPN?
Se você estiver usando a autenticação tls (linha de configuração tls-auth), isso não está funcionando, mas você pode ter a idéia da conversação UDP.

import socket
senddata= "\x38\x01\x00\x00\x00\x00\x00\x00\x00"

def checkserver(ip,port):
   print('Checking %s:%s' %(ip,port)) 
   sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
   sock.settimeout(5) # in seconds
   sock.connect((ip, port))
   print("Sending request...")
   sock.send(senddata)
   try:
      dta=sock.recv(100)
      print("Server reply: %s" %(dta))
   except:
      print("Server not responding")
   sock.close()
   print("###########################################################")

def main():
   checkserver("addr.of.server1",1194)
   checkserver("addr.of.server2",1195)

if __name__ == "__main__":
   main()
    
por 04.02.2013 / 10:57