使用wireguard构建全球网络

主要解决的问题:

  1. 国内多个家庭间组网:与亲朋好友共享NAS资源、联机、互联互通,组建大内网。
  2. 移动终端接入:接入不信任Wi-Fi时或使用蜂窝网络时。随时访问家庭资源,安全访问全球互联网。
  3. 随身路由器:快速在酒店、办公场所等环境构建Wi-Fi,安全接入家庭网络;同时使用家庭网络出口访问全球资源,并且为每个设备分配到全球公共IPv6地址(大部分公共Wi-Fi不具备IPv6)。
  4. 互联网出口集中化:根据路由策略,将指定目的地IP走指定互联网出口。

配置前提:

  1. 光猫设备已经改为桥接,路由器设备直接拨号。
  2. 设备刷为openwrt系统

方案介绍

方案图

箭头代表连接方向

设备角色

Core:核心路由设备(一般为家庭网关),需要具备互联网接入(路由设备直接PPPoE拨号,确保有Public IPv6 、Public IPv4 )

ECS服务器:国际互联网出口,根据需求,将部分互联网访问出口落在该设备上。

Edge Router:随身路由器,可放置在酒店、办公室、车载等场景,对网络没有要求,能访问到Core设备的Public IPv4或者Public IPv6即可

网络平面介绍

每个平面都相当于一个隧道,Core上的隧道,都需要Listen特定端口

  1. Carrier平面:国内full-mesh互联,构建自己的骨干网络,建议使用IPv6地址作为Endpoint
  2. Global平面:国内设备都listen一个特定端口,由ECS通过IPv6主动接入。为国内设备添加国际互联网出口。
  3. Ingress:用来给边缘路由器接入
  4. Access:移动终端通过wireguard App直接接入

主要难点:

  1. 路由策略设计,需要在设备上配置多个路由表、路由策略。
  2. 国内PPPoE的特性,重播会导致Public IP变更、IPv6 PD变更,影响wireguard的Allow IP、Endpoint变更以及Access平面、Ingress平面的终端IPv6地址分配,针对这个问题,写了个小服务解决,待完善后会开源。

//TODO:写点具体的操作手册