VPN软件如何劫持数据包进行隧道传输?

我目前的心智模式

  1. 应用程序与操作系统进行交互以产生基于OSI模型堆栈的数据包进程 – 后续的封装层
  2. 在数据包被封装在一个以太网帧之前的某个地方,但假设它已经被赋予一个IP头之后,VPN软件劫持它,并且为VPN通道路由添加另一个封装层(AH头和encryption有效载荷)
  3. (可能是)ESP和AH头以及encryption的有效载荷的新数据包传递给networking接口驱动程序,该networking接口驱动程序给它一个以太网帧并在线路上传输

我不明白的是,VPN软件如何劫持这样的进程间通信pipe道 – 它如何知道哪些应用程序被劫持,以及如何在不修改主机的所有networking通信的情况下有select地执行此操作。

请解释一下VPN进程将如何截获去往networking接口驱动程序的IPC

VPN软件通常通过为您的系统添加一个“虚拟”networking接口来工作。

它使用普通的旧路由通过通道接口来引导stream量,(注意,非常通用),除了它将以常规方式通信的端点主机。

它不“劫持”任何东西。

当您的应用程序需要到达VPN另一端后面的系统时,它将在隧道中发送数据包。

如果您使用客户端连接到VPN,则您的PC正在执行encryption部分(并在接收数据包时进行解密)。 它将在创build时对数据包进行encryption和封装,并将其发送到隧道中的另一个对等端。

那个对端会解密这个数据包。

如果你正在进入一个B2B隧道,那么隧道一侧的对端正在encryption/解密数据包。