我是 VPN 网络的新手,所以我有一个概念性问题。
我的场景有一个客户端通过规则集连接到 VPN,该规则集将一些数据包隧道传输到远程 VPN 代理,以便在目的地被允许时进行分析和转发。
如果使用基于加密的协议,此隧道将使用附加层包装每个传入数据包,该层将在另一侧使用证书(例如)进行验证。
隧道也由一个虚拟接口表示,假设我们将使用 utun0。
所以我的问题与在客户端和某些远程服务之间建立 tcp/ip 会话的情况有关。因此,对于传出的数据包,我可以假设它们将被 vpn 隧道层包裹,然后由 vpn 本身解开。
但是对于传入的数据包,它们将与 vpn 层一起到达,因此首先需要由 VPN 客户端进行验证,然后内层必须是进程,但这发生在另一个接口上(例如常规的 en0,它包含客户端的IP)。
所以首先,我想知道虚拟接口 utun0 如何获取其数据包 - 也许它使用特定端口?
其次,当 tcp/ip 传入数据包到达 utun0 时,隧道客户端将对其进行解密。它是否移动到从其 vpn 层解开的常规接口 (en0)?
谢谢 !
所以首先,我想知道虚拟接口 utun0 如何获取其数据包 - 也许它使用特定端口?
VPN 客户端(或服务器)“拥有”接口。与真实网络接口由硬件和物理连接支持的方式类似,虚拟网络接口由软件支持。任何进入接口(传出流量)的东西都会被传递到 VPN 客户端进程。任何退出接口(传入流量)的东西都来自 VPN 客户端进程。
具体取决于虚拟接口的确切类型。对于 macOS utun,它是一个指向套接字的文件描述符。
隧道连接(IPSec、WireGuard、OpenVPN 等)是 VPN 客户端建立的常规网络连接。
其次,当 tcp/ip 传入数据包到达 utun0 时,隧道客户端将对其进行解密。它是否移动到从其 vpn 层解开的常规接口 (en0)?
你有它倒退:传入的隧道流量通过常规网络接口(例如en0)到达。建立连接的进程(VPN 客户端)接收并处理它。之后,它被发送到utun0,在那里它显示为传入的未加密流量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句