ゼロから始める Azure -自社サイト間VPN(S2S)接続

 2014.09.24  リアルテックジャパン

追記:P2S(Point to Site)接続については、下記を参照ください。

[TIPS]Windows AzureにPoint to Site(P2S) VPN接続してみた

企業で本格的にMicrosoft Azureを使うために必要となってくるのが、自社データセンターとAzure間のVPN接続です。

Microsoft クラウドOSの本領発揮させるためには、オンプレミス環境とパブリッククラウドを合わせた「ハイブリッドクラウド環境」は必須になります。ただ、いざ繋げようとすると色々手続きとか前提とかの知識が必要になるのも事実で、結構時間がかかります。

本記事では何もない状態から、オンプレミス環境(自社DC)とAzureをサイト間接続(Site to Site ,S2Sとも呼ぶ)するまでを弊社の事例をもとにご紹介していきたいと思います。

第1回は、「どこから手をつけてよいのやら?」という企業のIT担当者さんが、DC担当者、回線事業者、ISP事業者、ネットワーク事業者と進めていくにあたり、何を準備検討しなければならないかというところを明らかにしたいと思います。

事前準備タスク

1-1. Microsoft Azureアカウントの登録

・自社で準備したルータの対向にあるのは、クラウドなのでハードのルータではなく、Azure上に立ち上げたGateway Instanceです。(VPN ゲートウェイと呼ぶ場合もあります。)

・Gateway Instanceは、Azureの管理画面から設定することで利用できるので、まずはAzureアカウントを登録する必要があります。(実際に設定せず見るだけなら無償です、まずはどんなものか確認しましょう。)

1-2. Azure操作環境の準備

•AzureポータルでのVPN設定作業に必要な管理者ユーザが必要です。Azureポータルで作業用ユーザを新しく作成するか、既存アカウントを一時的に共同管理者にすることになります。

•Azureポータルで出来ない細かな設定が必要な場合に備えて、Windows PowerShell に Azure モジュールをインストールして行うことになります。Internetに接続できる作業用PCが必要になりますので、実際に使用するかどうかに関わらず、事前に準備することをお勧めします。(ここから「コマンドラインツール」→「Windows PowerShell」→「インストール」でダウンロードできます。)

1-3. Azure側のIPアドレス空間の割り当て

・既存オンプレミスで使用しているIPアドレス空間とは重複しない前提で、Azure側に必要なIPアドレス空間を決定します。(Azure上でルーティングを設定を行う際に必要です。)

・Azure特有の要件で、Gateway Subnet と呼ばれるGateway Instanceのみが存在する特別なサブネットで利用するアドレス空間を確保しておく必要があります。仮想ネットワーク1つあたり、1つのGateway Subnetが必要ですので、Azure上にたくさん仮想ネットワークを作成する場合は、アドレス空間は大きくしておく必要があります。アドレス設計という意味での勘所は下記の通りです。

―27bitで区切った場合、サブネットは下記の8個しか作れない

10.10.120.0/27

10.10.120.32/27

10.10.120.64/27

10.10.120.96/27

10.10.120.128/27

10.10.120.160/27

10.10.120.192/27

10.10.120.224/27

―28bitだと16個、29bitだと32個までサブネットを分割できる。

言い換えると29ビットで区切った場合は、32個まで仮想ネットワークがAzure上で作成可能になりますので、特になにも要件がなければ29bitでいいいのではと思います。

1-4. Azure接続が可能なルータの選定

•VPN接続するネットワーク機器は、必要な仕様を満たしている必要があります。ネット上にはこの設定で繋がったという情報がたくさんあります。しかし業務で利用する場合には、ルータ提供ベンダーが正式にAzureに対応することを表明し、かつ設定テンプレートまで提供されている製品を強くお勧めします。(理由は後述)

・ルータは買えないのでRRASで接続しようかという案も考えますが、弊社の環境ではルータ購入前の事前接続確認の使用までに留まりました。理由は問題なく繋がるのですが途中で切れてしまい、毎回手で繋ぎ直しするしかなかったからです。(原因は追及していません。というか追求するにもAzure側の状況が見えないのでできませんでした。もしかしたら弊社の環境依存かもしれません、やるなら事前に時間をかけて評価することをお勧めします。)

弊社の場合どうだったかですが、Azure接続のためのネットワーク仕様は開示されているし、仕様を見る限り繋がりそうだから、まずはやってみようということで色々とやってみましたが繋がりません。その際にはルータ側の状況はログ等で確認できますが、Azure側がどうなっているのかがまったくわからないという現実が厳しかったです。そもそも仕様は合わせている前提で、それ以外の設定をどうすればいいのかなどを技術的に追い込めなかったというのが実情で、現時点ではお勧めしません。

ということで、諦めて新しくルータを購入することにしました。

今までの経緯からルータ側の詳細設定をいじるのは自分たちでは無理という前提にたち、今回は、設定の手間を省くために(手順書だとちょっと考えないといけないので。)接続用テンプレートが開示されていたCiscoのローエンドルータ 891FJを購入することに決めました。

ルータの知識があれば、設定手順例でもなんとかなりますし、何かあったときのサポートが得られるのであれば、他社のルータでも当然いいと思います。

1-5. 既存回線契約のチェック

•VPN接続で使用する新規ルータ用のグローバルIPアドレスを取得する。(自社保有のグローバルIPに空きがあるか?なければISPと追加契約が必要です。)

•新たにAzureとVPNセッションを張ることになりますが、既存回線流用の場合は回線契約のPPPoEのセッション上限数が足りているかどうかをチェックし、同時に新しくPPPoEセッションを確立するために、ISPと追加契約などを事前に行います。

弊社の場合は、フレッツ回線を1本持っていたので、それを流用することにしました。自社で保有していたフレッツ回線契約はPPPoEのセッション上限数として標準で2つありましたが、すでに既存接続で使っていました。

よって、NTTさんにお願いしてPPPoEの上限数を一つ増やして貰いました。(フレッツ・セッションプラス

また既存のISPさんとのInternet接続契約は既存接続で使っていますので、今回はCiscoルータ用に新しくInternet接続の契約が必要になりますが、弊社の場合は事前に無償で接続テストが出来て、かつ安価なInterlinkさんのサービスを使うことに決めました。(ルータ用に固定IPも必要だったのですが、Interlinkさんに安価に振出して貰いました。)

•VPN接続するルータとAzureとの間にNATが存在することも考えられます。

プロトコル、ポート番号などを見る限り、理論的にはいけそうというかいけるはずなのですが、実際に接続すると一時繋がって切れます。MSDNにはVPNデバイスの前にNATは置けないという記述もあり、現時点ではお勧めしません。

1-6.オンプレ側ネットワーク構築方針

新しく回線を引くのではなく、既存のフレッツ回線を使って、既存ルータとの共存環境を前提に説明します。

今回は既存ONU(光回線終端装置)と既存ルータの間にHUBをかませて分岐しました。

このあたりの説明は、InterlinkさんのHPに丁寧に解説されていましたのでそれを参照して下さい。(キーワードとしては、「PPPoE マルチセッション」とか「ONU HUB 分岐」とかでググってください。

s2s-vpn-azure.png

1-7. 費用感

・初期ハードウェア費用

ルータ Cisco 891FJ 購入費用                               10万円以下

HUB(オフィスに転がっていたSwitching HUB)                    0円

・インターネット接続月額コスト

InterLink社のInternet VPN契約追加及びGlobal  IP一つ割当          月額 3,240円

フレッツセッションプラスによるPPPoE接続1つ追加             月額    300円

・Azure 仮想ネットワーク費用

ゲートウェイ時間(24時間X31日744時間、繋ぎっぱなし)      月額  3,794円

・ルータ保守費                                       2万円以下

となり、初年度費用はざっくり20万円になります。

さて、Azureのアカウントも作った、IPアドレスも整理した、ルータも準備した、回線も準備できた、Internet接続の疎通も確認したら、いよいよ設定の開始です。

Azure側の設定タスク

Azure 管理ポータルにログオンします。

https://manage.windowsazure.com/

左下「ネットワーク」を選択し、「+新規」ボタンを押下します。

Azure-portal-01.png

「仮想ネットワーク」→「カスタム作成」を選択します。

Azure-portal-02.png

仮想ネットワークの作成画面が表示されます。

仮想ネットワークの名前を入力し、場所、サブスクリプション(従量課金など)を選択して次へ

Azure-portal-03.png

DNSサーバーの指定があれば入力(省略可)、サイト間VPNの構成にチェックをいれます。

(Azure管理ポータルで設定済みの)ローカルネットワークを指定できます。

なければ、「新しいローカルネットワークを指定する」を選択します。

Azure-portal-04.png

サイト間接続の名前、VPNデバイスのIPアドレス(自社側ルータのグローバルIPなど)を入力します。

アドレス空間は、Azure仮想ネットワーク内の仮想マシンからアクセスする必要がある自社のサブネットを指定します。

アクセスする必要がない、またはアクセスされては困るサブネットは、このアドレス空間に含めないことで、ネットワークレベルで通信を遮断できます。

Azure-portal-05.png

Azure仮想ネットワークのアドレス空間を入力します。

仮想マシンを配置するサブネットとゲートウェイサブネットはアドレス空間の中に含まれるようにしなければいけません。

アドレス空間とサブネットは、プライベートアドレスであれば、いくらでも作成できます。ゲートウェイサブネットは、仮想ネットワーク内に1つだけ29bitで設定します。

アドレス空間を設定後、右下のチェックボタンを押すことで、仮想ネットワークが作成されます。

Azure-portal-06.png

仮想ネットワーク作成後は、サブネットやゲートウェイサブネットは使える状態ですが、ダッシュボード上では、「ゲートウェイは作成されませんでした」と表示されていて、まだ自社のネットワークとVPN接続できていない状態です。

VPN接続できるように、ゲートウェイサブネット内にゲートウェイを作成します。

仮想ネットワークのダッシュボード画面で、ゲートウェイの作成を押します。

ここでは、動的ルーティングを選択します。もし動的ルーティングをサポートしないルータを使ってVPN接続する場合は、静的ルーティングのゲートウェイを作成します。

自社のルータがAzure仮想ネットワークとVPN接続できるルータか、もしくは、動的ルーティングによるVPN接続ができるルータかを

事前に下記のWebページで調べておくことが重要です。

http://msdn.microsoft.com/ja-jp/library/azure/jj156075.aspx

Azure-portal-07.png

約15分で、ゲートウェイが作成され、グローバルIPアドレスがAzureゲートウェイに割り当てられます。

同時に、VPN接続に必要な事前共有キーも生成されますので、これらの情報を使って、自社のルータを設定していきます。

Azure-portal-08.png

キーの管理を押すと、事前共有キーを確認できます。

Azure-portal-09.png

オンプレルータ側の設定タスク

3-1. Ciscoルータ情報

891fj-k9.jpg

型番:C891FJ-K9

バージョン:15.4(1)T1

IOSファイル:c800-universalk9-mz.SPA.154-1.T1.bin

3-2. ルータ基本設定

service timestamps debug datetime msec localtime

service timestamps log datetime msec localtime

service password-encryption

!

hostname <ルータ名>

!

logging buffered 32768

enable secret <パスワード>

!

clock timezone JST 9 0

!

no ip domain lookup

ip domain name <SSH用ドメイン名>

!

no spanning-tree vlan 1

username <ユーザ名> password <パスワード>

access-list 1 permit <SSHでログインを許可するIP> <ワイルドビット>

line con 0

 login local

line vty 0 4

 access-class 1 in

 login local

 transport input ssh

!

ntp server <NTPサーバのIPアドレス> prefer

ntp server <NTPサーバのIPアドレス>

3-3. インターネット接続設定

interface GigabitEthernet8

 pppoe enable group global

 pppoe-client dial-pool-number 1

!

interface Vlan1

 ip address <IPアドレス> <サブネットマスク>

 ip nat inside

!

interface Dialer1

 ip address negotiated

 ip mtu 1454

 ip nat outside

 encapsulation ppp

 dialer pool 1

 dialer-group 1

 ppp authentication chap callin

 ppp chap hostname <プロバイダのユーザ名>

 ppp chap password <プロバイダのパスワード>

!

ip nat inside source list 11 interface Dialer1 overload

ip route 0.0.0.0 0.0.0.0 Dialer1

!

dialer-list 1 protocol ip permit

!

access-list 11 permit <インターネットに出るサーバのIP> <ワイルドビット>

3-4. AzureとのVPN接続設定(これはAzure管理ポータルからダウンロードできます)

crypto ikev2 proposal azure-proposal 

 encryption aes-cbc-256 aes-cbc-128 3des

 integrity sha1

 group 2

!

crypto ikev2 policy azure-policy 

 proposal azure-proposal

!

crypto ikev2 keyring azure-keyring

 peer <AzureのIPアドレス>

  address <AzureのIPアドレス>

  pre-shared-key <事前共有キー>

!

crypto ikev2 profile azure-profile

 match address local interface Dialer1

 match identity remote address <AzureのIPアドレス> <サブネットマスク>

 authentication remote pre-share

 authentication local pre-share

 keyring local azure-keyring

!

crypto ipsec transform-set azure-ipsec-proposal-set esp-aes 256 esp-sha-hmac 

 mode tunnel

!

crypto ipsec profile vti

 set transform-set azure-ipsec-proposal-set 

 set ikev2-profile azure-profile

!

interface Tunnel1

 ip unnumbered Dialer1

 ip tcp adjust-mss 1350

 tunnel source Dialer1

 tunnel mode ipsec ipv4

 tunnel destination <AzureのIPアドレス>

 tunnel protection ipsec profile vti

ip route <Azureのアドレス空間> <サブネットマスク> Tunnel1

4.VPN接続確認のコマンド例

4-1. コマンド:show crypto ikev2 sa(結果は一部省略しています)

 

 IPv4 Crypto IKEv2  SA 

Tunnel-id Local                     Remote                     fvrf/ivrf     Status

1         <ルータのIPアドレス>/4500   <AzureのIPアドレス>/4500   none/none     READY★

4-2. コマンド:show crypto ipsec sa(結果は一部省略しています)

interface: Tunnel1

   protected vrf: (none)

   current_peer <AzureのIPアドレス> port 4500

    #pkts encaps: 124269811, #pkts encrypt: 124269811, #pkts digest: 124269811

    #pkts decaps: 243329690, #pkts decrypt: 243329690, #pkts verify: 243329690

     inbound esp sas:

        Status: ACTIVE(ACTIVE)★

     outbound esp sas:

        Status: ACTIVE(ACTIVE)★

SAPユーザのための『S/4HANA』データ移行

RECENT POST「技術情報」の最新記事


この記事が気に入ったらいいねしよう!