Captain's Geek-Island Captain's Geek-Island
首页
生活如斯乎
架构师的路
  • 分类
  • 标签
  • 归档
沉洋官网 (opens new window)

SleepyOcean

走,找新大陆去
首页
生活如斯乎
架构师的路
  • 分类
  • 标签
  • 归档
沉洋官网 (opens new window)
  • 计算机基础

  • 并发专题

  • 性能调优专题

  • 工具专题

  • 源码框架专题

  • 设计模式

  • 分布式专题

  • 实战专题

  • 技术杂文

    • FFmpeg使用指南
    • TinyMediaManager使用指南
    • Android刷机指南
    • WireGuard
      • 工作原理
      • 1. WireGuard 术语
        • Peer/Node/Device
        • 中继服务器(Bounce Server)
        • 子网(Subnet)
        • CIDR 表示法
        • NAT
        • 公开端点(Public Endpoint)
        • 私钥(Private key)
        • 公钥(Public key)
        • DNS
      • 2. WireGuard 工作原理
        • 中继服务器工作原理
        • Wireguard 如何路由流量
        • WireGuard 报文格式
        • WireGuard 的性能
        • WireGuard 安全模型
        • WireGuard 密钥管理
      • 附录
    • 打造私人影院指南 - PLEX篇
  • 云原生专题

  • 大数据分析专题

  • 前端专题

  • 运维专题

  • 经验专题

  • 面试专题

  • 软实力专题

  • 架构师的路
  • 技术杂文
SleepyOcean
2021-01-31
工作原理
1. WireGuard 术语
Peer/Node/Device
中继服务器(Bounce Server)
子网(Subnet)
CIDR 表示法
NAT
公开端点(Public Endpoint)
私钥(Private key)
公钥(Public key)
DNS
2. WireGuard 工作原理
中继服务器工作原理
Wireguard 如何路由流量
WireGuard 报文格式
WireGuard 的性能
WireGuard 安全模型
WireGuard 密钥管理
附录

WireGuard

WireGuard 是一个易于配置、快速且安全的开源 VPN,它利用了最新的加密技术。目的是提供一种更快、更简单、更精简的通用 VPN,它可以轻松地在树莓派这类低端设备到高端服务器上部署。

Linux作者Linus Torvalds曾公开表示:我能否再次声明对它的爱,并希望它能很快合并?也许代码不是完美的,但我不在乎,与 OpenVPN 和 IPSec 的恐怖相比,这是一件艺术品。

WireGuard 最初是为 Linux 开发的,但现在可用于 Windows、macOS、BSD、iOS 和 Android。它仍在活跃开发中。除了可以跨平台之外,WireGuard 的最大优点之一就是易于部署。配置和部署 WireGuard 就像配置和使用 SSH 一样容易。

其实在WireGuard官方网站(https://www.wireguard.com/ (opens new window))有详细的安装教程,鉴于部分用户无法访问,因此波波特意转载如下。

一、配置PPA

如果你的系统是Ubuntu 14.04,那么在开始安装WireGuard之前请先安装PPA。

# 以下步骤仅限 Ubuntu 14.04 系统执行
$ apt update
$ apt install software-properties-common -y
1
2
3

安装完成后,我们还需要通过 PPA 工具添加 WireGuard 源:

$ add-apt-repository ppa:wireguard/wireguard # 执行后提示如下示例内容(仅供参考):

root@doubi:~# add-apt-repository ppa:wireguard/wireguard WireGuard is a novel VPN that runs inside the Linux Kernel. This is the Ubuntu packaging for WireGuard. More info may be found at its website, listed below.

More info: https://www.wireguard.com/ Packages: wireguard wireguard-tools wireguard-dkms

Install with: $ apt install wireguard

For help, please contact More info: https://launchpad.net/~wireguard/+archive/ubuntu/wireguard Press [ENTER] to continue or ctrl-c to cancel adding it # 这里会提示你是否继续,点击 回车键 继续,点击 Ctrl+C 键退出。 # 然后输出大概如下内容。

gpg: keyring '/tmp/tmp8bgitjjx/secring.gpg' created gpg: keyring '/tmp/tmp8bgitjjx/pubring.gpg' created gpg: requesting key 504A1A25 from hkp server keyserver.ubuntu.com gpg: /tmp/tmp8bgitjjx/trustdb.gpg: trustdb created gpg: key 504A1A25: public key "Launchpad PPA for wireguard-ppa" imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1) OK

# 以上为输出示例内容(仅供参考)

二、安装WireGuard

  1. # 更新一下软件包源
  2. apt update
  3. # 开始安装 WireGuard ,resolvconf 是用来指定DNS的,旧一些的系统可能没装。
  4. apt install wireguard resolvconf -y

三、验证是否安装成功

当你通过上面的步骤安装完后,请用下面的代码验证一下是否安装成功。

  1. lsmod | grep wireguard
  2. # 执行该代码后,提示大概如下示例内容(仅供参考),第一行是必须要有的,至于下面的两行不同系统似乎还不一样,但是不影响使用。
  3. root@doubi:~# modprobe wireguard && lsmod | grep wireguard
  4. wireguard 212992 0
  5. ip6_udp_tunnel 16384 1 wireguard
  6. udp_tunnel 16384 1 wireguard

四、配置步骤

①生成密钥对。当你确定安装成功后,就要开始配置服务端和客户端的配置文件了。放心,这很简单。

  1. # 首先进入配置文件目录,如果该目录不存在请先手动创建:mkdir /etc/wireguard
  2. cd /etc/wireguard
  3. # 然后开始生成 密匙对(公匙+私匙)。
  4. wg genkey | tee sprivatekey | wg pubkey > spublickey
  5. wg genkey | tee cprivatekey | wg pubkey > cpublickey

②查看主网卡名称。先查看一下你的主网卡名是什么:

  1. ip addr
  2. # 执行命令后,示例如下(仅供参考),lo 是本地环回 忽略,eth0 就是主网卡名了。
  3. # 写着你的服务器外网IP的(下面 X.X.X.X 处),就是你的主网卡,NAT的服务器则是显示内网IP。
  4. # 如果你拿不准哪个网卡是主网卡,请留言询问。
  5. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
  6. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  7. inet 127.0.0.1/8 scope host lo
  8. ​ valid_lft forever preferred_lft forever
  9. inet6 ::1/128 scope host
  10. ​ valid_lft forever preferred_lft forever
  11. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  12. link/ether 00:16:3c:cf:89:73 brd ff:ff:ff:ff:ff:ff
  13. inet X.X.X.X/25 brd 255.255.255.255 scope global eth0
  14. ​ valid_lft forever preferred_lft forever

③生成服务端配置文件。

  1. # 井号开头的是注释说明,用该命令执行后会自动过滤注释文字。
  2. # 下面加粗的这一大段都是一个代码!请把下面几行全部复制,然后粘贴到 SSH软件中执行,不要一行一行执行!
  3. echo "[Interface]
  4. # 服务器的私匙,对应客户端配置中的公匙(自动读取上面刚刚生成的密匙内容)
  5. PrivateKey = $(cat sprivatekey)
  6. # 本机的内网IP地址,一般默认即可,除非和你服务器或客户端设备本地网段冲突
  7. Address = 10.0.0.1/24
  8. # 运行 WireGuard 时要执行的 iptables 防火墙规则,用于打开NAT转发之类的。
  9. # 如果你的服务器主网卡名称不是 eth0 ,那么请修改下面防火墙规则中最后的 eth0 为你的主网卡名称。
  10. PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  11. # 停止 WireGuard 时要执行的 iptables 防火墙规则,用于关闭NAT转发之类的。
  12. # 如果你的服务器主网卡名称不是 eth0 ,那么请修改下面防火墙规则中最后的 eth0 为你的主网卡名称。
  13. PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
  14. # 服务端监听端口,可以自行修改
  15. ListenPort = 443
  16. # 服务端请求域名解析 DNS
  17. DNS = 8.8.8.8
  18. # 保持默认
  19. MTU = 1420
  20. # [Peer] 代表客户端配置,每增加一段 [Peer] 就是增加一个客户端账号,具体我稍后会写多用户教程。
  21. [Peer]
  22. # 该客户端账号的公匙,对应客户端配置中的私匙(自动读取上面刚刚生成的密匙内容)
  23. PublicKey = $(cat cpublickey)
  24. # 该客户端账号的内网IP地址
  25. AllowedIPs = 10.0.0.2/32"|sed '/^#/d;/^\s*$/d' > wg0.conf
  26. # 上面加粗的这一大段都是一个代码!请把下面几行全部复制,然后粘贴到 SSH软件中执行,不要一行一行执行!

④生成客户端配置文件。

  1. # 井号开头的是注释说明,用该命令执行后会自动过滤注释文字。
  2. # 下面加粗的这一大段都是一个代码!请把下面几行全部复制,然后粘贴到 SSH软件中执行,不要一行一行执行!
  3. echo "[Interface]
  4. # 客户端的私匙,对应服务器配置中的客户端公匙(自动读取上面刚刚生成的密匙内容)
  5. PrivateKey = $(cat cprivatekey)
  6. # 客户端的内网IP地址
  7. Address = 10.0.0.2/24
  8. # 解析域名用的DNS
  9. DNS = 8.8.8.8
  10. # 保持默认
  11. MTU = 1420
  12. [Peer]
  13. # 服务器的公匙,对应服务器的私匙(自动读取上面刚刚生成的密匙内容)
  14. PublicKey = $(cat spublickey)
  15. # 服务器地址和端口,下面的 X.X.X.X 记得更换为你的服务器公网IP,端口请填写服务端配置时的监听端口
  16. Endpoint = X.X.X.X:443
  17. # 因为是客户端,所以这个设置为全部IP段即可
  18. AllowedIPs = 0.0.0.0/0, ::0/0
  19. # 保持连接,如果客户端或服务端是 NAT 网络(比如国内大多数家庭宽带没有公网IP,都是NAT),那么就需要添加这个参数定时链接服务端(单位:秒),如果你的服务器和你本地都不是 NAT 网络,那么建议不使用该参数(设置为0,或客户端配置文件中删除这行)
  20. PersistentKeepalive = 25"|sed '/^#/d;/^\s*$/d' > client.conf
  21. # 上面加粗的这一大段都是一个代码!请把下面几行全部复制,然后粘贴到 SSH软件中执行,不要一行一行执行!

接下来你就可以将这个客户端配置文件 [/etc/wireguard/client.conf] 通过SFTP、HTTP等方式下载到本地了。

不过我更推荐,SSH中打开显示配置文件内容并复制出来后,本地设备新建一个文本文件 [xxx.conf] (名称随意,后缀名需要是 .conf) 并写入其中,提供给 WireGuard 客户端读取使用。

  1. cat /etc/wireguard/client.conf

五、其他操作

  1. # 赋予配置文件夹权限
  2. chmod 777 -R /etc/wireguard
  3. # 打开防火墙转发功能
  4. echo 1 > /proc/sys/net/ipv4/ip_forwardecho "net.ipv4.ip_forward = 1" >> /etc/sysctl.confsysctl -p

六、启动与开机启动

①启动WireGuard

  1. wg-quick up wg0
  2. # 执行命令后,输出示例如下(仅供参考)
  3. [#] ip link add wg0 type wireguard
  4. [#] wg setconf wg0 /dev/fd/63
  5. [#] ip address add 10.0.0.1/24 dev wg0
  6. [#] ip link set mtu 1420 dev wg0
  7. [#] ip link set wg0 up
  8. [#] resolvconf -a tun.wg0 -m 0 -x
  9. [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  10. # 如果此处没有报错:RTNETLINK answers: Operation not supported,且输入内容差不多,那么说明启动成功了!

②设置开机启动

  1. # 设置开机启动
  2. systemctl enable wg-quick@wg0
  3. # 取消开机启动
  4. systemctl disable wg-quick@wg0

③其他命令补充

  1. # 停止WireGuard
  2. wg-quick down wg0
  3. # 查询WireGuard状态
  4. wg

VPS搭建WireGuard服务器图文教程

以上内容就是关于VPS搭建WireGuard服务器图文教程 (opens new window),希望可以帮助新手朋友可以快速入门服务器的安装配置。更多详细内容可参考官方白皮书>>点击进入 (opens new window)

温馨提示:本篇笔记转载的目的在于服务器通信的学习研究,不得用于非法目的。违者后果自负。

# 工作原理

WireGuard 是由 Jason Donenfeld 等人用 C 语言编写的一个开源 VPN 协议,被视为下一代 VPN 协议,旨在解决许多困扰 IPSec/IKEv2、OpenVPN 或 L2TP 等其他 VPN 协议的问题。它与 Tinc 和 MeshBird 等现代 VPN 产品有一些相似之处,即加密技术先进、配置简单。从 2020 年 1 月开始,它已经并入了 Linux 内核的 5.6 版本,这意味着大多数 Linux 发行版的用户将拥有一个开箱即用的 WireGuard。

无论你是想破墙而出,还是想在服务器之间组网,WireGuard 都不会让你失望,它就是组网的『乐高积木』,就像 ZFS 是构建文件系统的『乐高积木』一样。

WireGuard 与其他 VPN 协议的性能测试对比:

img

可以看到 WireGuard 直接碾压其他 VPN 协议。再来说说 OpenVPN,大约有 10 万行代码,而 WireGuard 只有大概 4000 行代码,代码库相当精简,简直就是件艺术品啊。你再看看 OpenVPN 的性能,算了不说了。

WireGuard 优点:

  • 配置精简,可直接使用默认值
  • 只需最少的密钥管理工作,每个主机只需要 1 个公钥和 1 个私钥。
  • 就像普通的以太网接口一样,以 Linux 内核模块的形式运行,资源占用小。
  • 能够将部分流量或所有流量通过 VPN 传送到局域网内的任意主机。
  • 能够在网络故障恢复之后自动重连,戳到了其他 VPN 的痛处。
  • 比目前主流的 VPN 协议,连接速度要更快,延迟更低(见上图)。
  • 使用了更先进的加密技术,具有前向加密和抗降级攻击的能力。
  • 支持任何类型的二层网络通信,例如 ARP、DHCP 和 ICMP,而不仅仅是 TCP/HTTP。
  • 可以运行在主机中为容器之间提供通信,也可以运行在容器中为主机之间提供通信。

WireGuard 不能做的事:

  • 类似 gossip 协议实现网络自愈。
  • 通过信令服务器突破双重 NAT。
  • 通过中央服务器自动分配和撤销密钥。
  • 发送原始的二层以太网帧。

当然,你可以使用 WireGuard 作为底层协议来实现自己想要的功能,从而弥补上述这些缺憾。

本系列 WireGuard 教程分为两个部分,第一部分偏理论,第二部分偏实践。本文是第一部分,下面开始正文教程。

# 1. WireGuard 术语

# Peer/Node/Device

连接到 VPN 并为自己注册一个 VPN 子网地址(如 192.0.2.3)的主机。还可以通过使用逗号分隔的 CIDR 指定子网范围,为其自身地址以外的 IP 地址选择路由。

# 中继服务器(Bounce Server)

一个公网可达的对等节点,可以将流量中继到 NAT 后面的其他对等节点。Bounce Server 并不是特殊的节点,它和其他对等节点一样,唯一的区别是它有公网 IP,并且开启了内核级别的 IP 转发,可以将 VPN 的流量转发到其他客户端。

# 子网(Subnet)

一组私有 IP,例如 192.0.2.1-255 或 192.168.1.1/24,一般在 NAT 后面,例如办公室局域网或家庭网络。

# CIDR 表示法

这是一种使用掩码表示子网大小的方式,这个不用解释了。

# NAT

子网的私有 IP 地址由路由器提供,通过公网无法直接访问私有子网设备,需要通过 NAT 做网络地址转换。路由器会跟踪发出的连接,并将响应转发到正确的内部 IP。

# 公开端点(Public Endpoint)

节点的公网 IP 地址:端口,例如 123.124.125.126:1234,或者直接使用域名 some.domain.tld:1234。如果对等节点不在同一子网中,那么节点的公开端点必须使用公网 IP 地址。

# 私钥(Private key)

单个节点的 WireGuard 私钥,生成方法是:wg genkey > example.key。

# 公钥(Public key)

单个节点的 WireGuard 公钥,生成方式为:wg pubkey < example.key > example.key.pub。

# DNS

域名服务器,用于将域名解析为 VPN 客户端的 IP,不让 DNS请求泄漏到 VPN 之外。

# 2. WireGuard 工作原理

# 中继服务器工作原理

中继服务器(Bounce Server)和普通的对等节点一样,它能够在 NAT 后面的 VPN 客户端之间充当中继服务器,可以将收到的任何 VPN 子网流量转发到正确的对等节点。事实上 WireGuard 并不关心流量是如何转发的,这个由系统内核和 iptables 规则处理。

如果所有的对等节点都是公网可达的,则不需要考虑中继服务器,只有当有对等节点位于 NAT 后面时才需要考虑。

在 WireGuard 里,客户端和服务端基本是平等的,差别只是谁主动连接谁而已。双方都会监听一个 UDP 端口,谁主动连接,谁就是客户端。主动连接的客户端需要指定对端的公网地址和端口,被动连接的服务端不需要指定其他对等节点的地址和端口。如果客户端和服务端都位于 NAT 后面,需要加一个中继服务器,客户端和服务端都指定中继服务器作为对等节点,它们的通信流量会先进入中继服务器,然后再转发到对端。

WireGuard 是支持漫游的,也就是说,双方不管谁的地址变动了,WireGuard 在看到对方从新地址说话的时候,就会记住它的新地址(跟 mosh 一样,不过是双向的)。所以双方要是一直保持在线,并且通信足够频繁的话(比如配置 persistent-keepalive),两边的 IP 都不固定也不影响的。

# Wireguard 如何路由流量

利用 WireGuard 可以组建非常复杂的网络拓扑,这里主要介绍几个典型的拓扑:

① 端到端直接连接

# 这是最简单的拓扑,所有的节点要么在同一个局域网,要么直接通过公网访问,这样 WireGuard 可以直接连接到对端,不需要中继跳转。

② 一端位于 NAT 后面,另一端直接通过公网暴露

这种情况下,最简单的方案是:通过公网暴露的一端作为服务端,另一端指定服务端的公网地址和端口,然后通过 persistent-keepalive 选项维持长连接,让 NAT 记得对应的映射关系。

③ 两端都位于 NAT 后面,通过中继服务器连接

大多数情况下,当通信双方都在 NAT 后面的时候,NAT 会做源端口随机化处理,直接连接可能比较困难。可以加一个中继服务器,通信双方都将中继服务器作为对端,然后维持长连接,流量就会通过中继服务器进行转发。

④ 两端都位于 NAT 后面,通过 UDP NAT 打洞

上面也提到了,当通信双方都在 NAT 后面的时候,直接连接不太现实,因为大多数 NAT 路由器对源端口的随机化相当严格,不可能提前为双方协调一个固定开放的端口。必须使用一个信令服务器(STUN),它会在中间沟通分配给对方哪些随机源端口。通信双方都会和公共信令服务器进行初始连接,然后它记录下随机的源端口,并将其返回给客户端。这其实就是现代 P2P 网络中 WebRTC 的工作原理。有时候,即使有了信令服务器和两端已知的源端口,也无法直接连接,因为 NAT 路由器严格规定只接受来自原始目的地址(信令服务器)的流量,会要求新开一个随机源端口来接受来自其他 IP 的流量(比如其他客户端试图使用原来的通信源端口)。运营商级别的 NAT 就是这么干的,比如蜂窝网络和一些企业网络,它们专门用这种方法来防止打洞连接。更多细节请参考下一部分的 NAT 到 NAT 连接实践的章节。

如果某一端同时连接了多个对端,当它想访问某个 IP 时,如果有具体的路由可用,则优先使用具体的路由,否则就会将流量转发到中继服务器,然后中继服务器再根据系统路由表进行转发。你可以通过测量 ping 的时间来计算每一跳的长度,并通过检查对端的输出(wg show wg0)来找到 WireGuard 对一个给定地址的路由方式。

# WireGuard 报文格式

WireGuard 使用加密的 UDP 报文来封装所有的数据,UDP 不保证数据包一定能送达,也不保证按顺序到达,但隧道内的 TCP 连接可以保证数据有效交付。WireGuard 的报文格式如下图所示:

img

关于 WireGuard 报文的更多信息可以参考下面几篇文档:

  • wireshark.org/docs/dfref/w/wg.html (opens new window)
  • Lekensteyn/wireguard-dissector (opens new window)
  • nbsoftsolutions.com/blog/viewing-wireguard-traffic-with-tcpdump (opens new window)

# WireGuard 的性能

WireGuard 声称其性能比大多数 VPN 协议更好,但这个事情有很多争议,比如某些加密方式支持硬件层面的加速。

WireGuard 直接在内核层面处理路由,直接使用系统内核的加密模块来加密数据,和 Linux 原本内置的密码子系统共存,原有的子系统能通过 API 使用 WireGuard 的 Zinc 密码库。WireGuard 使用 UDP 协议传输数据,在不使用的情况下默认不会传输任何 UDP 数据包,所以比常规 VPN 省电很多,可以像 55 一样一直挂着使用,速度相比其他 VPN 也是压倒性优势。

img

关于性能比较的更多信息可以参考下面几篇文档:

  • wireguard.com/performance (opens new window)
  • reddit.com/r/linux/comments/9bnowo/wireguard_benchmark_between_two_servers_with_10 (opens new window)
  • restoreprivacy.com/openVPN-ipsec-wireguard-l2tp-ikev2-protocols (opens new window)

# WireGuard 安全模型

WireGuard 使用以下加密技术来保障数据的安全:

  • 使用 ChaCha20 进行对称加密,使用 Poly1305 进行数据验证。
  • 利用 Curve25519 进行密钥交换。
  • 使用 BLAKE2 作为哈希函数。
  • 使用 HKDF 进行解密。

WireGuard 的加密技术本质上是 Trevor Perrin 的 Noise 框架的实例化,它简单高效,其他的 VPN 都是通过一系列协商、握手和复杂的状态机来保障安全性。WireGuard 就相当于 VPN 协议中的 qmail,代码量比其他 VPN 协议少了好几个数量级。

关于 WireGuard 加密的更多资料请参考下方链接:

  • wireguard.com/papers/wireguard.pdf (opens new window)
  • eprint.iacr.org/2018/080.pdf (opens new window)
  • courses.csail.mit.edu/6.857/2018/project/He-Xu-Xu-WireGuard.pdf (opens new window)
  • wireguard.com/talks/blackhat2018-slides.pdf (opens new window)
  • arstechnica.com/gadgets/2018/08/wireguard-VPN-review-fast-connections-amaze-but-windows-support-needs-to-happen (opens new window)

# WireGuard 密钥管理

WireGuard 通过为每个对等节点提供简单的公钥和私钥来实现双向认证,每个对等节点在设置阶段生成密钥,且只在对等节点之间共享密钥。每个节点除了公钥和私钥,不再需要其他证书或预共享密钥。

在更大规模的部署中,可以使用 Ansible 或 Kubernetes Secrets 等单独的服务来处理密钥的生成、分发和销毁。

下面是一些有助于密钥分发和部署的服务:

  • pypi.org/project/wireguard-p2p (opens new window)
  • trailofbits/algo (opens new window)
  • StreisandEffect/streisand (opens new window)
  • its0x08/wg-install (opens new window)
  • brittson/wireguard_config_maker (opens new window)
  • wireguardconfig.com (opens new window)

如果你不想在 wg0.conf 配置文件中直接硬编码,可以从文件或命令中读取密钥,这使得通过第三方服务管理密钥变得更加容易:

[Interface]
...
PostUp = wg set %i private-key /etc/wireguard/wg0.key &lt;(cat /some/path/%i/privkey)
1
2
3

从技术上讲,多个服务端之间可以共享相同的私钥,只要客户端不使用相同的密钥同时连接到两个服务器。但有时客户端会需要同时连接多台服务器,例如,你可以使用 DNS 轮询来均衡两台服务器之间的连接,这两台服务器配置相同。大多数情况下,每个对等节点都应该使用独立的的公钥和私钥,这样每个对等节点都不能读取到对方的流量,保障了安全性。

理论部分就到这里,下篇文章将会手把手教你如何从零开始配置 WireGuard,这里会涉及到很多高级的配置方法,例如动态 IP、NAT 到 NAT、IPv6 等等。


Kubernetes 1.18.2 1.17.5 1.16.9 1.15.12离线安装包发布地址http://store.lameleg.com (opens new window) ,欢迎体验。 使用了最新的sealos v3.3.6版本。 作了主机名解析配置优化,lvscare 挂载/lib/module解决开机启动ipvs加载问题, 修复lvscare社区netlink与3.10内核不兼容问题,sealos生成百年证书等特性。更多特性 https://github.com/fanux/sealos (opens new window) 。欢迎扫描下方的二维码加入钉钉群 ,钉钉群已经集成sealos的机器人实时可以看到sealos的动态。

https://qr.dingtalk.com/action/joingroup?code=v1,k1,zVBIDO0WoCJb+cPDqxXHb67W9HeuqAIMnpKVoboD8tA= (opens new window) (二维码自动识别)

# 附录

# 启动wireguard
$ wg-quick up wg0

# 关闭wireguard
$ wg-quick down wg0
1
2
3
4
5
#WireGuard
上次更新: 2021/06/12, 09:06:00

← Android刷机指南 打造私人影院指南 - PLEX篇 →

新鲜出炉
01
记录 - 快速搭建自动化部署平台
04-13
02
Docker搭建各类Paas服务
03-01
03
系统配置 - Android TV配置
02-12
更多文章>
Copyright © 2019-2025 SleepyOcean | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式