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 伺服器給用戶端設定網絡參數的過程,使用了以下的消息:
- VPN 伺服器向用戶端發送一個配置請求 (Config-Request) 消息,包含了伺服器提供的 IP 位址、子網路遮罩、DNS 伺服器等網絡參數。
- 用戶端向伺服器發送一個配置确認 (Config-Ack) 消息,表示接受了伺服器提供的網絡參數。
- 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 伺服器給用戶端設定網絡參數的過程,使用了以下的消息:
- VPN 伺服器向用戶端發送一個模式配置 (Mode Config) 消息,包含了伺服器提供的 IP 位址、子網路遮罩、DNS 伺服器等網絡參數。
- 用戶端向伺服器發送一個模式配置回複 (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 伺服器給用戶端設定網絡參數的過程,使用了以下的消息:
- VPN 伺服器向用戶端發送一個配置負載 (Configuration Payload) 消息,包含了伺服器提供的 IP 位址、子網路遮罩、DNS 伺服器等網絡參數。
- 用戶端向伺服器發送一個配置負載回複 (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 章節的相關内容。