Necesito verificar que un servidor OpenVPN (UDP) esté activo y accesible en un host determinado: puerto.
Solo tengo una computadora simple con Windows XP sin un cliente OpenVPN (y sin posibilidad de instalarlo) y no se necesitan claves para conectarse al servidor, solo herramientas comunes de línea de comandos de WinXP, un navegador y PuTTY están a mi disposición.
Si estuviera probando algo como un servidor SMTP o POP3, usaría telnet y vería si responde, pero ¿cómo hacer esto con OpenVPN (UDP)?
tls-auth
opción de configuración (recomendada) , entonces es IMPOSIBLE (¡si no tiene al menos la clave de envoltura externa)! Cualquier paquete con una firma HMAC incorrecta se descartará sin respuesta del servidor.Respuestas:
Aquí hay un shell de una sola línea:
si hay un openvpn en el otro extremo, la salida será
de lo contrario, se silenciará y se agota el tiempo de espera después de 10 segundos o mostrará algo diferente.
NOTA: esto funciona solo si la
tls-auth
opción de configuración no está activa; de lo contrario, el servidor rechaza los mensajes con HMAC incorrecto.fuente
tls-auth
opción de configuración para descartar paquetes con sig HMAC incorrecta.od -x -N 14
más quecat -v
es mucho más útil porque se puede a) ver el contenido binario real en lugar de basura ASCII y b) al instante recibir el cada línea de salida como el servidor envía cada paquete apretón de manos y detenerlo de inmediato después de la primera.-N 14
porque el paquete de protocolo de enlace tiene 14 bytes de longitud y solo se repite.Lo siento si llego un poco tarde con mi respuesta;)
Envíe un paquete udp con el siguiente contenido:
$ 38 $ 01 $ 00 $ 00 $ 00 $ 00 $ 00 $ 00 $ 00
El servidor debe responder algo.
Puede falsificar paquetes de udp con python como este:
fuente
tls-auth
.Puede intentar ejecutar lo siguiente en la CLI
Esto debería enumerar todos los procesos que están escuchando en su servidor / sistema. Grep por el número de puerto que deseas
fuente
Para cualquiera que se encuentre con esto y esté tratando de monitorear un servidor que ha
tls-auth
habilitado, puede usar el script de Python aquí: https://github.com/liquidat/nagios-icinga-openvpnLa salida está formateada para su uso en Nagios o Icinga, pero puede ser ejecutada por cualquier persona, siempre que tenga python y el archivo de claves tls disponible.
Por ejemplo, si está usando
SHA256
su resumen, usaría algo como:python check-openvpn.py -p 1194 --tls-auth ta.key --digest SHA256 vpn-server.example.com
Nota: es posible que deba agregar
--tls-auth-inverse
según elkey-direction
valor del servidor .fuente
Si puede obtener una pcap de interacción válida del cliente OpenVPN con el servidor OpenVPN, podría modelar el conjunto inicial de paquetes con algo como netcat, como lo sugiere TiZon.
Básicamente, desea un primer paquete válido suficiente para que el servidor responda con al menos un mensaje de error, por lo que no tiene que ser perfecto, solo lo suficientemente bueno.
Intenté ir a http://pcapr.net , pero no vi un ejemplo de OpenVPN allí. Quizás, si alguien más afirma que el servicio está activo, podría hacer que esa otra persona tome una parte de la transacción.
fuente
si ha configurado openvpn en un tcp listen, entonces es tan simple como
suponiendo que 1194 es el puerto en el que lo está escuchando
esto debería darle una respuesta de algún tipo para mostrar que el servidor openvpn está escuchando
fuente