Azure 目前有兩種部署模型:資源管理器 ARM 和經典部署模型 ASM告组。ASM 的虛擬機默認公用云服務的 VIP 來訪問 Internet粘秆,ARM 的虛擬機默認使用自己的公共 IP 訪問 Internet。因為有的服務器有訪問白名單的設置咐吼,因此有的客戶可能想實現(xiàn)的一個需求就是 ARM 的多個虛擬機也公用一個公共 IP 來訪問公網的某個服務器叁丧,這樣就不需要在對方的白名單上添加多個虛擬機的公共 IP 地址。下面介紹如何實現(xiàn)這個方案刃滓。
虛擬網絡的 Subnet01 子網中的多臺虛擬機將公用 Subnet02 中的虛擬機 ForwardVM 訪問 Internet 上的某臺服務器。假設 Internet 上的這臺服務器的地址是42.159.4.113耸弄,這里是以 Azure 的經典管理門戶為例咧虎。下面介紹操作步驟 :
首先借助 Azure 的自定義路由功能,創(chuàng)建一個路由表计呈,將 Subnet01 這個子網訪問 Internet 服務器的流量定向到虛擬機 ForwardVM砰诵。下面通過 Azure Powershell 來操作征唬。其實也可以在門戶上創(chuàng)建。
復制
#創(chuàng)建一個路由條目
$route = New-AzureRmRouteConfig -Name subnet01route -AddressPrefix 42.159.4.113/8 -NextHopType VirtualAppliance -NextHopIpAddress 10.200.2.4
#創(chuàng)建一個路由表茁彭,關聯(lián)上面創(chuàng)建的路由條目
$routeTable = New-AzureRmRouteTable -ResourceGroupName TestVnetGroup –Location “China North” -Name tableforsubnet01 -Route $route
#將上面創(chuàng)建的路由條目關聯(lián)到子網Subnet01
$vnet = Get-AzureRmVirtualNetwork -ResourceGroupName TestVnetGroup -Name TestVnet
Set-AzureRmVirtualNetworkSubnetConfig -Name subnet01 -VirtualNetwork $vnet -AddressPrefix 10.200.1.0/24 –RouteTable $routeTable
#保存虛擬網絡的配置
Set-AzureRmVirtualNetwork -VirtualNetwork $vnet
保存成功后总寒,我們看到 Subnet01 上已經關聯(lián)了上面創(chuàng)建的路由表。
在虛擬機 ForwardVM 上開啟 IP 轉發(fā)并對 Subnet01 子網中訪問 Azure 經典管理門戶的流量做 SNAT理肺。
在平臺層面摄闸,開啟虛擬機的 IP 轉發(fā)功能。 在門戶上看到妹萨,虛擬機 ForwardVM 的網卡名稱為 forwardvm350 :
復制
#獲取網卡對象
$nicfwvm=Get-AzureRMNetworkInterface -ResourceGroupName TestVnetGroup -Name forwardvm350
#開啟IP轉發(fā)
$nicfwvm.EnableIPForwarding = 1
#保存配置
Set-AzureRmNetworkInterface -NetworkInterface $nicfwvm
在虛擬機 ForwardVM 內部開啟 IP 轉發(fā)功能 :
復制
echo 1 >/proc/sys/net/ipv4/ip_forward
在虛擬機 ForwardVM 內做一個 SNAT年枕,將 Subnet01 中虛擬機訪問 Azure 管理門戶(Internet)的數(shù)據(jù)包的源地址改為虛擬機 ForwardVM 的地址 :
復制
iptables -t nat -A POSTROUTING -s 10.200.1.0/24 -j SNAT --to-source 10.200.2.4
在 Subnet01 內的一臺虛擬機 BackServer1 上進行測試。用 Paping 測試 Azure 經典管理門戶地址42.159.4.113的 443 端口乎完,一直可以訪問 :
同時在 ForwardVM 上進行抓包熏兄,發(fā)現(xiàn) BackServer1 訪問42.159.4.113的數(shù)據(jù)包確實發(fā)往了 ForwardVM。
從上面的數(shù)據(jù)包可以看出树姨,F(xiàn)orwardVM 對這個數(shù)據(jù)包確實做了地址轉換摩桶。將訪問數(shù)據(jù)包的源地址轉換為了 ForwardVM 自己的 IP10.200.2.4.
因此上面的操作,實現(xiàn)了多個虛擬機公用一臺虛擬機的公有 IP 訪問 Internet 服務器的操作帽揪。
立即訪問http://market.azure.cn