CiscoASAの「AnyConnect」によるVPN接続設定例

CiscoASAを使用して、リモートアクセスを実現したい方に設定例を書きましたので参考にしてください。

AnyConnectはとにかく設定がめんどくさいので、コマンド一つ一つにメモ入れておきます。

構成図は以下となりますのでこれを参考に作成していきます。

CiscoASAの「AnyConnect」設定例

CiscoASAでのVPN設定(AnyConnect)は一つ一つを理解するのが結構大変なので、私が実際設定した際のメモを入れながら各コマンドを開設していきます。
※間違っていたら指摘くださいねー。

1.AnyConnectの有効化

webvpn
enable outside_1
anyconnect enable
tunnel-group-list enable
  1. webvpnコマンド実施
  2. WAN側のインターフェースを指定
  3. AnyConnect有効化
  4. トンネルグループリスト表示を有効化

2.VPN接続後のユーザーに割りあてるアドレスプールの設定

ip local pool VPN-POOL 172.16.1.1-172.16.1.253 mask 255.255.255.0
  1. 172.16.1.1~172.16.1.253までをアドレスプールとする設定

※ここでは実際にAnyConnectでVPN接続後にユーザーに割り当てられるIPアドレスプールを設定しますが、このプールで指定したプールの若番がデフォルトゲートウェイとなる仕様となります。

3.ユーザー認証

username vpn password vpnpass
  1. ここではAnyConnectの接続するユーザー名を「VPN」、パスワードを「vpnpass」と設定します。

4.IKEv1 ポリシーの有効化

crypto ikev1 policy 10
authentication pre-share
encryption aes-256
hash sha
group 2
lifetime 86400
  1. IKEVv1ポリシーの有効化(1が最もプライオリティが高く65534が最も低い)
  2. 認証方式をpre-share(事前共有鍵)とする設定
  3. 暗号化方式の指定
  4. ハッシュアルゴリズムを sha とする設定
  5. Diffie-Hellmanグループを 2 とする設定
  6. 暗号キーのライフタイムを1日(86400秒)とする設定

※Diffie-Hellmanグループについては以下を参考にしてください。
https://qiita.com/n-i-e/items/fac121aa5b2a3d16a632

5.ISAKMPポリシーのインターフェース上でのイネーブル化

crypto ikev1 enable outside
  1. outside インターフェースでイネーブルにする設定

6.グループポリシーの設定

グループポリシーは、IPsec接続用のユーザ関連の属性と値のペアがセットになったものです。
以下がグループポリシー設定の流れとなります。

6-1.”AnyConnect”という名前の内部グループポリシーの設定

group-policy AnyConnect internal

6-2.グループポリシー属性の設定

group-policy AnyConnect attributes
dns-server value 172.16.100.1 172.16.100.2
vpn-tunnel-protocol ikev1 ssl-client
split-tunnel-policy tunnelspecified
split-tunnel-network-list value split
default-domain value vpn.ne.jp
  1. “AnyConnect”という名前の内部グループポリシー属性の設定
  2. DNSサーバの設定
  3. グループポリシーのVPNトンネルタイプの設定
  4. グループポリシーでスプリットトンネリングをイネーブルにする設定
  5. スプリットトンネリング用のネットワークリストの設定(★aclで設定した「split」のトラフィックをトンネルを通過するトラフィックと指定する設定)
  6. ドメインの指定

スプリットトンネルで通したい宛先アドレスは以下のようにアクセスリストで書きます。
※アクセスリスト名は「split」です。

access-list split standard permit 192.168.1.0 255.255.255.0
access-list split standard permit 192.168.2.0 255.255.255.0

7.トンネルグループの設定

tunnel-group AnyConnect type remote-access
tunnel-group AnyConnect general-attributes
address-pool VPN-POOL
default-group-policy AnyConnect
tunnel-group AnyConnect webvpn-attributes
group-alias AnyConnect enable
  1. remote-accessのタイプで、AnyConnectというグループを作成する設定
  2. トンネルグループの“General属性モード”に入る
  3. “AnyConnect”というトンネルグループで“VPN-POOL”というアドレスプールを使用する設定
  4. “AnyConnect”というトンネルグループに、“AnyConnect”というグループポリシーを割り当てる設定
  5. 指定したネットワークとの間のトラフィックのみがトンネリング
  6. スプリットトンネリングのイネーブル

8.ダイナミッククリプトマップの設定 & インターフェースへの適用

ダイナミッククリプトマップを設定することで、ASAは不明なIPアドレスのピアからの接続を受信できるようになります。

crypto dynamic-map ipsec-dynamic 1 set ikev1 transform-set IPSEC
  1. “ipsec-dynamic”というダイナミッククリプトマップを作成、そのマップでIKEv1“IPSEC”というトランスフォームセットを指定

9.NAT免除(例外)ルールの設定

以下の設定は、全ての送信元アドレスから、宛先ネットワーク“192.168.1.0/24”への通信はNAT免除する設定

object network NETWORK_OBJ_172.30.1.0_24
 subnet 172.30.1.0 255.255.255.0
object network VPNPOOL
 subnet 172.16.1.0 255.255.255.0

nat (inside_10,outside) source static any any destination static VPNPOOL VPNPOOL
nat (inside_10,outside) source dynamic any interface


パケットトラッカー確認コマンド

packet-tracer input outside icmp 172.16.0.1 0 0 192.168.1.1 detailed

CiscoASA AnyConnect VPN設定例全体


cisco-asa# show running-config 

ip local pool VPN-POOL 172.16.1.1-172.16.1.253 mask 255.255.255.0

!
interface GigabitEthernet1/1
 description To_SW
 channel-group 1 mode active
 no nameif
 no security-level
 no ip address
!
interface GigabitEthernet1/2
 description To_SW
 channel-group 1 mode active
 no nameif
 no security-level
 no ip address
!
interface GigabitEthernet1/8
 description AnyConnect
 nameif outside
 security-level 0
 ip address 1.1.1.1 255.255.255.0 
!
interface Management1/1
 management-only
 nameif manage
 security-level 100
 ip address 172.16.100.1 255.255.255.0 
!
interface Port-channel1
 description To_SW
 lacp max-bundle 8
 nameif inside
 security-level 100
 no ip address
!
interface Port-channel1.10
 vlan 10
 nameif inside_10
 security-level 100
 ip address 172.30.1.100 255.255.255.0 
!
object network OBJ_172.30.1.0_24
 subnet 172.30.1.0 255.255.255.0
object network VPNPOOL
 subnet 172.16.1.0 255.255.255.0
!
access-list split standard permit 192.168.1.0 255.255.255.0
access-list split standard permit 192.168.2.0 255.255.255.0
!
nat (inside_10,outside) source dynamic any interface
nat (inside_10,outside) source static any any destination static VPNPOOL VPNPOOL
!
object network OBJ_172.30.1.0_24
 nat (inside_10,outside) dynamic interface
!
!
route inside_10 192.168.1.0 255.255.255.0 172.30.1.254 1
!
crypto ikev1 enable outside
crypto ikev1 policy 10
 authentication pre-share
 encryption aes-256
 hash sha
 group 2
 lifetime 86400
crypto ikev1 policy 65535
 authentication pre-share
 encryption 3des
 hash sha
 group 2
 lifetime 86400
!
webvpn
 enable outside
 anyconnect enable
 tunnel-group-list enable
 cache
  disable
 error-recovery disable
group-policy AnyConnect internal
group-policy AnyConnect attributes
 dns-server value 172.16.100.1 172.16.100.2
 vpn-tunnel-protocol ikev1 l2tp-ipsec ssl-client 
 split-tunnel-policy tunnelspecified
 split-tunnel-network-list value split
 default-domain value education.saga.jp
!
username vpn password vpnpass encrypted
username vpn attributes
 vpn-group-policy AnyConnect
 service-type remote-access
!
tunnel-group AnyConnect type remote-access
tunnel-group AnyConnect general-attributes
 address-pool VPN-POOL
 default-group-policy AnyConnect
tunnel-group AnyConnect webvpn-attributes
 group-alias AnyConnect enable
!

確認コマンドは実際にAnyConnectを接続して以下のコマンドで確認します。

# show vpn-sessiondb anyconnect

まとめ

CiscoASAでのVPN(anyconnect)の設定例をざっとメモ書きました。

これから、設定をするという方はぜひ参考にしてくださいね。
※間違っていたらご指摘くださいー

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

blank

インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!