Pregunta

Puedo ver que muchos de los programas como openvpn y Teamviewer para su conexión VPN crean una conexión de red virtual en Windows. Quiero crear uno para mí con fines de prueba.

¿Es posible crear uno programáticamente o algo así?

¿Fue útil?

Solución

Parece que estás buscando el controlador Tap-Win32. Es el controlador que OpenVPN usa en Windows para crear la interfaz virtual que está viendo y, de hecho, es parte de el paquete OpenVPN . Este subsistema también está disponible en muchos * nixes.

La interfaz de este controlador TAP es aproximadamente la misma en todos los sistemas operativos. Abre un archivo especial y escribe marcos Ethernet sin procesar en este archivo. El controlador luego inserta estos marcos en la interfaz virtual. A la inversa, cualquier paquete que se transmita en la interfaz virtual, puede leerse desde un archivo especial como marcos Ethernet sin procesar.

La mayoría de las implementaciones también tienen un modo TUN, que funciona en la capa 3 en lugar de la capa 2. Por lo tanto, leerá paquetes de IP sin formato, IPv6, etc. en lugar de marcos Ethernet.

No tengo experiencia con esto en Windows, por lo que voy a revisar rápidamente el código fuente aquí. OpenVPN realiza la mayoría de estos pasos en la función tun_c open_tun. Encontrará múltiples definiciones de esta función, pero son # ifdef'd para diferentes sistemas operativos (así que busque CreateFile). La forma básica en que parece funcionar en Windows es:

  1. Antes de que se inicie cualquier aplicación que opera una interfaz TAP, una o más interfaces virtuales son creadas previamente (¿por el instalador?). Estas interfaces comienzan desconectadas.
  2. Su aplicación se inicia y realiza una llamada especial a CreateFile en " \\. \ Global \ GUID.tap " Donde GUID es reemplazado por el GUID que describe la interfaz virtual específica. Las interfaces virtuales se pueden iterar en la clave de registro que se define como ADAPTER_KEY en " tap-win32 \ common.h " en el código fuente de OpenVPN.
  3. Su aplicación puede realizar algunas llamadas de DeviceIoControl. OpenVPN usa esto varias veces para obtener la versión del controlador, obtener MTU, configurar el modo TUN y otras cosas misceláneas.
  4. En este punto, es probable que la interfaz aparezca como conectada en Windows, e incluso puede que esté leyendo las solicitudes DHCP que ya está recibiendo de Windows. OpenVPN atraviesa una gran cantidad de errores para configurar la interfaz utilizando otras partes de las API de redes de Windows, pero esto no es específico del controlador TAP.

Entonces, si bien la API es realmente solo un archivo especial y, por lo tanto, bastante simple, hay mucho para administrar la interfaz. Pero si estás solo para hacer pruebas, esto puede ser suficiente. Luego puede configurar manualmente su interfaz de prueba en Windows.

Otros consejos

Función MSDN Ras Dial

¿Esto podría ser un paso en la dirección correcta?

Desde la página:

  

El Servicio de acceso remoto (RAS) admite conexiones de red privada virtual (VPN), además de las conexiones de acceso remoto convencionales que utilizan el Protocolo punto a punto (PPP). En una conexión VPN, los paquetes VPN se encapsulan en paquetes IP y se envían a través de una red IP como Internet. Por lo tanto, el acceso a una red IP es un requisito para establecer una conexión VPN. Si la computadora cliente tiene una conexión siempre activa a una red IP, por ejemplo, una conexión a una LAN IP, el cliente puede establecer la conexión VPN utilizando una sola llamada a la función RasDial.

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