实现裸金属服务器的安全微分段

£可爱£侵袭症+ 提交于 2020-01-31 11:32:19

在上一篇分享中,我向各位演示了开源的OpenStack平台与NSX DC集成场景下,当用户在Horizon图形界面或者命令行执行了配置操作后,NSX DC是如何通过Neutron Plugin来响应这些操作,并借助逻辑网络、安全微分段等组件为OpenStack平台构建软件定义的网络与安全的。

我们已经知道,相对于只面向vSphere环境的NSX for vSphere,NSX DC产品中的NSX-T能应对多种异构的Hypervisor和平台,其中除了OpenStack之外,也包括了裸金属服务器。

拿目前最新的NSX-T2.4.1来说,如果管理员尝试添加一台独立的主机传输节点,在下拉菜单中可以看到NSX-T支持的裸金属服务器操作系统清单:

  • Rad Hat Enterprise Linux操作系统

  • Ubuntu操作系统

  • CentOS操作系统

  • SUSE Linux Enterprise操作系统

这里需要注意两点:

  • 显而易见的第一点是,NSX-T暂时不支持裸金属服务器部署Windows操作系统的场景;

  • 隐含的第二点是,NSX-T对于支持的Linux操作系统是有一定的版本要求的,管理员可以查阅VMware官方网站获取兼容性列表:https://docs.vmware.com/cn/VMware-NSX-T-Data-Center/2.4/installation/GUID-26D8A6AE-FC16-428D-8A11-6A581091F2CF.html

现在我们不妨来猜测一下,NSX DC是如何来实现针对裸金属服务器网络与安全统一纳管的。

对于一台裸金属服务器来说,既然要被添加作为NSX DC的一台主机传输节点,说明必然满足以下2个条件:

  • 一般会拥有2个物理网卡,其中1块用于承载管理流量;如管理员访问、与NSX DC Manager之间的通信等;另1块作为承载Overlay业务流量来使用。

  • 在该裸金属服务器被添加作为主机传输节点后,包括VSIP Module在内的逻辑交换、路由、分布式防火墙以及MPA、LCP均会在裸金属服务器运行。

如果就考虑上述情况,分布式防火墙要么作用在管理地址,要么作用在VTEP地址;可事实真的如此么?

我首先演示如何将一台操作系统符合兼容性列表定义的裸金属服务器添加作为NSX DC的主机传输节点。

以Ubuntu16.04操作系统为例:

  • 完成网络初始化配置,配置管理网络,如192.168.19.11

  • 阅读官方文档,下载并安装以下软件包:

    # apt-get install -y libunwind8 libgflags2v5 libgoogle-perftools4 traceroute python-mako python-simplejson python-unittest2 python-yaml python-netaddr libboost-filesystem1.58.0 libboost-chrono1.58.0 libgoogle-glog0v5 dkms libboost-date-time1.58.0 python-protobuf python-gevent libsnappy1v5 libleveldb1v5 libboost-program-options1.58.0 libboost-thread1.58.0 libboost-iostreams1.58.0 libvirt0 python-openssl

  • 将该Ubuntu主机添加作为传输节点

  • 建议记录指纹信息jWZWStrUVsCsqrwp/KlcHRjjgmIyGe4nSdrClLjO3Ik=,因为一旦安装出现错误,如缺少了某个软件包,需要管理员重新验证指纹信息

  • 等待传输节点添加完成 

  • 重复上述步骤,一共添加2台Ubuntu裸金属服务器,分别为FRONT和MYSQL。

接下来,我们以FRONT服务器为例,来查看他的网络配置:

可以看到,这台服务器拥有2个IP地址,ens160承载的管理地址,以及NSX VTEP地址。显然,这两个地址不可能成为分布式防火墙作用的IP地址,也不可能作为业务网络地址与其他的服务器通信。那么,我们该如何处理裸金属服务器的这种情况呢?

相信很多熟悉OpenvSwitch的朋友,一定听说过Virtual Ethernet这类接口。其实NSX DC在裸金属服务器的场景中,就是通过创建vETH来实现业务网络的软件定义和安全微分段的功能。

VMware官方文档给出了配置vETH的链接;我就简单演示一下大致的配置流程:

  • 创建一个Overlay逻辑交换机,如Dev-Web-Tier-Tenant1

  • 获取NSXMGR的指纹信息,如:

    dee8593243c63f03465ffb96cb63b7f7181877f7d939d6e18d51e3be0c496dc

  • 编辑hosts文件,更新如下字段:

目标主机用户名和密码

目标主机的管理地址,虚拟接口VETH的IP地址以及上联逻辑交换机名称

NSXMGR的地址、登录凭据和指纹

  • 执行ansible脚本前,建议验证网络连通性

执行ansible脚本,并等待结果

  • 在NSXMGR验证端口是否已经正常激活

  • 此时,在FRONT这台服务器的命令行,通过命令可以查看它拥有了一个IP地址为192.168.10.21/24的vETH,并且已经连接到了预先创建的Overlay逻辑交换机Dev-Web-Tier上。

如下图所示,裸金属服务器接收NSX DC的统一纳管,是通过创建并配置vETH来实现的。

现在我已经将FRONT和MYSQL两台裸金属服务器分别通过vETH连接到了Dev-Web-Tier和Dev-DB-Tier逻辑交换机,并且配置了LAMP业务。

通过在NSX DC Manager的简单配置,可以创建3条分布式防火墙规则:

如上图所示,管理员可以针对逻辑接口进行分布式防火墙的配置,允许任意网络通过HTTP访问前端服务器,但是只允许前端服务器来访问数据库。其实,当裸金属服务器通过vETH连接到逻辑交换机后,后续的配置就和虚拟机并无不同。

如下图所呈现的那样,管理员可以正常访问LAMP业务,但是无法PING通FRONT服务器的业务地址192.168.10.21/24,说明我的安全微分段策略是有效的。

通过今天的分享,相信各位对NSX DC纳管裸金属服务器的实现方式一定有所了解。在NSX DC的使用场景中,还有一个非常重要的内容,就是云原生网络。在后续的介绍中,我将分享NSX DC与容器集成的简单演示,欢迎届时关注。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!