Azure VPN Gatewayで拠点間(Site-to-Site)接続!オンプレミス連携の設定手順を徹底解説
生徒
「会社にあるサーバーと、Azure(アジュール)上のクラウド環境を安全につなぎたいのですが、どうすればいいですか?」
先生
「それなら、Azure VPN Gateway(エーブイエヌ ゲートウェイ)を使った拠点間(サイトツーサイト)接続が最適ですね。インターネット越しでも、暗号化されたトンネルを作ることで、まるで社内LAN(ラン)のように通信できるんですよ。」
生徒
「難しそうですね。設定にはどんな手順が必要なんですか?」
先生
「全体像を把握すれば大丈夫です。仮想ネットワークの作成から、ゲートウェイの設置、オンプレミス側の設定まで、順番に詳しく見ていきましょう!」
1. Azure VPN Gatewayとは?拠点間接続の基本概念
Azure VPN Gateway(アジュール ブイピーエヌ ゲートウェイ)は、Microsoft(マイクロソフト)のクラウドサービスであるAzureと、皆さんのオフィス(オンプレミス)を安全に接続するための専用の「入り口」です。正式にはSite-to-Site(サイトツーサイト)VPNと呼ばれます。これは、インターネットという公共の道の中に、自分たち専用の「暗号化されたトンネル」を作る技術です。
この技術には、IPsec(アイピーセック)やIKE(アイキー)という通信プロトコルが使われます。これにより、データが途中で盗み見られたり、改ざんされたりするリスクを防ぎます。歴史的には、高価な専用線を引くことが難しかった中小企業でも、手軽に安全なハイブリッドクラウド環境を構築できるようになった画期的な仕組みです。現在はDX(デジタルトランスフォーメーション)の基盤として、多くの企業で導入されています。
2. 事前準備とネットワーク設計のポイント
設定を始める前に、一番大切なのが「ネットワーク設計」です。特に、オンプレミス側のプライベートIPアドレス(アイピーアドレス)範囲と、Azure側のVNet(ブイネット:仮想ネットワーク)のアドレス範囲が重ならないように注意してください。住所が重複していると、データがどこに届けばいいか迷子になってしまうからです。
例えば、会社が「192.168.1.0/24」を使っているなら、Azure側は「10.0.0.0/16」にするなど、明確に分ける必要があります。また、オンプレミス側には「パブリックIPアドレス」を持つVPNルーター(CiscoやYamahaなど)が必要です。これらの情報を事前にメモしておきましょう。
3. 仮想ネットワーク(VNet)とゲートウェイサブネットの作成
まずはAzureポータルで仮想ネットワークを作成します。ここでポイントとなるのが、GatewaySubnet(ゲートウェイサブネット)という専用の領域を作ることです。これは、VPN Gatewayという「機械(仮想的なルーター)」を置くための専用の部屋のようなものです。この名前は決まっており、自分で自由に変えることはできません。
以下のコードは、Azure CLI(コマンドラインインターフェース)を使って、リソースグループとネットワークを作成する例です。初心者の方はポータルからボタン操作で作成することも可能ですが、コードで管理すると間違いが少なくなります。
az network vnet create --name MyVNet --resource-group MyRG --address-prefix 10.0.0.0/16 --subnet-name MySubnet --subnet-prefix 10.0.0.0/24
az network vnet subnet create --address-prefix 10.0.255.0/27 --name GatewaySubnet --resource-group MyRG --vnet-name MyVNet
4. 仮想ネットワークゲートウェイのデプロイ
次に、いよいよ本体である「仮想ネットワークゲートウェイ」を作成します。ここで、接続の種類を「VPN」に、VPNの種類を「ルートベース」に設定するのが一般的です。SKU(エスキュー:性能ランク)によって通信速度や料金が変わるため、最初は「VpnGw1」などの標準的なものを選ぶと良いでしょう。作成には通常30分から45分ほど時間がかかります。コーヒーを飲みながらゆっくり待ちましょう。
このゲートウェイが作成されると、Azure側から外の世界と通信するための「パブリックIPアドレス」が発行されます。これが、オンプレミス側のルーターが接続先として指定する宛先になります。
5. ローカルネットワークゲートウェイの設定
「ローカルネットワークゲートウェイ」という名前は少し紛らわしいですが、これはAzureに対して「接続先となるオンプレミス側の情報」を教えるための設定オブジェクトです。具体的には、社内ルーターのグローバルIPアドレスと、社内で使っているIPアドレスの範囲(例:192.168.1.0/24)を登録します。
これにより、Azureは「192.168.1.x宛の通信が来たら、このIPアドレスのルーターへ送ればいいんだな」と理解できるようになります。まさに、クラウドの中に社内ネットワークの「看板」を立てるようなイメージですね。
6. VPN接続(Connection)の作成と共有キーの設定
最後に、作成した「仮想ネットワークゲートウェイ」と「ローカルネットワークゲートウェイ」を紐づけます。これが「接続(Connection)」の設定です。ここで最も重要なのが共有キー(プレシェアードキー)です。これは、双方のルーターがお互いを本人だと確認するための「合言葉」のようなものです。
この合言葉が1文字でも違うと、接続は確立されません。英数字を組み合わせた複雑な文字列を設定し、オンプレミス側のルーターにも同じものを入力します。以下は、接続情報を管理するためのデータベースがあった場合のイメージです。
id | connection_name | gateway_type | shared_key | status
---+-----------------+--------------+-----------------+-----------
1 | OfficeToAzure | SiteToSite | SecretKey123! | Initial
2 | OsakaBranch | SiteToSite | OsakaVPN#2026 | Connected
3 | TokyoBranch | SiteToSite | TokyoSafe@88 | Connected
接続が成功するように、共有キーの管理は厳重に行いましょう。以下のSQL文は、接続状態を確認するログを取得するイメージのクエリです。
SELECT connection_name, status, last_error_message
FROM vpn_connection_logs
WHERE status != 'Connected'
ORDER BY log_time DESC;
connection_name | status | last_error_message
----------------+-------------+-----------------------------
OfficeToAzure | Connecting | Waiting for local gateway...
7. オンプレミス側のルーター設定
Azure側の準備ができたら、最後は社内にある物理的なルーターの設定です。Azureポータルから、各メーカー(Yamaha、Cisco、Juniperなど)に合わせた設定スクリプトをダウンロードできる機能があります。これを利用すると、設定ミスを大幅に減らすことができます。
設定する項目は、主に「対向先IP(AzureのゲートウェイIP)」、「暗号化アルゴリズム(AES256など)」、「共有キー」の3点です。設定が反映されると、ルーターのステータスランプが緑色に点灯したり、Azureポータル上のステータスが「接続済み」に変わります。
8. 接続確認とトラブルシューティングのコツ
無事に接続できたら、実際に通信ができるかテストしましょう。Azure上の仮想マシン(VM)に対して、オンプレミスのPCから「ping(ピング)」コマンドを打ってみるのが一番簡単です。このとき、Azure側の「ネットワークセキュリティグループ(NSG)」でICMP通信(pingで使う通信)を許可しておくのを忘れないでください。
ping 10.0.0.4
Pinging 10.0.0.4 with 32 bytes of data:
Reply from 10.0.0.4: bytes=32 time=25ms TTL=64
Reply from 10.0.0.4: bytes=32 time=24ms TTL=64
もし応答がない場合は、共有キーの間違いか、ファイアウォール(通信の壁)が邪魔をしている可能性が高いです。また、ルーティング設定が正しく、オンプレミス側のパケットがちゃんとVPNトンネルに向かっているかも確認しましょう。
9. VPN接続の自動化とC#による監視例
運用フェーズに入ると、VPNの接続状態を自動で監視したくなることがあります。Azure SDK(エスディーケー)を利用すれば、C#などのプログラミング言語を使って、接続状態が「Disconnected(切断)」になったときにアラートを出すツールを作ることも可能です。
以下は、接続状態を判定する非常にシンプルなC#のロジック例です。プログラム初心者の方でも、if文の使い方の基本として見てみてください。
string connectionStatus = "Connected";
if (connectionStatus == "Connected")
{
Console.WriteLine("VPNは正常に稼働しています。");
}
else
{
Console.WriteLine("警告:VPNが切断されている可能性があります!確認してください。");
}
このように、ITのインフラ設定も、プログラムと組み合わせることでより便利に、より確実に管理できるようになります。システムエンジニア(SE)への第一歩として、まずは手動での接続からチャレンジしてみましょう!
まとめ
ここまで、Azure VPN Gateway(アジュール ブイピーエヌ ゲートウェイ)を活用した、拠点間(Site-to-Site)接続の仕組みから具体的な設定手順、そしてトラブルシューティングのポイントまでを詳しく解説してきました。クラウドとオンプレミスを安全につなぐハイブリッドクラウド環境の構築は、現代のビジネスインフラにおいて欠かせない技術となっています。
重要なポイントを振り返ると、まずは「ネットワーク設計」が全ての土台となります。Azure側の仮想ネットワーク(VNet)と社内ネットワークのIPアドレス範囲が重複しないよう、慎重にアドレス空間を割り振る必要があります。次に、Azure側に専用の「GatewaySubnet(ゲートウェイサブネット)」を作成し、仮想ネットワークゲートウェイをデプロイします。このゲートウェイが、クラウド側の玄関口として機能し、暗号化通信の終端ポイントとなります。
一方で、オンプレミス側の情報をAzureに伝える「ローカルネットワークゲートウェイ」の設定も忘れてはいけません。社内のルーターが持つパブリックIPアドレスと、社内LANのアドレス範囲を正しく登録することで、双方向の通信ルートが確立されます。そして、最後にこれらを「接続(Connection)」オブジェクトで紐づけ、共通の「共有キー(プレシェアードキー)」を設定することで、初めてセキュアなトンネルが開通します。
運用管理の面では、接続状態を常に監視することが求められます。例えば、SQLデータベースを用いて、各拠点の接続ログを管理する仕組みを導入すると、過去のトラブル傾向を分析しやすくなります。以下に、管理システムで利用するテーブル構成と、接続状況を更新する際のクエリ例を示します。
id | gateway_name | local_ip | vpn_type | last_heartbeat
---+----------------+-----------------+--------------+--------------------
1 | HQ-Gateway | 203.0.113.10 | RouteBased | 2026-03-30 14:00:00
2 | Osaka-Branch | 198.51.100.25 | RouteBased | 2026-03-30 14:05:22
3 | Fukuoka-Office | 203.0.113.50 | PolicyBased | 2026-03-30 13:58:10
4 | Nagoya-Lab | 192.0.2.15 | RouteBased | 2026-03-30 14:10:05
上記のデータに対して、特定のゲートウェイの状態を更新したり、最新の接続確認時間を記録したりする場合は、以下のようなSQLを実行します。
UPDATE vpn_gateways
SET last_heartbeat = CURRENT_TIMESTAMP
WHERE gateway_name = 'Osaka-Branch';
SELECT id, gateway_name, last_heartbeat
FROM vpn_gateways
ORDER BY last_heartbeat DESC;
id | gateway_name | last_heartbeat
---+----------------+--------------------
2 | Osaka-Branch | 2026-03-30 14:15:30
4 | Nagoya-Lab | 2026-03-30 14:10:05
1 | HQ-Gateway | 2026-03-30 14:00:00
3 | Fukuoka-Office | 2026-03-30 13:58:10
また、接続の自動復旧やアラート通知のために、スクリプトを活用することも有効です。Linux環境のサーバーから接続性を確認し、ログに記録する基本的なコマンド操作の流れは以下の通りです。
curl -I http://10.0.0.4/healthcheck
HTTP/1.1 200 OK
date: Mon, 30 Mar 2026 14:20:00 GMT
server: Apache
さらに、システムに組み込む際にはC#などの言語を使用して、ステータスに応じた処理を記述します。例えば、特定の接続プロトコルがIPsec(アイピーセック)であることを確認し、正常であれば通信を継続するロジックは次のようになります。
string protocolType = "IPsec";
bool isTunnelActive = true;
if (protocolType == "IPsec" && isTunnelActive)
{
Console.WriteLine("セキュアなVPNトンネルを通じて通信が許可されています。");
}
else
{
Console.WriteLine("通信プロトコルまたは接続状態に異常があります。設定を確認してください。");
}
Azure VPN Gatewayの設定は、一見すると複雑なパズルのように思えるかもしれません。しかし、一つひとつの構成要素(VNet、GatewaySubnet、Local Network Gateway、Connection)の役割を理解し、正しい順番でパズルのピースをはめていけば、必ず安定したネットワークを構築できます。本記事の内容を参考に、ぜひ安全で利便性の高いクラウド連携を実現させてください。
生徒
「先生、ありがとうございました!VPN Gatewayの仕組みがかなり具体的にイメージできるようになりました。特に『GatewaySubnet(ゲートウェイサブネット)』の名前が固定されているという点は、自分で勝手に名前を付けて失敗するところでした。」
先生
「それは良かったです!名前のルールや、IPアドレスが重なってはいけないといった制約は、ネットワーク構築における基本中の基本ですが、意外と見落としがちなポイントなんですよ。」
生徒
「設定自体も大切ですが、その後の『監視』も重要なんですね。SQLやC#(シーシャープ)を使って状態をチェックする例を見て、インフラエンジニアもプログラミングの知識が必要だと実感しました。」
先生
「その通りです。最近は『Infrastructure as Code(インフラストラクチャー アズ コード)』といって、ネットワーク設定をコードで管理するのが主流です。Azure CLI(アジュール シーエルアイ)を使ったコマンド操作に慣れておくと、将来的に自動化もスムーズに導入できますよ。」
生徒
「まずはポータルから手動で試してみて、慣れてきたらコマンドやスクリプトでの管理にも挑戦してみます。もし ping(ピング)が通らなかったら、まずは『共有キー』と『NSG(ネットワークセキュリティグループ)』の設定を見直してみますね!」
先生
「素晴らしい心がけですね。トラブルが起きたときこそ、技術を深く理解するチャンスです。一つずつ切り分けて確認すれば、必ず解決できます。これからも頑張りましょう!」
生徒
「はい!自分だけの安全なクラウド環境を作れるように、一歩ずつ進んでいきます!」