首页 云数据库 RDS RDS SQL Server数据库 最佳实践 通过Linked Server访问云下自建SQL Server

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

更新时间: 2023-10-10 18:17:43

RDS SQL Server支持Linked Server功能,可以在RDS实例之间建立Linked Server,同时也支持在网络连通的前提下与云下自建SQL Server建立Linked Server。本文将介绍如何通过VPN在RDS SQL Server上建立Linked Server,以连接到云下自建的SQL Server。

前提条件

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

    • 实例版本:

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

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

      • 2017企业集群系列

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

    • 实例状态:运行中

  • 在部署VPN网关前,需要做好网络规划:

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

    • 客户端必须能够访问网络。

费用说明

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

操作流程

  1. 通过VPN打通RDS SQL Server所在VPC和云下机器的网络连接通道。

    1. 创建VPN网关实例

    2. 创建SSL服务端

    3. 创建SSL客户端证书

    4. 下载SSL客户端证书

    5. 配置客户端

    6. 测试连接

  2. 在RDS SQL Server上创建Linked Server。

通过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服务端的名称。

    名称在2~128个字符之间,以大小写字母或中文开始,可包含数字、短划线(-)和下划线(_)。

    VPN网关

    选择要关联的VPN网关。

    确保该VPN网关已经开启了SSL-VPN功能。

    本端网段

    本端网段是客户端通过SSL-VPN连接要访问的地址段。

    本端网段可以是专有网络VPC(Virtual Private Cloud)的网段、交换机的网段、通过物理专线和VPC互连的本地数据中心的网段、云服务(例如对象存储、云数据库)等的网段。

    单击+添加本端网段添加多个本端网段。

    说明

    本端网段的子网掩码位数在8至32位之间。

    客户端网段

    客户端网段是给客户端虚拟网卡分配访问地址的网段,不是指客户端已有的内网网段。当客户端通过SSL-VPN连接访问本端时,VPN网关会从指定的客户端网段中分配一个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倍及以上。

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

      SSL连接数

      建议的客户端网段

      5

      子网掩码位数小于或等于27的网段。

      例如:10.0.0.0/27、10.0.0.0/26。

      10

      子网掩码位数小于或等于26的网段。

      例如:10.0.0.0/26、10.0.0.0/25。

      20

      子网掩码位数小于或等于25的网段。

      例如:10.0.0.0/25、10.0.0.0/24。

      50

      子网掩码位数小于或等于24的网段。

      例如:10.0.0.0/24、10.0.0.0/23。

      100

      子网掩码位数小于或等于23的网段。

      例如:10.0.0.0/23、10.0.0.0/22。

      200

      子网掩码位数小于或等于22的网段。

      例如:10.0.0.0/22、10.0.0.0/21。

      500

      子网掩码位数小于或等于21的网段。

      例如:10.0.0.0/21、10.0.0.0/20。

      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-VPN连接使用的端口。端口取值范围:1~65535。默认端口:1194

    说明

    不支持使用以下端口:22、2222、22222、9000、9001、9002、7505、80、443、53、68、123、4510、4560、500、4500

    加密算法

    SSL-VPN连接使用的加密算法。取值:

    • AES-128-CBC(默认值)

    • AES-192-CBC

    • AES-256-CBC

    • none

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

    是否压缩

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

    • (默认值)

    双因子认证

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

    如果您选择开启VPN网关的双因子认证功能,您还需要选择IDaaS实例。双因子认证支持使用IDaaS实例中的用户名和密码对SSL客户端进行二次认证。更多信息,请参见SSL-VPN双因子认证

    说明
    • 仅2020年03月05日00时00分00秒之后创建的VPN网关支持开启双因子认证。

      如果您的VPN网关是2020年03月05日之前创建的,您可以通过自助升级方式将VPN网关升级至最新版,体验双因子认证功能。具体操作,请参见升级VPN网关

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

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

创建SSL客户端证书

  1. 登录VPN网关管理控制台
  2. 在左侧导航栏,选择网间互联 > VPN > SSL客户端
  3. 在顶部菜单栏,选择SSL客户端的地域。
  4. SSL客户端页面,单击创建SSL客户端证书
  5. 创建SSL客户端证书面板,根据以下信息配置客户端证书,然后单击确定
    配置说明
    名称SSL客户端证书的名称。

    名称在2~128个字符之间,以英文字母或中文开始,可包含数字、短划线(-)和下划线(_)。

    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

阿里云首页 云数据库 RDS 相关技术圈