WireGuard通讯原理

一、前言

要看懂此文需要具备以下技术知识:

  • 网络包路由原理
  • NET技术原理
  • 路由表
  • Linux虚拟网络
  • 对称加密和非对称加密

这些技术不需要深入,因为时间不够,其次因为只需要浅尝辄止上面知识就可以很好的学习wg。

二、wg整体网络架构

所有wg客户和wg后端端都预先设置了不同的虚拟IP,所有wg客户端通过UDP+wg协议与wg后端连接。

这样所有wg客户端+wg后端就组成了虚拟网络。wg客户端之间可以互相通讯。wg后端类似路由器的功能,根据数据包的目标地址转发数据包。

wg服务端转发的数据包的目标地址可以是虚拟ip地址,也可以是虚拟网络的外部ip地址:

  • 虚拟IP:数据包被转发到虚拟网络里的wg客户端。
  • 外网IP:数据包转发到外网IP,并回包。

特别说明一下,图里面的TUN虚拟网卡至关重要,它可以全局拦截IP包给wg客户端,也可以转发数据包给物理网卡。

(一) 说明

本图展示了如何通过 WireGuard (WG) 建立一个 跨地域的虚拟局域网(虚拟内网) ,同时通过一台中心服务节点实现所有客户端设备的内网互联 + 访问公网服务(如 Google、YouTube、ChatGPT 等)。

(二) 主要角色说明

1. 虚拟局域网终端节点(左下和左右)

  • 代表:各个员工终端、远程设备、手机等。
  • 组成结构:
    • 应用(浏览器、微信、游戏等)
    • TUN 虚拟网卡(提供虚拟 IP)
    • WG 客户端(10.0.0.X)
    • 物理网卡和路由表(走公网发送 UDP)
  • 功能说明:
    • 每台设备通过 WG 客户端连接到 WG 后端。
    • 每台设备获得一个虚拟 IP(如 10.0.0.2 / 10.0.0.3 / ...)。
    • 不仅能与其他节点互通,还能通过后端 NAT 出口访问外网。

2. WG 后端服务节点(中间蓝色虚线框内)

  • 作用:
    • 接收各客户端发来的加密 UDP 包。
    • 解密并通过自身路由决定去向:
      • 发往其它虚拟客户端设备;
      • 或通过自身的物理出口访问公网服务器。
  • 组成结构:
    • WG 后端程序(10.0.0.1)
    • TUN 虚拟网卡(内网转发)
    • 本地路由表
    • 出口物理网卡(用于 NAT 转发 TCP/UDP)
    • 可与公司内网通信(如上方所示)

3. 公司局域网节点(图上方灰色框)

  • WG 后端服务也可以通过路由表与公司内部资源通信(如 ERP、数据库等)。
  • 内网资源通过 WG 后端转发到虚拟网络中所有客户端。

4. 目标服务器(最右)

  • 包括用户想访问的公网资源:
    • Google / YouTube / ChatGPT / GitHub / 面书(Facebook)等
  • 这些流量将通过 WG 后端的物理网卡 NAT 出口发出,表现为来自一个统一公网 IP 的请求。
相关推荐
一起搞IT吧1 小时前
Camera相机人脸识别系列专题分析之十九:MTK ISP6S平台FDNode传递三方FFD到APP流程解析
android·图像处理·人工智能·数码相机·计算机视觉
wyjcxyyy1 小时前
打靶日记-RCE-labs
android
Bryce李小白9 小时前
Flutter中实现页面跳转功能
flutter
一笑的小酒馆10 小时前
Android12去掉剪贴板复制成功的Toast
android
一笑的小酒馆11 小时前
Android12App启动图标自适应
android
程序员江同学12 小时前
Kotlin 技术月报 | 2025 年 7 月
android·kotlin
某空m13 小时前
【Android】内容提供器
android
Greenland_1214 小时前
Android 编译报错 Null extracted folder for artifact: xxx activity:1.8.0
android
ZhuYuxi33314 小时前
【Kotlin】const 修饰的编译期常量
android·开发语言·kotlin
Bryce李小白14 小时前
Kotlin 实现 MVVM 架构设计总结
android·开发语言·kotlin