VPC网络规划的关键技术分析
一、vxLan技术的应用
经典网络的问题
传统IDC一般采用基于Vlan的经典网络,其特点是:
- 首先进行安全规划划分为若干个安全域,一个维度是用户归属的管理权限,例如每个法人主体各自一个安全域;另一个维度是安全级别,例如互联网接口域、DMZ域、核心域等
- 为每个安全域设立硬件防火墙,确保网络资源的物理隔离
- 在每个安全域内部,所有用户共享公共网络资源池,用户之间不做逻辑隔离,或者基于
VLan进行逻辑隔离。用户的内网IP由系统统一分配,相同的内网IP无法分配给不同用户。
但是,对于大规模的公有云来说,如果采用VLAN,每个用户一个二层网络,那最多只能带4096多个用户,公有云许多用户还是只有1-2个云主机那种,那必然不能满足公有云的需求,所以在早期的经典网络模式下,不得不让多个用户挤在一个二层网络里面,仅仅要确保IP地址不重合,就是一件非常困难的事情,更无法实现细粒度的网络隔离和安全控制。
VxLan的协议格式
虚拟可扩展局域网(VXLAN)是一项网络虚拟化覆盖技术。通过在 IP-UDP 隧穿封装中使用 MAC,它可在共享第 3 层底层基础设施网络上,提供第 2 层扩展。在覆盖网络中获得第 2 层扩展的目的是,消除物理服务器堆叠现象,或突破地理位置界线,并且在数据中心内部或数据中心间,灵活地部署工作负载。
最初的 IETF VXLAN 标准(RFC7348)定义了一个基于组播的洪泛和学习 VXLAN,无控制平面。它依靠数据驱动的洪泛和学习行为,来发现远程 VTEP 对等设备和学习远端主机。覆盖广播,即未知单播和组播(BUM)流量被封装到组播 VXLAN 分组中,通过底层组播转发,传送到远程 VTEP 交换机。这种部署中,洪泛会给解决方案可扩展性带来挑战。此外,该解决方案的另一问题是,需要在底层网络中启用组播功能,而部分机构不希望在数据中心和/或广域网中启用组播。
- VXLAN数据包封装在UDP中,使用物理网络的IP和MAC地址为头部进行封装,网络通信而言只是个参数。
- VXLAN标准灰色部分有VNID即VNI,24bits支持千万级别。
- 通过UDP延伸二层网络,用户可以自定制虚拟化网络,不需要关注虚拟机的MAC地址。
虽然VXLAN协议通过UDP NVO3技术解决了网络扩展和迁移的问题,但是也会有一些缺点:
- 因为采用的UDP延伸二层网络,它执行的是租户的执行隔离而流量完全没有加密,最直接的方案是通过IPsec进行加密,因为流量加密对于公有云来说很重要!!!
- VXLAN协议添加了很多字节固定开销。
- 多播和组播基于VXLAN协议下要特别考虑网络洪泛BUM影响问题和网络设计,多播在Linux不可用时可以考虑BGP EVPN的方式。
- Linux VXLAN不支持IGMP,可以通过FDB实现方式来解决。
- 由于VXLAN是一个通用的网络协议标准,各厂商对VXLAN实现的协议标准的保留字段会有不一致的地方,当使用华为和华三的网络设备业务层面需要抽象另外一层来实现解耦。
VxLan的网络模型
Overlay和Underlay网络:物理网络作为Underlay网络,在其上构建出 虚拟的二层或三层网络,即Overlay网络。OverLay是基于隧道实现的,流量需要跑在UnderLay之上。NVE:实现网络虚拟化的网络实体,报文经过NVE封装转换后,NVE间就可基于三层网络建立二层虚拟化网络。VTEP隧道终点:封装在NVE实体中,主要用于VXLAN报文的封装和解装,一个VTEP地址对应一个VXLAN隧道,VXLAN报文中的源IP地址为本节点的VTEP地址,目的ip地址为对端VTEP地址。VNI:网络标识,主要用于区分VXLAN段,租户和VNI映射。
小结
Overlay网络的优点简单说就两句话:一是在三层网络中利用封装技术提高二层网络扩展性的同时规避了传统二层网络的种种弊端;二是通过引入VNID的概念,满足了云计算多租户vlan不够,以及租户间网络隔离的问题。
Overlay技术的诞生实际就是为了解决云计算大环境下传统网络的种种问题,从它的技术构想到落地方案都是按照云计算的思路来的,所以对于一个规模较小且相对稳定的网络环境中是没有必要用overlay技术的,用了反而把网络搞复杂了。
Overlay的所有技术路线中,VXLAN的运用最广泛,得到了最多的主流网络厂商的支持,未来很长一段时间里很可能成为overlay技术的代名词;
二、网络ACL VS 安全组
防火墙主要是做南北向的访问控制,作用范围是VPC及其子网;安全组主要是做东西向的访问控制,作用范围是虚拟机网卡。
从流量的角度来看,VPC访问路径依次是:
外部网络 –> VPC路由器 –> 所在子网的ACL过滤–> 虚拟机网卡的安全组过滤 –> 业务应用
ACL的工作方式
- 防火墙作用在VPC路由器上,属于集中式的VPC边缘设备,为整个VPC提供访问控制。防火墙的配置是动态生效的,即时的配置会马上作用到VPC路由器接口;
- 数据包进入防火墙时,根据规则集的规则优先级进行逐条匹配,如果匹配上了,则执行规则的行为;如果没有匹配上,则执行规则集的默认行为。
- 防火墙可以针对不同报文状态来进行过滤,如new、established、invalid、related;也可以针对常见的协议,如TCP、UDP、VRRP、ICMP等。同时,如果协议是TCP或者ICMP,防火墙提供了更加细粒度的过滤规则,能够针对ICMP的类型、TCP的flag进行匹配,进一步细化策略,满足更多的使用场景。
安全组的工作方式
Linux网络虚拟化支持linux bridge以及openvswitch(简称OVS),OpenStack Neutron ml2驱动二者都支持,目前大多数使用的是OVS。
不过早期的iptables不支持OVS bridge以及port,因此为了实现安全组,虚拟机的tap设备并不是直接连接到OVS bridge上,而是中间加了一个Linux bridge,通过veth pair连接Linux bridge以及OVS bridege,这样就可以在Linux bridge上添加iptables规则实现安全组功能了。
- 安全组作用于虚拟机的虚拟网卡上,给虚拟机提供三层网络的访问控制,支持入方向、出方向的过滤;
- 安全组是一个分布式的访问控制,可以对TCP/UDP/ICMP等协议进行有效过滤;也可以直接匹配所有协议;可以根据数据包的源IP进行过滤。
小结2
从安全的角度来看,在离威胁源更近的地方进行防护是更好的方式。
一般来说,南北向交给防火墙来做,安全组作为防火墙的补充,是云主机安全的最后防线。
安全组和防火墙是相辅相成的,两者有机结合,才能够更好的做云主机的安全防护。