CiscoASAでIPSecVPNを構築します。
実案件ではフレッツ等のベストエフォードでなおかつセキュリティが保たれていない回線の場合にIPSecを設定し てセキュリティを保つケースが多いです。自治体や金融系など、セキュリティに関して非常に厳しい考え方をしているところでは閉鎖網である広域イーサであってもその上からさらに暗号化をかけるところもあります。ただ、IPSecをかけるとなると通常のパケットフォワーディングと比較して普通に半分以下にスループットが低下しますので注意してください。
また、ASAでIPSecVPNトンネルをはる場合には必ず固定IPが必要となります。接続の度にIPが変わるような環境だとそもそもASAでは無理という話になりますのでこちらも注意してください。
ここで紹介するのは以下の前提条件です。
・拠点Aと拠点BをVPNで接続
・拠点Aの内部LANは192.168.1.0/24、拠点Bは192.168.2.0/24を使用している。
・拠点AのグローバルIPはxx.xx.xx.xx、拠点BのグローバルIPはyy.yy.yy.yy
■IPSec設定例(拠点A)
# VPN対象トラフィックを定義 access-list VPN extended permit ip 192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0 # VPN通信はNAT対象外とする nat (inside) 0 access-list VPN # ISAKMP SAを定義 crypto isakmp policy 10 authentication pre-share encry 3des hash sha group 2 lifetime 86400 crypto isakmp enable outisde # IPSEC SAを定義 crypto ipsec transform-set TS esp-3des esp-sha-hmac crypto map VPN 1 match address VPN crypto map VPN 1 set peer yy.yy.yy.yy crypto map VPN 1 set transform-set TS crypto map VPN interface outside # Tunnel-Groupの定義 tunnel-group yy.yy.yy.yy type ipsec-l2l tunnel-group yy.yy.yy.yy ipsec-attributes pre-shared-key * |
■IPSec設定例(拠点B)
access-list VPN extended permit ip 192.168.2.0 255.255.255.0 192.168.1.0 255.255.255.0 nat (inside) 0 access-list VPN crypto isakmp policy 10 authentication pre-share encry 3des hash sha group 2 lifetime 86400 crypto isakmp enable outisde crypto ipsec transform-set TS esp-3des esp-sha-hmac crypto map VPN 1 match address VPN crypto map VPN 1 set peer xx.xx.xx.xx crypto map VPN 1 set transform-set TS crypto map VPN interface outside tunnel-group xx.xx.xx.xx type ipsec-l2l tunnel-group xx.xx.xx.xx ipsec-attributes pre-shared-key * |
最初の2行でVPNの対象となるトラフィックを定義しています。これが対向同士で対になっておく必要があります。またPATを設定している場合にはPATの対象から外さないといけませんのでnat (inside) 0 と指定して対象から外す設定を行っています。
crypto isakmpでisakmpに関するPhase-1(isakmp)の設定を行っています。ここで設定しているパラメータは一例ですので参考程度にしてく ださい。crypto ipsecでipsec saのPhase-2の設定を行っています。Phase-1と同様、ここで設定しているパラメータも一例です。さらにtunnel-groupでpre-shared-keyを設定しています。keyはルータ同士で一致しておく必要があります。これらのパラメータを outsideインターフェイスに適用しています。
< OS 8.4以降の場合 >
ASA 8.4以降からIPSecの設定の文言等が変わり、新たにIKE ver2がサポートされました。8.3からNAT関連のコマンドが大幅に変わり、全体的なコンフィグは様変わりした感じになります。上の拠点Aのコンフィグを8.4以降のバージョンで表すと下記のようになります。
# VPN対象トラフィックを定義 access-list VPN extended permit ip 192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0 # VPN通信はNAT対象外とする object network LOCAL subnet 192.168.1.0 255.255.255.0 object network REMOTE subnet 192.168.2.0 255.255.255.0 nat (inside,outside) source static LOCAL LOCAL destination static REMOTE REMOTE # ISAKMP SAを定義 crypto ikev1 policy 10 authentication pre-share encryption 3des hash sha group 2 lifetime 86400 crypto ikev1 enable outside # IPSEC SAを定義 crypto ipsec ikev1 transform-set TS esp-3des esp-sha-hmac crypto map VPN 1 match address VPN crypto map VPN 1 set peer yy.yy.yy.yy crypto map VPN 1 set ikev1 transform-set TS crypto map VPN interface outside # Tunnel-Groupの定義 tunnel-group yy.yy.yy.yy type ipsec-l2l tunnel-group yy.yy.yy.yy ipsec-attributes ikev1 pre-shared-key ***** |
IKE ver2ではコンフィグはさらに変わってきます。IKE ver1とver2では互換性はなく、site to siteのVPN接続では両端のIKEのverをあわせる必要性があります。IKE ver2を使用する場合は当然ながら両端ともIKE ver2がサポートされた機器を使用する必要があります。以下はIKE ver2の設定ログです。
# VPN対象トラフィックを定義 access-list VPN extended permit ip 192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0 # VPN通信はNAT対象外とする object network LOCAL subnet 192.168.1.0 255.255.255.0 object network REMOTE subnet 192.168.2.0 255.255.255.0 nat (inside,outside) source static LOCAL LOCAL destination static REMOTE REMOTE # ISAKMP SAを定義 crypto ikev2 policy 1 encryption 3des integrity sha group 2 prf sha lifetime seconds 86400 crypto ikev2 enable outside # IPSEC SAを定義 crypto ipsec ikev2 ipsec-proposal 3DES protocol esp encryption 3des protocol esp integrity sha-1 crypto map VPN 1 match address VPN crypto map VPN 1 set peer yy.yy.yy.yy crypto map VPN 1 set ikev2 ipsec-proposal 3DES crypto map VPN interface outside # Tunnel-Groupの定義 tunnel-group yy.yy.yy.yy type ipsec-l2l tunnel-group yy.yy.yy.yy ipsec-attributes ikev2 remote-authentication pre-shared-key ***** ikev2 local-authentication pre-shared-key ***** |
但し、現状のVPN接続は大半がIKE ver1であることから、IKE ver2が主になるのは数年先のことではないかと思います。
VPNの動作確認を行うには上記で指定しているトラフィックを実際に発生させる必要があります。ASAでは全面のLEDにVPNというのがあり、VPNトラフィックが発生して無事トンネルがはれればこれが点灯します。コマンドベースでは以下のコマンドで確認可能です。
# show crypto isa sa Active SA: 1 Rekey SA: 0 (A tunnel will report 1 Active and 1 Rekey SA during rekey) Total IKE SA: 1 1 IKE Peer: yy.yy.yy.yy Type : L2L Role : initiator Rekey : no State : MM_ACTIVE |
上記ではPhase-1の状態を表しており、initiatorがMM_ACTIVEになっていればOKです。
# show crypto ipsec sa |
上記でパケットの数が表示されます。pkts encapsやpkts decapsがコマンドを 打つたびにカウントアップしていれば通信はできていると思って良いと思います。但し、pre-frag failuresやPMTUs sentなどもカウントアップしている場合、パケットがフラグメントされ一部のみの通信ができていない可能性があります。
これはASAに設定したMSSの値よりも大きなデータを送受信しようとしたときにデフォルトでパケットが分割 ( フラグメント )禁止となっているためです。MTUやMSSの値の微調整で正常となることもありますし、そもそもフラブメントを許可することでも正常になります。フラブメントを許可する場合は以下の設定を入れることで可能になりますが、スループットに関して低下することもあるので注意が必要です。
crypto ipsec df-bit clear-df outside |
CiscoASAでのIPSecの設定例ですが、当然ながらシスコルータでもサポートされています。VPNをはってダイナミックルーティングを使いたい等の要件がなければASAでの構築を強くおすすめします。機能としてはルータでもASAでもサポートされておりますが、パフォーマンスという観点ではASAのほうがかなり良いからです。