背景描述
某互联网公司的业务主要集中在杭州地区,公司决定将总部地点设在杭州。同时,公司为了更好地吸引北京各高校的科技人才,特在北京设立了远程研发中心。公司使用了阿里云,计划在阿里云的杭州地域独立部署生产环境。同时,在阿里云的北京地域部署开发环境。
公司规划的阿里云上网络架构如下图所示:
北京开发环境有一个VPC:VPC-DEV(172.16.0.0/16),该VPC下有一个开发环境交换机:VSW-DEV(172.16.1.0/24),交换机中部署了一台研发服务器ECS-DEV(172.16.1.1);
杭州生产环境有一个VPC:VPC-PRD(192.168.0.0/16),该VPC下有三个交换机,分别为:WEB服务交换机VSW-WEB(192.168.1.0/24),数据库DB服务交换机VSW-DB(192.168.100.0/24),文件服务器交换机VSW-FS(192.168.200.0/24),每个交换机下均有一台ECS作为本实验架构测试使用。
网络权限要求如下:
通过VPC对等连接打通北京开发环境专有网络VPC-DEV和杭州生产环境专有网络VPC-PRD
北京开发环境的ECS-DEV可以访问杭州生产环境中的文件服务器ECS-FS的SSH服务(22端口)
杭州生产环境中的文件服务器ECS-FS可以访问杭州生产环境中的WEB服务器ECS-WEB01的SSH服务(22端口)
杭州生产环境中的WEB服务器ECS-WEB01可以访问杭州生产环境中的数据库服务器ECS-DB01的MySQL数据库服务(3306端口)
杭州生产环境中的WEB服务器ECS03对外开放WEB服务(80端口)
企业级云上网络构建实践
北京开发环境搭建
创建北京开发环境专有网络VPC-DEV(172.16.0.0/16)和开发交换机VSW-DEV(172.16.1.0/24)
复制如下链接,访问专有网络VPC控制台,点击创建专有网络。
https://vpc.console.aliyun.com/vpc/cn-beijing/vpcs
选择到北京地域下。
在弹出的创建专有网络窗口,完成如下配置后,点击确定创建开发专有网络和交换机:
专有网络地域为华北2(北京),名称为VPC-DEV,IPv4网段为172.16.0.0/16
交换机名称为VSW-DEV,可用区为北京 可用区I,IPv4网段为172.16.1.0/24
创建研发安全组SG-DEV,并配置规则允许文件服务器ECS-FS(192.168.200.1)通过TCP协议从22端口(SSH服务)进行通信。
复制如下链接,访问云服务器ECS控制台中的安全组管理页面,点击创建安全组。
https://ecs.console.aliyun.com/securityGroup/region/cn-beijing
在弹出的创建安全组窗口,完成如下配置后,点击创建安全组:
安全组名称:SG-DEV
网络:VPC-DEV
入方向访问规则,允许文件服务器ECS-FS(192.168.200.1)以及Workbench远程连接IP(100.104.0.0/16)通过TCP协议从22端口(SSH服务)进行通信:
手动添加一条规则,授权策略为允许,优先级为1,协议类型为自定义TCP,目的端口为SSH(22),源:192.168.200.1,100.104.0.0/16
删除其它TCP协议类型规则
【注意】通过Workbench进行ECS实例的远程连接时,需要对固定的源IP网段开放22端口,其中:
如果通过实例的公网IP(包括固定公网IP和EIP)进行远程连接:添加47.96.60.0/24和118.31.243.0/24。
如果通过实例的专有网络私网IP进行远程连接:添加100.104.0.0/16。
创建研发服务器ECS-DEV(172.16.1.1)
复制如下链接,访问云服务器ECS控制台页面,点击创建实例。
ECS-DEV创建配置如下:
北京开发环境与杭州生产环境的跨地域文件传输网络
复制如下链接,打开专有网络中的VPC对等连接页面,第一次使用可能需要开通CDT功能权限,确定开通后,点击刷新按钮,即可进行接下来的创建VPC对等连接操作。
在弹出的创建对等连接页面完成如下配置,并点击确定,完成创建:
对等连接名称:PEER-PRD-DEV
发起端VPC实例:VPC-PRD
接收端账号类型:同账号
接收端地域类型:跨地域
接收端地域:华北2(北京)
接收端VPC实例:VPC-DEV
【说明】:VPC-PRD实例ID可通过左侧云产品资源列表查看。VPC-DEV请根据刚刚创建的VPCID进行选择。
点击左侧菜单中的VPC对等连接,找到刚刚创建的对等连接PEER-PRD-DEV,可以看到发起端为杭州的VPC-PRD,接收端为北京的VPC-DEV,接下来我们需要分别配置发起端和接收端VPC实例的路由条目。
点击发起端VPC实例配置路由条目,因为发起端为VPC-PRD(192.168.0.0/16),接收端为VPC-DEV(172.16.0.0/16),其中需要联通VSW-FS(192.168.200.0/24)和VSW-DEV(172.16.1.0/24),所以发起端的目标网段为VSW-DEV(172.16.1.0/24),详细配置如下:
路由条目名称:R-FS-DEV
目标网段:172.16.1.0/24
点击接收端VPC实例配置路由条目,因为发起端为VPC-PRD(192.168.0.0/16),接收端为VPC-DEV(172.16.0.0/16),其中需要联通VSW-FS(192.168.200.0/24)和VSW-DEV(172.16.1.0/24),所以接收端的目标网段为VSW-FS(192.168.200.0/24),详细配置如下:
路由条目名称:R-DEV-FS
目标网段:192.168.200.0/24
复制如下链接,并粘贴至右侧远程桌面中的浏览器中,打开ECS控制台中的安全组页面(杭州地域),找到文件服务器安全组SG-FS,点击右侧操作列中的配置规则按钮,进行规则配置。
https://ecs.console.aliyun.com/securityGroup/region/cn-hangzhou
在入方向规则配置中,手动添加一条规则,放行从开发服务器ECS-DEV(172.16.1.1)访问SSH(22)服务:允许,1,自定义TCP,目的端口:SSH(22),源:172.16.1.1,点击保存完成配置。
通过Workbench分别远程连接开发服务器ECS-DEV(172.16.1.1)与文件服务器ECS-FS(192.168.200.1)
远程连接后,分别在两台服务器中进行如下测试:
在开发服务器ECS-DEV(172.16.1.1)中通过SSH远程登录文件服务器ECS-FS(192.168.200.1):ssh 192.168.200.1
在文件服务器ECS-FS(192.168.200.1)中通过SSH远程登录开发服务器ECS-DEV(172.16.1.1):ssh 172.16.1.1
杭州生产环境WEB服务访问控制
复制如下链接,打开云服务器ECS控制台中的安全组页面,找到数据库服务器所在的安全组SG-WEB01,点击右侧操作列中的配置规则。
https://ecs.console.aliyun.com/securityGroup/region/cn-hangzhou
在入方向规则配置中,手动添加如下两条规则:
放行WEB服务器ECS-WEB01(192.168.1.1)的WEB服务端口HTTP(80)访问:允许,1,自定义TCP,目的端口:HTTP(80),源:0.0.0.0/0,点击保存
允许从文件服务器ECS-FS(192.168.200.1)通过SSH服务(22端口)访问:允许,1,自定义TCP,目的端口:SSH(22),源:192.168.200.1,点击保存
在云服务器ECS控制台获取ECS-WEB01的公网IP,并复制到本地浏览器进行访问测试,如可以看到”ECS-WEB01页面“说明已经开放了WEB服务的80端口:
在云服务器ECS控制台通过Workbench远程连接文件服务器ECS-FS,并通过SSH(22端口)服务远程连接WEB服务器ECS-WEB01(192.168.1.1):ssh 192.168.1.1
杭州生产环境数据库服务访问控制
复制如下链接,打开云服务器ECS控制台中的安全组页面,找到数据库服务器所在的安全组SG-DB01,点击右侧操作列中的配置规则。
https://ecs.console.aliyun.com/securityGroup/region/cn-hangzhou
在入方向规则配置中,手动添加一条规则,放行从WEB服务器ECS-WEB01(192.168.1.1)访问MySQL(3306)服务:允许,1,自定义TCP,目的端口:MySQL(3306),源:192.168.1.1,点击保存完成配置。
点击左侧实例与镜像中的实例页面,找到云服务器ECS-DB01,通过Workbench进行远程连接。
远程连接成功后,通过如下命令本地登录数据库服务,输入正确密码(初始管理员root用户密码为Test123!)后,显示”mysql>“,可输入SQL命令进行数据库操作:
mysql -uroot -p
【注意】提示:如上述命令,”-u“参数为指定MySQL的登录用户名,”-p“参数为指定密码。
成功登录MySQL后,通过如下命令创建一个可远程登录的web用户:
create user 'webuser'@'192.168.1.1' identified with mysql_native_password by 'Test_123';
flush privileges;
【提示】:create user命令创建了一个名为webuser的用户,该用户仅可从192.168.1.1的源IP地址进行访问,登录密码为Test_123,flush privileges命令为刷新权限使配置立即生效。
测试通过ECS-WEB01远程访问ECS-DB01的MySQL服务,远程连接ECS-WEB01实例。通过如下命令安装MySQL客户端:
yum install -y mysql
远程连接ECS-WEB01成功后,通过如下命令测试是否能够成功登录ECS-DB01中的MySQL服务:
mysql -h192.168.100.1 -uwebuser -pTest_123
如上图所示,说明已经成功通过ECS-WEB01连接ECS-DB01的数据库。
复制如下链接,打开专有网络VPC控制台中的网络ACL页面(杭州地域),点击创建网络ACL。
https://vpc.console.aliyun.com/nacl/cn-hangzhou/nacls
在弹出的创建网络ACL页面中,进行如下配置后,点击确定:
所属网络ACL:VPC-PRD
名称:ACL-DB
找到刚刚创建的网络ACL:ACL-DB,点击右侧操作列中的关联交换机,选择ECS-DB01所在的交换机VSW-DB01,点击确定关联。
设置网络ACL入方向规则配置:在ACL-DB的配置页面中点击入方向规则,点击管理入方向规则。添加入下两条规则:
优先级1,策略允许,协议类型TCP,源地址192.168.1.1/32,目的端口3306/3306
优先级2,策略拒绝,协议类型ALL,源地址0.0.0.0/0
【说明】:优先级生效顺序:值越小,规则的优先级越高。系统从生效顺序为1的规则开始判断,只要有一条规则与流量匹配,即应用该规则,并忽略其他规则。
例下图所示,入方向规则中,来自源地址为192.168.1.1的请求,访问3306目的端口的TCP协议数据包,在经过如下表所示的ACL规则配置后,匹配生效顺序1和生效顺序2规则中的源地址,由于生效顺序1的优先级高于生效顺序2,所以会根据生效顺序1规则允许该请求。
设置网络ACL出方向规则配置:在ACL-DB的配置页面中点击出方向规则,点击管理出方向规则。添加入下两条规则:
优先级1,策略允许,协议类型TCP,目的地址192.168.1.1/32,目的端口1/65535
优先级2,策略拒绝,协议类型ALL,目的地址0.0.0.0/0
【提示】:注意ECS-WEB01会使用一个随机端口访问ECS-DB01的MySQL服务(3306端口),所以这里设置的目的端口不能仅设置为3306/3306,而是1/65535
重新远程连接ECS-WEB01,并通过如下命令测试是否能够成功登录ECS-DB01中的MySQL服务:
mysql -h192.168.100.1 -uwebuser -pTest_123
如上图所示,说明在成功设置了安全组SG-DB01、ACL-DB后还是可以成功通过ECS-WEB01连接ECS-DB01的数据库。