Comment le trafic réseau vers l'avant du VPN? (Couche 3)

8

Je recherche des informations sur la façon dont le VPN (Virtual Private Network) transfère le trafic réseau via son VPS (Virtual Private Server).

Prenons un exemple où vous êtes connecté à un VPN. Vous faites une demande à un site Web, qui descend ensuite la pile réseau vers la couche 3.

Nous avons un paquet IP - il a ses en-têtes, y compris son adresse de destination et une charge utile.

Si vous changez l'adresse de destination du paquet IP en adresse IP du VPS, comment le serveur transfère-t-il la demande à l'adresse de destination d'origine?

La seule chose à laquelle je peux penser est qu'au niveau de la couche 3 (la couche IP), l'adresse de destination de l'en-tête est remplacée par l'adresse IP du VPS, puis l'adresse de destination d'origine est ajoutée à la charge utile du paquet?

Cela ne signifie-t-il pas que la longueur du paquet et l'en-tête de somme de contrôle du paquet devraient alors être recalculés et le paquet IP à nouveau modifié?

Et puis le VPS fait le mappage inverse du paquet à assembler et à faire la demande d'origine sur le serveur.

Cela semble être associé à un temps de latence élevé?

Peut-être que je manque un aspect technique de la façon dont cela fonctionne, quelqu'un d'autre peut-il l'expliquer?

cg14
la source

Réponses:

7

Prenons par exemple le GRE-Header (GRE est un protocole utilisé pour réaliser des VPN - ce n'est pas souvent utilisé car il n'est pas sécurisé en aucune façon, mais le concept avec encapsulation est presque le même dans chaque connexion VPN (donc aussi avec IPsec par exemple) ):

entrez la description de l'image ici

Comme vous pouvez le voir, le paquet d'origine est encapsulé dans un autre paquet IP.

Supposons qu'il existe deux réseaux / routeurs (A et B, un routeur peut être un VPS) connectés l'un à l'autre via un VPN (site à site).

Si un hôte du réseau A souhaite accéder à un serveur FTP sur le réseau B, l'hôte du réseau A enverra un paquet, où l'adresse de destination est l'adresse IP du serveur FTP et l'adresse source est la sienne.

Ensuite, le paquet d'origine arrive à la passerelle VPN (probablement son routeur), qui encapsule ce paquet d'origine dans, par exemple, un paquet IPv4 où l'adresse de destination est la passerelle VPN (réseau B) et l'adresse source est la sienne. De cette façon, le paquet peut voyager sur Internet vers l'autre passerelle VPN (réseau B). Ici, le type de protocole / en-tête ou de paquet d'origine n'a pas d'importance, car il sera encapsulé avec un en-tête IPv4 pour voyager sur Internet et les autres routeurs ne se soucieront pas du protocole / en-tête d'origine car ils ne voient que le "nouveau" En-tête IPv4.

Une nouvelle somme de contrôle pour le "nouveau" paquet doit être calculée qui est ajoutée, sinon elle ne pourrait pas voyager sur Internet (comme par exemple PPP est parfois utilisé entre des points sur Internet, qui calcule une somme de contrôle). Il doit donc y avoir deux sommes de contrôle dans le paquet entier.

Avec IPsec (qui est presque toujours utilisé pour les connexions VPN), le paquet d'origine est crypté (principalement via AES) et un en-tête en texte brut (le "nouveau" en-tête pour voyager sur Internet) est ajouté. Il doit être en texte clair pour pouvoir être routé correctement. Pour cela, une nouvelle somme de contrôle doit également être calculée (car la somme de contrôle d'origine est cryptée).

Lorsqu'il a atteint l'autre passerelle VPN (réseau B), l'en-tête VPN est démonté et le paquet d'origine est envoyé dans le réseau (au serveur FTP).

regarde moi
la source
Vous dites donc que le routeur est responsable de l'encapsulation du paquet, et non de l'appareil?
cg14
1
@ cg14 bonne question! Il existe deux types de VPN, à savoir les VPN de site à site (passerelle VPN à passerelle VPN (principalement routeur à routeur)) et les VPN de bout en bout (le terminal se connecte via un VPN à une passerelle VPN). Avec Site à site, le routeur est responsable de l'encapsulation du paquet. Avec la fin au site, l'appareil lui-même crée le "paquet d'origine" qui est encapsulé par le client VPN installé sur celui-ci. Après l'encapsulation, l'appareil envoie le paquet.
watchme
C'est intéressant. Pour un VPN de bout en bout, à quelle couche le paquet d'origine est-il encapsulé? Et en théorie, si je voulais dire, transmettre un identifiant au-delà de ip, comme un identifiant d'appareil du client VPN, y aurait-il un moyen d'ajouter ces informations à la charge utile de telle sorte que la charge utile puisse être | En-tête IP | En-tête GRE | info injectée + paquet d'origine |. Et, selon l'endroit où cette injection de données personnalisées dans le paquet encapsulé a lieu, déterminerait si vous auriez besoin de recalculer la somme de contrôle et la longueur du paquet gre que je suppose.
cg14
Je ne sais pas exactement ce que tu veux dire malheureusement. Mais je vais expliquer un peu IPsec pour répondre à votre question "à quelle couche". Lorsqu'un client envoie le paquet d'origine (disons TCP, IP, Ethernet), il est entièrement chiffré. Il s'agit de la nouvelle "charge utile". Alors, pouvez-vous envoyer une charge utile normale sur Internet? Probablement pas. Vous aurez besoin de quelques informations. Ces informations sont ensuite ajoutées par le client VPN - donc les informations des couches 4,3 et 2!
watchme
@ cg14 Tout est clair pour vous? :) ... (Oh je viens de réaliser que je ne vous ai pas marqué dans ma réponse à votre question "à quelle couche", désolé)
watchme
6

Donc, la réponse courte à votre question est l'encapsulation. Cela signifie qu'il y a un autre ensemble d'en-têtes de paquets autour du paquet que vous envoyez à un site Web qui est retiré par le point de terminaison VPN.

Pense-y de cette façon:

-----------------------------------------------
| src_ip=2.2.2.2, dest_ip=3.3.3.3             |
|---------------------------------------------|
|| src_ip=10.10.10.10, dest_ip=5.5.5.5       ||
|| Data goes here. This could be a HTTP GET  ||
|| or pretty much anything.                  ||
|---------------------------------------------|
-----------------------------------------------

Votre client VPN exécuté sur votre machine locale vous donnera une nouvelle adresse IP (10.10.10.10) et changera votre table de routage de telle sorte que la route par défaut se dirige vers le tunnel créé. Il enverra ensuite le trafic au serveur VPN ou dans votre exemple un VPS (3.3.3.3). Souvent, votre paquet aura un NAT qui lui sera appliqué lorsqu'il sera désencapsulé, donc sur votre serveur de destination (5.5.5.5), il semblera que le trafic provient de l'IP de destination du trafic encapsulé (3.3.3.3). le trafic vous revient en allant d'abord sur le serveur VPN.

Passons à votre troisième question. Puisque vous mettez un paquet supplémentaire essentiellement à l'extérieur, la longueur et la somme de contrôle sont calculées sur le paquet résultant. Alors oui, il y a deux longueurs et deux sommes de contrôle. Quant à la longueur maximale qui est soit faite par le VPS disant utiliser ce MTU ou via la découverte de MTU comme d'habitude.

Quant à la latence. Vous ne pouvez pas briser la physique. Vous expliquerez vos frais généraux pour accéder au VPS et exécuter sa pile réseau. Bien qu'il puisse sembler qu'il y aurait une latence élevée, ce n'est parfois pas le cas. Si votre VPS est topologiquement conforme à l'endroit où le paquet est déjà dirigé, il peut y avoir une surcharge minimale ajoutée. Par exemple, si vous êtes à Seattle et que votre VPS est à New York et que le site Web auquel vous essayez de parler est à Londres. Mais si vous allez de Seattle à New York pour revenir à un site Web à Seattle, il y a une latence supplémentaire du voyage à travers les États-Unis.

Nick Pappin
la source
3

Un paquet est créé par la couche transport et transmis à la couche réseau. L'hôte regarde dans sa table de routage et l'envoie à l'interface virtuelle créée par le logiciel VPN.

Le logiciel VPN prend le paquet de l'interface virtuelle. Il peut le chiffrer ou ajouter ses propres en-têtes, puis le retransmet à la pile réseau en tant que charge utile. Selon l'implémentation VPN particulière, il peut transmettre cette charge utile à la couche transport ou il peut contourner la couche transport et aller directement à la couche réseau.

Une autre couche d'en-têtes de couche réseau est ensuite ajoutée au ciblage de paquets vers le serveur VPN. Le paquet est ensuite recherché à nouveau dans la table de routage et envoyé sur Internet (si le VPN est une "couverture complète", le logiciel VPN doit prendre soin de configurer la table de routage de manière à ce que le trafic VPN sorte du véritable interface Internet plutôt que de revenir au logiciel VPN).

Lorsque le paquet encapsulé arrive sur le serveur VPN, il est renvoyé au logiciel VPN. Les en-têtes "externes" sont supprimés et le paquet est retransmis à la pile réseau via une interface virtuelle.

Après cela, c'est à la pile du réseau sur le serveur VPN que faire avec. Dans le cas d'un VPN utilisé pour l'accès à Internet, la pile réseau sur le serveur VPN sera probablement configurée pour agir comme un routeur NAT, donc elle modifie la source du paquet et le renvoie sur Internet.

Lorsque la réponse revient à peu près le même processus se produit. Le paquet arrive, le processus NAT est inversé, il est retransmis au logiciel VPN via l'interface virtuelle, il est encapsulé et renvoyé au logiciel VPN sur le client qui le désencapsule et le retransmet à la pile réseau afin qu'il peut être livré à l'application cliente.

Peter Green
la source
ok, c'est probablement une meilleure explication que la mienne!
watchme