天天看點

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 章節的相關内容。

繼續閱讀