[toc:faq]
1. はじめに
本ドキュメントでは AnyConnect を使用した Per App VPN (Android) の簡易設定例を紹介します。本ドキュメントにいておきましては、Per App VPN というフィーチャに特化した内容となり AnyConenct 、ASA の基本的な設定にかかる部分は大きく割愛していますのでご了承ください。
AnyConnect for Android の Per App VPN に関しましては、Android 5.0(Lollipop) 以降のご利用が必要となります(以下のドキュメントも合わせてご確認ください)。
New Features in AnyConnect 4.0.01110 for Android Mobile Devices
本資料作成にあたり使用した製品およびバージョン情報は以下となります。
- Cisco Adaptive Security Virtual Appliance (ASAv) 9.8(1)
- Cisco Adaptive Security Device Manager 7.5(2)153
- Cisco AnyConnect Secure Mobility Client 4.0.09027
- Cisco AnyConnect Enterprise Application Selector 2.0(以下、Application Selector)
- Android version 5.1.1
MDM/EMMを利用した環境(Managed environment)に関しましては、こちら(AnyConnect Apple iOS - Per App VPN の設定例)を参考にいただければ幸いです。
設定のイメージとしては、ASA の Group Policy または Dynamic Access Policy (DAP) に Per App VPN 用の Custom Attribute を適用となります。以下では順番に整理して設定手順例を記載します。
2. ASA
2.1. Enterprise Application Selector
ASA に適用する Custom Attribute では、Per App VPN の対象となるアプリケーションを定義します。アプリケーションの設定値は Base 64 でエンコードされた値となり、Enterprise Application Selector を使用して生成することができます。
Enterprise Application Selector は cisco.com の Download Software ページから入手します。以下の画像に記載されたパスから anyconnect_app_selector_2.0.zip というファイルをダウンロードします。

ファイルを解凍して anyconnect_app_selector.jar を Java で実行します。左上のプルダウンから Android を選択して、Friendly Name と App ID を入力します。今回は Per App VPN の対象アプリケーションとして Google Chrome を使用します。
App ID の確認方法:
a) ブラウザで Google Play サイトを使って確認
※ 対象のアプリを検索後、URL の "id=”以降の"com.android.chrome"がApp IDです。

b) (参考)Androidアプリ(Apk Extractor)にて端末内にインストールされているアプリケーションのApp IDを確認。

上記で確認した App ID を Application Selector へ入力後、Policy > View Policy から出力された値を保存します。

2.2. ASDM - AnyConnect Custom Attributes
ASDM の Configuration > Remote Access VPN > Network (Client) Access > Advanced > AnyConnect Custom Attributes から Add をクリックして Custom Attribute を作成します。Type 欄は小文字で perapp を入力します。Description の内容は任意となりますが必ず入力が必要となります。以下の画像は設定作成後に再度 Edit から表示させたものになります。

2.3. ASDM - AnyConnect Custom Attribute Names
ASDM の Configuration > Remote Access VPN > Network (Client) Access > Advanced > AnyConnect Custom Attribute Names から Add をクリックして perapp とアプリケーション情報を紐付けます。Name は任意の値です(今回は"Chrome")。Configure Value に 2.1で生成した Base 64 文字列を入力します。以下の画像は設定作成後に再度 Edit から表示させたものになります。

2.4. ASDM - Group Policies
Per App VPN で使用するグループポリシーに Per App VPN ポリシーを適用します。Configuration > Remote Access VPN > Network (Client) Access > Group Policies から今回は GP-PerApp という既存のポリシーを使用しています。Edit から Advanced > AnyConnect Client > Custom Attributes に移動して、2.2 と 2.3 で作成した Attribute の組み合わせを適用します。

2.5. ASDM - Dynamic Access Policies (DAP)
DAP は生成された VPNセッションに対して ASA がローカルで適用する Authorization 機能となります。2.4 の Group Policy の代わりに DAP で Custom Attribute を紐付けることができます。
Configuration > Remote Access VPN > Network (Client) Access > Dynamic Access Policies から Access/Authorization Policy で 2.2 と 2.3 で作成した Attribute の組み合わせを適用します。

※ 画像のように Endpoint Attribute をマッチング条件にする場合は、HostScan を有効にしておく必要があります。
2.6. その他
Chrome の起動により手を介さずに自動接続を実現するための設定を検討ください。本資料の検証環境では Tunnel Group は Certificate Map により選定され、認証方式も証明書となっています。また ASA から提示されるサーバ証明書があらかじめクライアントで信頼されるように設定しています。
3. AnyConnect Client
AnyConnectアプリでVPN接続の設定を環境に合わせて設定してください。
4. Verify
4.1. 動作確認
AnyConnectアプリで、まず、VPN接続を確立する後、Chrome ブラウザを起動してください。Per App VPN 対象のアプリケーションでの動作確認、また、AnyConnect アプリからは利用中のモード(IPv4)のステータスが「アプリケーショントンネル」となっていることを確認します。

4.2. 正常動作しないパターン (Invalid Configuration)
VPN 接続の際に、VPN が確立せず、AnyConnect アプリを開くと "MDM設定がヘッドエンド設定と一致しません。ネットワーク管理者にお問い合わせください" というエラーが出る場合は、ASA の Custom Attribute の設定に問題がある、あるいは適切なグループポリシーや DAP にマッチして(Apple iOS用のポリシーにマッチするなど)いなかったり、AnyConnect のプロファイルそのものに問題がある場合にも表示されることがあります。

4.3. トラブルシューティングで収集する基本情報
AnyConnect からは、問題を再現させたあとの "診断" にございます "VPNデバッグログ"を"ログの送信"より取得ください。デバイスの基本情報も含まれるため、発生した問題内容によらず、メーカ調査時の初期取得情報として取得されることを推奨します。

ASA では show tech-support の出力、問題発生時刻をカバーした debug レベルの syslog (logging class 等でフィルタ可)を取得されることを推奨します。VPN 確立後の挙動が調査対象となる場合は、対象セッションを含む show vpn-sessiondb detail anyconnect の出力結果も取得ください。Custom Attribute を DAP で使用しており、かつ DAP の設定が複雑なケースでは、必要に応じて こちらの資料 も参照のうえログを収集ください。
5. 参考資料
Cisco AnyConnect Secure Mobility Client Administrator Guide, Release 4.0 - Configure Per App VPN