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 的请求。
相关推荐
萧雾宇28 分钟前
Android Compose打造仿现实逼真的烟花特效
android·flutter·kotlin
翻滚丷大头鱼1 小时前
android 性能优化—ANR
android·性能优化
翻滚丷大头鱼1 小时前
android 性能优化—内存泄漏,内存溢出OOM
android·性能优化
拜无忧1 小时前
【教程】flutter常用知识点总结-针对小白
android·flutter·android studio
拜无忧2 小时前
【教程】Flutter 高性能项目架构创建指南:从入门到高性能架构
android·flutter·android studio
用户2018792831672 小时前
故事:公司的 "私人储物柜" 系统(ThreadLocalMap)
android·java
醉过才知酒浓2 小时前
flutter 拦截返回按钮的方法(WillPopScope or PopScope)
flutter
CYRUS_STUDIO2 小时前
如何防止 so 文件被轻松逆向?精准控制符号导出 + JNI 动态注册
android·c++·安全
yinmaisoft3 小时前
当低代码遇上AI,有趣,实在有趣
android·人工智能·低代码·开发工具·rxjava
如此风景3 小时前
Compose Modifier 修饰符介绍
android