皆さん、こんにちは。
今回は、前回紹介させていただいた Microsoft Tunnel ゲートウェイ (Microsoft Tunnel Gateway) というサービスの構築がめでたくできたので、構築方法を紹介したいと思います。
Microsoft Tunnel ゲートウェイの概要は前回の記事をご参照いただければと思います。
<前提条件、準備>
・ DigiCert 等が発行する証明書が必要になります (今回は、DigiCert さんの証明書を利用しました)
・ Linux VM (今回は Cent OS を利用)
・ 独自ドメイン
・ パブリック IP (固定 IP を推奨)
・ モバイル デバイス (Android Enterprise or iPhone)
<Linux 環境の構築 (CentOS)>
- まず、CentOS Project のホームページに行き、CentOS の ISO ファイルをダウンロードします。(CentOS 7 (2003) をダウンロードしました。※ CentOS 8 はサポートされていません)
https://www.centos.org/download/ - Hyper-V に仮想マシンを作成します。作成の際に [第 2 世代] を選択しました。
- 仮想マシン作成後、[セキュリティ] タブからセキュア ブートのテンプレートを [Microsoft UEFI 証明機関] に設定変更します。
- 仮想マシンを起動します。起動後、[Install CentOS 7] を選択します。
- [CENTOS 7 へようこそ。] 画面が表示されるので、[日本語] を選択し、[続行] を選択します。
- 少し待つと下記の画面が表示されるので、[ソフトウェアの選択] を選択します。
- [GNOME Desktop] を選択し、[完了] を選択します。
すべて CUI で操作する場合は、[最小限のインストール] でも可能です。
- 次に、[インストール先] を選択します。
- 仮想マシンに接続されているディスクを選択し、[完了] を選択します。
- 次に、[ネットワークとホスト名] を選択します。
- [ネットワークとホスト名] にて、[Ethernet] の右側にあるボタンで [オン] にします。
その後、左下のホスト名に、Microsoft Tunnel ゲートウェイで使用するホスト名を入力します。(この例では、tunnel.sccm.jp にしてあります。)
そして、IP アドレスが降り出されたことを確認し、[完了] を選択します。
- すべての項目で警告が表示されなくなったら、[インストールの開始] を選択します。
- インストールが開始されます。まずは、root のパスワードを設定しましょう。[ROOT のパスワード] を選択します。
- root のパスワードを入力し、[完了] を選択します。
- 必要に応じて、[ユーザーの作成] を実行します。(今回は作成しません)
- インストールが完了すると下記のような画面が表示されますので、[再起動] を選択します。
- 再起動が完了すると、[初期セットアップ] 画面が表示されるので、[LICENCE INFORMATION] を選択します。
- ライセンス契約が表示されますので、確認して、[ライセンス契約に同意します。] にチェックを入れ、[完了] を選択します。
- 警告が表示されなくなりますので、[設定の完了] を選択します。
- [ようこそ] 画面が表示されますので、[日本語] が選択されていることを確認して [次へ] を選択します。
- [入力] にて、[日本語] が選択されていることを確認して、[次へ] を選択します。
- [プライバシー] にて、[位置情報サービス] を [オフ] にして、[次へ] を選択します。
- [タイムゾーン] にて、[JST] になっていることを確認し、[次へ] を選択します。
- [オンラインアカウント] にて、[スキップ] を選択します。
- [ユーザー情報] にて、適宜入力し、[次へ] を選択します。
- [パスワード] にて、パスワードを設定し、[次へ] を選択します。
- [準備完了] が表示されますので、[CentOS Linux を使い始める] を選択します。
- [初めて使う方へ] が表示されますので、確認して、右上の [×] を選択し、閉じます。
- デスクトップを右クリックして、[端末を開く] を選択します。
- 端末 (ターミナル) が起動したら、[su] コマンドにて特権に昇格します。(su のパスワードは root のパスワード)
- OS インストール直後に、yum コマンドにてインストールされているパッケージのアップデートを実施しましょう。
[yum update]
- アップデートが完了すると下記の画面が表示されます。これで、CentOS のインストールステップは完了です。
<サーバー証明書の取得>
Microsoft Tunnel ゲートウェイでは、サーバー証明書を使う必要があります。詳細の要件は、Microsoft Docs のガイド ([トランスポート層セキュリティ (TLS) 証明書] の項目)を参照ください。ワイルドカード証明書もサポートされています。ただし、[*.sccm.jp] のような形式がサポートされています。
公的に信頼されていない証明書を使う場合は、Intune を用いて証明書の信頼チェーンを配布する必要があります。
私は、今回の検証用に DigiCert さんの証明書を利用いたしました。
作業用の Windows Server を用意して、インターネット インフォメーション サービス (IIS) マネージャーを使って CSR (Certificate Signing Request) を作成します。
- IIS マネージャーを開き、[サーバー証明書] から右側のペインの [証明書の要求の作成] を選択します。
- [証明書の要求] ウィザードが起動するので、必要事項を入力し、[次へ] を選択します。
- 暗号化サービス プロバイダーとビット長を選択します。
- CSR ファイルの出力先を選択し、[終了] を選択します。
- メモ帳で、出力した CSR ファイルを開きます。
[—–BEGIN NEW CERTIFICATE REQUEST—–] から始まり、文字列が表示されていることを確認します。この文字列すべてを DigiCert さんなどの公的なサーバー証明書発行機関に送ります。
次に、公的なサーバー証明書発行機関のサイトに行き、上記で発行した CSR を証明書申請画面に貼り付けます。その際に、ワイルドカード形式の証明書の発行がサポートされている場合は、ワイルドカード形式の証明書を選択して発行しましょう。
- DigiCert のサイトに行き、証明書の申請をします。
- 上記の IIS マネージャーで作成した CSR を [CSR を追加する] に貼り付けます。
- コモンネーム / SANs にて、設定可能な場合は、下記のように、ワイルドカードで指定します。
- その他、必要事項を記入して、証明書を申請します。
- DigiCert の場合、ドメインの所有者であることを DNS の TXT レコードで確認するのが推奨になっているので、ドメインの TXT レコードに提供されたランダムな値を追加します。
- 正しく証明書の申請が行え、承認されると証明書がダウンロード可能になります。(IIS マネージャーで管理するので、cer 形式でダウンロードしましょう)
また、先ほどの作業用 Windows Server に戻り、インターネット インフォメーション サービス (IIS) マネージャーにて公的機関から発行された証明書をインポートします。
- IIS マネージャーを開き、[サーバー証明書] を開きます。
- 右側ペインから、[証明書の要求の完了] を選択します。
- ウィザードが起動しますので、公的機関から発行された cer ファイルを選択し、[OK] を選択します。
- IIS マネージャーに下記のように表示されれば、正しくインポートされています。
- Microsoft Tunnel ゲートウェイで使用する証明書は PFX か PEM が必要なので、PFX ファイルを作成します。この際、IIS マネージャーを利用して PFX を作成すると正しく証明書チェーンが利用できなかったということがありましたので、MMC の証明書スナップインから PFX にエクスポートすることを強くお勧めいたします。
<IIS マネージャーの証明書のエクスポート> - certlm.msc を起動します。
- [個人] > [証明書] を開き、対象の証明書を選択し、右クリックにて、[すべてのタスク] > [エクスポート] を選択します。
- [証明書のエクスポート ウィザード] が起動するので、[次へ] を選択します。
- [はい、秘密キーをエクスポートします] にチェックを入れ、[次へ] を選択します。
- 形式が [PFX] になっていることを確認し、[証明のパスにある証明書を可能であればすべて含む] および [すべての拡張プロパティをエクスポートする] にチェックを入れ、[次へ] を選択します。
- PFX ファイルを守るために、[パスワード] にチェックを入れ、パスワードを入力します。その後、[次へ] を選択します。
- エクスポートする対象のファイル名を決め、[次へ] を選択します。
- [完了] を選択すると、下記の画面のように、[正しくエクスポートされました。] が表示されます。
- これで、Microsoft Tunnel ゲートウェイ用の証明書の準備は完了です。
<CentOS 7 環境に Docker をインストール>
事前に、先ほど用意した CentOS 7 環境に Docker をインストールしておく必要があります。
- CentOS にログインし、端末 (ターミナル) を起動します。
端末を起動し、su で特権に昇格します。
- [sudo yum install -y yum-utils] を実行します。
※ 先ほど、yum update をしたので、何も実行する必要はありません。
- [sudo yum-config-manager \
–add-repo \
https://download.docker.com/linux/centos/docker-ce.repo] を実行します。
- [sudo yum install docker-ce docker-ce-cli containerd.io] を実行します。
- インストールが完了すると下記の画面が表示されます。
- [sudo systemctl start docker] を実行します。
- [sudo docker run hello-world] を実行して、Docker がインストールされたかを確認します。
- 上記のように表示されれば、Docker のインストールは終わりです。
<ファイアウォールや DNS の準備>
今回構築した CentOS 環境に 443 (TCP/UDP) で外部からアクセスできるようにする必要があります。(ポートは構成の時に変更可能)
そのため、ファイアウォールにて、対象の CentOS 環境へ 443 ポートを開ける必要があります。
また、モバイル デバイスから Microsoft Tunnel ゲートウェイのサーバー (CentOS) へアクセスする際に、IP アドレスでも指定可能ですが、DNS 名の方が運用的には楽かと思います。そのため、DNS レコードにアドレスを設定する必要があります。(tunnel.sccm.jp 等)
<Microsoft Tunnel ゲートウェイの構成>
事前に、Microsoft エンドポイント マネージャー管理センターで設定する必要があります。
- Microsoft エンドポイント マネージャー管理センターにアクセスします。
- [テナント管理] > [Microsoft Tunnel ゲートウェイ] に移動します。
※ 下記画面では、既にテストで作成したサーバーがあるため、オンライン 1 になっていますが、通常は構成されていない状況です。
- [サーバーの構成] に移動し、[新規作成] を選択します。
- ウィザードが起動しますので、[名前] に適宜入力し、[次へ] を選択します。
- [設定] にて下記のように設定します。
[IP address range] : 組織内の IP アドレス レンジ
[DNS サーバー] : 組織内の DNS サーバーの IP
[DNS サフィックス検索] : 組織内の DNS名
[分割トンネリング] : スプリット トンネリングを実装する場合は設定
[サーバー ポート] : モバイル デバイスからサーバーに接続する時に使用するポート
- 設定内容を確認し、[作成] を選択します。
- 次に、[サイトとサーバー] に移動し、サイトの構成をします。[作成] から [新しいサイト] を選択します。
- [サイトの作成] にて、名前を適宜設定し、CentOS のサーバーへ接続するための IP アドレスまたは、FQDN を入力し、先ほど作成したサーバーの構成を選択し、[作成] を選択します。
- サイトが作成が完了したら、先ほどの CentOS に戻ります。
- CentOS にてブラウザーを開き、下記にアクセスし、ファイルをダウンロードします。
https://aka.ms/microsofttunneldownload - ファイルをダウンロードしたら、プロパティを開き、[アクセス権] に移動し、[プログラムとして実行できる] にチェックを入れます。
- 端末 (ターミナル) を起動し、[su] にて特権に昇格します。
- 項番 10 でダウンロードしたファイルのフォルダーに移動します。
- [mstunnel-setup] を実行します。
- 少し待つと、下記のようにソフトウェア ライセンス条項が表示されますので、スペースで下までスクロールします。スクロールしたら [q] で閉じます。
- ソフトウェア ライセンス条項に同意する場合は、[yes] を入力します。
- 下記の画面が表示されますので、前の手順で作成した PFX ファイルの名前を [site.pfx] にして、[/etc/mstunnel/private/site.pfx] という形で置きます。
PFX ファイルを置いたら、[yes] を入力し、次へ進めます。
- PFX のパスワードを聞いてくるので、入力します。
- PFX パスワード入力後、下記の画面が表示されますので、記載されている URL を開きます。
- [コードの入力] 画面が表示されますので、上記の画面に表示されている code という部分にあるコードを入力し、[次へ] を選択します。
- Microsoft エンドポイント マネージャー管理センターにログインするアカウントでサインインします。
- サインイン後、下記の画面が表示されれば成功です。
- 端末 (ターミナル) に戻ります。
Microsoft Tunnel ゲートウェイのサイトが複数あると下記のように選択画面が表示されます。その際は Site ID を入力します。
- 下記のように結果が表示されれば、サーバーの構成成功です。
- 念のため、TLS 証明書が正しく構成できたか、sslchecker.com で確認しましょう。
Vendor signed が [Yes] になっていること、チェーンが有効なことを確認しましょう。
- これで、Microsoft Tunnel ゲートウェイのサーバー構成は終了です。
<モバイル デバイス (Android) から接続してみる>
モバイル デバイスから接続するには、Microsoft Tunnel アプリの展開と VPN プロファイルの配信が必要です。
VPN プロファイルの作成の仕方は Microsoft Docs ドキュメントをご覧ください。
ここでは、Android のプロファイルの作り方を紹介します。
- Microsoft エンドポイント マネージャー管理センターにアクセスします。
- [デバイス] > [構成プロファイル] > [プロファイルの作成] を選択します。
- プラットフォームで [Android Enterprise] を選択し、プロファイルにて、[VPN] を選択し、[作成] を選択します。
- 構成プロファイルの名前を設定し、[次へ] を選択します。
- VPN の構成設定を行います。接続名や Microsoft Tunnel サイト名などを選択し、[次へ] を選択します。
- 割り当て先を選択します。今回は、[すべてのユーザーおよびすべてのデバイス] にしています。
- [確認および作成] にて設定内容が正しいことを確認し、[作成] を選択します。
この後は、モバイル デバイス側で Microsoft Tunnel アプリをインストールし、Intune のポリシーを同期します。その後、Microsoft Tunnel アプリを開くと、下記のように表示されます。
<まとめ>
今回は、現在パブリック プレビューの Microsoft Tunnel ゲートウェイの構築の仕方について紹介しました。まだ、プレビュー状態ですが、とても面白い技術なので、皆さんも実際に構築して触ってみてください。私は、証明書の PFX をエクスポートするところではまりましたが、はまらなければ直ぐに構築できると思います。是非、皆さんの感想も聞かせてください。