RDS SQL Server提供的Linked Server能力可以在RDS实例之间建立Linked Server,并且在网络连通的前提下,也支持与云下自建的SQL Server建立Linked Server,可用于跨区域数据访问、数据合并与分析以及数据迁移与同步等场景。本文介绍如何通过VPN在RDS SQL Server上建立Linked Server,以连接到云下自建的SQL Server。
前提条件
RDS SQL Server实例需满足如下条件:
实例规格:通用型、独享型(不支持共享型)
计费方式:包年包月或按量付费(不支持Serverless实例)
实例状态:运行中
在部署VPN网关前,您需要进行网络规划:
确保本地移动设备和云上专有网络VPC内需要访问的私网IP地址段不能相同,否则无法通信。
确保客户端能够访问网络。
费用说明
部署VPN网关将产生费用。更多信息,请参见计费说明。
1. 通过VPN打通RDS SQL Server所在VPC和云下机器的网络连接通道
1.1. 创建VPN网关实例
登录VPN网关管理控制台。
在顶部菜单栏,选择VPN网关实例所属的地域。
需确保VPN网关实例的地域和待关联的VPC实例的地域相同。
在VPN网关页面,单击创建VPN网关。
在购买页面,根据以下信息进行配置,然后单击立即购买并完成支付。
配置项
说明
实例名称
输入VPN网关实例的名称。
资源组
选择VPN网关实例所属的资源组。
如果不选择,VPN网关实例创建完成后归属于默认资源组。您可以在资源管理控制台管理VPN网关实例以及其他云产品资源所属的资源组。更多信息,请参见什么是资源管理。
地域和可用区
显示要创建VPN网关实例的地域。
需确保VPN网关实例的地域和待关联的VPC实例的地域相同。
网关类型
选择VPN网关实例的类型。
普通型:选择该类型IPsec-VPN连接将使用国际标准商用密码算法(普通算法)。
国密型:选择该类型IPsec-VPN连接将使用中国国产商用密码算法(国密算法)。
说明使用国密型VPN网关时,国密型VPN网关需要关联SSL证书进行数据加密和身份认证。更多信息,请参见管理SSL证书。
网络类型
选择VPN网关实例的网络类型。
公网:VPN网关通过公网建立VPN连接。
私网:VPN网关通过私网建立VPN连接。
说明如果您需要基于私网建立VPN连接,更推荐您使用私网IPsec连接绑定转发路由器的方式。具体操作,请参见建立多条私有IPsec-VPN连接实现私网流量的负载分担。
隧道
系统直接展示当前地域支持的IPsec-VPN连接的隧道模式。
单隧道
双隧道
关于IPsec-VPN连接隧道模式的说明,请参见绑定VPN网关场景双隧道IPsec-VPN连接说明。
VPC
选择VPN网关实例关联的VPC实例。
虚拟交换机1
从VPC实例中选择一个交换机实例。
IPsec-VPN连接的隧道模式为单隧道时,您仅需要指定一个交换机实例。
IPsec-VPN连接的隧道模式为双隧道时,您需要指定两个交换机实例。
IPsec-VPN功能开启后,系统会在两个交换机实例下各创建一个弹性网卡ENI(Elastic Network Interfaces),作为使用IPsec-VPN连接与VPC流量互通的接口。每个ENI会占用交换机下的一个IP地址。
说明系统默认帮您选择第一个交换机实例,您可以手动修改或者直接使用默认的交换机实例。
创建VPN网关实例后,不支持修改VPN网关实例关联的交换机实例,您可以在VPN网关实例的详情页面查看VPN网关实例关联的交换机、交换机所属可用区以及交换机下ENI的信息。
虚拟交换机2
IPsec-VPN连接的隧道模式为双隧道时,从VPC实例中选择第二个交换机实例。
您需要从VPN网关实例关联的VPC实例下指定两个分布在不同可用区的交换机实例,以实现IPsec-VPN连接可用区级别的容灾。
对于仅支持一个可用区的地域 ,不支持可用区级别的容灾,建议您在该可用区下指定两个不同的交换机实例以实现IPsec-VPN连接的高可用,支持选择和第一个相同的交换机实例。
带宽规格
选择VPN网关实例的带宽规格。单位:Mbps。
IPsec-VPN
选择开启或关闭IPsec-VPN功能。默认值:开启。
建立IPsec-VPN连接时需开启本功能。
SSL-VPN
选择开启或关闭SSL-VPN功能。默认值:关闭。
建立IPsec-VPN连接时无需开启本功能。
计费周期
选择购买时长。
您可以选择是否自动续费:
按月购买:自动续费周期为1个月。
按年购买:自动续费周期为1年。
服务关联角色
单击创建关联角色,系统自动创建服务关联角色AliyunServiceRoleForVpn。
VPN网关使用此角色来访问其他云产品中的资源,更多信息,请参见AliyunServiceRoleForVpn。
若本配置项显示为已创建,则表示您当前账号下已创建了该角色,无需重复创建。
VPN网关实例创建完成后,系统会为VPN网关实例分配IP地址,用于和本地数据中心建立IPsec-VPN连接。
后续步骤
为建立IPsec-VPN连接,VPN网关实例创建完成后,您还需要创建用户网关,将本地网关设备的信息(例如IP地址、BGP AS号)注册到阿里云上。具体操作,请参见创建和管理用户网关。
1.2. 创建SSL服务端
登录VPN网关管理控制台。
在左侧导航栏,选择 。
在顶部菜单栏,选择SSL服务端的地域。
在SSL服务端页面,单击创建SSL服务端。
在创建SSL服务端面板,根据以下信息配置SSL服务端,然后单击确定。
配置
说明
名称
输入SSL服务端的名称。
资源组
选择VPN网关所属的资源组。
SSL服务端所属的资源组与VPN网关所属的资源组保持一致。
VPN网关
选择要关联的VPN网关。
确保该VPN网关已经开启了SSL-VPN功能。
本端网段
本端网段是客户端通过SSL-VPN连接要访问的地址段。
本端网段可以是专有网络VPC(Virtual Private Cloud)的网段、交换机的网段、通过物理专线和VPC互连的本地数据中心的网段、云服务(例如对象存储、云数据库)等的网段。
单击+添加本端网段可添加多个本端网段,最多支持添加5个本端网段。 以下网段不支持指定为本端网段:
100.64.0.0~100.127.255.255
127.0.0.0~127.255.255.255
169.254.0.0~169.254.255.255
224.0.0.0~239.255.255.255
255.0.0.0~255.255.255.255
说明本端网段的子网掩码位数在8至32位之间。
客户端网段
客户端网段是给客户端虚拟网卡分配访问地址的网段,不是指客户端已有的内网网段。当客户端通过SSL-VPN连接访问本端时,VPN网关会从指定的客户端网段中分配一个IP地址给客户端使用,客户端将使用分配的IP地址访问云上资源。
在您指定客户端网段时需保证客户端网段所包含的IP地址个数是当前VPN网关SSL连接数的4倍及以上。
重要客户端网段的子网掩码位数在16至29位之间。
请确保客户端网段与本端网段、VPC网段以及与客户端终端关联的任何路由网段均没有重叠。
在指定客户端网段时,建议您使用10.0.0.0/8、172.16.0.0/12和192.168.0.0/16网段及其子网网段。如果您的客户端网段需要指定为公网网段,您需要将公网网段设置为VPC的用户网段,以确保VPC可以访问到该公网网段。关于用户网段的更多信息,请参见什么是用户网段?和如何配置用户网段?。
创建SSL服务端后,系统后台会自动将客户端网段的路由添加在VPC实例的路由表中,请勿再手动将客户端网段的路由添加到VPC实例的路由表,否则会导致SSL-VPN连接流量传输异常。
高级配置
协议
SSL-VPN连接使用的协议。取值:
UDP
TCP(默认值)
端口
SSL服务端使用的端口。端口取值范围:1~65535。默认端口:1194。
说明不支持使用以下端口:22、2222、22222、9000、9001、9002、7505、80、443、53、68、123、4510、4560、500、4500。
加密算法
SSL-VPN连接使用的加密算法。
如果客户端使用Tunnelblick软件或2.4.0及以上版本的OpenVPN软件,则SSL服务端和客户端之间动态协商加密算法,会优先使用双方均支持的最高安全级别的加密算法。您为SSL服务端指定的加密算法不生效。
如果客户端使用2.4.0之前版本的OpenVPN软件,则SSL服务端和客户端将使用您为SSL服务端指定的加密算法。SSL服务端支持指定以下加密算法:
AES-128-CBC(默认值)
AES-192-CBC
AES-256-CBC
none
本参数表示不使用加密算法。
是否压缩
是否对传输数据进行压缩处理。取值:
是
否(默认值)
双因子认证
选择是否开启双因子认证功能。系统默认关闭双因子认证功能。
如果选择开启双因子认证功能,您还需要选择应用身份服务IDaaS(Identity as a Service)EIAM实例和IDaaS应用ID。开启双因子认证功能后,客户端与VPN网关之间建立SSL-VPN连接时,系统将会对客户端进行二次认证。第一次为默认的SSL客户端证书的认证,客户端通过SSL客户端证书认证后,系统将使用IDaaS实例中的用户名和密码对客户端进行第二次认证(不支持通过IDaaS短信认证功能对客户端进行第二次认证),第二次认证通过后才会建立SSL-VPN连接,该功能有效提高了SSL-VPN连接的安全性。相关教程,请参见SSL-VPN双因子认证。
如果您是首次使用双因子认证功能,请先完成授权后再开启双因子认证功能。
在阿联酋(迪拜)地域创建SSL服务端时,推荐您绑定新加坡地域的IDaaS EIAM 2.0实例,以减少跨地域时延。
IDaaS EIAM 1.0实例不再支持新购。如果您的阿里云账号下存在IDaaS EIAM 1.0实例,开启双因子认证功能后,依旧支持绑定IDaaS EIAM 1.0实例。
如果您的阿里云账号下不存在IDaaS EIAM 1.0实例,开启双因子认证功能后,仅支持绑定IDaaS EIAM 2.0实例。
在您绑定IDaaS EIAM 2.0实例时,可能需要对VPN网关实例进行升级。更多信息,请参见【变更公告】SSL-VPN双因子认证支持IDaaS EIAM 2.0。
说明
1.3. 创建SSL客户端证书
登录VPN网关管理控制台。
在左侧导航栏,选择 。
- 在顶部菜单栏,选择SSL客户端的地域。
在SSL客户端页面,单击创建SSL客户端。
在创建SSL客户端面板,根据以下信息配置SSL客户端证书,然后单击确定。
配置
说明
名称
输入SSL客户端证书的名称。
资源组
选择SSL服务端所属的资源组。
SSL客户端证书与SSL服务端所属的资源组保持一致。
SSL服务端
选择要关联的SSL服务端。
1.4. 下载SSL客户端证书
登录VPN网关管理控制台。
在左侧导航栏,选择 。
- 在顶部菜单栏,选择SSL客户端的地域。
在SSL客户端页面,找到目标SSL客户端证书,在操作列单击下载证书。
1.5. 配置客户端
下载并安装OpenVPN客户端。
解压下载的证书,并复制到OpenVPN安装目录的config文件夹中。
单击Connect发起连接。
1.6. 测试连接
2. 在RDS SQL Server上创建Linked Server
通过SQL Server Management Studio(SSMS)连接RDS SQL Server实例。具体操作,请参见连接SQL Server实例。
在SQL Server Management Studio(SSMS)中执行如下命令。
DECLARE @linked_server_name sysname = N'myTestLinkedServer', @data_source sysname = N'10.10.0.10,1433', --style: 10.1.10.1,1433 @user_name sysname = N'ay15' , @password nvarchar(128) = N'***', @source_user_name sysname = N'test', @source_password nvarchar(128) = N'***', @link_server_options xml = N' <rds_linked_server> <config option="data access">true</config> <config option="rpc">true</config> <config option="rpc out">true</config> </rds_linked_server> ' EXEC sp_rds_add_linked_server_for_local @linked_server_name, @data_source, @user_name, @password, @source_user_name, @source_password, @link_server_options
参数说明如下:
参数
说明
@linked_server_name
Linked Server的名称。
@data_source
自建SQL Server数据库的IP和端口号,格式为:
<IP>,<端口>
。@user_name
自建SQL Server数据库的用户名。
@password
自建SQL Server数据库用户名对应的密码。
@source_user_name
当前RDS SQL Server数据库的用户名。
@source_password
当前RDS SQL Server数据库用户名对应的密码。
@link_server_options
连接服务器的其他可选项。
执行如下命令测试Linked Server:
SELECT * FROM [myTestLinkedServer].master.sys.servers