安全和匿名的虚拟网络基础设施是如何工作的 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

安全和匿名的虚拟网络基础设施是如何工作的

walker 技术 2022-12-06 11:05:00
65678
收藏

导语:在本文中,我们展示了如何设置可在现实场景中使用的安全虚拟专用网络,以提供对本地和云资源的访问。我们还将了解 SDN 的功能、优势和关键应用。

持续的远程工作趋势使企业组织严重依赖虚拟基础架构与虚拟专用网络 (VPN)。它们在今天是非常常见的解决方案,但微调 VPN 仍然是一项棘手的任务。

网络管理员必须选择相关工具并手动构建一个网络,以满足其组织在网络安全、用户匿名性和网络复杂性方面的需求。有时,VPN 无法满足组织的需求,组织不得不寻找软件定义网络 (SDN) 等更复杂的技术。

在本文中,我们展示了如何设置可在现实场景中使用的安全虚拟专用网络,以提供对本地和云资源的访问。我们还将了解 SDN 的功能、优势和关键应用。

本文对希望增强 VPN 技术及其发展方向知识的团队领导和产品经理很有用。

什么是VPN?

VPN是一种允许多台机器通过虚拟网络连接的技术。与需要实际的电线和/或无线电发射器到位的物理网络不同,虚拟网络利用现有的物理基础设施并纯粹通过软件方式定义其拓扑。

为了解释 VPN 的工作原理,让我们定义一些术语,考虑我们期望常规网络具有的属性,并了解它们通常如何在 VPN 中实现:

image.png

这些东西的工作方式在真实网络和虚拟网络中几乎是一样的。主要区别在于,在虚拟网络中,分配了 IP 地址的网络接口是虚拟的,即在操作系统视为接口的背后没有实际的物理设备。路由到此接口的流量由实现 VPN 协议的软件处理。

由于虚拟接口没有与其关联的物理设备,它不能直接将数据包发送到网络中,因此它要求其他接口为它这样做。当虚拟接口接收到数据包时,它会确定其在虚拟网络中的目的地(接收方的 IP 地址)。然后,接口背后的软件检查 VPN 的配置,以找到与接收方网络节点对应的物理接口的 IP 或可以将数据包路由到它的节点的 IP。这是这个过程的样子:

image.png

物理接口不转发原始数据(即 VPN 数据包的有效负载),而是传输整个数据包和标头。当接收方的节点收到数据包时,其虚拟接口可以解析它并确定下一步要做什么。

VPN 本质上混淆了两个对等点之间的物理网络,使它们认为它们直接相互连接并在幕后传输流量。此属性允许组织为其用户提供从本地网络外部对敏感资源的安全远程访问。此外,他们不需要根据物理网络接口的 IP 地址配置复杂的路由规则。

现在,让我们通过实际示例详细探讨如何保护您的虚拟网络。

使用 VPN 增强网络安全

VPN 实现在数据离开虚拟接口之前对所有数据进行加密,并利用 VPN 网关屏蔽网络客户端的实际 IP。让我们看看真实世界的 VPN 协议Wireguard如何确保在虚拟网络中保护传输中的数据和用户匿名。

Wireguard 是一款开源软件,可为您的 VPN 添加加密功能。以下是我们如何使用 Wireguard 配置文件表达上一节中的方案:

Device1 configuration:
[Interface]
Address = 10.0.0.1
PrivateKey = %device1's
key%
[Peer]
PublicKey = %device2 的
公钥
%
Endpoint = %device2 的 IP%:
51820 AllowedIPs = 10.0.0.2/32
Device2配置:
[Interface]
Address = 10.0.0.2
PrivateKey = %device2的
私钥
%
ListenPort = 51820
[Peer]
PublicKey = %device1's
public
key%
AllowedIPs = 10.0.0.1/32

这两种配置看起来几乎相同。两者都定义了一个具有特定 IP 地址和关联私钥的虚拟接口,并相互交换公钥。第二个设备承担服务器的角色,定义其虚拟网络对等点可以连接到的侦听端口。如果未定义此端口,则入站数据包将被丢弃,从而阻止任何通信的发生。

但是,对等点不必公开侦听端口,因为服务器将使用在它们连接后创建的套接字来响应它们。所有在 10.0.0.1 和 10.0.0.2 之间传输的数据包都将由 Wireguard 加密,并使用 UDP 传输协议通过物理网络发送到它们的目的地。

现在让我们扩展上面描述的简单拓扑并在网络中引入更多对等点:

image.png

在网络中,Device1 和Device3 之间没有直接连接,它们必须依靠Device2 来中继它们的数据包。这是此设置的 Wireguard 配置的外观:

Device1 configuration:
[Interface]
Address = 10.0.0.1
PrivateKey = %device1's private key%
[Peer]
PublicKey = %device2's public key%
Endpoint = %device2's IP%:51820
AllowedIPs = 10.0.0.0/24
Device2 configuration:
[Interface]
Address = 10.0.0.2
PrivateKey = %device2's private key%
ListenPort = 51820
[Peer]
PublicKey = %device1's public key%
AllowedIPs = 10.0.0.1/32
[Peer]
PublicKey = %device3's public key%
AllowedIPs = 10.0.0.3/32
Device3 configuration:
[Interface]
Address = 10.0.0.3
PrivateKey = %device3's private key%
[Peer]
PublicKey = %device2's public key%
Endpoint = %device2's IP%:51820
AllowedIPs = 10.0.0.0/24

现在Device2的配置和原来的有很大的不同。它有两个 [Peer] 部分,对应于 Device1 和 Device2。每个部分都包含给定对等点的公钥及其虚拟 IP,以便 Device2 知道将哪些数据包路由到哪里。Device1 和 Device3 配置也有点不同:它们的 AllowedIPs 字段现在包含的不是单个 IP,而是 10.0.0.0/24 子网。这意味着此子网中的所有 IP 都将路由到 Device2。

这种将一台设备用作网关的设置非常普遍。Device1可以是员工在家访问办公室的电脑,Device3可以是连接公司内网的目标电脑,Device2可以是外部客户端访问本地设备的网关,例如Device3。

在 Wireguard 接口之间流动的所有流量都经过加密,连接到此 VPN 的设备(网关除外)都不知道对等方的物理 IP。这种连接既安全又匿名。

为什么简单的虚拟网络会演变成SDN?

我们上面讨论的示例拓扑可用于不需要复杂网络的小型组织。大型公司、国际组织和云计算采用者需要更复杂和精细的解决方案。复杂的虚拟网络是许多现代组织的支柱,这些组织允许其员工远程工作或在多个地点开展业务。

软件定义的网络方法在网络交换机、负载平衡器、网关和其他元素之上添加专用网络服务。这些服务充当网络基础设施和您的业务架构之间的附加控制层。通过这一层,您可以方便地配置和管理网络中的端点,以及建立虚拟网络安全性能监控。

软件定义的网络正在迅速流行,因为它允许组织:

image.png

  • 简化和集中网络管理。网络管理员可以使用软件定义的网络从一个地方管理他们的网络,而不是分别处理每个基础设施元素和 VPN 协议。中间层帮助他们方便地编排网络端点、配置流量优先级并添加安全机制,同时节省时间。

  • 保持网络配置一致。当从一个地方配置和管理所有基础架构元素时,它们会一致地工作,并且不会在虚拟专用网络安全性和性能方面留下任何差距。

  • 加强网络保护。SDN 引入了额外的可能性来保护您的网络,例如选择性流量阻塞和路由到特定服务、网络分段、自动安全更新以及所有网络元素的识别。

  • 优化负载均衡。配置有 VPN 的简单虚拟网络为负载平衡提供的灵活性很小,因为它专注于在虚拟元素和真实元素之间传递流量。SDN 控制器可以查看整个网络中资源的可用性,并根据负载动态将流量重新路由到各个端点。

  • 构建更复杂的网络。网络服务层允许您向网络添加任意数量的虚拟资源、云计算服务和基础设施元素。使用SDN对于构建大型数据中心、国际企业基础设施、云服务等至关重要。

请记住,建立 SDN 是一个复杂的过程,仍然需要您投入大量精力来设计和规划您的网络。但如果实施得当,软件定义网络可为您提供改进虚拟网络的可能性。

现在,让我们看看如何通过使用软件定义额外的端点,将上面示例中的简单网络转变为高级网络。

配置高级网络路由

具有多个内网和云服务的网络需要更多的网关来管理不同的子网,平衡负载,并使虚拟网络容错。在物理网络中,无数网关通过 Internet 路由数据包。为了有效地做到这一点,他们使用了边界网关协议(BGP)。该协议设计用于在网关之间共享路由和可达性信息。

让我们探索扩展网络拓扑的示例模式:

scheme_-_3(1).jpg

物理网络接口上的特定 IP 在这里并不重要,因为所有设备都连接到不同的 LAN。Device1 和 Device2 连接到 Gateway1,而 Device3 和 Device4 连接到 Gateway2。但是,例如,当 Device1 试图访问 Device3 时会发生什么?

当 Device1 将数据包发送到 IP 地址 10.0.0.4 时,它们被路由到 Gateway1,因为该 IP 属于 10.0.0.0/24 子网并且 Wireguard 配置指示将这些数据包重定向到 10.0.0.2 对等方。但是 Gateway1 的配置不包含 IP 为 10.0.0.4 的任何对等点,因此它必须将接收到的数据包中继给知道如何到达目的地的人。

这就是 BGP 发挥作用的地方。Gateway1 和 Gateway2 建立 BGP 连接并共享路由信息。要创建这样的连接,您可以使用BIRD Internet Routing Daemon。BIRD 守护进程的相应配置如下:

Gateway1 config
protocol bfd {
interface "wg*" {
min rx interval 10 ms;
min tx interval 100 ms;
idle tx interval 1000 ms;
multiplier 5;
};
neighbor 10.0.0.5;
}
protocol static {
route 10.0.0.1/32;
route 10.0.0.3/32;
}
Gateway2 config
protocol bfd {
interface "wg*" {
min rx interval 10 ms;
min tx interval 100 ms;
idle tx interval 1000 ms;
multiplier 5;
};
neighbor 10.0.0.2;
}
protocol static {
route 10.0.0.4/32;
route 10.0.0.6/32;
}

每个配置的第一部分——protocol bfd——定义了向邻居通告路由的条件。邻居本身应该可以通过双向转发检测(BFD) 协议访问,该协议可以快速检测两个邻居之间的链路是否断开。

第二部分——静态协议——定义了向邻居通告的静态路由。Gateway1 共享到Device1 和Device2 的路由,而Gateway2 共享到Device3 和Device4 的路由。因此,当网关接收到一个 IP 未出现在其配置中的数据包时,它可以检查路由表以查看 BIRD 守护程序是否接收到任何相关的路由信息并将数据包转发到下一个网关。数据包将在网关之间传输,直到到达目的地。

为了获得额外的可靠性,每个对等点都可以运行 BFD 客户端来检测它们所连接的网关是否可达。如果对等点本身不可达,则可以指示 BIRD 守护进程根据其 BFD 连接状态不通告其路由。我们可以通过将此代码添加到上面的代码而不是protocol static来实现:

protocol static {
route %peer virtual IP%/32 multipath
via %wireguard interface% bfd;
}

有了这个,您将拥有一个可行的虚拟软件定义网络,该网络连接多个端点,保护其中的数据,并提供一些扩展空间。

结论

借助 Wireguard 和 BIRD 等现代工具,组织可以构建跨越多个内联网的虚拟网络,整合云服务,并允许用户通过精细控制安全地访问所有必需的资源。

如若转载,请注明原文地址
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2024 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务