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 网关仅支持创建双隧道模式的 IPsec-VPN 连接。针对已创建的支持单隧道模式的 VPN 网关,建议升级IPsec-VPN连接为双隧道模式。
控制台
前往VPN 网关 - 购买页,配置以下参数:
地域和可用区:选择 VPC 所在的地域。
网关类型:选择普通型,建立 IPsec 连接后将使用国际标准商用密码算法(普通算法)。
网络类型:选择公网,将分配公网 IP 以建立 IPsec 连接。如需建立私网 IPsec 连接,建议使用私网 IPsec 连接绑定转发路由器。
隧道:选择双隧道。
需选择关联的 VPC 和部署于不同可用区的 2 个交换机,确保跨可用区的高可用。开启 IPsec-VPN 后,系统会在 2 个交换机下各创建 1 个弹性网卡ENI,作为使用 IPsec 连接与 VPC 流量互通的接口。每个 ENI 会占用交换机下的 1 个 IP地址。
对于仅支持单可用区的地域 ,无法实现可用区级别的容灾。建议在该可用区下指定 2 个不同的交换机以实现 IPsec 连接的高可用。
创建 VPN 网关后,不支持修改关联的交换机。
带宽规格:不同地域下,VPN 网关支持的最大带宽规格不同。选择 5Mbps 或 10 Mbps 的带宽规格,将限制从本地数据中心去往 VPN 网关方向的带宽峰值为 10 Mbps。
开启IPsec-VPN,关闭SSL-VPN。
如果创建的 VPN 网关未开启 IPsec-VPN,可在目标 VPN 网关的功能配置列单击IPsec连接后的去开启。
API
调用CreateVpnGateway创建 VPN 网关。
1.2. 创建SSL服务端
登录VPN网关管理控制台。
在左侧导航栏,选择。
在顶部菜单栏,选择SSL服务端的地域。
SSL服务端的地域需和VPN网关实例所属地域相同。
在SSL服务端页面,单击创建SSL服务端。
在创建SSL服务端面板,根据以下信息配置SSL服务端,然后单击确定。
配置
说明
名称
输入SSL服务端的名称。
资源组
选择VPN网关所属的资源组。
SSL服务端所属的资源组与VPN网关所属的资源组保持一致。
VPN网关
选择要关联的VPN网关。
确保该VPN网关已经开启了SSL-VPN功能。
本端网段
本端网段是客户端通过SSL-VPN连接要访问的地址段。
本端网段可以是专有网络VPC(Virtual Private Cloud)的网段、交换机的网段、通过物理专线和VPC互连的本地数据中心的网段、云服务(例如对象存储、云数据库)等的网段。
单击+添加本端网段可添加多个本端网段,最多支持添加5个本端网段。 以下网段不支持指定为本端网段:
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可以访问到该公网网段。关于用户网段的更多信息,请参见专有网络FAQ和专有网络FAQ。
创建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
本参数表示不使用加密算法。
是否压缩
是否对传输数据进行压缩处理。取值:
是
否(默认值)
双因子认证
选择是否开启双因子认证功能。系统默认关闭双因子认证功能。
双因子认证是指在建立SSL-VPN连接前对客户端进行两种不同类型的身份认证,即默认的SSL客户端证书认证和IDaaS EIAM用户名密码认证,两次认证均通过后才允许客户端建立SSL-VPN连接。双因子认证的双重认证机制可以防止用户身份盗用、未经授权的SSL-VPN连接等,有效提高了SSL-VPN连接的安全性,保护VPC内的敏感数据免受外部威胁。相关教程,请参见SSL-VPN双因子认证。
开启双因子认证功能后,您需要选择用于身份认证的应用身份服务IDaaS EIAM实例和IDaaS应用ID。
说明如果您是首次使用双因子认证功能,请先完成授权后再开启双因子认证功能。
在阿联酋(迪拜)地域创建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
方式一:通过SSMS连接RDS后创建Linked Server
在SSMS中执行如下SQL命令,创建Linked Server:
DECLARE @linked_server_name sysname = N'yangzhao_slb', -- Linked Server的名称。用于标识远程服务器。 @data_source sysname = N'****.sqlserver.rds.aliyuncs.com,3888 ', -- 自建SQL Server数据库的IP和端口号,格式为:<IP>,<端口>。例如:10.1.10.1,1433。 @user_name sysname = N'ay15', -- 自建SQL Server数据库的用户名,用于连接远程数据库。 @password nvarchar(128) = N'******', -- 自建SQL Server数据库用户名对应的密码。 -- 连接服务器的其他可选项,以XML格式提供。 @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>' ; -- 调用存储过程sp_rds_add_linked_server创建链接服务器。 EXEC sp_rds_add_linked_server @linked_server_name, @data_source, @user_name, @password, @link_server_options;执行如下SQL命令,查看已配置的Linked Server列表:
SELECT * FROM [myTestLinkedServer].master.sys.servers;
方式二:通过DMS连接RDS后创建Linked Server
在DMS中执行如下SQL命令,创建Linked Server:
-- 调用存储过程sp_rds_add_linked_server创建链接服务器。 EXEC sp_rds_add_linked_server @linked_server_name = N'yangzhao_slb', -- Linked Server的名称。用于标识远程服务器。 @data_source = N'rm-***.sqlserver.rds.aliyuncs.com,1433', -- 自建SQL Server数据库的IP和端口号,格式为:<IP>,<端口>。例如:10.1.10.1,1433。 @user_name = N'ay15', -- 自建SQL Server数据库的用户名,用于连接远程数据库。 @password = N'******', -- 自建SQL Server数据库用户名对应的密码。 -- 连接服务器的其他可选项,以XML格式提供。 @link_server_options = N' <rds_linked_server> <config option="data access">true</config> <config option="rpc">true</config> <config option="rpc out">true</config> </rds_linked_server>' ;执行如下SQL命令,查看已配置的Linked Server列表:
SELECT * FROM [myTestLinkedServer].master.sys.servers;
