The Cisco VPN client can be hacked to bypass the local LAN access policy. I had a user do this successfully several months ago (the ability to do this was corrected in a newer release of the VPN. Connecting to local LAN after connecting to AnyConnect Secure Mobility Client I connect to my corporate network using Cisco AnyConnect Secure Mobility Client. Once connected I can no longer print to my LAN attached printer and other local resources. Make sure 'Allow local lan access' is checked in the VPN client. If you are in control of your lan, consider changing the subnet of that lan to one of the following if its not this already. 192.168.214.0/24 192.168.215.0/24.
Introduction
You need to enable local LAN access. Editing configuration XML is not the correct way to do that. In AnyConnect parlance, we call the configuration XML as a client profile. Every time you connect with the VPN headend; AnyConnects checks for updated version of AnyConnect software or client profile. I am using Cisco AnyConnect Secure Mobility Client 3.1.02026 on Windows 7 64-bit. I have heard there is a checkbox which enables split tunneling. However, this checkbox is removed from the GUI probably due to the administrator's settings.
This document provides a sample configuration of how to configure an IOS/IOS-XE headend for remote access using AnyConnect IKEv2 and AnyConnect-EAP authentication method with local user database.
Prerequisites
Requirements
Cisco recommends that you have knowledge of these topics:
- IKEv2 protocol
Components Used
The information in this document is based on these software and hardware versions:
- Cisco Cloud Services Router running IOS XE 16.9.2
- AnyConnect client version 4.6.03049 running on Windows 10
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
Background Information
AnyConnect-EAP, also known as aggregate authentication, allows a Flex Server to authenticate the AnyConnect client using the Cisco proprietary AnyConnect-EAP method. Unlike standard based Extensible Authentication Protocol (EAP) methods such as EAP-Generic Token Card (EAP-GTC), EAP- Message Digest 5 (EAP-MD5) and so on, the Flex Server does not operate in EAP pass-through mode. All EAP communication with the client terminates on the Flex Server and the required session key used to construct the AUTH payload is computed locally by the Flex Server. The Flex Server has to authenticate itself to the client using certificates as required by the IKEv2 RFC.
Local user authentication is now supported on the Flex Server and remote authentication is optional. This is ideal for small scale deployments with less number of remote access users and in environments with no access to an external Authentication, Authorization, and Accounting (AAA) server. However, for large scale deployments and in scenarios where per-user attributes are desired it is still recommended to use an external AAA sever for authentication and authorization. The AnyConnect-EAP implementation permits the use of Radius for remote authentication, authorization and accounting.
Network Diagram
Configure
Authenticating and Authorizating users using the Local Database
Note: In order to authenticate users against the local database on the router, EAP needs to be used. However, in order to use EAP, the local authentication method has to be rsa-sig, so the router needs a proper certificate installed on it, and it can't be a self-signed certificate.
Sample configuration that uses local user authentication, remote user and group authorization and remote accounting.
Step 1. Enable AAA, and configure authentication, authorization and accounting lists and add a username to the local database:
Step 2. Configure a trustpoint that will hold the router certificate. PKCS12 file import is used in this example. For other options, please consult the PKI (Public Key Infrastructure) configuration guide:
https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/sec_conn_pki/configuration/xe-3s/sec-pki-xe-3s-book/sec-cert-enroll-pki.html
Step 3. Define an IP local pool to assign addresses to AnyConnect VPN clients:
Step 4. Create an IKEv2 local authorization policy:
Step 5 (Optional). Create desired IKEv2 proposal and policy. If not configured, smart defaults will be used:
Step 6. Create AnyConnect profile
Note: The AnyConnect profile needs to be delivered to the client machine. Please refer to the next section for more information.
Configure the client profile using the AnyConnect Profile Editor as shown in the image:
Click 'Add' to create an entry for the VPN gateway. Make sure to select 'IPsec' as 'Primary Protocol'. Uncheck the 'ASA gateway' option.
Save the profile by going to FIle -> Save As. The XML equivalent of the profile:
Note: AnyConnect uses '*$AnyConnectClient$*' as its default IKE identity of type key-id. However, this identity can be manually changed in the AnyConnect profile to match deployment needs.
Note: In order to upload the XML profile to the router, IOS-XE 16.9.1 version or later is required. If older version of IOS-XE software is used, the profile download capability needs to be disabled on the client. Please refer to the section 'Disabling the AnyConnect downloader capability' for more information.
Upload the created XML profile to the flash memory of the router and define the profile:
Note: The filename used for AnyConnect XML profile should be acvpn.xml.
Step 7. Create an IKEv2 profile for AnyConnect-EAP method of client authentication.
Note: Configuring the remote authentication method before the local authentication method will be accepted by the CLI, but will not take effect on versions that do not have the fix for the enhancement request CSCvb29701, if the remote authentication method is eap. For these versions, when configuring eap as the remote authentication method, ensure the local authentication method is configured as rsa-sig first. This problem is not seen with any other form of remote authentication method.
Note: On versions of code affected by CSCvb24236 , once remote authentication is configured before local authentication, the remote authentication method can no longer be configured on that device. Please upgrade to a version that has the fix for this code.
Step 8. Disable HTTP-URL based certificate lookup and HTTP server on the router:
Note: Referthis document to confirm whether your router hardware supports the NGE encryption algorithms (for example the example above has NGE algorithms). Otherwise IPSec SA installation on the hardware will fail at the last stage of negotiation.
Step 9. Define the encryption and hash algorithms used to protect data
Step 10. Create an IPSec profile:
Step 11. Configure a loopback interface with some dummy IP address. The Virtual-Access interfaces will borrow the IP address from it.
Step 12. Configure a virtual-template (associate the template in the IKEv2 profile)
Steap 13 (Optional). By default, all traffic from the client will be sent through the tunnel. You can configure split tunnel, which allows only selected traffic to go through the tunnel.
Step 14 (Optional). If all traffic is required to go through the tunnel, you may configure NAT in order to allow internet connectivity for remote clients.
Disabling the AnyConnect downloader capability (optional).
This step is only necessary if IOS-XE software version older than 16.9.1 is being used. Prior to IOS-XE 16.9.1 the capability to upload the XML profile to the router was not available. The AnyConnect client tries to perform download of the XML profile after successful login by default. If the profile is not available, the connection fails. As a workaround, it is possible to disable the AnyConnect profile download capability on the client itself. In order to do that, the following file can be modified:
The 'BypassDownloader' option should be set to 'true', for example:
After the modification, the AnyConnect client needs to be restarted.
AnyConnect XML profile delivery
With the fresh installation of the AnyConnect (with no XML profiles added), the user is able to manually enter the FQDN of the VPN gateway in the address bar of AnyConnect client. This results in the SSL connection to the gateway. The AnyConnect client will not attempt to establish the VPN tunnel with IKEv2/IPsec protocols by default. This is the reason why having XML profile installed on the client is mandatory to establish the IKEv2/IPsec tunnel with IOS-XE VPN gateway.
The profile is used when it is being selected from the drop-down list of AnyConnect address bar. The name that will appear is the same name as specified in 'Display Name' in AnyConnect profile editor. In this example the user should select the following:
The XML profile can be manually put into the following directory:
The AnyConnect client needs to be restarted in order for the profile to become visible in the GUI. It's not sufficient to close the AnyConnect window. The process can be restarted by right-clicking AnyConnect icon in the Windows tray and selecting 'Quit' option:
Communication flow

IKEv2 and EAP exchange
Verify
Use this section in order to confirm that your configuration works properly.
Troubleshoot
This section provides information you can use in order to troubleshoot your configuration.
- IKEv2 debugs to collect from the headend:
- AAA debugs to see assignment of local and/or remote attributes:
- DART from the AnyConnect client.
Cisco ASA で AnyConnect クライアントを使った SSL-VPN の設定をメモしておきます。
構成/環境
以下の構成で検証しました。
Cisco ASA 以下を使いました。
ハードウェア | Cisco ASA 5506-X |
---|---|
ソフトウェア | 9.4(1) |
アドレス体系は以下としてあります。
WAN 側 | 192.168.253.0/24 |
---|---|
LAN 側 | 192.168.1.0/24 |
SSL-VPN 接続時に払い出すアドレス | 192.168.99.1 〜 100/24 |
inspection の設定
必須ではありませんが、ICMP パケットを inspection 対象としておきます (inspection 対象にしないと戻りパケット用の ACL を明示的に書かなければならない為)。
NAT の設定
LAN → WAN の通信は送信元アドレスを outside 側インターフェイスで NAT します。
設定のポイント
設定のポイントを幾つか補足します。説明の都合上、若干コンフィグの順序を変えています (設定自体は変えていません)。
SSL-VPN 接続時に払い出すアドレスプール
SSL-VPN 接続時に払い出すアドレスプールを POOL_ANYCONNECT として定義します。また、このアドレス範囲を OBJ_POOL_ANYCONNECT として定義し、(通常の LAN → WAN 通信は NAT させるが)「LAN → SSL-VPN プール」向けの通信は NAT させないようにしています。
SSL-VPN の設定
事前に AnyConnect のイメージを ASA のストレージにコピーしておきます。ここでは outside 側で SSL-VPN (WebVPN) を有効化し、AnyConnect のイメージを指定しています。tunnel-group-list を enable に設定すると SSL-VPN 接続時に利用するグループをリスト表示させ、選択出来るようになります。
スプリットトンネルの設定
Izotope keygen mac. 次はグループポリシーを定義します。SSL-VPN 接続時でも VPN トンネルに流したくないネットワークを ACL で指定し、スプリットトンネルの設定を行っています。
split-tunnel-policy は以下 3 種類の指定が出来ます。
各々、以下の意味を持ちます。
オプション | SSL-VPN トンネルに流すトラフィック |
---|---|
excludespecified | 指定した ACL以外のトラフィック |
tunnelall | 全てのトラフィック |
tunnelspecified | 指定した ACL のトラフィック |
ユーザの定義
ここでは二人のユーザを定義しました。
ユーザ名 | パスワード | 役割 |
---|---|---|
ADMIN | PASSWORD | ASA の管理用ユーザ |
USER | PASSWORD | AnyConnect 接続用 |
USER は属性 (attributes) を service-type remote-access とし、「VPN 用のユーザである」旨を宣言します。
トンネルグループの設定
先程定義した SSL-VPN 接続時に払い出すアドレスプールを指定します。また、group-alias を定義しておくと、AnyConnect クライアントから SSL-VPN 接続を開始する際にリスト表示させるグループ名 (の、別名 = 表示名) を定義することが出来ます。
接続テスト

Cisco Anyconnect No Local Lan Access
AnyConnect クライアントから ASA の outside 側アドレス (今回は 192.168.253.100) を指定して接続を開始します。ASA へ公的な証明書をインストールしたり、ASA 自体を自己証明局にすることも出来ます。しかしデフォルトの状態でも ASA は自己証明書を持っており、明示的に証明書を指定しない場合はこの自己証明書が利用されます。今回はこの自己証明書を利用している為、SSL-VPN 接続時に警告が表示されました。Connect Anyway をクリックして続行します。
グループ名 (の、別名 = Alias) はデフォルトで表示されているはずです。後はユーザ名とパスワードを入力し、OK を押して SSL-VPN 接続を確立します。
SSL-VPN が正常に確立していれば PC-A → PC-B で通信出来るようになっているはずです。PC-A から PC-B へ Ping し、疎通出来ていることを確認します。
同セグメント宛の通信を許可する
Enable Local Lan Access
SSL-VPN 接続が確立した際、デフォルトの状態では「クライアントの同セグメントにはアクセス出来ない」状態になってしまうようです。ですので、例えば「自宅から学校のネットワークに AnyConnect で SSL-VPN した際、自宅の (同セグメントにある) プリンタにアクセス出来ない」といった問題が起きてしまいます。これは AnyConnect クライアントの設定画面にある「Allow local (LAN) access when using VPN (if configured)」をチェックし、SSL-VPN を再接続することで回避出来ます (デフォルトではチェックが入っていない為、同セグメントにアクセス出来なくなっています)。

Cisco Anyconnect Log In
証明書について
上述の々になりますが、SSL-VPN 接続時に利用する証明書は以下、いずれを利用することも出来ます。
- 外部の CA 局で発行した証明書を利用する
- ASA 自身を CA 局 (自己証明局) にして発行した証明書を利用する
- ASA がデフォルトで持っている自己証明書を利用する
SSL-VPN 設定の際、明示的にサーバ証明書を指定しなかった場合は「ASA がデフォルトで持っている自己証明書」が使われます (ので、警告は出るものの、SSL-VPN 接続は出来ます)。
クライアントの同セグをスプリットトンネルの ACL に含めるとマズイ??
今回は WAN を 192.168.253.0/24、LAN を 192.168.1.0/24 としています。
ですので、スプリットトンネル用の ACL は以下の通り、LAN のアドレス「192.168.1.0/24」を設定しました。
しかし、仮にこれを以下のように「WAN も含めた 192.168.0.0/16」と書くとどうなるか、実験してみます。
この場合、以下のような結果になります。
フロー | 結果 |
---|---|
PC-A から PC-B への Ping | OK |
PC-A から同セグメントの PC への Ping | NG |
AnyConnect でスプリットトンネルを行うと、SSL-VPN クライアントのルーティングテーブルへ「スプリットトンネルとして定義されている経路」がインストールされるます。しかし、その際に (今回実験したように)「同セグがスプリットトンネルの ACL に含まれている」と同セグ宛の通信が SSL-VPN トンネルに向いてしまい、結果として '同セグへ通信出来ない' という事象になるようです。これを仕様として記載しているドキュメントを見つけたわけでは無いのですが、実際にスプリットトンネル用の ACL を書く際は「集約した際に思いがけず、SSL-VPN クライアント側のネットワークを含めてしまう」ことが無いように気をつけた方が良いのかも知れません… (正しいお作法があれば是非、知りたいです、、、)
トラブルシューティング
設定したのに上手く通信出来ない… 場合は debug や show コマンドでトラブルシューティング出来ます。また、「SSL-VPN 接続自体は確立しているのに、通信が出来ない (パケットがどこかでドロップしている)」場合は packet-tracer で送信元/宛先を指定し、'そのフローがどこでドロップしているのか?' をトラブルシューティング出来ます。以下は packet-tracer のコマンド例です。ICMP のメッセージタイプは適当に指定しています。
