MENU

Soracom

Users

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: Virtual Private Gateway (VPG) を作成する

VPG を作成する から VPG Type-F を作成し、作成した VPG の ID を控えます。

ステップ 3: SORACOM Door の利用を申請する

Azure ポータルから、仮想サーバに割り振られたパブリック IP アドレスを確認します。

次に、SORACOM Door の利用を申請します。 こちらのページ から申請してください。

申請時に以下の項目の入力がありますので、下記内容を記載します。

項目
ご利用になる VPG の ID上記手順で作成した VPG の ID
ご利用予定の VPN ゲートウェイ機器のベンダー名および型番Microsoft Azure (Ubuntu Server 16.04 LTS)
ご利用になる VPN ゲートウェイ機器に設定するグローバル IP アドレス(静的)上記手順で確認したパブリック IP アドレス
動的経路制御を利用する場合、AS 番号を入力してください64512 (64512 から 65534 までの範囲内の任意の値)
動的経路制御を利用する場合、ルーティング対象とする IP アドレスレンジAzure 仮想ネットワーク ネットワークレンジ (この例では 10.3.0.0/16)

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.59IPSec Tunnel #1 のパブリック IP アドレス
<CONN A LOCAL LINK>169.254.24.250/30IPSec Tunnel #1 のルーターサーバ側 (Customer Gateway)のトンネルインターフェースのインサイド IP アドレス
<CONN A REMOTE LINK>169.254.24.249/30IPSec Tunnel #1 の VPG 側 (Virtual Private Gateway)のトンネルインターフェースのインサイド IP アドレス
<CONN A REMOTE LINK WO 30>169.254.24.249上記の /30 を抜いたもの
<CONN A PSK>XkqigeaoRuOglouOWmokIPSec Tunnel #1 の Pre-Shared Key
<CONN B PUBLIC IP>52.196.231.47IPSec Tunnel #2 のパブリック IP アドレス
<CONN B LOCAL LINK>169.254.24.22/30IPSec Tunnel #2 のルーターサーバ側 (Customer Gateway)のトンネルインターフェースのインサイド IP アドレス
<CONN B REMOTE LINK>169.254.24.21/30IPSec Tunnel #2 の VPG 側 (Virtual Private Gateway)のトンネルインターフェースのインサイド IP アドレス
<CONN B REMOTE LINK WO 30>169.254.24.21上記の /30 を抜いたもの
<CONN B PSK>Euo3vqxH6zM0gaORmoqpPIPSec Tunnel #2 の Pre-Shared Key
<LOCAL SUBNET>10.3.0.0/16Azure 仮想ネットワーク アドレスレンジ
<REMOTE SUBNET>100.65.6.0/24VPG 側ネットワーク アドレスレンジ
<LOCAL ASN>64512ルーターサーバ側 BGP ASN
<REMOTE ASN>10124VPG 側 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 を開き、zebrabgpdyes に変更します。

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.cfgiface eth0 の行の下に、以下の値を追加します。

  (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> )

※(TAB) はタブキー

サービスの起動

上記の設定を完了後、サービスをリスタートします。

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: Door の利用を終了する

Door を用いた VPN 接続が不要になった SIM は、VPG の利用を無効にします。手順は SORACOM IoT SIM の VPG 利用を無効にする をご覧ください。また、SORACOM Canal の利用を終了する場合は、VPG を削除します。手順は こちら をご覧ください。