【IPsecVPN】Cisco RouterのIKEv2 IPsec設定
はじめに
※この記事は有料となってますが、末尾のFull Configurationのみ有料で内容自体は無料です。
検証環境作成時にCisco Routerで簡易的にIKEv2 IPsecを利用する気概があったため、一応構成をメモとして残します。
読者の方のためにあらかじめお伝えしておきますが、本記事はCisco IOS RouterでIKEv2 IPsecを設定する流れを記載します。しかし、実際の現場ではCisco IOS RouterでIPsecを使用することはほとんど無く、Cisco Firepower、Paloalto PA、Fortinet Fortigate等のFW製品などで構成することがほとんどで、あるとすればCloud基板との接続箇所であるかないかという感じかな。。
参考や検証時の参考としてご閲読いただけますと幸いです。
IKEv2 IPsecの設定手順
IKEv2 IPsecを構成する設定を大まかに記載すると以下のようになります。
※(optional)がついているものは構成次第で必要ありません。
手順1.【Phase1】IKEv2 Proposalの作成
手順2.【Phase1】IKEv2 Policyの作成
手順3. (optional) Keyringの作成
手順4.【Phase1】IKEv2 Profileの作成
手順5.【Phase2】IPsec Transform setの作成
手順6.【Phase2】IPsec Profileの作成
手順7.Tunnelインターフェースの作成
手順8.ルーティングの追加
以下に詳細を記載します。
1.【Phase1】IKEv2 Proposalの作成
IKEv2 Proposalの中で暗号化やHash、Groupの設定を行います。
最低限必要な設定としては以下の3つです。
・encryption
・integrity
・group
Proposal作成時に以下の様にメッセージが表示されますが、暗号化に「aes-gcm」を使用する場合は注意してください。
RT-1(config-ikev2-proposal)#crypto ikev2 proposal [Proposal-name]
IKEv2 proposal MUST either have a set of an encryption algorithm other than aes-gcm, an integrity algorithm and a DH group configured or
encryption algorithm aes-gcm, a prf algorithm and a DH group configured
RT-1(config-ikev2-proposal)#
また、Cisco IOSの場合設定が足りていないとshow runのProposal設定箇所に以下メッセージが表示されます。
!
crypto ikev2 proposal [Proposal-name]
! Proposal Incomplete(MUST have atleast an encryption algorithm, an integrity algorithm and a dh group configured)
encryption aes-cbc-256
integrity sha256
!
2.【Phase1】IKEv2 Policyの作成
IKEv2 Policyでは手順1.で作成したProposalを適用します。
Policy内でProposalの適用を行っても、手順1.で作成したProposal内の設定が不十分な場合、show run内でメッセージが表示されます。
!
crypto ikev2 policy [ikev2-Policy-name]
! Policy Incomplete(MUST have atleast one complete proposal attached)
proposal [Proposa-name]
!
3. (optional) Keyringの作成
Keyringの設定は構成次第で必要ありません。
認証時のパスワードなどをKeyring内で定義することで複数台とVPN接続をする際などの認証パスワードを管理しやすくなりますが、今回は検証でもあり1台のルータとしかVPNを張らないため次手順内の「authentication local/remote pre-share key ******* 」として設定をした場合は本手順は特段不要となります。(*印はパスワード)
4.【Phase1】IKEv2 Profileの作成
IKEv2 Profile内でVPN接続先の対向機器IPアドレスや認証方式、認証キーのlifetimeなどを設定します。
手順3.でKeyringを作成している場合は「authentication local/remote pre-share」と認証方式の指定を行い、Keyring設定で適用するKeyringをしていします。
次手順からはIPsec設定となります。
IKEv1でも特段変化はありませんので、IKEv2だけ確認したい方は以下Phase2の設定は読み飛ばしていただいて大丈夫です。
5.【Phase2】IPsec Transform setの作成
Transform set作成時にIPせcで使用する暗号化方式と認証方式を指定します。
また、デフォルトでは「Tunnel Mode」となるため、「transport Mode」でVPN通信を行いたい場合はTransform set内で設定を変更します。
6.【Phase2】IPsec Profileの作成
IPsec Profileで手順4.手順5.で作成したIKEv2 ProfileとTransform setを適用します。
ここまででおおむねのIKEv2、IPsecの設定は完了です。
本記事の場合はVTI(Virtual Tunnel Interface)を使用しての設定を紹介しているためTunnelインターフェースを作成してますが、Crypto Mapを使用しての構成も可能なため、自身の構成に合わせて修正して下さい。
7.Tunnelインターフェースの作成
Tunnelインターフェースを使用してVPN通信を行うため、以下必要な設定を行った上で前手順までに実施した設定を「tunnel protection ipsec profile [IPsec-profile]」で適用します。
●Tunnelインターフェースの設定項目
・IPアドレス
・Source インターフェース / IPアドレス
・destination IPアドレス
・Tunnel mode ipsec ipv4
8.ルーティングの追加
最後に自ルータのLAN側と対向側機器LAN側とを通信させるためのルーティング設定を追加します。
検証構成
・Diagram
・RT-1 config
crypto ikev2 proposal IPsecRT2-Proposal
encryption aes-cbc-256
integrity sha256
group 14
!
crypto ikev2 policy IPsecRT2-Policy
proposal IPsecRT2-Proposal
!
crypto ikev2 keyring IPsecRT2-Keyring
peer IPsecRT2
address 111.20.15.1 255.255.255.252
hostname RT-2
pre-shared-key local cisco123!
pre-shared-key remote cisco123!
!
crypto ikev2 profile IPsecRT2-ikeProfile
match identity remote address 111.20.15.1 255.255.255.255
authentication local pre-share
authentication remote pre-share
keyring local IPsecRT2-Keyring
lifetime 120
!
crypto ipsec transform-set IPsecRT2-TSset esp-aes 256 esp-sha256-hmac
mode tunnel
!
crypto ipsec profile IPsecRT2-IpsecProfile
set transform-set IPsecRT2-TSset
set ikev2-profile IPsecRT2-ikeProfile
!
interface Tunnel0
ip address 10.0.0.1 255.255.255.252
tunnel source GigabitEthernet0/0
tunnel mode ipsec ipv4
tunnel destination 111.20.15.1
tunnel protection ipsec profile IPsecRT2-IpsecProfile
!
ip route 192.168.20.0 255.255.255.0 Tunnel0
・RT-2 config
crypto ikev2 proposal IPsecRT1-Proposal
encryption aes-cbc-256
integrity sha256
group 14
!
crypto ikev2 policy IPsecRT1-Policy
proposal IPsecRT1-Proposal
!
crypto ikev2 keyring IPsecRT1-Keyring
peer IPsecRT1
address 210.110.10.1 255.255.255.252
hostname RT-1
pre-shared-key local cisco123!
pre-shared-key remote cisco123!
!
crypto ikev2 profile IPsecRT1-ikeProfile
match identity remote address 210.110.10.1 255.255.255.255
authentication local pre-share
authentication remote pre-share
keyring local IPsecRT1-Keyring
lifetime 120
!
crypto ipsec transform-set IPsecRT1-TSset esp-aes 256 esp-sha256-hmac
mode tunnel
!
crypto ipsec profile IPsecRT1-IpsecProfile
set transform-set IPsecRT1-TSset
set ikev2-profile IPsecRT1-ikeProfile
!
interface Tunnel0
ip address 10.0.0.2 255.255.255.252
tunnel source GigabitEthernet0/0
tunnel mode ipsec ipv4
tunnel destination 210.110.10.1
tunnel protection ipsec profile IPsecRT1-IpsecProfile
!
ip route 192.168.10.0 255.255.255.0 Tunnel0
設定および状態確認
主な確認コマンドとしては以下になります。
設定内容の確認コマンド
・show running-config | sec ikev2
・show running-config | sec ipsec
・show running-config | sec Tunnel
・show running-config interface tunnel 0
【Phase1】IKEv2の設定反映確認コマンド
・show crypto ikev2 proposal IPsecRT1-Proposal [Proposal-name]
・show crypto ikev2 policy IPsecRT1-Policy [Policy-name]
・show crypto ikev2 profile [ikeProfile-name]
【Phase2】IPsecの設定反映確認コマンド
・show crypto ipsec transform-set [TransformSet-name]
・show crypto ipsec profile [IPsecProfile-name]
【Phase1】IKEv2の状態確認コマンド
・show crypto ikev2 sa
・show crypto ikev2 sa detailed
・show crypto ikev2 session
・・show crypto ikev2 session detailed
【Phase2】IPsecの状態確認コマンド
・show crypto ipsec sa
・show crypto ipsec sa detail
ルーティングの確認コマンド
Host端末間でPing、Traceroute等を実施し、Tunnnelを経由しているかを確認
状態確認の出力例を以下に記載します。
基本的にdetailedを付けないと出力内容が多少簡易なものになるだけで基本的な確認箇所は変わりません。そのため、出力結果はdetailedを付したもののみ記載します。
・show crypto ikev2 sa(detailed)
「Status」が「READY」となっておりPhase1のSA(Security Association)のの交換ができていることがわかります。
ちなみに、SAが交換できていない場合は「Status」が「IN-NEG」となります。
RT-1#show crypto ikev2 sa detailed
IPv4 Crypto IKEv2 SA
Tunnel-id Local Remote fvrf/ivrf Status
3 210.110.10.1/500 111.20.15.1/500 none/none READY
Encr: AES-CBC, keysize: 256, PRF: SHA256, Hash: SHA256, DH Grp:14, Auth sign: PSK, Auth verify: PSK
Life/Active Time: 120/47 sec
CE id: 0, Session-id: 1
Status Description: Negotiation done
Local spi: CCCC6477093F19FE Remote spi: 1BAA0072C0B0B53E
Local id: 210.110.10.1
Remote id: 111.20.15.1
Local req msg id: 0 Remote req msg id: 0
Local next msg id: 0 Remote next msg id: 0
Local req queued: 0 Remote req queued: 0
Local window: 5 Remote window: 5
DPD configured for 0 seconds, retry 0
Fragmentation not configured.
Extended Authentication not configured.
NAT-T is not detected
Cisco Trust Security SGT is disabled
Initiator of SA : Yes
IPv6 Crypto IKEv2 SA
RT-1#
・show crypto ikev2 session(detailed)
前述の「show crypto ikev2 sa」コマンドと出力結果は似ていますが歳ほどとは異なる箇所の「status」に「UP-ACTIVE」と表示があります。TunnelがUPしている場合は「UP-ACTIVE」ですが、Downしている状態だと「UP-IDLE」となります。
セッションごとに確認できるため前述のコマンドよりも便利かもしれません。
RT-1#show crypto ikev2 session detailed
IPv4 Crypto IKEv2 Session
Session-id:2, Status:UP-ACTIVE, IKE count:1, CHILD count:1
Tunnel-id Local Remote fvrf/ivrf Status
1 210.110.10.1/500 111.20.15.1/500 none/none READY
Encr: AES-CBC, keysize: 256, PRF: SHA256, Hash: SHA256, DH Grp:14, Auth sign: PSK, Auth verify: PSK
Life/Active Time: 120/13 sec
CE id: 1036, Session-id: 2
Status Description: Negotiation done
Local spi: CAEF4A7A0070FE7F Remote spi: EFCFBEE4A7D00BED
Local id: 210.110.10.1
Remote id: 111.20.15.1
Local req msg id: 2 Remote req msg id: 0
Local next msg id: 2 Remote next msg id: 0
Local req queued: 2 Remote req queued: 0
Local window: 5 Remote window: 5
DPD configured for 0 seconds, retry 0
Fragmentation not configured.
Extended Authentication not configured.
NAT-T is not detected
Cisco Trust Security SGT is disabled
Initiator of SA : Yes
Child sa: local selector 0.0.0.0/0 - 255.255.255.255/65535
remote selector 0.0.0.0/0 - 255.255.255.255/65535
ESP spi in/out: 0x3DB46437/0x537C40A5
AH spi in/out: 0x0/0x0
CPI in/out: 0x0/0x0
Encr: AES-CBC, keysize: 256, esp_hmac: SHA256
ah_hmac: None, comp: IPCOMP_NONE, mode tunnel
IPv6 Crypto IKEv2 Session
RT-1#
・show crypto ipsec sa(detail)
今回はESPで暗号化しているため「 inbound esp sas」と「outbound esp sas」の箇所に出力があり、「Status」に「ACTIVE(ACTIVE)」とあるため正常にIPsecVPNが張れていることがわかります。
RT-1#show crypto ipsec sa detail
interface: Tunnel0
Crypto map tag: Tunnel0-head-0, local addr 210.110.10.1
protected vrf: (none)
local ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)
remote ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)
current_peer 111.20.15.1 port 500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 0, #pkts encrypt: 0, #pkts digest: 0
#pkts decaps: 0, #pkts decrypt: 0, #pkts verify: 0
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#pkts no sa (send) 0, #pkts invalid sa (rcv) 0
#pkts encaps failed (send) 0, #pkts decaps failed (rcv) 0
#pkts invalid prot (recv) 0, #pkts verify failed: 0
#pkts invalid identity (recv) 0, #pkts invalid len (rcv) 0
#pkts replay rollover (send): 0, #pkts replay rollover (rcv) 0
##pkts replay failed (rcv): 0
#pkts tagged (send): 0, #pkts untagged (rcv): 0
#pkts not tagged (send): 0, #pkts not untagged (rcv): 0
#pkts internal err (send): 0, #pkts internal err (recv) 0
local crypto endpt.: 210.110.10.1, remote crypto endpt.: 111.20.15.1
plaintext mtu 1438, path mtu 1500, ip mtu 1500, ip mtu idb GigabitEthernet0/0
current outbound spi: 0x29B39551(699635025)
PFS (Y/N): N, DH group: none
inbound esp sas:
spi: 0xAA651302(2858750722)
transform: esp-256-aes esp-sha256-hmac ,
in use settings ={Tunnel, }
conn id: 54, flow_id: SW:54, sibling_flags 80000040, crypto map: Tunnel0-head-0
sa timing: remaining key lifetime (k/sec): (4226647/3561)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
inbound ah sas:
inbound pcp sas:
outbound esp sas:
spi: 0x29B39551(699635025)
transform: esp-256-aes esp-sha256-hmac ,
in use settings ={Tunnel, }
conn id: 53, flow_id: SW:53, sibling_flags 80000040, crypto map: Tunnel0-head-0
sa timing: remaining key lifetime (k/sec): (4226647/3561)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
outbound ah sas:
outbound pcp sas:
RT-1#
Host間の通信
・ping
VPC19> ping 192.168.20.1
84 bytes from 192.168.20.1 icmp_seq=1 ttl=62 time=41.917 ms
84 bytes from 192.168.20.1 icmp_seq=2 ttl=62 time=19.175 ms
84 bytes from 192.168.20.1 icmp_seq=3 ttl=62 time=26.673 ms
84 bytes from 192.168.20.1 icmp_seq=4 ttl=62 time=19.518 ms
84 bytes from 192.168.20.1 icmp_seq=5 ttl=62 time=21.046 ms
^C
VPC19>
・Traceroute
RT-1、RT-2のTunnelインターフェース経由で通信ができていることが確認できます。
※今回は適当な設定をしているためUDPの通信が届きません。そのため、Tracerouteをicmpで実施しています。
VPC19> trace 192.168.20.1 -P 1
trace to 192.168.20.1, 8 hops max (ICMP), press Ctrl+C to stop
1 192.168.10.254 3.435 ms 3.659 ms 5.819 ms
2 10.0.0.2 16.884 ms 18.924 ms 14.380 ms
3 192.168.20.1 14.355 ms 14.213 ms 16.459 ms
VPC19>
おわりに
ここまでご閲読いただきありがとうございます。
冒頭でも記載した通りCisco IOS RouterでのIPsec設定はあまり実務で使用する機会はないかもしれません。しかし、Cisco FirepowerなどのFW製品やCloud基板接続のためにルータでIPsecを実装するなど、使用ケース自体がゼロというわけではないです。また、IPsec技術自体はかなり使用されているため全く意味が無いというわけではないと思います。
読者様のご参考になれば幸甚です。
最後に参考としてルーター機器のConfigを添付しておきます。
※Host端末自体はIPアドレスとゲートウェイ設定だけのため割愛
参考
メーカー資料
■Configuring Internet Key Exchange Version 2 (IKEv2) and FlexVPN Site-to-Site
■付録:IKEv2 およびレガシー VPN
https://www.cisco.com/c/ja_jp/td/docs/ios-xml/ios/sec_conn_ike2vpn/configuration/xe-16-10/sec-flex-vpn-xe-16-10-book/sec-flex-vpn-xe-16-10-book_chapter_01110.pdf
ここから先は
¥ 300
この記事が気に入ったらサポートをしてみませんか?