はじめに
今まで、Azure 上の OpenVPN を活用して 外部から Azure に VPN 接続を行う記事を投稿してきましたが、今回は 第3弾となります。
今回の記事の構成を行う事で、Azure と オンプレミス間のホストが 相互にルーティングされてアクセスすることが出来るようになります。つまり S2S (Site to Site) です。
タイトルでは Azure と 他拠点 間と書きましたが、この方法を応用することで 以下のいずれの組み合わせも実現可能です。
- Azure と オンプレミス ← この記事では、この構成を想定して記載しています
- Azure と Azure
- Azure と 他社クラウド(AWS , Google Cloud , Oracle Cloud 等)
今回の構成は、以下のサイトを参考にして構成しました。
OpenVPN 公式:Site-to-Site Routing
上記の記事は、Linux を想定した記載になっていますが、本記事で Windows でも動作することを検証できた点が、敷居を下げたって事で、価値があるかな・・・と思います。私も やってみるまでは、動くのかどうか 半信半疑でした・・・
前提となる構成
今回の構成を行うためには、事前に Azure 上に、以下の Step1 , Step2 まで構築済みであることが前提となります。記事を参考に構成してください。
Step 1:クライアントから 片方向の NAT アクセス を実現
https://qiita.com/carol0226/items/7a9160b298b736aa187e
Step 2:NAT を使わずに、単一のクライアントと 双方向のルーティングアクセス を実現
https://qiita.com/carol0226/items/1fd9540069fabbde92df
→ いわゆる P2S (Point to Site) 的な接続
今回 追加で構成する内容
今回は、Step 3 としての追加構成を行い、NAT を使わずに、複数のホスト間で 双方向のルーティングアクセス を目指します。
Step 2 までに終えた構成に対して、下図の 赤下線 で記した箇所の設定を追加していきます。
本記事では、上図の黄緑枠で示した OpenVPN Gateway のために Windows Server または Windows クライアント を使用します。Step 2 までの接続に使用した OpenVPN クライアント をそのまま流用できます。
【作業の流れ】
1. OpenVPN Access サーバー 側での追加構成
- 1-1. VPN Gateway を有効化したユーザーの作成
- 1-2. OpenVPN Access サーバーへのルート追加
2. OpenVPN クライアント 側での追加構成
- 2-1. OpenVPN クライアントのインストール
- 2-2. S2S プロファイル のインポート
- 2-3. Routing and Remote Access サービスの有効化
3. スタティックルートの追加
- 3-1. オンプレミスホストへ Azure 宛のルート (10.10.10.0/24) を追加
- 3-2. Azure ルートテーブルへ 物理ネットワーク宛のルート (10.16.47.0/24) を追加
4. その他
- 4-1. アドレス空間へ 物理ネットワーク (10.16.47.0/24)のアドレスを追加
5. 疎通確認
構築手順
1. OpenVPN Access サーバー 側での追加構成
1-1. VPN Gateway を有効化したユーザーの作成
この機能を使うためには、VPN Gateway の機能を有効化した ユーザー を作成します。
- OpenVPN Access サーバー管理画面に ログイン します。
https:// [OpenVPN Access サーバーの IP] :943/admin
- 左ペインで User Permissions を選択して New Username 欄に 任意のユーザー名を入力します。以後の例では S2S という名称で構成しています。
Allow Auto-login にチェックを入れ More Settings をクリックします。
- 詳細な設定画面が表示されるため 任意の Local Password を指定し、Configure VPN Gateway を Yes に設定し、Allow client to act as VPN gateway for these client-side subnets: の欄に、オンプレミス側 の物理ネットワーク の ネットワークアドレス (10.16.47.0/24) を入力します。
- 一番下まで スクロールして Save Settings を押します。
- 画面上部に 下図の内容が表示されたら Update Running Server を押します。
- 以下のように 一覧 に追加されれば OK です。
この章の構成によって、OpenVPN クライアント側で 今回作成したユーザーでログインした場合は、VPN Gateway 機能が動作します。つまり クライアント側を ルーター化 することができます。
1-2. OpenVPN Access サーバーへのルート追加
- 左ペインで VPN Settings を選択して Static IP Address Network 欄の 赤枠の箇所に、オンプレミス側のネットワークアドレス を入力します。
右下の赤枠2か所を Yes にします。
緑枠の箇所は、前提となる構成 が完了していれば Azure 仮想ネットワーク のアドレスが設定されて Yes, using Routing が選択されているハズなので、確認してください。
- 画面を一番下までスクロールして、Save Settings ボタンを押して、設定を保存します。
- これだけでは、まだ設定が反映されていません。
以下の画面で Update Running Server を押して反映させます。
- 以下の表示がでれば OK です。
2. OpenVPN クライアント 側での追加構成
今回 構成を行う OpenVPN クライアントは Windows Server または Windows クライアント のどちらでも動作します。
ブラウザを開いて 以下のアドレス に接続します(admin が付かず 管理者ページとは違います)
https:// [OpenVPN Access サーバーの IP] :943
これで、ユーザー向けのページに繋がるため、前章で作成した アカウントで ログイン します。
2-1. OpenVPN クライアントのインストール
前提となる構成が構築済みであれば、OpenVPN クライアントは導入済みなので、本章は SKIP してください。新規のサーバーを OpenVPN クライアントとして構成する場合は、以下の ▶ を押して 手順を参照してください。
OpenVPN クライアントのインストール手順を見るには ココ を押してください。
- 下図では、赤枠部分を押して Windows 用 クライアントアプリを ダウンロードします。その他の OS から接続する場合は、任意のアイコンを押してください。
- 以下のようなファイル名で、ダウンロードされるため、ダブルクリックして 起動します。
この画面は、Windows Smart Screen の機能が働いた時に表示されます。
詳細情報 の箇所を押してください。
実行 を押せば、継続できます。
2-2. autologin プロファイル のインポート
- 以下の画面で Yourself (autologin profile) をクリックして ダウンロードします。
終わったら、ダウンロードしたファイルをダブルクリックします。
- 以下のように プロファイル をインポートしても良いか聞かれるため OK を押します。
- 以下の接続画面で CONNECT を押します。
- ログイン認証を行うことなく、以下のように VPN が接続されます。そのあと、左上の 赤枠 のメニューを押します。
-
Settings を選択します。
- Launch Options の選択肢で Connect latest を選択して 左上の "<" を押します。
これで、サーバーをシャットダウンしても、 次回起動して OS へのログオンを行うと OpenVPN が自動起動して VPN 接続が行われます。
この状態で Gateway となったサーバーと、Azure 上の Open VPN Access サーバー間で 疎通できていることを確認してください。
OpenVPN Access サーバーの プライベート IP 経由で 管理画面を開くことが出来るはずです。
注意点
しかし、現時点では ルーティングの構成が未完了のため、その他の ホスト同士の疎通は出来ない状態です。
2-3. Routing and Remote Access サービスの有効化
VPN Gateway となった クライアント側 の "Routing and Remote Access" サービスを有効化します(Windows Server でも、Windows クライアント でも このサービスは存在します)
- 検索窓に サービス を入力して、検索された サービス を起動します。
- 一覧の中から Routing and Remote Access を探して、赤枠の箇所をダブルクリックします。
初めは、無効 で、状態の列が 空欄(停止中の意味)になっています。
-
全般 タブでは、スタートアップの種類 を 自動 に変更して 適用 を押します。
-
開始 ボタンがアクティブ化されたら 開始 ボタン を押します。
- 以下のように サービスの状態が 実行中 になれば OK です。
- ウィンドウを閉じて サービスの一覧に戻った際に 以下のように "実行中" "自動" になっていることが確認できます。
この構成によって、物理ネットワーク と、VPN ネットワーク間が 相互 にルーティングされるようになります。
注意
なお、後述する スタティックルーティングが完了するまでは、ホスト to ホスト の疎通はできません。
3. スタティックルートの追加
3-1. オンプレミスホストへ Azure 宛のルート (10.10.10.0/24) を追加
オンプレミス側で 有線 LAN に接続された 各ホスト上で、以下のコマンドを実行して、Azure への スタティックルート を追加します。
コマンド例
route add -p [Azure 仮想ネットワークのネットワークアドレス] mask [Azure 仮想ネットワークのサブネットマスク] [有線 LAN 側のゲートウェイアドレス]
具体例
route add -p 10.10.10.0 mask 255.255.255.0 10.16.47.10
→ 冒頭で紹介した構成図を見ながら、アドレスを当てはめてください。
確認コマンド
route print を実行して、作成したルートが表示されていることを確認します。
実行結果
以下が実行例です。黄枠部分が 作成された ルート テーブルになります。
この構成をおこなった、物理ネットワーク上の ホスト は Azure 仮想ネットワーク (10.10.10.0/255.255.255.0) と通信する際に、VPN Gateway (10.16.47.10) を 経由(ネクストホップとして選択)するようになります。
本章は、物理ネットワークの場合の手順を紹介しています。
もし、他社のクラウドサービス上に OpenVPN クライアント (VPN Gateway) を配置した場合は、各クラウドサービスの 仮想ネットワーク の ルーティング構成を変更してください。
3-2. Azure ルートテーブルへ 物理ネットワーク宛のルート (10.16.47.0/24) を追加
- Azure Portal にサインインし 事前に構成済み の ルートテーブルを開きます。
- 左ペイン の ルート を選び 追加 を押します。
- 以下の通り、任意のルート名を入力したあと、物理ネットワーク向けの ネットワークアドレスを入力して、ネクストホップの種類は、仮想アプライアンス を選び、OpenVPN Access サーバーのプライベートアドレスを設定し、最後に 追加 を押します。
- 以下の通知が表示されます。
- ルートが作成されると、以下のように 一覧に追加されます。
続けて、左ペインから 有効なルート を選択します。
- 下図の 赤線部 では、必ず 起動中されている VM の NIC を選択してください。
7.以下のように 有効なルート の一覧に 追加したルートが表示されていれば OK です。
(中略)
この構成をおこなった、Azure 仮想ネットワーク上の ホスト は 物理ネットワーク (10.16.47.0/255.255.255.0) と通信する際に、仮想アプライアンス(OpenVPN Access サーバー:10.10.10.8) を 経由(ネクストホップとして選択)するようになります。
4. その他
4-1. アドレス空間へ 物理ネットワーク (10.16.47.0/24)のアドレスを追加
この設定を実施しなくても、仮想ネットワーク と 物理ネットワーク 間の疎通は行えます。
しかし、この設定を加えることで、仮想ネットワーク上に Azure 仮想ネットワークゲートウェイ が合った場合、さらに その先に接続されている外部のネットワーク(ピアリング、V2V、S2S、P2S、ExpressRoute)とも接続することが出来るようになります。
5. 疎通確認
以上の構成で、Azure 仮想ネットワーク上の ホスト と、物理ネットワーク上の ホスト が相互に通信ができるようになっているハズです。
設定が正しいのに、疎通ができない場合は、Windows Firewall でブロックされてしまっている可能性があります。
その場合は、各ホスト の Windows Firewall を無効化するなどしてみてください。