本文为通过 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地址重叠。
本篇作者