Wireguard配置文件中的Endpoint和AllowedIPs字段有什么区别?

我对 Wireguard 的理解是服务器和客户端的接口(虽然看起来听不清?)每个都有自己的.conf文件。例如,考虑以下.conf文件。

[Interface]
PrivateKey = some_key_1
Address = 10.193.130.174/16


[Peer]
PublicKey = some_key_2
PresharedKey = some_key_3
AllowedIPs = 10.129.130.1/32
Endpoint = 54.91.5.130:1952

如何判断这是客户端.conf文件还是服务器文件(如果可能的话)?这可能是一个非常简单的问题,但是EndpointAllowedIPs字段之间的区别是[Peer]什么?我从CryptoKey Routing推断,一旦interface接收到一个数据包,它就会用interface私钥对其进行解密,并AllowedIPs根据所有信息检查发件人 IP peers,如果凭据实际上与peer它匹配,它就会接受它。在另一方面,如果interface想送它与它加密的数据包peer的公共密钥,但它是将其发送到Endpoint的或一个AllowedIPs

编辑 1:我确实使用man wg过,Endpoint但对我来说仍然模糊的定义。尽管如此,该AllowedIPs领域似乎更容易掌握。

编辑 2:经过进一步研究,我认为该AllowedIPs字段指定了对等方可用于接收流量或发送流量的 IP 地址。如果有人可以确认或更正这一点,我将不胜感激。

回答

是的,每个接口都有自己的配置文件。WireGuard 没有内置的“客户端”或“服务器”角色——每个节点都被视为一个“对等点”。

如果您有两个对等方,对等方 A 和对等方 B,则对等方 A 的配置文件将在该[Interface]部分中包含其本地接口的设置,并在一个[Peer]部分中包含其与对等方 B 的远程连接的设置。类似地,Peer B 的配置文件将在该[Interface]部分中包含其本地接口的设置,并在一个[Peer]部分中包含其与 Peer A 的远程连接的设置。所以[Interface]Peer A 配置中的[Peer]部分对应于 Peer B 配置中的部分;与[Interface]在对等体B的配置对应于部[Peer]对等体A的config的部分。


端点[Peer]配置部分)是远程对等方的“真实”IP 地址和端口,位于 WireGuard VPN 之外。此设置告诉本地主机如何连接到远程对等方以设置 WireGuard 隧道。

在示例配置中,Endpoint = 54.91.5.139:1952对于远程对等方,通过该对等方的虚拟 WireGuard 隧道路由的任何数据包实际上都将被加密,包装在一组新的 UDP 数据包中,并通过 Internet(或其他一些“真实”网络,像您的公司网络)到54.91.5.139UDP 端口1952

除非您还在 WireGuard 之外的本地主机上进行一些花哨的路由,如果您尝试从本地主机向此端点发送 ping 数据包(例如ping 54.91.5.139),或者如果您尝试从远程对等方访问某些其他服务本地主机通过此端点地址(例如http://54.91.5.139/在 Web 浏览器中导航到),您将不会使用 WireGuard 隧道——您将使用常规 Internet(或其他“真实”网络)连接。

AllowedIPs[Peer]配置部分)是本地主机应通过 WireGuard 隧道路由到远程对等方的 IP 地址集。此设置告诉本地主机隧道中的内容。

在示例配置中,AllowedIPs = 10.129.130.1/32对于远程对等方,本地主机上的任何数据包10.129.130.1都不会直接通过您的常规 Internet(或其他“真实”网络)连接发送,而是首先发送到虚拟 WireGuard 隧道。WireGuard 将对它们进行加密,将它们包装在一组新的 UDP 数据包中,然后通过 Internet(或其他“真实”网络)将它们发送到对等方的端点54.91.5.139。从那里,对等方将解包和解密数据包,并尝试将它们转发到10.129.130.1.

因此,如果您尝试从本地主机发送 ping 数据包到10.129.130.1(例如ping 10.129.130.1),或尝试访问某些其他服务10.129.130.1(例如http://10.129.130.1在 Web 浏览器中导航),您使用 WireGuard 隧道。

相反,就像你提到的,对于从这个远程对等点通过隧道的数据包,如果它们在解包和解密后具有由指定的块之外的源 IP AllowedIPs(例如,源 IP 是10.1.1.1而不是10.129.130.1),本地主机将丢弃它们。

地址[Interface]配置部分)是 WireGuard VPN 中本地主机的虚拟 IP 地址。此设置会影响数据包进出WireGuard隧道去的路由,因此应该不会是一个“真正的” IP地址可路由的VPN之外。

在示例配置中,其中Address = 10.193.130.174/16WireGuard VPN 中本地主机的虚拟 IP 地址为10.193.130.174。因此,本地主机通过 WireGuard 隧道发送的来自本地套接字的任何数据包的源地址为10.193.130.174,它从隧道接收的目标地址为 的任何数据包10.193.130.174都将路由回本地套接字(除非您正在WireGuard 之外的花式路由)。

假设主机的“真实”网络地址是10.10.10.10. 如果从主机运行ping 10.129.130.1,主机将生成源地址为10.193.130.174和目标地址为 的ping 数据包10.129.130.1,并通过 WireGuard 隧道发送它们。WireGuard 将加密这些数据包,并用 UDP 数据包包装它们,其中源地址为10.10.10.10,源端口为51820(WireGuard 默认值,因为ListenPort在配置中未指定),目标地址为54.91.5.139,目标端口为1952。然后它将这些 UDP 数据包发送到“真实”网络。

当远程对等点在 IP 地址54.91.5.139和 UDP 端口上侦听“真实”网络接口时1952,收到这些数据包时,它将解包并解密它们。然后,它会将它们以原始形式在其自己的网络堆栈上重新排队,作为源地址为10.193.130.174和目标地址为 的 ICMP 数据包10.129.130.1

如果原始主机收到来自该远程对等方的回复以进行 ping,则它最初将从“真实”网络接口作为 UDP 数据包接收,其源地址为54.91.5.139、源端口为1952、目标地址为10.10.10.10和的目的港51820。WireGuard 会将这些数据包解包并解密回其原始形式,作为具有源地址10.129.130.1和目标地址的ICMP 数据包10.193.130.174,并将它们重新排队。由于虚拟 WireGuard 接口的 IP 地址是10.193.130.174(通过Address设置配置),本地主机将知道将这些数据包路由回本地套接字。


请注意,为Address设置(/16在我们的示例中)指定网络掩码会影响本地主机做出的关于应该将哪些流量发送到隧道(以及如何处理隧道接收到的流量)的路由决策,其方式可以是对环境来说是多余的,或者与AllowedIPs环境相悖。在我们的示例中,Address = 10.193.130.174/16通常会导致发往10.193.x.x范围内任何地址的所有流量都路由到本地主机上的此 WireGuard 接口(不包括接口自己的地址10.193.130.174,该地址将路由到环回接口)。

但是,AllowedIPs我们示例中唯一对等点的设置不包括10.193.x.x范围内的任何内容。因此,如果我们ping 10.193.0.1在主机上运行,主机将生成源地址为10.193.130.174和目标地址为 的ping 数据包10.193.0.1,并通过 WireGuard 隧道发送它们。但是由于该目标地址不适合AllowedIPs任何配置的对等点,WireGuard 会丢弃这些数据包。

因此,通常最简单的方法是在Address设置中省略网络掩码(对于 IPv4 地址,或使用/32,具有相同的效果),并仅使用AllowedIPs每个对等点上的设置来控制路由到它的内容。通常,仅当您有多个不同的对等点使用相同的虚拟子网时(或者如果您在 WireGuard 之外进行一些奇特的路由),您才会指定网络掩码。


需要了解的另一件事Endpoint是,您只需将其设置在 WireGuard 隧道的一侧(但如果双方都有静态 IP,则可以在两侧设置)。如果您Endpoint在 Peer A 的配置中为 Peer B设置了 an ,但在 Peer B 的配置中为 Peer A 省略了它,则 Peer A 将能够与 Peer B 启动和设置隧道,而 Peer B 不必提前知道 Peer A 的端点时间。

如果对等方 A 具有动态分配的公共 IP 地址,则这是理想的;但缺点是 Peer B 将无法启动隧道——它必须等待 Peer A 连接到它。如果您有时需要 Peer B 启动与 Peer A 的连接,您可以通过PersistentKeepalive在 Peer A 的配置中包含Peer B的设置来缓解这种情况——这将指示 Peer A 每隔 N 秒主动联系并连接到 Peer B(其中 N 是您放入PersistentKeepalive设置中的值)。


以上是Wireguard配置文件中的Endpoint和AllowedIPs字段有什么区别?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>