Wireguard 协议理解接收数据包的来源

网络工程 虚拟专用网 防火墙 隧道
2021-07-29 09:03:07

从文档中,

WireGuard 将隧道 IP 地址与公钥和远程端点相关联。当接口向对等体发送数据包时,它会执行以下操作:

  1. 此数据包适用于 192.168.30.8。那是哪个同行?让我看看... 好的,这是对等的 ABCDEFGH。(或者,如果它不适用于任何已配置的对等方,则丢弃该数据包。)
  2. 使用对等 ABCDEFGH 的公钥加密整个 IP 数据包。
  3. 对等 ABCDEFGH 的远程端点是什么?让我看看... 好的,端点是主机 216.58.211.110 上的 UDP 端口 53133。
  4. 使用 UDP 将步骤 2 中的加密字节通过 Internet 发送到 216.58.211.110:53133。

当接口收到数据包时,会发生这种情况:

  1. 我刚刚从主机 98.139.183.24 上的 UDP 端口 7361 收到一个数据包。来解密吧!
  2. 它为对等 LMNOPQRS 正确解密和验证。好的,让我们记住,使用 UDP 的对等 LMNOPQRS 的最新 Internet 端点是 98.139.183.24:7361。
  3. 解密后,纯文本数据包来自 192.168.43.89。是否允许对等 LMNOPQRS 以 192.168.43.89 的形式向我们发送数据包?
  4. 如果是,则接受接口上的数据包。如果没有,就放下它。

对我来说,第二部分的陈述 1 和 3 似乎是矛盾的。

  1. 我刚刚从主机 98.139.183.24 上的 UDP 端口 7361 收到一个数据包。来解密吧!

这似乎意味着数据包是从 98.139.183.24 收到的,但是,语句 3 说

解密后,纯文本数据包来自 192.168.43.89。

这似乎表明数据包是从 192.168.43.89 收到的

那么包是从哪里来的呢?

2个回答

这是因为“解密”是对正在发生的事情的过于简单化的描述。您从对等方的公共 IP 收到一个数据包,其中包含加密的有效负载。该负载实际上是一个 IP 数据包,具有自己的(私有)源 IP 和目标 IP。

因此,第 1 步基本上是关于识别对等方(通过其公共 IP)并检索关联的密钥。然后在第 3 步中,您使用该密钥解密有效负载,从而为您提供带有私有源和目标的原始数据包。

这是任何基于加密隧道的协议的原则。

同样,您似乎混淆了外部隧道数据包和内部原始数据包。

原始数据包的源主机是192.168.43.89,但源隧道端点地址是98.139.183.24

外部隧道数据包将隧道端点的地址作为源和目标 IP 地址。外部隧道数据包是通过中间网络(例如公共互联网)路由的数据包。

内部原始数据包将具有原始源主机和目标主机作为数据包标头中的 IP 地址。这些数据包将被封装在以源和目标隧道端点作为源和目标 IP 地址的隧道数据包中。