SIFT / KNOWLEDGE BASE

知识 Wiki 总览 / VPN

隧道与封装

更新于 2026-11-07条目链接

隧道技术把一种网络报文放入另一种可在底层网络传输的报文中。VPN 客户端先依据路由把内层 IP 报文交给虚拟接口,再按 VPN 协议加密或认证并封装,最后由外层 IP 报文经互联网送到隧道对端。对端验证、解封装后,继续处理内层流量。

内层与外层

  • 内层报文:应用实际访问的源地址、目标地址和传输层内容。
  • 外层报文:把 VPN 客户端和服务端作为网络端点,在公共网络上传递。
  • 虚拟接口:操作系统用它表示隧道内的 IP 地址和路由。

封装和认证标签占用额外字节,因此隧道内可传输的最大报文尺寸通常小于底层链路的 MTU。IPsec 的隧道模式与传输模式有不同的封装边界;WireGuard 和 OpenVPN 也使用各自的隧道数据格式。详见MTU 与 MSS。

跨平台观察报文

以下示例仅用于在自己管理的设备上核对隧道外层 UDP 流量。将端口替换为实际配置;抓包可能包含地址和通信元数据,分享前应清理敏感信息。

Windows

pktmon filter add vpn-tunnel -p 51820
pktmon start --capture --comp nics --pkt-size 0 --file-name vpn.etl
pktmon stop
pktmon etl2pcap vpn.etl --out vpn.pcapng

macOS

sudo tcpdump -ni en0 'udp port 51820'

Linux

sudo tcpdump -ni eth0 'udp port 51820'
sudo tcpdump -ni wg0

物理接口上通常可观察外层目标地址和 VPN 传输协议;隧道虚拟接口上可观察解封装后的内层 IP 头。抓到 UDP 包只说明报文经过接口,不单独证明认证、加密或远端访问策略正确。

参考资料

RFC 4301:IPsec 安全架构;WireGuard 官方快速入门;Microsoft Learn:Pktmon 命令格式。