Un poco de resumen y comprensión sobre VPN

prefacio

  Por la misma coincidencia, recientemente leí algo de contenido sobre vpn. En resumen, está registrado como el blog técnico de este mes.


1. Descripción general de VPN

inserte la descripción de la imagen aquí

La primera vez que escuché sobre VPN fue cuando estaba en mi segundo año (se confundió con VLAN). Science Online". Más tarde, aprendí lentamente que esta es una herramienta que puede explorar el mundo "fuera del muro".

La verdadera definición de VPN es Red Privada Virtual (Virtual Private Network), una tecnología que data de 1996. Los empleados de Microsoft en ese momento crearon PPTP (Protocolo de cifrado punto a punto), que crea una red segura entre los usuarios al cifrar los datos y canalizarlos a través de una conexión LAN o WAN. El uso de esta tecnología permite a los empleados acceder de forma segura a la red de la empresa en casa En mi opinión, hay dos puntos centrales, uno es el túnel, pero la seguridad. (Por supuesto que están relacionados)

Más tarde, con el desarrollo continuo de la tecnología, aparecieron más y más protocolos subyacentes de VPN (L2TP/IPsec, SSL, PPTP, SSTP), etc.

En aplicaciones prácticas, VPN se utiliza principalmente para conectarse de forma remota a la red de la empresa o actuar como un agente de seguridad para acceder al mundo "fuera de la pared".

En segundo lugar, el principio de VPN

2.1 Resumen de principios

Con respecto al principio básico de funcionamiento de VPN, en mi opinión, existen dos tecnologías principales, una es la encapsulación y la otra es el cifrado.

El primero construye un túnel entre dos nodos al encapsular una capa adicional de información de dirección en la capa IP o capa de enlace de datos de la pila de protocolos. Para hacer una analogía inexacta, como se muestra en la figura a continuación, la comunicación entre dos aplicaciones debe transferirse a través de guarder.Cuando los datos fluyen de App1 a App2, el destino se ha cambiado de App2 a guard2. Una vez que los datos llegan a guard2, guard2 envía los datos a App2. (Por supuesto, la situación real es algo diferente).
inserte la descripción de la imagen aquí

Si solo hay encapsulación, el túnel expuesto quedará expuesto en la red pública y los datos se filtrarán fácilmente. Por lo tanto, el protocolo básico de tunelización incluye una parte de encriptación, es decir, los datos se transmitirán al túnel para su transmisión después de siendo encriptado. La seguridad de los datos de "después de ponerse la ropa y vestirse" naturalmente ha mejorado mucho.

2.2 Tarjeta de red virtual

A continuación se toma openvpn como ejemplo para presentar en detalle el flujo de paquetes de datos entre dos nodos y openvpn, que involucra principalmente el proceso de encapsulación y desencapsulación descrito en la sección anterior.

Hablando del principio de funcionamiento de openvpn, también debe comprender algo llamado dispositivo de tarjeta de red virtual. El llamado dispositivo de tarjeta de red virtual es un dispositivo simulado por el sistema operativo con software, es similar a una tarjeta de red física real y puede enviar y recibir datos. La diferencia es que, en términos generales, la tarjeta de red real está conectada a la red y la pila de protocolos del kernel local, mientras que la tarjeta de red virtual está conectada al programa de aplicación y la pila de protocolos del kernel.La relación se muestra en la siguiente figura.
inserte la descripción de la imagen aquí


Para Linux, su dispositivo de tarjeta de red virtual es TUN/TAP. Al crear un nuevo dispositivo de tarjeta de red virtual, el sistema operativo creará un dispositivo de caracteres correspondiente /dev/net/tun y escribirá los datos del dispositivo de caracteres /dev/net /tun se enviará a la interfaz de red virtual; los datos enviados a la interfaz de red virtual también aparecerán en el dispositivo de caracteres. inserte la descripción de la imagen aquí
Como se muestra en la figura anterior, el programa de aplicación puede escribir datos en el dispositivo de caracteres y la tarjeta de red virtual recibirá estos paquetes de datos, al igual que los datos transmitidos desde la red externa, y la tarjeta de red virtual entregará los datos a la pila de protocolos del kernel (en términos generales, estos datos deben ser desempaquetados y desencapsulados por la pila de protocolos, por lo que si los datos no se ajustan a las reglas de protocolo de la pila de protocolos, la pila de protocolos puede descartar los datos); al mismo tiempo , la aplicación también puede pasar el socket del sistema, los datos se escriben en la tarjeta de red virtual a través de la pila de protocolos del núcleo y la tarjeta de red virtual escribirá los datos en el controlador de caracteres correspondiente, tal como se transmite a la red externa.

Con respecto a algunos contenidos de la tarjeta de red virtual, los presentaré brevemente. Para obtener más información, consulte [2] [3].

2.3 Establecimiento de túneles punto a punto

La arquitectura del servicio openvpn se muestra en la siguiente figura.
inserte la descripción de la imagen aquí
Al usarlo, generalmente es necesario instalar el cliente openVPN en el lado de la solicitud e instalar el servidor openVPN en el lado del servicio. La solicitud es encriptada por el encapsulado del cliente y luego se envía al lado del servicio. Después de recibir la solicitud, el programa openVPN en el lado del servicio pasa por pasos como desencapsulación y descifrado, y luego lo entrega al proveedor de servicios de capa superior (o lo reenvía al nodo proveedor de servicios en la intranet).

El proceso de enrutamiento de paquetes específico del túnel punto a punto openvpn se muestra en la siguiente figura.
inserte la descripción de la imagen aquí
La aplicación de la izquierda actúa como cliente y la aplicación de la derecha actúa como servidor. El proceso se explica aquí.
Para la izquierda:

  1. El programa de la izquierda envía datos a la tarjeta de red virtual TUN a través de la pila de protocolos del kernel (probablemente usando un socket). En este proceso, la pila de protocolos del kernel agregará el paquete de datos al puerto de la capa TCP y la dirección IP de la capa IP. Tenga en cuenta que la IP de origen y la IP de destino aquí son las direcciones de la tarjeta de red virtual del cliente y el servidor.
  2. Después de que el dispositivo de la tarjeta de red virtual reciba los datos, los enviará al dispositivo de caracteres /dev/net/tun.
  3. El programa del cliente VPN que escucha leerá los datos del dispositivo /dev/net/tun y los cifrará. Tenga en cuenta que los datos cifrados aquí son el paquete de datos completo, incluida la parte de la dirección.
  4. El cliente VPN envía los datos a la tarjeta de red física Eth0 nuevamente a través de la pila de protocolos del kernel. En este proceso, se realizará el encapsulado del segundo protocolo (incluido el puerto de la capa TCP y la dirección IP de la capa IP), y también se incluye aquí la dirección MAC de la capa de enlace. Tenga en cuenta que las direcciones IP aquí son las direcciones IP de las NIC físicas del host de origen y el host de destino (máquinas que ejecutan el servidor openVPN).
  5. Los datos cifrados se enrutan en la red pública a través del túnel, se reenvían y finalmente se reenvían al host de destino.

Por la derecha:

  1. Después de que la tarjeta de red física del host de destino reciba los datos, eliminará el encabezado del protocolo (incluida la capa de enlace físico, la capa de IP y la capa de transporte) y lo enviará al programa del servidor openVPN de escucha después del análisis de la pila de protocolos del kernel. .
  2. El programa del servidor openVPN descifra la parte de datos y luego la envía al controlador de caracteres correspondiente. En este proceso, el servidor openVPN encontrará el controlador de caracteres correspondiente según la dirección de la tarjeta de red virtual de destino (destino Tun) formada por descifrado.
  3. Después de que el controlador de caracteres reciba los datos, los reenviará a la tarjeta de red virtual correspondiente.
  4. Después de que la tarjeta de red virtual recibe los datos, los reenvía a la pila de protocolos del kernel nuevamente al igual que los datos recibidos del puerto de red externo.
  5. La pila de protocolos del kernel analiza los datos, elimina los encabezados relevantes (información de la dirección de la capa interna) y finalmente envía los datos solicitados a la aplicación real.


¿comprendido? Echa un vistazo a la imagen de abajo y compruébalo.
inserte la descripción de la imagen aquí

3. Otros

3.1 ¿Cuál es la diferencia entre vpn y vlan?

Al principio se confundían estos dos conceptos, VPN se refiere a una red privada virtual, que generalmente se utiliza para conexiones remotas. Vlan se refiere a una red de área local virtual, que se usa principalmente para formar una red de área local conectada lógicamente a partir de hosts físicamente aislados. Generalmente requiere el apoyo de conmutadores o enrutadores. La siguiente figura muestra el diagrama esquemático de vlan.
inserte la descripción de la imagen aquí

3.2 ¿Cuál es la relación entre vpn y proxy web?

Desde la perspectiva de la ruta de transmisión del tráfico subyacente, VPN y proxy web logran el propósito de acceder a servicios remotos a través de un tránsito. Pero, en términos generales, el primero funciona en el enlace de datos o capa de red de la red, y el segundo funciona en la capa de aplicación. Es decir, el primero realiza la transferencia cambiando el mensaje de datos (encapsulación y desencapsulación), y el último lo realiza mediante el reenvío de solicitudes (similar a recibir una solicitud -> analizar -> actuar como un cliente proxy e iniciar una solicitud para el objetivo servicio). La siguiente figura muestra un diagrama esquemático del proxy web.
inserte la descripción de la imagen aquí
Otra diferencia es que, en términos generales, VPN pone más énfasis en el cifrado y, por lo general, los datos transmitidos en el medio están cifrados por el protocolo, mientras que el proxy web presta menos atención al cifrado y tiene una seguridad más débil.


referencia

【1】Una breve historia de las VPN
【2】Entienda todo sobre el dispositivo de tarjeta de red virtual Linux tun/tap
【3】Introducción a Linux Tun/Tap
【4】https://www.junmajinlong.com/virtual/network/data_flow_about_openvpn/ #post -comment
[5] ¿Cuál es la diferencia entre un proxy y una VPN?
[6] ¿Cuál es la diferencia entre una VPN y un servidor proxy en términos de implementación?
【7】Introducción a OpenVPN y arquitectura detallada
【8】Redes privadas virtuales: cómo funcionan y por qué podría necesitar una

Supongo que te gusta

Origin blog.csdn.net/plm199513100/article/details/123914140
Recomendado
Clasificación