SORACOM Door を使用して Azure と VPN 接続する
SORACOM Door (以下、Door) を利用すると、SORACOM とサイト間 VPN 接続を行うことができます。
ここでは、SORACOM Door を利用して、Microsoft Azure (以下 Azure) から VPN 接続する方法を紹介します。
ステップ 1: Azure 上に、VPN 接続用の仮想サーバを起動する
Azure ポータルより、ルーターとして動作する Linux 仮想サーバ (ルーターサーバ) を起動します。
この資料では、ルーター用の仮想マシンのイメージとして、Ubuntu Server 16.04 LTS を使用しています。また Azure 上の仮想ネットワークなどの値は以下のものを例として使用しますが、実際に構築する際にはご自身の環境に置き換えてください。
項目 | 値 |
---|---|
Azure 仮想ネットワーク アドレスレンジ | 例) 10.3.0.0/16 |
ルーターサブネット | 例) 10.3.0.0/24 |
ルーターサーバ ローカル IP アドレス | 例) 10.3.0.4 |
ルーターサーバ パブリック IP アドレス | 例) 40.115.186.34 |
Azure ポータルより、仮想サーバを起動します。
- Virtual Machines の追加を選択
- Virtual Machines の検索で「Ubuntu」を入力し、リストから「Ubuntu Server 16.04 LTS」を選択
- デプロイモデルの選択で「リソースマネージャー」を選択
- 「基本」で、サーバの名前 (任意)、ユーザー名、パスワード、サブスクリプション、リソースグループを入力
- 「サイズ」で、A0 Standard を選択
- 「設定」はデフォルト値を使用 (サブネット等の変更が必要であればここで設定)
- 概要を確認して作成
Linux 起動後、SSH での接続が可能かどうかを確認しておきます。
ステップ 2: VPG を作成する
Door を利用するには、VPG Type-F (閉域網接続可能) を作成 します。
VPG ID をメモしてください
VPG を作成したら、VPG ID をメモしてください。ステップ 3: SORACOM Door の利用を申請する ときに必要な情報です。
ステップ 3: SORACOM Door の利用を申請する
申請が必要な VPG の設定変更については、VPG 設定変更手数料が発生します。
Azure ポータルから、仮想サーバに割り振られたパブリック IP アドレスを確認します。
次に、SORACOM Door の利用を申請します。こちらのページ から申請してください。
申請時に以下の項目の入力がありますので、下記内容を記載します。
項目 | 値 |
---|---|
ご利用になる VPG の ID | 上記手順で作成した VPG の VPG ID |
ご利用予定の VPN ゲートウェイ機器のベンダー名および型番 | Microsoft Azure (Ubuntu Server 16.04 LTS) |
ご利用になる VPN ゲートウェイ機器に設定するグローバル IP アドレス (静的) | 上記手順で確認したパブリック IP アドレス |
動的経路制御を利用する場合 (*1)、AS 番号を入力してください | 64513 (64513 から 65534 までの範囲内の任意の値) |
静的経路制御を利用する場合 (*1)、ルーティング対象とする IP アドレスレンジ | Azure 仮想ネットワーク ネットワークレンジ (この例では 10.3.0.0/16) |
- (*1) 動的経路制御、または静的経路制御のどちらか一方を申請してください。
SORACOM 側で設定が完了すると、IPSec Tunnnel #1 および #2 について、以下の内容が送られてきます。
- 暗号化についての情報 (Pre Shared Key、暗号化方式等)
- 接続用 IP アドレス情報 (Tunnel インターフェースのアウトサイドおよびインサイドの IP アドレス情報)
- BGP 情報 (Virtual Private Gateway の ASN 等)
- VPG 側のネットワークアドレスレンジ
これらの情報を使用して、ルーターサーバの各種設定を行います。
ステップ 4: Azure 上の Linux から Door へ接続する
ネットワークセキュリティグループの設定
ルーターサーバーのネットワークセキュリティグループ設定に、以下の項目を追加します。
- 受信セキュリティ規則 (UDP 500)
- 名前 : vpg-udp
- 優先度 : 100
- ソース : 任意
- プロトコル : UDP
- 発信元ポート範囲 : *
- 宛先 : 任意
- 宛先ポート範囲 : 500
- アクション : 許可
- 受信セキュリティ規則 (TCP 50)
- 名前 : vpg-ip
- 優先度 : 101
- ソース : 任意
- プロトコル : TCP
- 発信元ポート範囲 : *
- 宛先 : 任意
- 宛先ポート範囲 : 50
- アクション : 許可
- 送信セキュリティ規則 (ALL)
- 名前 : allow-all
- 優先度 : 100
- ソース : 任意
- プロトコル : 任意
- 発信元ポート範囲 : *
- 宛先 : 任意
- 宛先ポート範囲 : *
- アクション : 許可
必要なソフトウェアのインストール
Azure 上 のルーターサーバにログインし、必要なソフトをインストールします。
sudo su
apt-get install racoon quagga ipsec-tools
(すべてデフォルト設定を使用)
IP フィルター、フォワーディング設定
ルーターとして動作させるため、カーネルパラメータを変更します。/etc/sysctl.conf
を編集します。
cd /etc
vi sysctl.conf
設定ファイルに、以下の修正を行います。
net.ipv4.conf.default.rp_filter=0 (コメントアウトをはずす)
net.ipv4.conf.all.rp_filter=0 (コメントアウトをはずす)
net.ipv4.conf.eth0.rp_filter=0 (新規追加)
net.ipv4.conf.lo.rp_filter=0 (新規追加)
net.ipv4.conf.eth0.disable_policy=1 (新規追加)
net.ipv4.ip_forward=1 (値を0から1に変更)
設定を反映します。
sysctl -p sysctl.conf
IPSec/BGP 設定準備
ipsectools、racoon、quagga の設定ファイルを作成するため、はじめに以下のテーブルに従って各種情報を整理します。
変数名 | 項目例 | 内容 |
---|---|---|
<LOCAL PUBLIC IP> | 40.115.186.34 | ルーターサーバのパブリック IP アドレス |
<LOCAL PRIVATE IP> | 10.3.0.4 | ルーターサーバのローカル IP アドレス |
<CONN A PUBLIC IP> | 52.68.161.59 | IPSec Tunnel #1 のパブリック IP アドレス |
<CONN A LOCAL LINK> | 169.254.24.250/30 | IPSec Tunnel #1 のルーターサーバ側 (Customer Gateway) のトンネルインターフェースのインサイド IP アドレス |
<CONN A REMOTE LINK> | 169.254.24.249/30 | IPSec Tunnel #1 の VPG 側 (Virtual Private Gateway) のトンネルインターフェースのインサイド IP アドレス |
<CONN A REMOTE LINK WO 30> | 169.254.24.249 | 上記の /30 を抜いたもの |
<CONN A PSK> | XkqigeaoRuOglouOWmok | IPSec Tunnel #1 の Pre-Shared Key |
<CONN B PUBLIC IP> | 52.196.231.47 | IPSec Tunnel #2 のパブリック IP アドレス |
<CONN B LOCAL LINK> | 169.254.24.22/30 | IPSec Tunnel #2 のルーターサーバ側 (Customer Gateway) のトンネルインターフェースのインサイド IP アドレス |
<CONN B REMOTE LINK> | 169.254.24.21/30 | IPSec Tunnel #2 の VPG 側 (Virtual Private Gateway) のトンネルインターフェースのインサイド IP アドレス |
<CONN B REMOTE LINK WO 30> | 169.254.24.21 | 上記の /30 を抜いたもの |
<CONN B PSK> | Euo3vqxH6zM0gaORmoqpP | IPSec Tunnel #2 の Pre-Shared Key |
<LOCAL SUBNET> | 10.3.0.0/16 | Azure 仮想ネットワーク アドレスレンジ |
<REMOTE SUBNET> | 100.65.6.0/24 | VPG 側ネットワーク アドレスレンジ |
<LOCAL ASN> | 64513 | ルーターサーバ側 BGP ASN |
<REMOTE ASN> | 10124 | VPG 側 BGP ASN |
次に、上記変数を下記 3 つのテンプレートの値を置換します。
上記ファイルをそれぞれダウンロードし、上記変数でテンプレート内の値を置換します。
IPSec/BGP 設定
ipsec-tools 設定
/etc/ipsec-tools.conf
を開き、「ipsectools 設定」から作成した値を、ファイルの末尾に追記して保存します。
racoon 設定
/etc/racoon/racoon.conf
を開き、「racoon 設定」から作成した値を、ファイルの末尾に追記して保存します。
次に /etc/racoon/psk.txt
を開き、「racoon PSK 設定」から作成した値を、ファイルの末尾に追記して保存します。
quagga 設定
/etc/quagga/daemons
を開き、zebra
と bgpd
を yes
に変更します。
zebra=yes
bgpd=yes
/etc/quagga/bgpd.conf
を新規作成し、「quagga BGP 設定」で作成した値をコピーして保存します。
/etc/quagga/zebra.conf
を新規作成し、下記ファイルの内容をコピーして保存します。
hostname ec2-vpn
password passWord
enable password passWord
!
! list interfaces
interface eth0
interface lo
!
line vty
interface 追加
以下コマンドで、インターフェースを追加します。
ip a a 169.254.24.250/30 dev eth0 (169.254.24.250/30は<CONN A LOCAL LINK>)
ip a a 169.254.24.22/30 dev eth0 (169.254.24.22/30は<CONN B LOCAL LINK>)
また起動時にこの設定が反映されるよう、/etc/network/interfaces.d/50-cloud-init.cfg
の iface eth0
の行の下に、以下の値を追加します。(TAB)
はタブ文字を表します。
(TAB)post-up ip a a 169.254.24.250/30 dev eth0 (169.254.24.250/30は<CONN A LOCAL LINK>)
(TAB)post-up ip a a 169.254.24.22/30 dev eth0 (169.254.24.22/30は<CONN B LOCAL LINK>)
サービスの起動
上記の設定を完了後、サービスをリスタートします。
service setkey restart
service racoon restart
service quagga restart
接続確認のため、IPSec Tunnel #1 および #2 の VPG 側トンネルインターフェースのインサイド IP アドレスへ ping が通るか確認します。
PING 169.254.25.149 (169.254.25.149) 56(84) bytes of data.
64 bytes from 169.254.25.149: icmp_seq=1 ttl=64 time=2.40 ms
64 bytes from 169.254.25.149: icmp_seq=2 ttl=64 time=2.28 ms
他サブネットへの接続設定
デバイスから、ルーターサーバ以外のサブネット (たとえば Web サーバのサブネット) へアクセスする場合は、ルートテーブルの設定が必要になります。この資料では、ルーターサーバと別に、Web サーバ群の入った Web サブネットがあり、デバイスからアクセスすることを想定します。
デバイスから Web サーバへアクセスする場合、デバイスの通信は一旦 VPG で NAT されるため、ソース IP アドレスは VPG 側ネットワークのアドレスレンジ内 (上記例では 100.65.6.0/24) の IP アドレスとなります。このため、このレンジへの通信をルーターサーバにルーティングするよう、Web サブネットのルートテーブルに設定します。
はじめに、ルーターサーバの IP 転送設定を有効にします。Azure ポータルから、ルーターサーバに付けられているネットワーク・インターフェースを選択し、[設定] > [IP アドレス]とクリックします。
IP アドレスの設定画面で、「IP 転送の設定」を「有効」にします。また「割り当て」についても「静的」を選択します。この設定で、デバイスからの通信を他のサーバに転送できるようになります。
次に、Web サブネットにルーティングの設定をします。VPG 側ネットワークアドレスレンジへ向けた通信をルーターサーバに向けるため、ルートテーブルを作成し、Web サーバのサブネットに対して適用します。作成手順は以下となります。
- リソースグループを選択
- [追加] をクリック
- 「ルートテーブル」で検索し、[作成] をクリック
- 名前 (任意) を入力し、適切なサブスクリプション、リソースグループ、場所を設定
- 作成完了後、設定->ルートを選択
- [追加] をクリックし、ルート名 (任意)、アドレスプレフィックス (VPG 側ネットワークアドレスレンジ、上記例では 100.65.6.0/24)、次ホップの種類で「仮想アプライアンス」を選択し、次ホップアドレスにルーターサーバのローカル IP アドレス (上記例では 10.3.0.4) を設定して [OK] をクリック
- サブネットを選択し、[関連付け] をクリック
- 仮想ネットワークと Web サブネットを選択して、[OK] をクリック
上記設定の反映後、デバイスから Web サーバのプライベート IP アドレスへのアクセスが可能になります。なお、Web サーバが 80 番ポートなどを利用する場合は、Web サーバのセキュリティグループも適切に設定してください。
ステップ 5: IoT SIM が利用する VPG を切り替える
IoT SIM が、ステップ 2: VPG を作成する で作成した VPG を利用するように設定し、セッションを再確立します。詳しくは、IoT SIM が利用する VPG を切り替える を参照してください。
ステップ 6: VPN で接続する
VPG を有効化したグループに所属する IoT SIM は、Door を通じて、VPN 接続を行います。
(参考) Door の利用を終了する
Door を用いた VPN 接続が不要になった場合は、ステップ 2: VPG を作成する で作成した VPG の利用を終了 / 削除してください。詳しくは、VPG の利用を終了する / 削除する を参照してください。