こんにちは、FL.OPSの中の人、山本です。
今回は、Azureアドベントカレンダー12月17日の連動記事になります。
12月からAzureのポータル画面が変わり戸惑っている方も多いのではないかと思います。
特にオンプレとのVPN接続はポータル画面から設定できなくなったため、今回はAzureリソースマネージャ環境でVPNの接続をやってみたいと思います。
参考にしたサイトは以下です。
PowerShell を使用してサイト間 VPN 接続で仮想ネットワークを作成する
https://azure.microsoft.com/ja-jp/documentation/articles/vpn-gateway-create-site-to-site-rm-powershell/
では、行きます。
まず、リソースグループ、仮想ネットワーク、VPNゲートウェイの名前を決めます。
今回は以下のようにしました。
- リソースグループ名 dojorg
- リージョン japanwest
- 仮想ネットワーク名 dojovnet
- 仮想ネットワーク 10.22.0.0/16
- ゲートウェイサブネット名 GatewaySubnet
- ゲートウェイサブネット 10.22.0.0/24
- サブネット1名 subnet1
- サブネット1 10.22.1.0/24
- ローカルサイト名 LocalSite
- ゲートウェイ名 dojogw
- コネクション名 moridojo
- 事前共有キー 任意の文字列
設定はPowerShellから行います。
ここで注意ですが、PowerShellコマンドは、リソースマネージャに対応した新しいものが必要です。
以下から最新版をインストールしてください。
Azure リソース マネージャーでの Azure PowerShell の使用
https://azure.microsoft.com/ja-jp/documentation/articles/powershell-azure-resource-manager/
では、PowerShellを起動し、Azureへログインします。
Login-AzureRmAccount
サブスクリプションの確認
Get-AzureRmSubscription
サブスクリプションの選択
Select-AzureRmSubscription -Subscriptionid "サブスクリプションID"
※コマンドが「AzureXXX」からリソースマネージャに対応した「AzureRmXXX」に変わっていますが、Azureログインの手続きは以前と変わっていません。
ここから、いよいよVPN接続の設定に入ります。
手順としては以下になります。
1.仮想ネットワークの作成
2.ローカルサイトの作成
3.仮想ゲートウェイの作成
4.仮想ゲートウェイの設定
1.仮想ネットワークの作成
Azure上に仮想ネットワークを作成します。
New-AzureRmResourceGroup -Name dojorg -Location 'japanwest'
$subnet1 = New-AzureRmVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 10.22.0.0/24
$subnet2 = New-AzureRmVirtualNetworkSubnetConfig -Name 'Subnet1' -AddressPrefix '10.22.1.0/24'
New-AzureRmVirtualNetwork -Name dojovnet -ResourceGroupName dojorg -Location 'japanwest' -AddressPrefix 10.22.0.0/16 -Subnet $subnet1, $subnet2
2.ローカルサイトの作成
オンプレ側のネットワーク情報を登録します。
オンプレ側GWのグローバルIPアドレスとオンプレ側のネットワーク空間が必要となります。
今回は以下のようにします。
ネットワーク空間 192.168.1.0/24
グローバルIP xxx.xxx.xxx.xxx
New-AzureRmLocalNetworkGateway -Name LocalSite -ResourceGroupName dojorg -Location 'japanwest' -GatewayIpAddress 'xxx.xxx.xxx.xxx' -AddressPrefix '192.168.1.0/24'
3.仮想ゲートウェイの作成
参考サイトに、仮想ゲートウェイに割り当てるパブリックIPアドレスは動的にする必要があるとの記載があるため以下のように定義します。
パブリックIPの割り当て
$gwpip= New-AzureRmPublicIpAddress -Name gwpip -ResourceGroupName dojorg -Location 'japanwest' -AllocationMethod Dynamic
$vnet = Get-AzureRmVirtualNetwork -Name dojovnet -ResourceGroupName dojorg
$subnet = Get-AzureRmVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -VirtualNetwork $vnet
$gwipconfig = New-AzureRmVirtualNetworkGatewayIpConfig -Name gwipconfig1 -SubnetId $subnet.Id -PublicIpAddressId $gwpip.Id
仮想ゲートウェイを作成します。
参考サイトでは動的ゲートウェイ(RouteBased)となっていましたが、今回1対1のサイトtoサイト接続であるため静的ゲートウェイ(PolicyBased)に変更しています。
New-AzureRmVirtualNetworkGateway -Name dojogw -ResourceGroupName dojorg -Location 'japanwest' -IpConfigurations $gwipconfig -GatewayType Vpn -VpnType PolicyBased
※ゲートウェイの作成には数10分かかります。
ゲートウェイが作成されたら以下のコマンドでゲートウェイに割り当てられたパブリックIPを確認します。
Get-AzureRmPublicIpAddress -Name gwpip -ResourceGroupName dojorg
4.仮想ゲートウェイの設定
仮想ゲートウェイの設定を行います。
ここでの注意点は、IPSecの事前共有キーを任意の文字列で設定することです。
あと、参考サイトのコマンドに誤りがありましたので、修正しています。
(参考サイトのコマンド)
Get-AzureLocalNetworkGateway
(正しくは)
Get-AzureRmLocalNetworkGateway
です。
$gateway1 = Get-AzureRmVirtualNetworkGateway -Name dojogw -ResourceGroupName dojorg
$local = Get-AzureRmLocalNetworkGateway -Name LocalSite -ResourceGroupName dojorg
New-AzureRmVirtualNetworkGatewayConnection -Name moridojo -ResourceGroupName dojorg -Location 'japanwest' -VirtualNetworkGateway1 $gateway1 -LocalNetworkGateway2 $local -ConnectionType IPsec -RoutingWeight 10 -SharedKey '(任意の文字列)'
上記でAzure側の設定は完了です。
オンプレ側ルータにAzure仮想ゲートウェイの「パブリックIP」と「事前共有キー」を設定することでVPNで接続可能です。
感想
PowerShellで作成するのは、最初は面倒だが、スクリプトができてしまえば、パラメタを変更するだけであるため、後々が楽。