Azure Marketplace の OpenVPNをハブ＆スポークで試してみた


# はじめに

こちらの記事を参考にした記事です。
手順はかなり丁寧に解説してくださっているので下記をご参照ください

https://qiita.com/carol0226/items/7a9160b298b736aa187e

本記事は上記記事とは前提構成を変えてP2Sまで検証したレポートになります。
構成は下記の通りです。

1. 前提構成
1. 差分ポイント
    ⇒元記事と異なる手順を解説します
1. トラブル
    ⇒設定時のトラブルを紹介します
1. うっかりミスポイント
    ⇒初心者的なミスを紹介します
1. 感動ポイント
    ⇒個人的に感動した点を紹介します 


既にOpenVPN構築済みで、新たにVNetをピアリングさせた場合は「差分ポイント」のみ実施いただければよいかと思います。

# 1.前提構成

私の場合はハブ＆スポーク環境で試したかったので
作成元の記事ではVNet１つですが、私の場合は下記VNet２つをピアリングして接続している環境です。

|Vnet|サブネット |設置しているVM|
|:------|:------------|:------|
|VNet(A)|10.100.0.0/24|openvpn用のVM|
|VNet(B)|10.150.0.0/24|試験用の適当なVM|

### 1-1.期待していること

手元のPCからVNet(B)のVMへRDP接続が可能となることを確認します。

### 1-2 ピアリング設定

VNetのピアリング設定画面から「追加」ボタンで追加できます。

|設定|VNet(A)|VNet(B)|
|:------|:------------|:------|
|アクセス許可|〇|〇|
|トラフィック転送|〇|〇|
|GWへ転送|〇|ー|
|リモートGW～・・・|ー|〇|

:::note warn
私の場合VPNGWを使用していたこともあってこのように設定していますが、一部不要な設定があるかもしれません。
例：GWへの転送は〇でなくとも通信可能かもしれません。
上記設定で問題なく動作することは確認済みです。
:::

参考URL

https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-network-peering-overview


# 2.差分ポイント

記事通りに進めました。
異なる部分についてのみ記載します。

### 2-1.ルートテーブル

[ルーティングの構成](https://qiita.com/carol0226/items/8d89da5aeba8a3ddb9bd#2-3-2-%E3%83%AB%E3%83%BC%E3%83%88%E3%81%AE%E8%BF%BD%E5%8A%A0)

VNet2つ両方のサブネットにルート追加してあげます。

OpenVPNの管理画面
⇒「VPN Settings 」
⇒「Dynamic IP Address Network」　←ここのネットワークアドレスをXとします。


|Vnet|サブネット |設置しているVM|追加ルーティング|
|:------|:------------|:------|:------|
|VNet(A)|10.100.0.0/24|openvpn用のVM|X→openvpn用のVMIP|
|VNet(B)|10.150.0.0/24|試験用の適当なVM|X→openvpn用のVMIP|

:::note warn
既に何かしらのルーティングが特定サブネットに割り当たっている場合は、新規作成ではなく割り当てているルートテーブルにルーティングを追加してあげてください。※既存ルートテーブルを削除、新規作成してもOKです。
:::

### 2-2.NAT無効化


OpenVPNの管理画面
⇒「VPN Settings」
⇒「Specify the private subnets to which all clients should be given access 」

VNet（使用するサブネット）２つ分のネットワークアドレスを追加する必要があります。

私の場合は下記を追加
>10.100.0.0/24
>10.150.0.0/24

### 2-3.まとめ
初心者なもので、切り分けに相当躓いたのですが・・・
差分となるポイントは上記２つだけでした。結果だけ見ると簡単ですね・・・。

# 3.トラブル🚨

私が直面したトラブルを紹介します。

### 3-1. アドレス空間が更新できない

余計なピアリングが残っていると、アドレス空間を更新できません。
私の場合ピアリングした先のVNetが無いままピアリングだけ残っていたのでエラーがでました。

### 3-2.ピアリング同期が外れる

上記アドレス空間更新時、ピアリング環境の場合は同期が外れます。
VNetのピアリング欄から再同期が必要です。
![ピアリングの同期が外れる.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/0bcff7d7-345e-4386-9f4a-d1521241986b.png)

### 3-3. 余計なルーティングが残っている

プライベートIPを使用してRDPできない
NSGの穴は開いている
OpenVPNも生きている
何故か・・・？と少し悩みました。

そこで、手元のPCにてコマンドプロンプトからコマンド実行
~~~
route print
~~~

PCのインターフェースが２つありますが、
目的のVNet向けの通信が自宅ルータのデフォルトGWにルーティングされていました。

>0.0.0.0 > 自宅ルータのゲートウェイ
>その他目的のVNet向けの通信> 自宅ルータゲートウェイ
>0.0.0.0/1>openvpnが付与したゲートウェイ　　←これは自動で付与される様子
>128.0.0.0/1>openvpnが付与したゲートウェイ　←これは自動で付与される様子

よって余計なルーティング消しました
※コマンドプロンプトの管理者権限が必要です

~~~ 
route delete ”RDPしたいVnetのサブネット”　
~~~

これで無事RDPできました！！

# 4.うっかりミスポイント 🤔

トラブルシューティングというよりは、
うっかりだったなと思うことを２つほど紹介します。

### 4-1.パスワード忘れ

私はデプロイ待ち時間別なことをしてしまうタイプなんですが、
違うことをしていてVMの管理者パスワードを忘れました。

[1-3-1. SSH での初期設定](https://qiita.com/carol0226/items/7a9160b298b736aa187e#1-3-1-ssh-%E3%81%A7%E3%81%AE%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A)
ここで再度入力する機会があるので、覚えておきましょう・・・


参考URL

https://learn.microsoft.com/ja-jp/troubleshoot/azure/virtual-machines/windows/reset-rdp

### 4-2.パスワード入力ミス

[1-3-1. SSH での初期設定](https://qiita.com/carol0226/items/7a9160b298b736aa187e#1-3-1-ssh-%E3%81%A7%E3%81%AE%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A)

同じ場所のログイン後です。
パスワード設定をする箇所があるのですが、任意のパスワード設定後もう一度パスワードを入力します。
１回目のパスワード入力後、脳死で適当にEnter押していたら何もできなくなっちゃいました。
※SSHでのログインもできなくなり・・・再インストールしました。

# 5.感動ポイント✨

VMで好きに停止できる閉域検証環境を構築できるという点ではかなり節約になります。
一度構築してしまえば使い勝手がよくおすすめです。
また、チャレンジするとAzureネットワークへの理解が深くなるかと思います。

その他細かな点を3点ほど紹介します。

### 5-1.Azure側からインターネットへ

OpenVPN接続前後でIPアドレスが変わるのはとてもわかりやすかったです。
ローカルな環境のルータからではなく、きちんとAzureからインターネットへ抜けていることがわかります。

IPアドレス確認 (CMAN) のサイト
https://www.cman.jp/network/support/go_access.cgi

### 5-2.ipconfig上の表記

私の場合は
OpenVPN管理画面
⇒「VPN Settings」 
⇒「Dynamic IP Address Network」にて読み取った値が
初期設定で172.27.224.0/20となっていました。

ここの値から手元のPCのIPアドレスが付与されます。

「Dynamic IP Address Network」設定箇所の日本語訳
>「ユーザーが [ユーザー権限] ページで特定の VPN IP アドレスを設定していない場合、ユーザーの VPN クライアントにはこのネットワークからアドレスが割り当てられます。」

OpenVPN接続後、試しにPCからipconfigをたたきました。
自宅のルータとは別のインターフェースに下記がありました。

![openvpn用のnic？.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/dd92b9ae-f477-427f-8526-509250edc4f8.png)

説明通りですが、きちんと割り振られている・・・すごい・・・。

### 5-3.route print

openvpn接続後は下記のルーティングが付与されています。

![routeprint(1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/645c9c58-705e-47bf-a0e0-22dd7b8c8a6c.png)
![routeprint(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248327/331f8e23-3491-414f-8230-547ba0145c56.png)

ロンゲストマッチ的にデフォルトルートを奪うって仕組みみたいです。（たぶん）
※0.0.0.0/0よりも0.0.0.0/1と128.0.0.0/1のほうがより詳しく記載しているのでデフォルトルートを奪える。

172.27.232.1というのが「Dynamic IP Address Network」で設定されているアドレスから払い出されたGWのようです。

こういう細かい制御が裏で勝手に設定されていると考えるとすごいなぁと思います。



# 最後に

ここまで御覧いただきありがとうございました。
私の場合はP2Sまでできればよかったので、ここまでとしています。
個人的に躓いた部分などはすべて記載してみましたので、何か参考になるものがあれば幸いです。
この記事についてのご意見やご質問があれば、お気軽にコメントお願いいたします。

※元となった記事が無ければ、検証は困難でした。
整理された記事を投稿してくださった投稿主さまありがとうございました。