前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用 WireGuard 构建跨云 VPN 网络

使用 WireGuard 构建跨云 VPN 网络

原创
作者头像
行者深蓝
发布于 2024-08-01 04:53:21
发布于 2024-08-01 04:53:21
1.2K0
举报

背景

在现代云计算环境中,随着服务和应用的分布化,跨云连接的需求日益增长。本文将介绍如何使用 WireGuard、udp2raw 和 Xray 构建一个基于开源软件的多集群、跨云的VPN网络。

通过利用开源工具,能够构建一个灵活、高效且具有成本效益的解决方案,以满足不同业务需求。本质上实现了一个简单的传输网关(TGW),通过有效地转发和加密流量,确保不同云平台和Kubernetes集群之间的安全通信。

本文将详细介绍这一架构的实施步骤、关键组件以及它们如何协同工作,以便构建一个强大的跨云网络环境。

准备工作

配置两个 VPN 网关

Host

GW IP

VPN subnet

Soft

GW-Host1

10.254.0.1

10.254.0.0/16

wireguard/udp2raw/Xray

GW-Host2

10.255.0.1

10.255.0.0/16

wireguard/udp2raw/Xray

Cluster

Pod subnet

SVC subnet

Soft

k8s-1

10.42.0.0/16

10.42.0.0/16

K3S

k8s-2

10.44.0.0/16

10.45.0.0/16

K3S

示意图如下:

部署思路

关键工具:

  • WireGuard:提供快速、安全的VPN连接
  • udp2raw:允许将UDP流量伪装为TCP流量,以绕过网络限制。
  • Xray:实现透明代理和流量转发,确保数据传输的隐蔽性和可靠性。

每个VPN GW 运行四个服务:

  1. wireguard
  2. xray
  3. xray-tproxy
  4. udp2raw 备用

下面是对每个VPN网关运行的四个服务的简要描述,以及VPN GW1和VPN GW2如何连接的详细说明。

  1. WireGuard是一种现代的VPN协议,提供高效、快速和安全的点对点连接。它采用简单的配置和高强度的加密算法,能够有效地保障数据的机密性和完整性。WireGuard适合各种网络环境,具有较低的延迟和较高的性能。
  2. Xray是一个多协议的代理工具,支持多种协议(如VLESS、VMess等)。它能够处理各种流量,并提供灵活的路由选择。Xray具有良好的性能和可扩展性,适合在复杂网络环境中使用,能够绕过防火墙和抵抗网络干扰。
  3. Xray TProxy(WireGuard over VLESS) Xray TProxy是Xray的一种功能,用于实现透明代理。它能够将流量从一个接口转发到另一个接口,特别适合于使用WireGuard over VLESS的场景。这种配置可以有效隐藏VPN流量,有效抵御ISP对流量的劫持,同时提供灵活的流量处理能力。
  4. udp2raw(备选,WireGuard over TCP) udp2raw是一种用于将UDP流量伪装为TCP流量的工具,旨在绕过防火墙和流量限制。在VPN环境中,udp2raw可以作为备选方案,提供稳定的连接,尤其是在ISP对UDP流量施加限速时,使用udp2raw将WireGuard流量转换为TCP流量,有助于保持连接的可靠性。

VPN GW1 <-> VPN GW2 连接方式

WireGuard over VLESS 连接流程

  • 在GW-Host1上,Xray监听127.0.0.1:51830,处理来自本地的VLESS流量
  • Xray TProxy 实现透明代理,将本机接口UDP:51830 转发到GW-Host2的WireGuard 端口UDP:51820 ,
  • 在GW-Host2上,WireGuard接收来自GW-Host1的WireGuard 协议,通过本机Xray TProxy 服务转发到GW-Host1的WireGuard 端口UDP:51820,请求返回给GW-Host1,确保双向通信

WireGuard over TCP 连接流程

  • GW-Host1上,udp2raw 监听地址为127.0.0.1:51831,将流量封装为TCP请求,将流量发送到GW-Host2 udp2raw 服务的 TCP:2443端口,
  • GW-Host2上,WireGuard接收来自GW-Host1的封装TCP流量后,转发给GW-Host2 udp2raw 服务。
  • GW-Host2,解封TCP流量后,转发给WireGuard服务处理欺请求,再次通过udp2raw将响应数据通过相同的TCP隧道返回GW-Host1,实现双向通信

主要差异

| 特性 | WireGuard over VLESS | WireGuard over TCP |

特性

WireGuard over VLESS

WireGuard over TCP

流量封装

WireGuard流量通过VLESS加密和转发

WireGuard流量通过TCP隧道封装

隐蔽性

提供更高的隐蔽性,适合穿越防火墙

封装成TCP流,可能不如VLESS隐蔽

防火墙穿透能力

通过使用多种传输协议提高防火墙穿透能力

适用于TCP友好的网络环境,较容易穿透防火墙

性能

由于使用UDP,通常具有较低的延迟和更高的性能

由于TCP的重传机制,可能存在较高的延迟

连接可靠性

依赖于UDP的特性,性能高但可靠性较低

TCP提供了数据完整性和顺序保证,连接更可靠

通过主连接(WireGuard over VLESS)和备连接(WireGuard over TCP)的组合,VPN GW1和VPN GW2能够在不同的网络条件下保持可靠的连接。这种配置能够有效应对网络运营商的干扰和限速,确保数据的安全传输。

流量转发

在构建多集群跨云VPN网络时,VPN网关(GW)需要能够转发不同网段的请求。这通常涉及到正确的路由配置、IP转发和防火墙规则,以确保来自不同子网的流量能够正确转发和处理。下面详细介绍如何在VPN GW中实现不同网段请求的转发。

  1. 网络架构概述

假设我们有两个VPN网关,GW-Host1和GW-Host2,它们分别连接到不同的Kubernetes集群,使用WireGuard进行VPN连接。以下是它们的网络配置:

GW-Host1: VPN子网:10.254.0.0/16

GW-Host2: VPN子网:10.255.0.0/16

  1. 配置IP转发
  • 在VPN GW配置IP转发: 在GW-Host1/GW-Host2上,确保IP转发已启用,以便能够转发不同网段的流量。在/etc/sysctl.conf中添加或修改以下行: net.ipv4.ip_forward = 1 应用 sudo sysctl -p
  1. 防火墙规则

为了确保请求能够顺利通过VPN网关,需要配置防火墙规则,以允许不同网段的流量通过。

在GW-Host1/GW-Host2上配置防火墙规则

代码语言:bash
AI代码解释
复制
iptables -I FORWARD -o %i -j ACCEPT
iptables -A FORWARD -s 10.254.0.0/16 -d 10.255.0.0/16 -j ACCEPT
iptables -A FORWARD -s 10.255.0.0/16 -d 10.254.0.0/16 -j ACCEPT
iptables -A FORWARD -i wg0 -j ACCEPT ; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  • 规则1: 允许所有通过指定输出接口的流量。这对于确保VPN网关可以接收并转发流量是必要的。
  • 规则2: 允许来自GW-Host1的流量转发到GW-Host2,确保这两个子网之间的通信。
  • 规则3: 允许来自GW-Host2的流量转发到GW-Host1,确保这两个子网之间的双向通信。
  • 规则4: 将出站流量的源IP地址替换为GW网关的外部IP地址,从而允许内部流量在出站时隐藏其真实IP地址,确保流量能够顺利通过外部网络。
  1. 配置路由表

GW-Host1配置:

使用ip route命令为不同网段添加路由:

ip route add 10.255.0.0/16 dev wg0 scope link

这条路由确保GW-Host1能够将来自集群1的流量(如10.254.0.0/16)转发到GW-Host2。

反之

GW-Host2配置:

ip route add 10.254.0.0/16 dev wg0 scope link

这条路由确保GW-Host1能够将来自集群1的流量(如10.255.0.0/16)转发到GW-Host2。

  1. 流量转发流程 请求转发示例
  • 来自集群1的请求:

集群1中的Pod(IP为10.42.0.5)向集群2中的服务发送请求。

请求发送到GW-Host1(VPN GW1),并通过WireGuard转发到GW-Host2(VPN GW2)。

GW-Host2接收请求并将其转发到集群2中的相应Pod(IP为10.44.0.5)。

  • 来自集群2的请求:

集群2中的Pod(IP为10.44.0.5)向集群1中的服务发送请求。

请求发送到GW-Host2(VPN GW2),并通过WireGuard转发到GW-Host1(VPN GW1)。

GW-Host1接收请求并将其转发到集群1中的相应Pod(IP为10.42.0.5)。

  1. 验证和监控
  • 使用ping命令验证各个集群之间的连通性。
  • 使用tcpdump监控特定端口的流量,以确保请求被正确转发。
  • 检查VPN日志,确认WireGuard和Xray服务正常运行,且流量能够成功转发。

通过以上配置,VPN网关能够有效地转发不同网段的请求,确保多集群环境中的服务能够顺畅通信

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【运维】Wireguard+OpenVPN解决跨地区VPN的连接稳定性问题
UDP在实际使用上可能会被QOS限速,但是在长距离、高延迟的VPN环境中还是可以发挥不错的效果,不容易出现TCP经常断连的情况。
正汰
2024/01/16
4.7K0
【运维】Wireguard+OpenVPN解决跨地区VPN的连接稳定性问题
WireGuard 系列文章(四):WireGuard 快速上手
2.WireGuard 系列文章(二):WireGuard 简介 - 快速、现代、安全的 V** 隧道[2]
东风微鸣
2022/04/22
6.7K0
WireGuard 系列文章(四):WireGuard 快速上手
突破运营商 QoS 封锁,WireGuard 真有“一套”!
❝原文链接🔗:https://icloudnative.io/posts/wireguard-over-tcp-using-phantun/ 或者点击左下角的 阅读原文 直接查看原文👇 👉WireGuard 作为一个更先进、更现代的 VPN 协议,比起传统的 IPSec、OpenVPN 等实现,效率更高,配置更简单,并且已经合并入 Linux 内核,使用起来更加方便,简直就是 VPN 中的战斗机。越来越多的高人利用 WireGuard 实现很多奇奇怪怪的需求。例如国内与国外机器通过 WireGuard
米开朗基杨
2022/11/07
30.6K2
突破运营商 QoS 封锁,WireGuard 真有“一套”!
记录 | 通过WireGuard实现异地组网
由于我管理着几台不同地域,不同网络,网络类型并不相同( NAT端口转发 / 公网独立IP )的云服务器,以及我需要将家中的服务器的服务映射至公网以供其他人进行访问,所以我需要一个异地组网方案解决该问题。
Leo Deng
2024/07/22
1.1K2
WireGuard 系列文章(二):WireGuard 简介 - 快速、现代、安全的 V** 隧道
WireGuard® 是一个非常简单,快速和现代的 V**,它利用了最先进的 密码学[2]。它旨在比 IPsec更快[3],更简单[4],更精简,更有用,同时避免巨大的头痛。它比 OpenV** 的性能要高得多。WireGuard 被设计为一个通用 V**,用于在嵌入式接口和超级计算机上运行,适用于许多不同的情况。它最初是为 Linux 内核发布的,现在是跨平台(Windows,macOS,BSD,iOS,Android)并且可以广泛部署。它目前正在进行大量开发,但它已经被认为是业内最安全,最易于使用和最简单的 V** 解决方案。
东风微鸣
2022/04/22
10.8K0
WireGuard 系列文章(二):WireGuard 简介 - 快速、现代、安全的 V** 隧道
什么?WireGuard 可以让躲在 NAT 后面的客户端之间直连了??
WireGuard 是由 Jason A. Donenfeld 等人创建的下一代开源 VPN 协议,旨在解决许多困扰 IPSec/IKEv2、OpenVPN 或 L2TP 等其他 VPN 协议的问题。2020 年 1 月 29 日,WireGuard 正式合并进入 Linux 5.6 内核主线。
米开朗基杨
2021/02/25
20.2K0
什么?WireGuard 可以让躲在 NAT 后面的客户端之间直连了??
「Linux路由实践」之实现跨多网段通信【网络路由篇】
为了实现,主机A和主机B的跨网段访问,我们需要通过路由把各个网段连接起来。并利用Linux Kernel的内部机制实现转发,以下为具体实现:
用户1456517
2019/03/05
8.5K0
「Linux路由实践」之实现跨多网段通信【网络路由篇】
基于 WireGuard 和 OpenVPN 的混合云基础架构建设
可以找一台能联网的 centos7 测试一下这个端口,如果没有 nc 工具可以yum install nc安装下。:
米开朗基杨
2021/04/23
8.2K1
基于 WireGuard 和 OpenVPN 的混合云基础架构建设
SDN Overlay技术白皮书(下)
5 SDN Overlay组网方案设计 Overlay控制平面架构可以有多种实现方案,例如网络设备之间通过协议分布式交互的方式。而基于VCF控制器的集中式控制的SDN Overlay实现方案,以其易于与计算功能整合的优势,能够更好地使网络与业务目标保持一致,实现Overlay业务全流程的动态部署,在业界逐步成为主流的Overlay部署方案。 5.1 SDN Overlay组网模型 图14 SDNOverlay组网模型 如上图所示,H3C的SDN Overlay组网同时支持网络
SDNLAB
2018/04/02
2.4K0
SDN Overlay技术白皮书(下)
深入理解kubernetes(k8s)网络原理之三-跨主机pod连接
在之前的两篇文章中分别介绍了pod与主机连接并且上外网的原理及service的clusterIP和nodeport的实现原理,对于组织pod的网络这件事来说,还有最后一环需要打通,就是分布在不同集群节点的pod之间如何相互通信,本章我们来解决这最后一环的问题
一生无聊
2021/08/31
3K1
深入理解kubernetes(k8s)网络原理之三-跨主机pod连接
Openwrt 使用 Wireguard 异地组网(远程家庭网所有设备)
最近入手了一款友善 Nano pi (型号 FriendlyElec NanoPi R2S (CpuMark : 20651.944334 Scores)),直接作为家庭内网的主路由使用,各项性能比之前的 新路由3 要好太多了。
宋天伦
2023/10/20
13.8K0
Openwrt 使用 Wireguard 异地组网(远程家庭网所有设备)
OpenWRT搭建WireGuard服务器
By HKL, on Friday 2019-11-29 15:25, tagged: 🏷️Networking 🏷️Operating
hiplon
2023/10/18
4.8K0
OpenWRT搭建WireGuard服务器
14、【实战中提升自己】 防火墙篇之VPN部署–L2TP over IPSEC
说明:在VPN上面,我们希望与分部建立VPN,保证与分部的财务部正常通信,另外还提供L2TP Over ISPEC功能,方便远程接入访问内部服务器等。当然我们也可以做详细的控制,根据需求而定。
ICT系统集成阿祥
2024/12/03
4080
14、【实战中提升自己】 防火墙篇之VPN部署–L2TP over IPSEC
贫苦家庭与野生公有云之间的 WireGuard Mesh 组网策略
熟悉我的小伙伴都知道我是一名与时俱进的 WireGuard 舔狗,我早就把所有的跨云组网都换成了 WireGuard。
米开朗基杨
2021/11/10
4.8K0
大规模SDN云计算数据中心组网的架构设计
作者简介:熊学涛,中国移动通信有限公司研究院,项目经理。主要研究方向为SDN云计算数据中心和SDN广域网。十多年数据中心、广域网工作经验,CCIE。毕业于西安电子科技大学通信工程学院,华南理工大学工程硕士。
SDNLAB
2020/06/04
2.2K0
nftables 与 OpenVPN 的结合实践
鉴于之前写的 VPN 权限管理项目的缺点,以及对比 iptables(ipset)、nftables、ebpf-iptables 后,确定过滤网络数据包的底层工具还是选用 nftables 而不是 iptables+ipset。
米开朗基杨
2021/07/16
3K0
VPN 的技术原理是什么?
来源丨GitHub科技 SSL VPN技术 SSl协议支队通信双方传输的应用数据进行加密,而不是对从一个主机到另一个主机的所有数据进行加密。 IPSec缺陷 由于IPSec是基于网络层的协议,很难穿越NAT和防火墙,特别是在接入一些防护措施较为严格的个人网络和公共计算机时,往往会导致访问受阻。移动用户使用IPSec VPN需要安装专用的客户端软件,为日益增长的用户群发放、安装、配置、维护客户端软件已经使管理员不堪重负。因此,IPSec VPN在Point- to-Site远程移动通信方面并不适用
范蠡
2022/05/05
2.6K0
VPN 的技术原理是什么?
EVPN
在RFC 7348定义的VXLAN泛洪学习模式下,终端主机信息学习和VTEP发现都是基于数据平面的,没有控制协议在VTEP之间分配终端主机可达性信息。为了克服flood的局限性并学习VXLAN,Cisco VXLAN MP-BGP EVPN spine and leaf架构使用多协议边界网关协议以太网虚拟专用网(MP-BGP EVPN)作为VXLAN的控制平面。该技术为VXLAN覆盖网络中的第2层和第3层转发提供了控制平面和数据平面分离以及统一的控制平面
Nujil
2024/08/31
1670
VPN 的技术原理是什么?
SSl协议支队通信双方传输的应用数据进行加密,而不是对从一个主机到另一个主机的所有数据进行加密。
程序员小猿
2022/03/09
1.3K0
VPN 的技术原理是什么?
wireguard-跨云or vpc网络通讯方案
早期服务器集中于腾讯云,开始是传统网络。后面是自定义的私有网络vpc.当然了vpc中还有容器网络,容器的网络方案使用了默认的Global Router,并没有使用VPC-CNI的容器网络与云主机网络在同一个 VPC 内的方案(腾讯云官方文档还有了Cilium-Overlay 的方案,恩还有个测试环境的k8s集群是kubeadm自建的集群网络插件用的cilum).今年45月份有些新业务又跑在了某云上面,集群环境直接用了某云的ACK PRO。网络插件使用了Flannel ,也没有使用某云的Terway。现在的需求就是要把两个网络打通!
对你无可奈何
2022/08/24
3.4K0
推荐阅读
相关推荐
【运维】Wireguard+OpenVPN解决跨地区VPN的连接稳定性问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档