亚马逊AWS官方博客

通过 AWS Lambda 和 AutoScaling 实现高可用的企业全球一张网(二)

本文为通过 AWS Lambda 和 AutoScaling 实现高可用的企业全球一张网系列文章:

本文为系列文章的第二篇。

1.    概述

随着企业全球拓展或企业并购,需要实现企业在云上多个区域的全球组网,同时由于早期缺乏规划或并购可能出现IP地址冲突,本文提供一种组网方案,利用动态路由及NAT解决全网互联互通需求。本文是方案的第二部分,重点介绍了新加坡/弗吉尼亚/法兰克福区域中如何通过Vyos与俄勒冈的TGW建立VPN通道,实现BGP动态路由并通过NAT解决IP地址重叠的问题。

1.1. 拓扑图

 

2.    创建Vyos Instance

有关创建EC2 instance可参考如下链接:

https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/EC2_GetStarted.html

如您已熟悉EC2相关内容,请直接跳过本节,进入下一节。

2.1. 创建Vyos Instance


在搜索框内输入vyos,会有Marketplace和community 两个选项,marketplace内为官方组织提供的景象,需要付费使用。Community为社区发布版本。商业使用建议使用marketplace版本,此处实验选用community版本。


社区版本具有多个版本,建议选择1.1.7以上版本,1.2版本支持ENA网卡,可提供更高的网络吞吐量。本实验选择1.1.7


Network选择创建的VPC,subnet选择一个public子网,点击next

第5步add Tag,建议增加tag方便识别及以后利用Tag执行更多操作。

第6步配置安全组,默认会放开所有地址到22端口的访问,建议只放开需要对vyos进行管理的ip地址。第7步review,点击Launch。弹出对话要求选择key pair或新建keypair。注意:keypair只有在第一次创建时能够下载,请妥善保存。本region内后续创建的instance可选择相同的key pair。点击launch instances。

2.2. 禁用Source/Destination 检查


2.3. 修改路由表,增加到远端路由

增加到远端路由,指向Vyos。

重复以上步骤,在法兰克福和弗吉尼亚各创建一台vyos instance。

佛吉尼亚 路由表

法兰克福 路由表

俄勒冈 路由表(相关路由指向TGW)

2.4. 申请EIP并关联Vyos

有关EIP内容可参考如下链接:

https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html

如您已熟悉EIP相关内容,请跳过本节,直接进入第5节。




重复以上步骤,为法兰克福和弗吉尼亚Vyos申请EIP并关联。

 

3.    配置Vyos instance建立VPN连接并解决IP地址重叠

本文第一部分的我们已经介绍了如何创建TGW并配置VPN连接,默认情况下TGW或VGW会创建2个tunnel,提供高可用,下载的配置文件中包含配置VPN及BGP的相关信息及命令。配置文件中有部分命令需要修改,并增加几条命令。下文配置过程中会列出。

3.1. SSH登录vyos

Vyos的默认用户名为vyos。进入配置模式,并修改主机名

修改完成后需要commit提交生效,并save使配置永久生效。

3.2. Singapore  Vyos配置

3.2.1.    Singapore VPN配置

直接从下载的配置文件中copy所有的配置命令,在vyos上配置模式下执行前,需要修改配置文件中如下命令

set vpn ipsec site-to-site peer x.x.x.x local-address ‘此处应修改为vyos instace的private ip’,配置文件中直接给的是public ip。

注意,两个Tunnel中均需要修改此处配置。Singapore VPN还需要增加如下配置:

set vpn ipsec ike-group AWS ikev2-reauth ‘no’

set vpn ipsec ike-group AWS key-exchange ‘ikev1’

如上两条命令执行一次即可。

set vpn ipsec site-to-site peer x.x.x.x connection-type ‘initiate’

set vpn ipsec site-to-site peer x.x.x.x ikev2-reauth ‘inherit’

这两条命令每个Tunnel中均需要增加

3.2.2.    Singapore配置NAT解决IP地址重叠

(此处配置的是网段的1:1 映射)

设置目的地址转换,当远端访问10.0.1.0/24网段时,将目的地址转换为Singapore本地的172.88.88.0/24网段。注意需要在两个Tunnel的端口上均设置转换,具体命令如下:

set nat destination rule 32 destination address '10.0.1.0/24'
set nat destination rule 32 inbound-interface 'vti1'
set nat destination rule 32 protocol 'all'
set nat destination rule 32 source address '!10.0.1.0/24'
set nat destination rule 32 translation address '172.88.88.0/24'
set nat destination rule 33 destination address '10.0.1.0/24'
set nat destination rule 33 inbound-interface 'vti0'
set nat destination rule 33 protocol 'all'
set nat destination rule 33 source address '!10.0.1.0/24'
set nat destination rule 33 translation address '172.88.88.0/24'

 

设置源地址转换,当Singapore本地172.88.88.0/24网段访问远端时,将源地址转换为10.0.1.0/24网段。

set nat source rule 32 destination address '!10.0.1.0/24'
set nat source rule 32 outbound-interface 'vti1'
set nat source rule 32 protocol 'all'
set nat source rule 32 source address '172.88.88.0/24'
set nat source rule 32 translation address '10.0.1.0/24'
set nat source rule 33 destination address '!10.0.1.0/24'
set nat source rule 33 outbound-interface 'vti0'
set nat source rule 33 protocol 'all'
set nat source rule 33 source address '172.88.88.0/24'
set nat source rule 33 translation address '10.0.1.0/24'

 

3.2.3.    Singapore配置BGP动态路由

VPN配置文件中不会自动宣告路由,需要手动宣告本地网络路由,BGP宣告的路由需要在本地路由表中存在。

添加本地路由

set protocols static route 10.0.1.0/24 next-hop 169.254.12.78 
set protocols static route 10.0.1.0/24 next-hop '169.254.14.214'
set protocols static route 172.88.0.0/24 next-hop '172.88.0.1'
set protocols static route 172.88.1.0/24 next-hop '172.88.0.1'
set protocols static route 172.88.2.0/24 next-hop '172.88.0.1'
set protocols static route 172.88.88.0/24 next-hop '172.88.0.1'

宣告BGP路由

set protocols bgp 65400 network '10.0.1.0/24'
set protocols bgp 65400 network '172.88.0.0/24'
set protocols bgp 65400 network '172.88.1.0/24'
set protocols bgp 65400 network '172.88.2.0/24'

在法兰克福和佛吉尼亚根据下载的对应VPN配置文件,重复以上除NAT和路由配置。

set protocols static route 172.88.192.0/24 next-hop '172.88.194.1'
set protocols static route 172.88.193.0/24 next-hop '172.88.194.1'
set protocols static route 172.88.194.0/24 next-hop '172.88.194.1'
set protocols bgp 65300 network '172.88.192.0/24'
set protocols bgp 65300 network '172.88.193.0/24'
set protocols bgp 65300 network '172.88.194.0/24'

3.3. Frankfurt Vyos配置

set protocols static route 172.88.192.0/24 next-hop '172.88.194.1'
set protocols static route 172.88.193.0/24 next-hop '172.88.194.1'
set protocols static route 172.88.194.0/24 next-hop '172.88.194.1'
set protocols bgp 65300 network '172.88.192.0/24'
set protocols bgp 65300 network '172.88.193.0/24'

3.4. Virginia Vyos配置

3.4.1.    Virginia NAT配置

set nat destination rule 32 destination address '192.168.1.0/24'
set nat destination rule 32 inbound-interface 'vti1'
set nat destination rule 32 protocol 'all'
set nat destination rule 32 source address '!192.168.1.0/24'
set nat destination rule 32 translation address '172.88.88.0/24'
set nat destination rule 33 destination address '192.168.1.0/24'
set nat destination rule 33 inbound-interface 'vti0'
set nat destination rule 33 protocol 'all'
set nat destination rule 33 source address '!192.168.1.0/24'
set nat destination rule 33 translation address '172.88.88.0/24'
set nat source rule 32 destination address '!192.168.1.0/24'
set nat source rule 32 outbound-interface 'vti1'
set nat source rule 32 protocol 'all'
set nat source rule 32 source address '172.88.88.0/24'
set nat source rule 32 translation address '192.168.1.0/24'
set nat source rule 33 destination address '!192.168.1.0/24'
set nat source rule 33 outbound-interface 'vti0'
set nat source rule 33 protocol 'all'
set nat source rule 33 source address '172.88.88.0/24'
set nat source rule 33 translation address '192.168.1.0/24'

3.4.2.    Virginia 路由配置

set protocols static route 172.88.88.0/24 next-hop '172.88.130.1'
set protocols static route 172.88.128.0/24 next-hop '172.88.130.1'
set protocols static route 172.88.129.0/24 next-hop '172.88.130.1'
set protocols static route 172.88.130.0/24 next-hop '172.88.130.1'
set protocols static route 192.168.1.0/24 next-hop 169.254.12.178 
set protocols static route 192.168.1.0/24 next-hop '169.254.14.6'
set protocols bgp 65200 network '172.88.128.0/24'
set protocols bgp 65200 network '172.88.129.0/24'
set protocols bgp 65200 network '172.88.130.0/24'
set protocols bgp 65200 network '192.168.1.0/24'

3.5. 配置vyos security group

完成以上配置后需要修改vyos对应的security group,以Singapore vyos为例

在EC2或VPC 服务console左侧功能栏中找到Security Groups,在右侧窗口选中创建vyos instance过程创建的security group,在底部窗口选择Inbound 标签,点击Edit,


测试阶段,建议放开ICMP流量。

 

在法兰克福和佛吉尼亚Vyos 的Security Group重复以上步骤。VPN Tunnel 对段Public IP可以通过下载的VPN配置文件中获得。

 

4.    VPN网络联通性及BGP路由检查

4.1. VPN状态检查

 

4.2. BGP检查


输入命令后,可以通过按tab健查看后续可用命令参数。

至此,我们已经实现了云上多个区域间的网络VPN连通,并通过NAT技术解决了新加坡和弗吉尼亚之间的IP地址重叠。

本篇作者

黄诚智

AWS解决方案架构师,负责基于AWS云计算方案架构的咨询和设计,在国内推广AWS云平台技术和各种解决方案。在加入AWS之前曾任职于CA,Sun和Citrix等多家大型跨国IT企业,超过24年的通信,金融企业应用系统开发和IT架构经验。

刘天龙

AWS解决方案架构师,负责支持客户完成各种Workload在AWS上的架构设计,加入AWS之前先后服务于运营商、电力等大型企业,以及Microsoft和Citrix等外企,熟悉大型网络构建及优化,迁移上云及容灾等解决方案