Preciso verificar se um servidor OpenVPN (UDP) está ativo e acessível em um determinado host: port.
Eu só tenho um computador Windows XP simples, sem cliente OpenVPN (e sem chance de instalá-lo) e sem chaves necessárias para conectar-se ao servidor - apenas ferramentas comuns de linha de comando do WinXP, um navegador e PuTTY estão à minha disposição.
Se eu estivesse testando algo como um servidor SMTP ou POP3, usaria o telnet e veria se ele responde, mas como fazer isso com o OpenVPN (UDP)?
tls-auth
opção de configuração (recomendada) , será IMPOSSÍVEL (se você não tiver pelo menos a chave do wrapper externo)! Qualquer pacote com assinatura HMAC incorreta será descartado sem resposta do servidor.Respostas:
Aqui está uma linha de shell:
se houver um openvpn na outra extremidade, a saída será
caso contrário, será desativado e atingido o tempo limite após 10 segundos ou exibirá algo diferente.
NOTA: isso funciona apenas se a
tls-auth
opção de configuração não estiver ativa; caso contrário, o servidor rejeitará mensagens com HMAC incorreto.fonte
tls-auth
opção de configuração para descartar pacotes com sig HMAC incorretos.od -x -N 14
mais do quecat -v
é muito mais útil porque você pode a) ver o conteúdo binário real em vez de lixo ASCII e b) instantaneamente receber a cada linha de saída como o servidor envia cada pacote de aperto de mão e pará-lo imediatamente após a primeira.-N 14
porque o pacote de handshake tem 14 bytes e apenas se repete.Desculpe se estou um pouco atrasado com a minha resposta;)
Envie um pacote udp com o seguinte conteúdo:
$ 38 $ 01 $ 00 $ 00 $ 00 $ 00 $ 00 $ 00 $ 00 $ 00
O servidor deve responder alguma coisa.
Você pode forjar pacotes udp com python assim:
fonte
tls-auth
.Você pode tentar executar o seguinte na CLI
Isso deve listar todos os processos que estão escutando no seu servidor / sistema. Grep para o número da porta que você deseja
fonte
Para qualquer pessoa que esteja tentando rastrear um servidor que esteja
tls-auth
habilitado, use o script python aqui: https://github.com/liquidat/nagios-icinga-openvpnA saída é formatada para uso em Nagios ou Icinga, mas pode ser executada por qualquer coisa / qualquer pessoa, desde que você tenha python e o arquivo de chave tls disponível.
Por exemplo, se você estiver usando
SHA256
como resumo, use algo como:python check-openvpn.py -p 1194 --tls-auth ta.key --digest SHA256 vpn-server.example.com
Nota: pode ser necessário adicionar,
--tls-auth-inverse
dependendo dokey-direction
valor do servidor .fonte
Se você pode obter um pcap da interação válida do cliente OpenVPN com o servidor OpenVPN, pode modelar o conjunto inicial de pacotes com algo como netcat, conforme sugerido pelo TiZon.
Basicamente, você quer um primeiro pacote válido suficiente para fazer o servidor responder com pelo menos uma mensagem de erro, para que ele não precise ser perfeito, apenas bom o suficiente.
Tentei acessar http://pcapr.net , mas não vi um exemplo do OpenVPN lá. Talvez, se outra pessoa estiver reivindicando o serviço, você poderá fazer com que a outra pessoa faça uma captura da transação.
fonte
Se você configurou o openvpn em um tcp listen, é tão simples quanto
assumindo que 1194 é a porta em que você está ouvindo
isso deve fornecer uma resposta de algum tipo para mostrar que o servidor openvpn está escutando
fonte