核心結論
- VPN 工作在 IP 層(第 3 層):通過虛擬網卡攔截 IP 包,封裝後發送到隧道。
- RAW Socket 發送的鏈路層幀(第 2 層)不會被 VPN 捕獲,除非 VPN 驅動下沉到 NDIS 層(罕見)。
PPTP 協議澄清
- PPTP = Point-to-Point Tunneling Protocol。
- 數據封裝:PPP 幂 → GRE (IP 協議號 47) → IP 包。
- 控制通道:TCP 1723 端口建立會話。
- 說「PPTP 基於 TCP」不準確,控制面用 TCP,數據面用 GRE over IP。
- 第 2 層隧道協議還有 L2TP(常配合 IPsec),PPTP 相對老舊、安全性較弱。
RAW Socket 模擬 PPTP?
極其困難:需自行實現 PPP 協商、GRE 封裝、TCP 控制狀態機,且需處理重傳、流控、認證(MS-CHAPv2 等)。建議直接用系統 VPN API 或成熟庫(如 strongSwan、OpenVPN)。
推薦資源
- 《TCP/IP 詳解 卷 1》第 4 章鏈路層、第 11 章隧道技術。
- RFC 2637 (PPTP), RFC 2661 (L2TP), RFC 4301 (IPsec)。