📱

社内iOS端末へのVPN一括配備を自動化してみた話

に公開

はじめに

iOS端末にVPN設定を配布するのって、案外めんどくさい。
MDMを使えば確かに一括配信は可能なんだけど、「設定用のプロファイルをどう生成するか」「対象ユーザごとに内容を変えるには?」みたいなところで一筋縄じゃいかない。

この記事では、iOS端末へのVPN設定を自動生成&自動配信する仕組みを、既存のMDM環境と最小限の連携で構築した話を紹介します。
VPNサーバのユーザ作成からモバイル構成プロファイル(MobileConfig)生成、そして配布までを自動化しています。

※構成上、特定企業やサービスの名前が出てくるため、あえて抽象化して記述します。


背景と狙い

  • 社員のiOS端末にVPN設定を配布する必要があった
  • 対象者は都度変動し、都度対応が手間だった
  • 手作業での設定配布は非効率かつヒューマンエラーの温床
  • 一部の端末はMDM未登録、あるいは部分的にしか制御できない

つまり、**「登録対象者にだけ」「動的なIPやIDで」「プロファイルを作成し」「なるべく自動で配布する」**という要件があった。


全体構成

以下のような構成で構築:

  1. VPNルータ(CLI制御可)
     → Telnetで接続、ユーザ作成・削除コマンドを投げられる
  2. PHP製の社内Webツール
     → 管理画面で対象社員を選択して申請
  3. MobileConfigテンプレート + 払出IP反映
     → ユーザ情報をもとにVPN設定ファイルを自動生成
  4. MDMへの自動登録API(パスワード認証付き)
     → configを該当端末に配信するリクエストを自動実行

工夫したポイント

✅ Telnet自動制御

一般的なAPI連携がないルータだったため、Telnet経由での制御に。
PHPからsocket接続してコマンド発行・レスポンス監視。CLI制御っぽく振る舞えるよう簡易ラッパーも実装。

fputs($socket, "user add vpn-usr-123 password=secret\n");

✅ MobileConfig自動生成

Appleの仕様に沿ってXMLテンプレートを用意し、PHPで対象社員ごとのID・サーバ情報・認証方式を差し込んで生成。
意外と仕様にクセがあるので、生成後にplutilでチェックして整合性を確保。

✅ MDMのAPI自動操作

パスワード+デバイスIDでの認証方式だったので、申請時点で対象端末のDevice IDを登録し、MDM管理画面を操作するAPIをコール。
処理完了後は管理画面側で配信状況を可視化。


やってみて感じたこと

  • 「ノーコード・RPAで何とかなる系」じゃない部分の自動化こそ、現場で効く
  • GUIのないレガシーな機器でも、Telnet+CLI設計を逆手に取って自動化できる
  • MobileConfigの扱いはややこしいけど、理解してしまえばテンプレート差し込みで柔軟性高い

おわりに

この仕組みは現場で数百台規模の端末に使われ、現在も運用中です。
「設定の手動配布が面倒」「MDMだけじゃ柔軟にできない」と感じている方の参考になればうれしいです。

Discussion