天天看點

VPN 原理以及實作

前言

最近在工作中遇到 VPN 的相關問題,之前一直對 VPN 的原理存在一些疑惑,借此機會學習一下 VPN 的原理以及進行實作驗證。

由于 VPN 在不同系統下的實作方式不同,為了便于學習和了解,這裡我們選擇 ​

​Linux​

​ 環境,我本地測試環境使用的是 ​

​Ubuntu 18.04 x64​

​。

本文從 TUN/TAP 出發,逐漸了解 VPN 中的技術細節;并結合 ​​simpletun​​ 源碼,進行 VPN 的原理驗證。

VPN是什麼

VPN 全稱為虛拟私人網絡(Virtual Private Network),常用于連接配接中、大型企業或團體間私人網絡的通訊方法,利用隧道協定(Tunneling Protocol)來達到發送端認證、消息保密與準确性等功能。

比如多地辦公的公司,可以使用 VPN 将不同地區連接配接在同一内網下;或者在家辦公的時候也可以通過 VPN 接入公司内網中。

VPN 以 CS 架構運作,工作流程如下:

VPN 原理以及實作

1.VPN工作流程

在外網的使用者可以使用 ​

​vpn client​

​ 連接配接組織搭建的 ​

​vpn server​

​ 以建立通信隧道,随後便建立了虛拟的私人網絡,處于外網的 ​

​worker​

​ 和内網中的 ​

​server​

​ 可以互相通信。

那麼我們可以簡單了解 VPN,由 ​

​VPN client​

​​ 捕獲使用者發出的封包,封裝封包後通過實體網絡通信鍊路将封包發給 ​

​VPN server​

​​,​

​VPN server​

​ 接收到封包後進行解包,再将其轉發給實際的目标,反之同理; VPN 在邏輯層面建構了虛拟網絡。

https://paper.seebug.org/1648/
https://baijiahao.baidu.com/s?id=1637664009162027887&wfr=spider&for=pc      

繼續閱讀