Wireguard 协议了解数据包的发送位置

网络工程 虚拟专用网 防火墙 隧道
2021-07-15 20:41:28

从文档中,

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 和 4 似乎是矛盾的。

  1. 此数据包适用于 192.168.30.8。那是哪个同行?让我看看... 好的,这是对等的 ABCDEFGH。(或者,如果它不适用于任何已配置的对等方,则丢弃该数据包。)

这似乎暗示数据包应该去 192.168.30.8 但是,语句 3 和 4

  1. 对等 ABCDEFGH 的远程端点是什么?让我看看... 好的,端点是主机 216.58.211.110 上的 UDP 端口 53133。
  2. 使用 UDP 将步骤 2 中的加密字节通过 Internet 发送到 216.58.211.110:53133。

似乎暗示数据包去往 216.58.211.110

那么数据包去哪里了呢?

1个回答

我认为您实际上并不了解隧道。隧道将原始数据包包裹在外部数据包中,这些数据包被传送到隧道的另一端,在那里外部数据包被剥离,原始数据包通常从那里路由。

您似乎混淆的是原始数据包的目的地与外部隧道数据包的目的地。

  1. 此数据包适用于 192.168.30.8。那是哪个同行?让我看看... 好的,这是对等的 ABCDEFGH。(或者,如果它不适用于任何已配置的对等方,则丢弃该数据包。)

原始数据包的目的地192.168.30.8是隧道的另一个端点是 ABCDEFGH(显然是 DNS 名称)。

  1. 使用对等 ABCDEFGH 的公钥加密整个 IP 数据包。

这会加密隧道数据包内的原始数据包(隧道标头未加密,也不能加密)。

  1. 对等 ABCDEFGH 的远程端点是什么?让我看看... 好的,端点是主机 216.58.211.110 上的 UDP 端口 53133。

这将查找隧道另一个端点的 DNS 名称的地址,然后将目标地址放在外部隧道数据包头上。

  1. 使用 UDP 将步骤 2 中的加密字节通过 Internet 发送到 216.58.211.110:53133。

将包含原始(加密)数据包的外层隧道数据包发送到另一个隧道端点,隧道数据包将被剥离,原始数据包未加密并正常路由。