VLAN和VPC是网络隔离的方法,我们用它来保护我们在公共云中的基础设施。它们通过大幅减少我们的网络攻击面来提高安全性,同时让我们有能力在有和没有公共互联网接入的情况下对应用层进行分割。今天,让我们想得更大一些,用Linode跨越我们的私人网络的多个区域。
当我们谈论 "区域 "时,我们指的是同一云提供商内的不同地理区域。"区域 "通常是这些地理区域内的额外托管地点。例如,你可能会看到一个位于纽约附近的东北地区和一个位于亚特兰大的东南地区,每个地区都包含多个区域。
除了通过实际接近更多的用户来提供更低的延迟外,运行一个多区域的应用程序使我们在可靠性和容错性方面有很大的提高。任何可能影响你在一个地方的工作负载的事情,包括硬件故障或本地网络中断,都有可能通过有另一个地方来重新路由你的用户而得到缓解。
部署多区域的VLAN
要跨部署在多个区域的VLAN 网段进行路由,我们可以使用虚拟专用网络 (VPN) 将VLAN 网段绑定在一起。
首先,我们使用 Linode 作为公共路由器,将部署在单个区域的任何相关 VLAN 连接在一起。每个VLAN 网段都是独立的 2 层域,并在其 3 层子网内运行。各个VLAN 网段之间的所有流量都将流经路由器,我们可以在路由器中设置防火墙规则,以管理允许在多个网段之间传输的流量。
然后,我们可以配置这个路由器实例,使用公共互联网和VPN软件(如WireGuard)或像IPSec这样的协议,在其他网段之间桥接流量。
上面的例子显示了一个两个区域的部署。每个区域负责通过一个路由器实例管理两个孤立的VLAN之间的连接。然后每个路由器可以使用我们配置的具有多个接口的Linode路由器实例在本地桥接多个区域。路由器通过使用公共互联网上的WireGuard隧道来跨越各区域。
配置NAT出口点
现在,流量可以在任何VLAN 之间流动,不受区域限制。此外,路由器实例还可用作网络地址转换(NAT)出口点,为本地 VLAN 提供互联网连接(如果我们部署的路由器实例没有本地互联网连接)。在这种配置中,本地路由器实例将被指定为默认网关(即通常在 10.0.0.0/24 网络上配置为 10.0.0.1)。我们还可以将路由器实例用作安全套接字 Shell (SSH) 管理堡垒。
实现这种NAT配置的常见方法是使用防火墙规则来标记WireGuard流量,并对检测到的任何没有这种标记的流量进行IP伪装。
例如,路由器将被配置为使用一个iptables规则:
iptables -t nat -A POSTROUTING -o eth0 -m mark !--mark 42 --j MASQUERADE
我们可以配置 WireGuard 在其配置中使用 FirewallMark(即 42)。该配置可确保 WireGuard 流量不被 NAT,而所有VLAN 流量都被 NAT。
然后,云防火墙规则将被配置为允许路由节点之间的WireGuard通信(通常为udp/51820)。
然后,我们可以用防火墙规则配置路由器实例,以根据需要控制或记录本地和全球网段的流量。
考虑因素
本示例中的部署允许跨多个区域全局共享数据,并授权路由器实例控制不同VLAN 网段之间的流量。在将来自多个VLAN 网段的流量导入单个汇聚点时,了解性能和带宽方面的注意事项至关重要。性能将由分配给路由器的计算资源所施加的上传带宽限制决定。
仔细考虑VPN协议以确保其满足你的部署要求也很关键。你选择的技术将对点对点带宽和通过公共互联网发送的流量的安全性产生重大影响。例如,WireGuard使用加密技术来确保流量不会被拦截,与strongSwan这样的IPsec实现相比,它的可信计算基础较小,以限制漏洞和暴露。
多云
我们用来跨越多个地区的同类技术可以在不同的云供应商之间实现。例如,你可以在另一个云服务提供商的网络边界内放置一个路由器实例,并将其绑定到其本地、云提供商特定的VPC配置。你可以在路由器实例之间使用WireGuard隧道来桥接到云提供商的网络。该实施方案对于旨在专门在私有网络中保持隔离的服务非常有效。
下一步是什么
最终,在设计我们的私有网络时,有很多不同的工具可以使用,其好处可以大大超过增加的复杂性。如果你的应用程序与你的用户群一起增长,设计你的环境以减少那些人数更多的人的延迟可以对用户体验产生重大影响。额外的容错将提高可靠性,并保持你的软件的可用性和可访问性。
注释