はじめに
こちらはCisco Systems 合同会社 社員有志 による Advent Calendar です。
私は今回が初参加となります
ぜひ、他の投稿もご覧ください!
免責事項
本サイトおよび対応するコメントにおいて表明される意見は、投稿者本人の個人的意見であり、シスコの意見ではありません。本サイトの内容は、情報の提供のみを目的として掲載されており、シスコや他の関係者による推奨や表明を目的としたものではありません。各利用者は、本Webサイトへの掲載により、投稿、リンクその他の方法でアップロードした全ての情報の内容に対して全責任を負い、本Web サイトの利用に関するあらゆる責任からシスコを免責することに同意したものとします。
Cisco Secure Accessとは?
Cisco Secure Accessは、Ciscoが提供するSSE(Security Service Edge)製品です。SSEとは、ゼロトラストアーキテクチャに基づき、ユーザーがどこからでも安全にリソースへアクセスできるようにするためのものです。このような製品が求められる背景には、リモートワークやクラウド利用の拡大に伴い、従来の境界型セキュリティでは保護が不十分となったことがあります。これにより、ネットワーク外部からのアクセスやデバイスごとの厳密な認証・ポリシー適用が不可欠となっています。
Cisco Secure Accessの概要については、Cisco Secure Access クラウドセキュリティ SSE の概要も参考にしてみて下さい。
今回やったこと
Cisco Secure AccessとISR1100ルータをIPSec IKEv2トンネルで繋げてみました。
Cisco公式のドキュメントに沿って設定しましたが、途中苦戦したところがあったので、最終的に上手く行った設定例とトラブルシュートの内容をお伝えできればと思います!
前提条件
- 参照ドキュメント:Cisco Secure Access Help Center
- 接続機器:
- C1161X-8P
- IOS XE Software, Version 17.09.03a
- IPSecを利用するためコンフィグモードで「license boot level securityk9」を設定し再起動しておく。
接続構成
Secure Accessの設定
それでは、Cisco Secure Access Help CenterにあるCisco Secure Access OverviewのOPEN HELP →をクリックして始めましょう。
Tipsですが、右下のブルーのタブから言語選択が可能です。
最近はブラウザでの翻訳機能もありますが、こちらのドキュメントでは言語選択ができるので必要に応じて使ってみて下さい。(本投稿では日本語表記にした内容を記載します。)
まずは、Secure Access側の設定です。
左の項目から”ネットワーク トンネル グループの管理>ネットワーク トンネル グループの追加”を選択します。
「手順」の項目に沿って順に進めます。
こちらの内容は手順通りで特に悩むところはありませんでしたが、2点ほど記載しておきます。
- 手順”5.トンネルグループのルーティングのタイプを選択します。”は、今回は「Static Routing」を設定しました。
- 手順”6.に トンネル設定のデータ ページで、ネットワークトンネル情報が完全であることを確認します。”で表示される、Tunnel ID、IP Adsress、Passphraseは後でルータの設定を利用します。(Tunnel IDとIP Addressは自動的にPrimaryとSecondaryの2つ生成されますが、今回はトンネルを1つだけ繋げるためPrimaryの方を利用しました。)今回の構成では以下のような設定です。
- Tunnel ID: Tokyo-ISR@ 8241491-633406704-sse.cisco.com
- IP Address: 150.200.250.1
- Passphrase: PassPhrase123456
ISRルータの設定
続いて、ルータ側の設定です。
今回はISRルータ(C1100シリーズ)との接続なので、左の項目から”ネットワークトンネルの設定>Cisco ISRでのトンネルの設定”を選択します。
こちらはいくつか分かり辛い所があったので順に記載します。
- ”前提条件>ネットワークアクセス”にある
<sse_dc_ip>
は、先ほどSecure Access側の設定で生成された「IP Address: 150.200.250.1」を使います。 - 手順”1.IKEv2プロポーザルを設定します。”についてです。”設定します”と書かれていますが、具体的な設定例は記載がありません。。以下のようにIKEv2プロポーザルを設定して上手く行きました。
crypto ikev2 proposal sse-proposal
encryption aes-gcm-256
prf sha256
group 20
- 手順”2.IKEv2キーリングとIKEv2プロファイルを定義します。”についてです。(サンプル設定のままでも上手くかもしれませんが、)IKEv2プロファイルのlifetimeとdpdの値はサポートされているIPsecパラメータの値に合わせ以下の様に設定しました。
crypto ikev2 keyring sse-kr
peer sse
address 150.200.250.1
pre-shared-key PassPhrase123456
crypto ikev2 profile sse-profile
match identity remote address 150.200.250.1 255.255.255.255
identity local email Tokyo-ISR@8241491-633406704-sse.cisco.com
authentication remote pre-share
authentication local pre-share
keyring local sse-kr
lifetime 14400
dpd 30 5 periodic
以降は、ドキュメント通りで上手く行きました。
参考までに、各手順の設定例を記載します。
- 手順”3.IPSecのトランスフォームセット、プロファイル、ポリシーを定義します。”
crypto ipsec transform-set sse-ts esp-gcm 256
mode tunnel
crypto ipsec profile sse
set transform-set sse-ts
set ikev2-profile sse-profile
crypto ikev2 policy sse
match address local 202.120.240.2
proposal sse-proposal
- 手順”4.トンネルインターフェイスを作成します。”
interface Tunnel1
ip unnumbered GigabitEthernet0/0/0
ip tcp adjust-mss 1350
tunnel source GigabitEthernet0/0/0
tunnel mode ipsec ipv4
tunnel destination 150.200.250.1
tunnel protection ipsec profile sse
- 手順”5.ルーティングルールを設定します。”
- ”前提条件>ネットワークアクセス”の項目に”トンネルに接続する前に、UDPポート500および4500を開きます。”の記載があるのでWANインタフェースには
For_Internet
のアクセスリストで対象のポートを開ける設定をしました。
- ”前提条件>ネットワークアクセス”の項目に”トンネルに接続する前に、UDPポート500および4500を開きます。”の記載があるのでWANインタフェースには
ip access-list extended traffic-to-sse
10 permit ip 192.168.33.0 0.0.0.255 any
ip access-list extended For_Internet
10 permit udp any any eq isakmp
20 permit udp any any eq non500-isakmp
route-map sse-route-map permit 10
match ip address traffic-to-sse
set interface Tunnel1
interface GigabitEthernet0/0/0
ip address 202.120.240.2 255.255.255.192
ip access-group For_Internet in
negotiation auto
トラブルシュート
上記では上手く行った設定例をご紹介していますが、実は初めは繋がりませんでした。トンネルステータスを確認すると Session status: DOWN
でした。
C1161X-8P#show crypto session detail
Crypto session current status
Code: C - IKE Configuration mode, D - Dead Peer Detection
K - Keepalives, N - NAT-traversal, T - cTCP encapsulation
X - IKE Extended Authentication, F - IKE Fragmentation
R - IKE Auto Reconnect, U - IKE Dynamic Route Update
S - SIP VPN
Interface: Tunnel1
Session status: DOWN
Peer: 150.200.250.1 port 500 fvrf: (none) ivrf: (none)
Desc: (none)
Phase1_id: (none)
IPSEC FLOW: permit ip 0.0.0.0/0.0.0.0 0.0.0.0/0.0.0.0
Active SAs: 0, origin: crypto map
Inbound: #pkts dec'ed 0 drop 0 life (KB/Sec) 0/0
Outbound: #pkts enc'ed 0 drop 0 life (KB/Sec) 0/0
結論からいうと、問題は以下の2点でした。
-
IKEv2プロポーザルのDH Gropの設定が間違っていた。
-
group 20
と設定する必要があるところにgroup 19 20
と設定していたため、ISRはgroup 19で動作しSecure Access側がgroup 20で動作しているのと不一致が生じてセッション確立に失敗。
-
-
IKEv2プロファイルのTunnel IDの設定が間違っていた。
-
identity local email
の設定値に「Tokyo-ISR@ 8241491-633406704-sse.cisco.com」を設定するところ、途中Secure Access側でパラメータ変更などを設定した影響かIDが変わっていることに気づかず違うIDを入れていたため不一致が生じてセッション確立に失敗。
-
トラブルシュートでは主に下記コマンドを活用しました。ログを見てIPSecの確立ステータスのどこで失敗しているかを確認することで、修正ポイントを見つけることが出来ました。
-
terminal monitor
:- リアルタイムのログメッセージ(特にデバッグメッセージ)を端末(コンソール)に表示させるためのコマンドです
-
debug crypto ikev2
:- IKEv2プロトコルに関するデバック情報を表示するためのコマンド。
参考までに実際にどういうエラーが見えたかを記載しておきます。
DH Groupが一致していないことが判明したログ。
*Aug 23 05:04:59.249: IKEv2:(SESSION ID = 32,SA ID = 2):Processing IKE_SA_INIT message
*Aug 23 05:04:59.249: IKEv2:(SESSION ID = 32,SA ID = 2):Processing invalid ke notification, we sent group 19, peer prefers group 20
Tunnel Groupの値が間違っていることに気づいたログ。
数字の下一桁が正しくは「4」のところ「3」で設定していた。
*Aug 23 05:37:43.026: IKEv2:(SESSION ID = 32,SA ID = 2):Use preshared key for id Tokyo-ISR@8241491-633406703-sse.cisco.com, key len 16
*Aug 23 05:37:43.035: IKEv2:(SESSION ID = 32,SA ID = 2):Auth exchange failed
*Aug 23 05:37:43.035: IKEv2-ERROR:(SESSION ID = 32,SA ID = 2):: Auth exchange failed
上記2ヶ所を修正した結果、Session status: UP-ACTIVE
となり、無事繋がりました!(「ISRルータの設定」で掲載している設定例は修正後の設定です。)
C1161X-8P#show crypto session detail
Crypto session current status
Code: C - IKE Configuration mode, D - Dead Peer Detection
K - Keepalives, N - NAT-traversal, T - cTCP encapsulation
X - IKE Extended Authentication, F - IKE Fragmentation
R - IKE Auto Reconnect, U - IKE Dynamic Route Update
S - SIP VPN
Interface: Tunnel1
Profile: sse-profile
Uptime: 00:02:20
Session status: UP-ACTIVE
Peer: 150.200.250.1 port 4500 fvrf: (none) ivrf: (none)
Phase1_id: 150.200.250.1
Desc: (none)
Session ID: 32
IKEv2 SA: local 202.120.240.2/4500 remote 150.200.250.1/4500 Active
Capabilities:DN connid:2 lifetime:03:57:40
IPSEC FLOW: permit ip 0.0.0.0/0.0.0.0 0.0.0.0/0.0.0.0
Active SAs: 2, origin: crypto map
Inbound: #pkts dec'ed 0 drop 0 life (KB/Sec) 4608000/3459
Outbound: #pkts enc'ed 0 drop 0 life (KB/Sec) 4608000/3459
まとめ
初めは上手く行きませんでしたが、デバックコマンドを活用してエラーログを確認することで原因解決ができ無事繋がりました!エラーログを見るというとても基本的な手段ですが、意外と使える方法なのでもしもの時は皆さんも試してみて下さい。