自宅から複数人が同じグルーバルIPでインターネット接続がしたい
作業場所を固定化しない働き方もスタンダードになってきていると思いますので、使用するグルーバルIPは各人の環境に依存する事が多くなります。
グローバルIPで制御しているサイトやシステムを利用する場合、各人のグローバルIPを許可してもらう必要があります。
少人数であったり短期間での使用であればさほど気にならないとは思いますが、
頻繁に利用者の増減が行われたり大人数での作業等の場合、許可設定の手間がとても掛かります。
皆が同じグローバルIPを利用出来るのであれば幸せになれるのではないかと考えました。
そこで簡易に用意出来るVPN環境をAzureで構築してみました。
構成
Azureで利用するサービスはVirtual WANとAzure Firewallです。
Virtual WANでP2S VPN接続してFirewallにルーティングしてインターネットに出ます。
認証はAzureADを使用します。
VPNクライアントはAzure VPNクライアント。
構築
Azure VPNアプリ登録
以下ドキュメントを参考にしてVPNの認証に使うテナントにAzureVPNアプリを登録します。
ユーザー VPN OpenVPN プロトコル接続用の Azure Active Directory テナントを準備する
Virtual WAN
P2Sの場合は種類をStandardにします。
ユーザーVPN
対象ユーザー
はAzureADに登録したVPNアプリのアプリケーションIDです
Issuer
とAADテナント
の末尾はテナントIDです。
仮想ハブ
今回はどこの仮想ネットワークにも接続しないためハブプライベートアドレス空間
は適当です。
ポイント対サイトを作成します。
構成
は先ほど作成したユーザーVPN名です。
Azure Firewall
セキュリティで保護されたハブに変換
を行うことでハブにFirewallを作成できます。
Azure Firewallを有効にし、Azure Firewallを作成します。
Firewall Manager
からインターネット通信をハブと関連付けます。
画像はチェックついていないですが、P2SConnectionConfigDefault
にチェックして インターネットトラフィックをセキュリティで保護 を押します。
デフォルトルートの次ホップがAzure Firewallになっています。
ファイアウォールポリシーはネットワーク規則でVPNクライアントIPのみ全許可にしています。
VPNクライアント
AzureポータルからVPNプロファイルをダウンロードします。
ダウンロードしたazurevpnconfig.xml
をエディタで開き、clientconfigノードを以下のように編集し、デフォルトルートを強制トンネルします。
こちらの編集をしないとクライアント端末のデフォルトルートが優先されVPNで設定したグローバルIPを使用できません。
ただし、xmlの編集をしたくない場合はクライアント端末のNICのメトリックを変更することでも対応可能です。
<clientconfig>
<includeroutes>
<route>
<destination>0.0.0.0</destination>
<mask>1</mask>
</route>
<route>
<destination>128.0.0.0</destination>
<mask>1</mask>
</route>
</includeroutes>
</clientconfig>
Azure VPNクライアントを起動しプロファイルをインポートします。
Azure FirewallのパブリックIPでインターネット通信出来ることを確認できました。
終わりに
サーバレスでVPN環境を構築することが出来ました。
認証にもAzureADを使えたりセキュリティ面でも申し分ないと思うのですがAzure利用料が高額になるため、
この環境を使うための予算取りが一番の課題な気がしています…。
参考ドキュメント
ポイント対サイト ユーザー VPN 接続を構成する - Azure Active Directory 認証
P2S OpenVPN プロトコル接続用に VPN クライアントを構成する:Azure AD 認証
Virtual WAN ハブのルーティング インテントとルーティング ポリシーの構成方法