具有 VPN 隧道的客户端中的 tcp/ip 数据包流是什么

具有 VPN 隧道的客户端中的 tcp/ip 数据包流是什么

我是 VPN 网络方面的新手,所以我有一个概念性问题。

我的场景是,有一个客户端使用规则集连接到 VPN,当目的地被允许时,该规则集将一些数据包隧道传输到远程 VPN 代理进行分析和转发。

如果使用基于加密的协议,该隧道将用附加层包装每个传入数据包,该附加层将在另一端使用证书进行验证(例如)。

隧道也由虚拟接口表示,比如我们将使用 utun0。

所以我的问题与客户端和某些远程服务之间建立 tcp/ip 会话的情况有关。因此,对于传出的数据包,我可以假设它们将被 vpn 隧道层包装,然后由 vpn 本身解开。

但是对于传入的数据包,它们将随 vpn 层到达,因此首先需要由 VPN 客户端进行验证,然后必须进行内层处理,但这发生在另一个接口上(例如保存客户端 ip 的常规 en0)。

所以首先,我想知道虚拟接口 utun0 如何获取其数据包 - 也许它使用特定端口?

其次,当 tcp/ip 传入数据包到达 utun0 并被隧道客户端解密时,它是否会从其 vpn 层解包并移动到常规接口 (en0)?

谢谢 !

答案1

所以首先,我想知道虚拟接口 utun0 如何获取其数据包 - 也许它使用特定端口?

VPN 客户端(或服务器)“拥有”接口。与实际网络接口由硬件和物理连接支持的方式类似,虚拟网络接口由软件支持。进入接口的所有内容(传出流量)都会传递到 VPN 客户端进程。离开接口的所有内容(传入流量)都来自 VPN 客户端进程。

具体情况取决于虚拟接口的具体类型。使用 macOS乌通,它是一个指向套接字的文件描述符。

隧道连接(IPSec、WireGuard、OpenVPN 等)是 VPN 客户端建立的常规网络连接。

其次,当 tcp/ip 传入数据包到达 utun0 并被隧道客户端解密时,它是否会从其 vpn 层解包并移动到常规接口 (en0)?

你搞反了:传入的隧道流量通过常规网络接口到达(例如en0)。建立连接的进程(VPN 客户端)接收并处理该数据包。之后,该数据包被发送到utun0它表现为传入的未加密流量。

相关内容