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網關前,您需要進行網路規劃:
確保本地行動裝置和雲上Virtual Private Cloud內需要訪問的私網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串連要訪問的位址區段。
本端網段可以是Virtual Private Cloud(Virtual Private Cloud)的網段、交換器的網段、通過物理專線和VPC互連的本機資料中心的網段、雲端服務(例如Object Storage Service、雲資料庫)等的網段。
單擊+添加本端網段可添加多個本端網段,最多支援添加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. 測試連接
在同一個VPC中建立一台ECS執行個體。
在OpenVPN用戶端中通過
ping命令測試該ECS執行個體的連通性。說明請確保該ECS執行個體的安全性群組規則允許用戶端遠端連線,授權對象為SSL服務端配置中指定的用戶端網段,並指定要訪問本地的資料庫服務連接埠號碼。更多資訊,請參見安全性群組配置案例。
若無法串連,可能是由於本地主機設定了防火牆,需要將防火牆設定為允許遠端串連。
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;