既然都上了Cloud, 多少會想要不同家平台互通
這次就來試試目前大家最常用的 AWS, 與後來急起直追的 Azure 互通
有參考不少文章 會一併列在後面
在開始之前 先列出大概架構圖 下面是大概
基本上就是 AWS 端 弄一台 Windows 2012 server 當 router
當然 Linux 版會更好 不過這邊先用 Windows 2012 來玩
Azure 端則是直接 Local Network Gateway, Virtual Private Gateway 接 VPN Tunnel
因為步驟有點多 AWS, Azure UI又常在改版 乾脆就只付簡單的圖就好
起始架構
首先是最原始狀態 兩邊都還各自獨立的時候Azure Vnet, Subnet, VM1, AWS VPC, AWS VPC, Subnet, VM2
各自已經是完成 這部分的實作就不贅述
Step 1: 在AWS 開一個Windows 2012 R2 當 Router
Windows 2012 R2版本, 記得掛一個 Public EIP, 晚點要給 Azure 對接用Step 2: AWS 端 Routing Table 指向修改
Route Table 修改 加一筆 10.1.0.0/16 導向剛剛建立的 Windows Server
還有在剛剛建立的VM上面 把 Source/Dest check 關閉
這樣network package就可以往這邊送了
Step 3: Azure 端 建立 Virtual Private Gateway
建立Virtual Private Gateway, 記得掛對 Virtual network, 相關設定如下
這時候會拿到 Azure 配給你的 VPG Public IP (圖上為 104.211.51.17)這動作會花不少時間 建議先放著不管 大概半小時會完成
Step 4: Azure 端 建立 Local Network Gateway
這邊在建立 Local Network Gateway的時候 會要你另外開一個gateway 專用network這裡是指定10.1.0.0/24
另外 Local Network Gateway 的 IP address 為 AWS 端 剛剛拿來要當 Gateway 的 Windows server EIP (35.165.73.8)
Step 5: Azure 端 設定 VPN Tunnel
記得這個 Connection Local Network Gateway 跟 Virtual Private Gateway 都要掛到剛剛設定的
Share Key 也記得要設定記下來 待會AWS那一端會用到
這時候因為 AWS 端還沒設定 所以 Connection status 會是 "Connecting"
Step 6: AWS 端 Windows Router VPN Tunnel
這邊比較麻煩 有現成的 PowerShell 可以用https://github.com/Azure/Azure-vpn-config-samples/blob/master/Microsoft/microsoft-rras-windows-server-2012-r2.ps1.xslt
前面第5~78行 直接copy 到 PowerShell IDE 下跑
後面加interface那一段 黃色標籤記得修改 SharedSecet 就是上一步的 Share Key 這邊先放這裡的版本
Add-VpnS2SInterface -Protocol IKEv2 -AuthenticationMethod PSKOnly -NumberOfTries 3 -ResponderAuthenticationMethod PSKOnly -Name toAzure -Destination 104.211.51.17 -IPv4Subnet @("10.1.0.0/16:100") -SharedSecret 12345
Set-VpnServerIPsecConfiguration -EncryptionType MaximumEncryption Set-VpnS2Sinterface -Name toAzure -InitiateConfigPayload $false -Force # Set S2S VPN connection to be persistent by editing the router.pbk file (required admin priveleges) Set-PrivateProfileString $env:windir\System32\ras\router.pbk “toAzure” "IdleDisconnectSeconds" "0" Set-PrivateProfileString $env:windir\System32\ras\router.pbk "toAzure" "RedialOnLinkFailure" "1" # Restart the RRAS service Restart-Service RemoteAccess # Dial-in to Azure gateway Connect-VpnS2SInterface -Name toAzure
在這之後 大致就完成了
AWS 端 Windows Routing and Remote Access 應該會看到如下畫面
Azure 端 剛剛建立的物件 Connection Status 就會變成 Connected
基本上這時候兩邊VM就已經互通了
== 然後....就把 AWS 跟 Azure 上的所以有VM都砍掉了 免得被收太多$$ ==
參考文章如下
https://blogs.technet.microsoft.com/canitpro/2016/01/11/step-by-step-connect-your-aws-and-azure-environments-with-a-vpn-tunnel/
RRAS configure source
https://github.com/Azure/Azure-vpn-config-samples/tree/master/Microsoft