亚马逊AWS官方博客

基于 AWS 的企业 IT 网络架构

背景

自2006年Amazon.com推出S3服务以来,云计算市场已经发展了十多年。越来越多的开发者,初创公司和企业开始拥抱云计算。AWS的云服务给企业赋能:敏捷业务开发,按需供给IT资源,优化IT成本,加速创新,并让快速全球部署成为可能[1]。

 

目前已经有很多企业客户采取了尽在云端或云优先的策略,把基础架构全部或大部分迁移到AWS云端。典型的架构是这样的:

 

 

很多承担业务负载的基础设施已经或正在从传统的IDC迁移到AWS云上。那么,企业自身的IT需求是否一样能享受AWS云的好处呢?在可预期的将来,云服务将像电一样成为标准的公共服务,IT和业务基础设施全部在云端会变成趋势。企业的基础设施架构会变成下图的样子。

 

AWS Marketplace[2]已经在北京和宁夏区域上线。它提供了数量庞大的来自AWS合作伙伴的产品,包括安全、网络、存储、开发运营等等许多门类。购买,管理和部署这些软件变得像从应用市场下载一个APP到手机上一样简单。

对企业来说,上云能降低IT运维的压力。AWS Marketplace进一步赋能,简化了管理和部署IT商业软件的过程。

接下来,我将展示IT上云的可能的几种基础架构形式。

基于虚拟桌面的解决方案

 

AWS的虚拟桌面服务WorkSpaces[3]已经在宁夏区域推出。企业可以在几分钟内预置桌面并快速扩展。WorkSpaces 消除了管理和运维虚拟桌面基础设施的复杂性,比传统的虚拟桌面方案更节省成本。

用户通过客户端(Mac,Windows,平板,甚至支持Chrome或Firefox的瘦客户端)远程登陆到WorkSpaces,然后从这里访问云上的IT服务,或通过云端的出口访问Internet。

基于Proxy的解决方案

有些企业可能暂时还不能把一些IT资源迁移到云上(比如目录服务等·),或者IT上云处于评估阶段。这种情况下,部分IT基础设施部署在云端,最终用户的终端仍然在办公室,采用IT的混合架构。

由于VPC的安全保护机制[4],网络流量的源IP地址或目标IP地址两者之一必须是VPC内部的有效IP地址,否则流量包将被丢弃。这样,来自企业的网络流量路由到云上再通过云上的网络出口访问Internet是不可行的。

 

解决办法就是把这个流量拆分成两部分:把来自企业的流量的目标IP地址变成VPC的有效地址,同时把流向Internet流量的源地址变成VPC的有效IP地址。

 

通常用设置代理服务器的方法就能实现这种流量拆分,不过代理服务器可能会有安全性和兼容性上的问题,有些客户端程序可能不支持代理服务器。它不能支持纯三层流量的代理,做高可用的方案会比较复杂。

隧道+NAT方案

 

还有一种方案是结合隧道和NAT转换,通过隧道的方式把真实的目标IP地址封装起来,并在云上的软路由器内完成源地址的NAT转换。

接下来,我将在一个实验环境中对这个方案的细节进行展示。

隧道+NAT方案实验配置

在这个实验里,AWS北京区域用来模拟企业的物理IDC,AWS宁夏区域作为云,两个区域通过VPC对等[5]连接。北京区域的client要通过VPC对等连接到宁夏区域,并通过宁夏区域的Internet网关(IGW)访问Internet。

实验中用到北京区的2个私有子网(无指向IGW的默认路由),宁夏区的1个公有子网(默认路由指向IGW)。每个子网内各有一台可突增性能[6]的T2.micro类型的EC2实例,其中,router-inside和router-outside在本实验中作为软件路由器,安装了AWS Market Place上的合作伙伴提供的镜像VyOS[7]。VyOS是一个基于Linux的开源的网络操作系统,支持基于软件的网络路由,防火墙和VPN等功能。

主机名 区域 IP地址 默认的下一跳 路由器配置-
client 北京 192.168.3.111/24 router-inside
router-inside 北京 192.168.4.195/24 GRE
router-outside 宁夏 172.31.22.79/20 IGW GRE, NAT

 

下图是IP包的源地址目标地址在传输过程中的变化示意图。

 

对于router-inside来说,它要做IP包转发,因此EC2设置中要禁用源/目标检查[8]。

对于router-outside来说,如果不做源地址NAT 则流量会被丢弃。因为IP包的源地址不是宁夏区VPC内部的地址,目标地址也不是宁夏区VPC内部的地址。

宁夏区这里不能用NAT Gateway代替路由器的NAT,因为它只对源地址属于本VPC的IP包进行地址转换[9]。

 

配置完成后,下一步是登陆到client来进行验证。因为client处于私有子网,不能直接登陆,需要从公有子网的一台实例跳转登陆。

在client上执行traceroute,可以看到IP包经过router-inside和router-outside,然后通过宁夏区的IGW传向Internet。

 

下面是两个软路由器的详细设置:

vyos@router-inside:~$ show conf
interfaces {
    ethernet eth0 {
        address dhcp
    }
    tunnel tun0 {
        address 192.168.254.1/30
        encapsulation gre
        local-ip 192.168.4.195
        remote-ip 172.31.22.79
    }
}
protocols {
    static {
        route 0.0.0.0/0 {
            next-hop 192.168.254.2 {
            }
        }
        route 172.31.0.0/16 {
            next-hop 192.168.4.1 {
            }
        }
        route 192.168.0.0/21 {
            next-hop 192.168.4.1 {
            }
        }
    }
}
system {
    host-name router-inside
}
vyos@router-inside:~$

默认路由的下一跳是GRE隧道对端的IP地址192.168.254.2,由路由器控制。

到北京VPC和宁夏VPC网段的下一跳是路由器router-inside所在子网(192.168.4.0/24)的默认网关192.168.4.1,由VPC控制。

vyos@router-outside:~$ show conf
interfaces {
    ethernet eth0 {
        address dhcp
    }
    tunnel tun0 {
        address 192.168.254.2/30
        encapsulation gre
        local-ip 172.31.22.79
        remote-ip 192.168.4.195
    }
}
nat {
    source {
        rule 100 {
            outbound-interface eth0
            source {
                address 192.168.0.0/16
            }
            translation {
                address masquerade
            }
        }
    }
}
protocols {
    static {
        route 192.168.0.0/21 {
            next-hop 192.168.254.1 {
            }
        }
        route 192.168.4.195/32 {
            next-hop 172.31.16.1 {
            }
        }
    }
}
system {
    host-name router-outside
}
vyos@router-outside:~$

对所有来自北京VPC的IP包进行了源地址NAT,变成路由器的接口地址。

到北京VPC网段的下一跳是GRE隧道对端的IP地址192.168.254.1,由路由器控制。

到路由器router-inside的下一跳是路由器router-outside所在子网(172.31.16.0/20)的默认网关172.31.16.1,由VPC控制。

 

总结

本文介绍了企业通过AWS云构建IT基础环境的3种方法,并对基于隧道+NAT的方法给出了利用AWS  Market Place上的VyOS镜像进行实验的配置方法。

参考资料

  1. https://infrastructure.aws/
  2. https://www.amazonaws.cn/marketplace/help/
  3. https://www.amazonaws.cn/workspaces/
  4. https://thinkwithwp.com/answers/networking/vpc-security-capabilities/
  5. https://docs.amazonaws.cn/vpc/latest/peering/what-is-vpc-peering.html
  6. https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html
  7. https://vyos.readthedocs.io/en/latest/about.html
  8. https://docs.thinkwithwp.com/zh_cn/vpc/latest/userguide/VPC_NAT_Instance.html#EIP_Disable_SrcDestCheck
  9. https://docs.thinkwithwp.com/vpc/latest/userguide/vpc-nat-gateway.html

 

本篇作者

喻亮

AWS解决方案架构师,负责AWS云计算方案的咨询、设计和架构评估。在运维,DevOPS和DBA方面有十余年经验,目前侧重于大数据领域的研究。