通过Linked Server访问云下自建SQL Server

RDS SQL Server提供的Linked Server能力可以在RDS实例之间建立Linked Server,并且在网络连通的前提下,也支持与云下自建的SQL Server建立Linked Server,可用于跨区域数据访问、数据合并与分析以及数据迁移与同步等场景。本文介绍如何通过VPN在RDS SQL Server上建立Linked Server,以连接到云下自建的SQL Server。

前提条件

  • RDS SQL Server实例需满足如下条件:

    • 实例版本:

      • 标准版(高可用系列):2012、2014、2016、2017、2019、2022

      • 企业版(高可用系列):2012、2014、2016

      • 企业集群版(集群系列):2017、2019、2022

    • 实例规格:通用型、独享型(不支持共享型)

    • 实例状态:运行中

  • 在部署VPN网关前,您需要进行网络规划:

    • 确保本地移动设备和云上专有网络VPC内需要访问的私网IP地址段不能相同,否则无法通信。

    • 确保客户端能够访问网络。

费用说明

部署VPN网关将产生费用。更多信息,请参见计费说明

步骤一:通过VPN打通RDS SQL Server所在VPC和云下机器的网络连接通道

创建VPN网关实例

  1. 登录VPN网关管理控制台
  2. 在顶部菜单栏,选择VPN网关实例所属的地域。

    需确保VPN网关实例的地域和待关联的专有网络VPC(Virtual Private Cloud)实例的地域相同。

  3. VPN网关页面,单击创建VPN网关
  4. 在购买页面,根据以下信息进行配置,然后单击立即购买并完成支付。
    配置项说明
    实例名称VPN网关实例的名称。
    地域和可用区选择VPN网关实例的地域。

    需确保VPN网关实例的地域和待关联的VPC实例的地域相同。

    网关类型选择VPN网关实例的类型。
    • 普通型
    • 国密型
    说明 使用国密型VPN网关时,国密型VPN网关需要关联SSL证书进行数据加密和身份认证。更多信息,请参见管理SSL证书
    网络类型选择VPN网关实例的网络类型。
    • 公网:VPN网关通过公网建立VPN连接。
    • 私网:VPN网关通过私网建立VPN连接。
    隧道系统直接展示当前地域支持的IPsec-VPN连接的隧道模式。
    • 单隧道
    • 双隧道

    关于IPsec-VPN连接隧道模式的说明,请参见【升级公告】IPsec-VPN连接升级为双隧道模式

    VPC选择VPN网关实例关联的VPC实例。
    虚拟交换机从VPC实例中选择一个交换机实例。
    • IPsec-VPN连接的隧道模式为单隧道时,您仅需要指定一个交换机实例。
    • IPsec-VPN连接的隧道模式为双隧道时,您需要指定两个交换机实例。
    说明
    • 系统默认帮您选择第一个交换机实例,您可以手动修改或者直接使用默认的交换机实例。
    • 创建VPN网关实例后,不支持修改VPN网关实例关联的交换机实例,您可以在VPN网关实例的详情页面查看VPN网关实例关联的交换机以及交换机所属可用区的信息。
    虚拟交换机2IPsec-VPN连接的隧道模式为双隧道时,从VPC实例中选择第二个交换机实例。
    • 您需要从VPN网关实例关联的VPC实例下指定两个分布在不同可用区的交换机实例,以实现IPsec-VPN连接可用区级别的容灾。
    • 对于仅支持一个可用区的地域 ,不支持可用区级别的容灾,建议您在该可用区下指定两个不同的交换机实例以实现IPsec-VPN连接的高可用,支持选择和第一个相同的交换机实例。
    带宽规格选择VPN网关实例的带宽规格。单位:Mbps。
    IPsec-VPN选择开启或关闭IPsec-VPN功能。默认值:开启

    IPsec-VPN可以在本地数据中心和VPC之间或在VPC和VPC之间建立安全连接。

    SSL-VPN

    选择开启或关闭SSL-VPN功能。默认值:关闭

    SSL-VPN可以在点和站点之间建立安全连接,无需配置用户网关。例如,SSL-VPN可以在Linux客户端和VPC之间建立安全连接。

    SSL连接数选择需要同时连接的客户端的数量。
    说明 开启SSL-VPN功能后才支持配置本参数。
    计费周期

    选择购买时长。

    您可以选择是否自动续费:
    • 按月购买:自动续费周期为1个月。
    • 按年购买:自动续费周期为1年。
    服务关联角色单击创建关联角色,系统自动创建服务关联角色AliyunServiceRoleForVpn。

    VPN网关使用此角色来访问其他云产品中的资源,更多信息,请参见AliyunServiceRoleForVpn

    若本配置项显示为已创建,则表示您当前账号下已创建了该角色,无需重复创建。

创建SSL服务端

  1. 登录VPN网关管理控制台
  2. 在左侧导航栏,选择网间互联 > VPN > SSL服务端
  3. 在顶部菜单栏,选择SSL服务端的地域。
  4. SSL服务端页面,单击创建SSL服务端

  5. 创建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倍及以上。

    • 单击查看原因。

      例如您指定的客户端网段为192.168.0.0/24,系统在为客户端分配IP地址时,会先从192.168.0.0/24网段中划分出一个子网掩码为30的子网段,例如192.168.0.4/30,然后从192.168.0.4/30中分配一个IP地址供客户端使用,剩余三个IP地址会被系统占用以保证网络通信,此时一个客户端会耗费4个IP地址。因此,为保证您的客户端均能分配到IP地址,请确保您指定的客户端网段所包含的IP地址个数是VPN网关SSL连接数的4倍及以上。

    • 单击查看不支持配置的网段。

      • 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

    • 单击查看每个SSL连接数建议的客户端网段。

      • 若SSL连接数为5,则客户端网段的子网掩码位数建议小于或等于27。例如:10.0.0.0/27、10.0.0.0/26。

      • 若SSL连接数为10,则客户端网段的子网掩码位数建议小于或等于26。例如:10.0.0.0/26、10.0.0.0/25。

      • 若SSL连接数为20,则客户端网段的子网掩码位数建议小于或等于25。例如:10.0.0.0/25、10.0.0.0/24。

      • 若SSL连接数为50,则客户端网段的子网掩码位数建议小于或等于24。例如:10.0.0.0/24、10.0.0.0/23。

      • 若SSL连接数为100,则客户端网段的子网掩码位数建议小于或等于23。例如:10.0.0.0/23、10.0.0.0/22。

      • 若SSL连接数为200,则客户端网段的子网掩码位数建议小于或等于22。例如:10.0.0.0/22、10.0.0.0/21。

      • 若SSL连接数为500,则客户端网段的子网掩码位数建议小于或等于21。例如:10.0.0.0/21、10.0.0.0/20。

      • 若SSL连接数为1000,则客户端网段的子网掩码位数建议小于或等于20。例如:10.0.0.0/20、10.0.0.0/19。

    重要
    • 客户端网段的子网掩码位数在16至29位之间。

    • 请确保客户端网段和本端网段不冲突。

    • 在指定客户端网段时,建议您使用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

        本参数表示不使用加密算法。

    是否压缩

    是否对传输数据进行压缩处理。取值:

    • (默认值)

    双因子认证

    选择是否开启VPN网关的双因子认证功能。系统默认关闭VPN网关的双因子认证功能。

    如果您选择开启VPN网关的双因子认证功能,您还需要选择IDaaS实例。开启双因子认证功能后,客户端与VPN网关之间建立SSL-VPN连接时,系统将会对客户端进行二次认证。第一次为默认的SSL客户端证书的认证,客户端通过SSL客户端证书认证后,系统将使用IDaaS实例中的用户名和密码对客户端进行第二次认证(不支持通过IDaaS短信认证功能对客户端进行第二次认证),第二次认证通过后才会建立SSL-VPN连接。具体操作,请参见SSL-VPN双因子认证

    说明
    • 如果您的VPN网关是2020年03月05日00时00分00秒之前创建的,且未进行过升级,您可以通过自助方式升级VPN网关版本,体验双因子认证功能。具体操作,请参见升级VPN网关

      如果您的VPN网关是2020年03月05日00时00分00秒之前创建的,已经进行过升级,可直接开启双因子认证。

    • 如果您的VPN网关是2020年03月05日00时00分00秒之后创建的,可直接开启双因子认证。

    • VPN网关的双因子认证功能仅支持旧版IDaaS实例。关于旧版IDaaS实例的更多说明,请参见1.x 旧版实例变更方案

    • 如果您是首次使用双因子认证功能,请先完成授权后再创建SSL服务端。

创建SSL客户端证书

  1. 登录VPN网关管理控制台
  2. 在左侧导航栏,选择网间互联 > VPN > SSL客户端
  3. 在顶部菜单栏,选择SSL客户端的地域。
  4. SSL客户端页面,单击创建SSL客户端证书

  5. 创建SSL客户端证书面板,根据以下信息配置SSL客户端证书,然后单击确定

    配置

    说明

    名称

    输入SSL客户端证书的名称。

    资源组

    选择SSL服务端所属的资源组。

    SSL客户端证书与SSL服务端所属的资源组保持一致。

    SSL服务端

    选择要关联的SSL服务端。

下载SSL客户端证书

  1. 登录VPN网关管理控制台
  2. 在左侧导航栏,选择网间互联 > VPN > SSL客户端
  3. 在顶部菜单栏,选择SSL客户端的地域。
  4. SSL客户端页面,找到目标SSL客户端证书,在操作列单击下载证书

配置客户端

  1. 下载并安装OpenVPN客户端。

  2. 解压下载的证书,并复制到OpenVPN安装目录的config文件夹中。

    解压证书

  3. 单击Connect发起连接。

    发起连接

测试连接

  1. 在同一个VPC中创建一台ECS实例

  2. 在OpenVPN客户端中通过ping命令测试该ECS实例的连通性。

    说明
    • 请确保该ECS实例的安全组规则允许客户端远程连接,授权对象为SSL服务端配置中指定的客户端网段,并指定要访问本地的数据库服务端口号。更多信息,请参见安全组配置案例

    • 若无法连接,可能是由于本地主机设置了防火墙,需要将防火墙设置为允许远端连接。

    添加安全组规则

步骤二:在RDS SQL Server上创建Linked Server

  1. 通过SQL Server Management Studio(SSMS)连接RDS SQL Server实例。具体操作,请参见连接SQL Server实例

  2. 在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

    连接服务器的其他可选项。

  3. 执行如下命令测试Linked Server:

    SELECT * FROM [myTestLinkedServer].master.sys.servers

    测试Linked Server

相关操作