(这是我读官方文档时的简单理解)
Wireguard使用UDP封装IP数据包。在使用的过程中,需要创建一个WireGuard接口,使用自己的私钥和对等方的公钥进行配置,访问对等方网络时的所有数据包将通过该接口发送。
Wireguard可以通过添加多个网络接口来工作,可以使用ifconfig、ip-address等工具配置这些网络接口,可以使用route、ip-route为这些接口添加和删除路由,而WireGuard方面的配置需要使用wg工具完成。这些接口充当隧道接口。
WireGuard将隧道IP地址与公钥和远端端点相关联,当接口向对等方发送数据包时,会执行如下操作:
- 判断数据包发送给哪个对等方,如果不属于任何已配置的对等方,则丢弃该数据包
- 使用对等方的公钥加密整个IP数据包
- 通过UDP将数据包发送给对等方
当对等方接受到数据包时,会执行如下操作:
- 解密收到的数据包
- 记录对等方最新的Internet端点数据
- 判断该数据包的发送者是否是允许的,如果不允许则丢弃数据包