Pregunta

A veces debo escribir software para establecer un socket con un servidor en particular que reside dentro de una VPN de Cisco. Simplemente escribo mi software como si no hubiera un VPN (haciendo uso de la biblioteca de sockets estándar). Cuando es el momento de ejecutar este programa, puedo conectar manualmente a la VPN usando instalado en el ordenador el software de cliente, a continuación, ejecutar el programa en sí.

Sin embargo, sería deseable para escribir el software para tomar ventaja de una biblioteca especializada toma capaz de comunicarse a través de la VPN directamente, sin el uso de ningún software cliente instalado.

Aquí hay un código de Java que ilustra la funcionalidad quisiera:

String vpnHost = ...;
String vpnUser = ...;
String vpnPassword = ...;
VPNConnection vpnConnection = new CiscoVPNConnection(vpnHost, vpnUser, vpnPassword);

String serverHost = ...;
int serverPort = ...;
Socket socket = vpnConnection.openSocket(serverHost, serverPort);

¿Es posible establecer una conexión de este tipo a una VPN sin necesidad de instalar ningún software de cliente?

¿Fue útil?

Solución

Esto depende de cómo esté configurado el servidor VPN.

La mayoría de los productos VPN utilizan IPSEC, un protocolo estándar para el cifrado de las conexiones TCP / IP. La mayoría de los productos también utilizan ISAKMP, la arquitectura de protocolo de gestión de claves Internet Security, también un estándar, para establecer la sesión. El código fuente para IPSec e ISAKMP está fácilmente disponible, y puede que ya esté instalado en su sistema.

Ahora las malas noticias: aunque todo lo que ya he mencionado es estándar, los esquemas de autenticación que se pueden utilizar con ISAKMP son casi todas de propiedad. Los dos esquemas de autenticación "estándar" son clave pre-compartida y de los certificados X.509. Si el servidor VPN está configurado para permitir que cualquiera de estos entonces usted tiene una oportunidad. De lo contrario, realmente no se puede utilizar la VPN, como el protocolo es verdaderamente propietaria y casi imposible de realizar ingeniería inversa como la conversación de autenticación está cifrada.

Un camino mucho más fácil: lo que realmente necesita una VPN, o hay una forma en que pueden crear un túnel a través de SSL? Creo que Java soporta SSL; sólo puede crear la conexión segura que necesita e ir de allí.

Si usted sabe qué sistema cliente que está usando, y luego considerar los bombardeos a cabo para invocar el cliente VPN de Cisco para ese sistema.

De lo contrario, tendrá que repetir lo que hace un cliente VPN. El cliente VPN realiza la autenticación y la configuración de sesión con ISAKMP, e instala el resultado en el kernel para crear la conexión VPN. implementaciones de ISAKMP están disponibles; sólo es necesario averiguar lo que la autenticación se está utilizando y tratar de poner esto en marcha. Momento en el que se haya escrito su propio cliente VPN.

Otros consejos

Yo uso el paquete vpnc en Linux con el fin de conectarse a la VPN de Cisco de mi empresa, ya que no tenemos un cliente Linux compatibles. vpnc está escrito en C embargo, por lo que tendrá que llevar a cabo un puerto.

Usted puede leer doc Oficial Cisco y después de que se puede crear un archivo bat con estos datos: vpnclient conectar [Nombre de conexión] pwd [Contraseña] y desconecte. Incluirlo en el programa Java: . Runtime.getRuntime () exec ( "cmd / C Iniciar [Ruta al archivo BAT]");

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top