📱
社内iOS端末へのVPN一括配備を自動化してみた話
はじめに
iOS端末にVPN設定を配布するのって、案外めんどくさい。
MDMを使えば確かに一括配信は可能なんだけど、「設定用のプロファイルをどう生成するか」「対象ユーザごとに内容を変えるには?」みたいなところで一筋縄じゃいかない。
この記事では、iOS端末へのVPN設定を自動生成&自動配信する仕組みを、既存のMDM環境と最小限の連携で構築した話を紹介します。
VPNサーバのユーザ作成からモバイル構成プロファイル(MobileConfig)生成、そして配布までを自動化しています。
※構成上、特定企業やサービスの名前が出てくるため、あえて抽象化して記述します。
背景と狙い
- 社員のiOS端末にVPN設定を配布する必要があった
- 対象者は都度変動し、都度対応が手間だった
- 手作業での設定配布は非効率かつヒューマンエラーの温床
- 一部の端末はMDM未登録、あるいは部分的にしか制御できない
つまり、**「登録対象者にだけ」「動的なIPやIDで」「プロファイルを作成し」「なるべく自動で配布する」**という要件があった。
全体構成
以下のような構成で構築:
-
VPNルータ(CLI制御可)
→ Telnetで接続、ユーザ作成・削除コマンドを投げられる -
PHP製の社内Webツール
→ 管理画面で対象社員を選択して申請 -
MobileConfigテンプレート + 払出IP反映
→ ユーザ情報をもとにVPN設定ファイルを自動生成 -
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