构建二层混合云连接:无缝迁移工作负载
IP地址不变的情况下平滑迁移到云端,同时还需要将本地数据中心的服务通过公有云的IP地址和出口提供给公众访问。如下图所示,用户本地数据中心和云端的VPC都在同一个网段10.88.8.0/24,然后虚拟机可以不变更IP地址在云端和本地之间无缝迁移。并且可以使用云提供商的公网出口资源获得BGP双线加速、WAF、DDoS高防等增值业务。
此文以国内常用的阿里云为例,帮助大家快速搭建混合云场景
1.如何构建二层互联
其实这个场景在2014年我就已经利用OpenWRT+ StrongSwan +OVS VXLAN实现过了一个大二层跨越Internet的场景。但是众所周知,大二层的场景会有一系列安全性的问题,因此我们注意到大多数场景对二层的需求实际上只是IP地址不变的平滑迁移。因此我们采用LISP协议构建了一个三层网络来实现这样的功能。
LISP,即Location-ID Separation Protocol,本质上是将设备的ID和位置信息分离的方式构建ID不变的全局漫游场景,例如有一台服务器IP地址为10.88.8.21,在LISP中我们将其称为终端ID(End-Identifier),而它归属的本地数据中心路由器的IP地址(1.1.1.2)被称为RLOC(Routing Locator)。当它在本地数据中心时在LISP中通告
10.88.8.2
1–>a.b.c.1的映射。而当它迁移到公有云后,在LISP中通告
10.88.8.2
1–>e.f.g.7的映射。这样的处理方式便可以在多云多数据中心的场景中迁移工作负载同时又不用考虑复杂的MAC学习等二层安全性的问题。
2.创建云端基础架构
2.1 云端VPC创建
我们创建VPC如下,VPC的网段为10.88.0.0/16,同时创建两个交换机,一个用于公网连接私有云,交换机名称为“二层扩展公网交换机”,网段为10.88.0.0/24,另一个为内部的业务网段交换机名称为“二层扩展业务网段8”,地址段为10.88.8.0/24. 可用区注意选择一致,例如我们选择“杭州I”作为可用区。
2.2 创建云端虚拟路由器
我们创建一个ECS实例,实例类型必须为g5ne类型,可用区也在杭州I,如下图所示:
而网络中,主网卡选择连接到“二层扩展公网交换机”上,配置10.88.0.0/24的地址段并分配公网IP,而辅助网卡连接到“二层扩展业务网段8”的交换机上,分配10.88.8.0/24的地址。
创建完成后,您可以点击这个实例,并将其公网IP地址“转换为弹性公网IP”变成静态地址。
如果您
有多个业务网段的需求,可以点击“弹性网卡”绑定新的网卡。例如我们可以创建一个新的弹性网卡,并且将私有云的服务器的IP地址信息填入”辅助私网IP“,注意这一步非常关键:
在云端VPC中,没有传统的二层MAC学习的功能,因此流量需要通过配置 “辅助私网IP” 才能牵引到我们创建的这台Catalyst8000v的虚拟机上,但是Catalyst8000v上仅配置主私网IP(10.88.8.101),而其它辅助私网IP将由LISP协议转发到本地数据中心。 |
第一次登陆后,您需要将License打开支持ikev2的IPsecVPN,配置如下,默认情况下会限制您的带宽到10Mbps,您需要联系思科销售购买软件授权。
router
hostname AliCloudL2
!
interface GigabitEtherent2
ip address 10.88.8.101 255.255.255.0
!
ip domain name cisco.com
ip name server 223.5.5.5
!
ntp server ntp.aliyun.com
clock timezone China 8
!
crypto key generate rsa modulus 4096
!
aaa new-model
aaa authentication login default local
aaa authorization exec default local
aaa authorization network default local
!
username zartbot privilege algorithm-type scrypt secret <remove>
!
line vty 0 20
privilege level 15
transport input ssh
2.3 配置IPsec VPN
如果我们在本地数据中心有运营商分配的静态地址公网地址,我们可以让本地做为VPN的HUB,但是很多客户本地静态地址难以获得,因此我们以阿里云上的虚拟路由器作为IPSecVPN的头端。 为了安全,我们需要配置基于IKEv2的FlexVPN。这里也同时Enable了NHRP,国内很多在用DMVPN的用户也可以往FlexVPN迁移了,如果阿里云作为VPN Hub需要在安全组规则中放行UDP500和UDP4500的流量和CA server的SCEP HTTP80端口流量。2.3.1 配置证书服务器及颁发证书我们以云端路由器作为CA服务器,配置如下:
AliCloudL2(config)
验证CA Server:
通过SCEP为云端路由器配置证书
AliCloudL2(config)
AliCloudL2(config)
AliCloudL2
AliCloudL2
PrivateDC(config)
AliCloudL2 2.3.2 配置Hub VPNHub FlexVPN配置如下:
interface Loopback0
ip address 172.16.0.1 255.255.255.255
!
crypto ikev2 authorization policy cloudL2_Auth
pool FlexVPNSpokes
route set interface
!
crypto ikev2 profile cloudL2
match identity remote fqdn domain cisco.com
identity local fqdn AliCloudL2.cisco.com
authentication remote rsa-sig
authentication local rsa-sig
pki trustpoint CA
aaa authorization group cert list default cloudL2_Auth
virtual-template 1
!
crypto ipsec profile cloudL2
set ikev2-profile cloudL2
!
interface Virtual-Template1 type tunnel
ip unnumbered Loopback0
ip nhrp network-id 1234
ip nhrp redirect
ip tcp adjust-mss 1360
tunnel source GigabitEthernet1
tunnel mode ipsec ipv4
tunnel path-mtu-discovery
tunnel protection ipsec profile cloudL2
!
ip local pool FlexVPNSpokes 172.16.0.100 172.16.0.254
2.3.3 配置私有云路由器PrivateDC FlexVPN配置如下:
crypto ikev2 authorization policy cloudL2_Auth
route set interface
!
crypto ikev2 profile cloudL2
match identity remote fqdn AliCloudL2.cisco.com
identity local fqdn PrivateDC.cisco.com
authentication remote rsa-sig
authentication local rsa-sig
pki trustpoint CA
aaa authorization group cert list default cloudL2_Auth
!
crypto ipsec profile cloudL2
set ikev2-profile cloudL2
!
interface Tunnel0
ip address negotiated
ip mtu 1400
ip nhrp network-id 1234
ip nhrp shortcut virtual-template 1
ip tcp adjust-mss 1360
tunnel source GigabitEthernet1
tunnel mode ipsec ipv4
tunnel destination 115.29.176.143
tunnel path-mtu-discovery
tunnel protection ipsec profile cloudL2
!
interface Virtual-Template1 type tunnel
ip unnumbered Tunnel0
ip mtu 1400
ip nhrp network-id 1234
ip nhrp shortcut virtual-template 1
ip nhrp redirect
ip tcp adjust-mss 1360
tunnel path-mtu-discovery
tunnel protection ipsec profile cloudL2
2.3.4 配置LISP所用的RLOC和路由协议Hub FlexVPN配置如下:
interface Loopback100
ip address 1.1.1.1 255.255.255.255
!
router bgp 65001
bgp log-neighbor-changes
bgp listen range 172.16.0.0/24 peer-group Spokes
neighbor Spokes peer-group
neighbor Spokes remote-as 65001
!
address-family ipv4
network 1.1.1.1 mask 255.255.255.255
neighbor Spokes activate
exit-address-family
PrivateDC FlexVPN配置如下:
interface Loopback100
ip address 1.1.1.2 255.255.255.255
!
router bgp 65001
bgp log-neighbor-changes
neighbor 172.16.0.1 remote-as 65001
!
address-family ipv4
network 1.1.1.2 mask 255.255.255.255
neighbor 172.16.0.1 activate
exit-address-family
2.4 配置LISP
在本地数据中心PrivateDC配置
router lisp
locator-set privateDC
1.1.1.2 priority 1 weight 100
exit-locator-set
!
service ipv4
itr map-resolver 1.1.1.2
etr map-server 1.1.1.2 key zartbot_is_hungry
etr
proxy-etr
proxy-itr 1.1.1.2
map-server
map-resolver
exit-service-ipv4
!
instance-id 0
dynamic-eid CLOUD_L2_SUBNET1
database-mapping 10.88.8.0/24 locator-set privateDC
map-notify-group 239.0.0.1
exit-dynamic-eid
!
service ipv4
eid-table default
exit-service-ipv4
!
exit-instance-id
!
site DATA_CENTER
authentication-key zartbot_is_hungry
eid-record 10.88.8.0/24 accept-more-specifics
exit-site
!
exit-router-lisp
阿里云LISP配置:
router lisp
locator-set alicloud
1.1.1.1 priority 1 weight 100
exit-locator-set
!
service ipv4
itr map-resolver 1.1.1.2
itr
etr map-server 1.1.1.2 key zartbot_is_hungry
etr
use-petr 1.1.1.2
exit-service-ipv4
!
instance-id 0
dynamic-eid subnet1
database-mapping 10.88.8.0/24 locator-set alicloud
map-notify-group 239.0.0.1
exit-dynamic-eid
!
service ipv4
eid-table default
exit-service-ipv4
!
exit-instance-id
!
exit-router-lisp
最后在本地和云端接入业务的接口配置
AliCloudL2(config-if)
3.验证业务
3.1 验证云端网关自动发现
在阿里云节点上检查LISP路由表,可以发现云端的网关已经被学到了而本地的节点也同样可以学到:
注意这个地址,我们需要在云端的弹性网卡辅助IP中指定它,这样才能让网关和其它主机把回程流量导入到云端的CSR此时,我们可以在云端再开一台主机,地址为10.88.8.80:
我们可以在云端的CSR上查看LISP路由信息:
并且可以从云端的这台服务器访问到本地服务器了:
《构建二层混合云连接:无缝迁移工作负载》来自互联网,仅为收藏学习,如侵权请联系删除。本文URL:http://www.bookhoes.com/86.html