天天看点

VPN 拨号成功后的网络设置过程及消息格式分析

作者:曹CHG

VPN(虚拟专用网络)是一种通过公共网络(如互联网)建立安全的私有网络连接的技术。VPN 可以让用户在不同的地理位置之间,通过加密的隧道传输数据,从而实现远程访问、数据保密、身份验证等功能。VPN 的类型和协议有很多种,不同的 VPN 在建立和加密连接的过程中,使用了不同的算法和消息交互方式。

本文将介绍三种常见的 VPN 类型和协议:L2TP/IPSec VPN、Cisco IPSec VPN 和 IKEv2 VPN,并重点分析它们在拨号验证通过后,由 VPN 服务器给客户端设置网络参数(如 IP 地址、子网掩码、DNS 服务器等)的过程及消息格式。

L2TP/IPSec VPN

L2TP/IPSec VPN 使用了点对点隧道协议 (L2TP) 和互联网安全协议 (IPSec) 来建立和加密 VPN 连接。L2TP 是一种在两个网络节点之间建立隧道的协议,它可以封装各种协议的数据包,如 PPP、IP、IPX 等。IPSec 是一种在 IP 层提供安全服务的协议,它可以对数据包进行加密、认证、完整性保护等。

在验证通过之后,VPN 服务器给客户端设置网络参数的过程,使用了以下的消息:

  1. VPN 服务器向客户端发送一个配置请求 (Config-Request) 消息,包含了服务器提供的 IP 地址、子网掩码、DNS 服务器等网络参数。
  2. 客户端向服务器发送一个配置确认 (Config-Ack) 消息,表示接受了服务器提供的网络参数。
  3. VPN 服务器向客户端发送一个配置确认消息,表示网络设置完成。

这些消息都是一种 L2TP 控制消息,它们的格式如下:

字段 长度(字节) 含义
消息类型 1 表示是配置请求 (Config-Request) 还是配置确认 (Config-Ack)
标识符 1 表示消息的序号
长度 2 表示消息的总长度
配置选项 可变 表示提供或者接受的网络参数,如 IP 地址、子网掩码、DNS 服务器等

配置选项的格式如下:

字段 长度(字节) 含义
类型 1 表示网络参数的类型,如 IP 地址、子网掩码、DNS 服务器等
长度 1 表示配置选项的总长度
数据 可变 表示网络参数的具体值

Cisco IPSec VPN

Cisco IPSec VPN 使用了 Cisco 公司开发的 IPSec 实现来建立和加密 VPN 连接。Cisco IPSec VPN 在 IPSec 的基础上增加了一些特有的功能和扩展,如模式配置(Mode Config)、XAUTH(扩展认证)、DVTI(动态虚拟隧道接口)等。

在验证通过之后,VPN 服务器给客户端设置网络参数的过程,使用了以下的消息:

  1. VPN 服务器向客户端发送一个模式配置 (Mode Config) 消息,包含了服务器提供的 IP 地址、子网掩码、DNS 服务器等网络参数。
  2. 客户端向服务器发送一个模式配置回复 (Mode Config Reply) 消息,表示接受了服务器提供的网络参数。

这些消息都是一种 IPSec 模式配置 (Mode Config) 消息,它们的格式如下:

字段 长度(字节) 含义
下一个有效载荷类型 (Next Payload Type) 1 表示后续有效载荷的类型,通常为无 (None)
保留 (Reserved) 1 必须为零
负载长度 (Payload Length) 2 表示有效载荷的总长度,包括头部和属性字段
标识符 (Identifier) 4 表示消息的序号,用于匹配请求和响应
属性 (Attributes) 可变

表示提供或者接受的网络参数,如 IP 地址、子网掩码、

DNS 服务器等

属性的格式如下:

字段 长度 含义
类型/格式 (Type/Format) 2 表示网络参数的类型和格式,高位表示是否使用基本编码(Basic Encoding),低位表示具体类型
长度 (Length) 变长 表示属性值的长度
值 (Value) 变长 表示网络参数的具体值
  • Attribute Type 字段指示属性字段的类型,可以是以下值之一:
  • INTERNAL_IP4_ADDRESS:分配给客户端的 IPv4 地址。
  • INTERNAL_IP4_NETMASK:分配给客户端的 IPv4 子网掩码。
  • INTERNAL_IP4_DNS:分配给客户端的 IPv4 DNS 服务器地址。
  • INTERNAL_IP4_NBNS:分配给客户端的 IPv4 NBNS(NetBIOS Name Service)服务器地址。
  • INTERNAL_ADDRESS_EXPIRY:分配给客户端的地址过期时间。
  • INTERNAL_IP4_DHCP:分配给客户端的 IPv4 DHCP(Dynamic Host Configuration Protocol)服务器地址。APPLICATION_VERSION:分配给客户端的应用程序版本号。
  • INTERNAL_IP6_ADDRESS:分配给客户端的 IPv6 地址。
  • INTERNAL_IP6_NETMASK:分配给客户端的 IPv6 子网掩码。
  • INTERNAL_IP6_DNS:分配给客户端的 IPv6 DNS 服务器地址。
  • INTERNAL_IP6_NBNS:分配给客户端的 IPv6 NBNS 服务器地址。
  • INTERNAL_IP6_DHCP:分配给客户端的 IPv6 DHCP 服务器地址。
  • INTERNAL_IP4_SUBNET:分配给客户端的 IPv4 子网列表。SUPPORTED_ATTRIBUTES:支持的属性类型列表。
  • INTERNAL_IP6_SUBNET:分配给客户端的 IPv6 子网列表。

IKEv2 VPN

IKEv2 VPN 使用了互联网密钥交换协议第二版 (IKEv2) 来建立和加密 VPN 连接。IKEv2 是一种在两个网络节点之间协商和建立安全关联(SA)的协议,它可以支持多种加密算法和认证方法,以及动态地址分配、死亡检测、多宿主支持等功能。

在验证通过之后,VPN 服务器给客户端设置网络参数的过程,使用了以下的消息:

  1. VPN 服务器向客户端发送一个配置负载 (Configuration Payload) 消息,包含了服务器提供的 IP 地址、子网掩码、DNS 服务器等网络参数。
  2. 客户端向服务器发送一个配置负载回复 (Configuration Payload Reply) 消息,表示接受了服务器提供的网络参数。

这些消息都是一种 IKEv2 配置负载 (Configuration Payload) 消息,它们的格式如下:

字段 长度(字节) 含义
下一个有效载荷类型 (Next Payload Type) 1 表示后续有效载荷的类型,通常为无 (None)
保留 (Reserved) 1 必须为零
负载长度 (Payload Length) 2 表示有效载荷的总长度,包括头部和属性字段
配置类型 (Configuration Type) 1 表示是配置请求 (CFG_REQUEST) 还是配置回复 (CFG_REPLY)
标识符 (Identifier) 1 表示消息的序号,用于匹配请求和响应
配置属性 (Configuration Attributes) 可变 表示提供或者接受的网络参数,如 IP 地址、子网掩码、DNS 服务器等
  • Cfg Type 字段指示 CP 的类型,可以是以下值之一:
  • CFG_REQUEST:请求配置参数。
  • CFG_REPLY:回复配置参数。
  • CFG_SET:设置配置参数。
  • CFG_ACK:确认配置参数。

配置属性的格式如下:

字段 长度 含义
类型/格式 (Type/Format) 2 表示网络参数的类型和格式,高位表示是否使用基本编码(Basic Encoding),低位表示具体类型
长度 (Length) 变长 表示属性值的长度
值 (Value) 变长 表示网络参数的具体值
  • Attribute Type 字段指示配置属性字段的类型,可以是以下值之一:
  • INTERNAL_IP4_ADDRESS:分配给客户端的 IPv4 地址。
  • INTERNAL_IP4_NETMASK:分配给客户端的 IPv4 子网掩码。
  • INTERNAL_IP4_DNS:分配给客户端的 IPv4 DNS 服务器地址。
  • INTERNAL_IP4_NBNS:分配给客户端的 IPv4 NBNS(NetBIOS Name Service)服务器地址。
  • INTERNAL_IP4_DHCP:分配给客户端的 IPv4 DHCP(Dynamic Host Configuration Protocol)服务器地址。
  • INTERNAL_IP4_SUBNET:分配给客户端的 IPv4 子网列表。
  • INTERNAL_IP6_ADDRESS:分配给客户端的 IPv6 地址。
  • INTERNAL_IP6_DNS:分配给客户端的 IPv6 DNS 服务器地址。
  • INTERNAL_IP6_NBNS:分配给客户端的 IPv6 NBNS 服务器地址。
  • INTERNAL_IP6_DHCP:分配给客户端的 IPv6 DHCP 服务器地址。INTERNAL_IP6_SUBNET:分配给客户端的 IPv6 子网列表。
  • Attribute Length 字段指示属性值字段的长度,单位为字节。
  • Attribute Value 字段指示属性值字段的内容,根据不同的属性类型有不同的格式。

总结

本文介绍了三种常见的 VPN 类型和协议:L2TP/IPSec VPN、Cisco IPSec VPN 和 IKEv2 VPN,并重点分析了它们在拨号验证通过后,由 VPN 服务器给客户端设置网络参数(如 IP 地址、子网掩码、DNS 服务器等)的过程及消息格式。如果要了解更多详细细节,请参考 RFC 2661 的第 5 章节、 RFC 2409 的第 5.5 章节、RFC 7296 的第 3.15 章节的相关内容。

继续阅读