2 パターンの IPsec 設定
Cisco ルータで IPsec 設定を行う方法としては「ポリシーベース VPN」と「ルートベース VPN」の 2 パターンがあります。
ポリシーベース VPN
ポリシーベース VPN では、暗号化する対象通信をポリシー(ACL)によって決定します。設定としては crypto map を作成し、それを発信インターフェースに適用します。この場合、Tunnel インターフェースは使用されません。
ルートベース VPN
ルートベース VPN では、Tunnel インターフェースが使用され、Tunnel を通る通信はすべて暗号化されます。どの通信が Tunnel を通るか(=どの通信が暗号化されるか)はルーティングテーブルに基づいて決定されます。設定としては、crypto ipsec profile を作成し、それを Tunnel インターフェースに適用します。
ルートベース VPN は、Tunnel インターフェースを使用するため GRE over IPsec
の一種であるといえます。
この場合、IPsec 通信モード (tunnel/transport) としては、IPv4 ヘッダが IPsec と GRE で二重に付与されることを回避するために transport とすることが多いようです。
ポリシーベース IPsec VPN の設定方法
◆IKE ポリシーの設定(IKE フェーズ 1)
crypto isakmp policy <1-10000(優先度)>
authentication pre-share
encryption <暗号化アルゴリズム>
hash <ハッシュアルゴリズム>
group <DHグループ番号>
lifetime <60-86400(秒)> "※オプション"
◆共通鍵の指定と対向ルータの IP アドレスの設定(IKE フェーズ 1)
crypto isakmp key <パスワード> address <ピアアドレス>
◆キープアライブの設定(IKE フェーズ 1)(オプション)
crypto isakmp keepalive <10-3600(秒)(間隔)> <2-60(秒)(リトライ)> <periodic|on-demand>
◆IPsec トランスフォームセットの設定(IKE フェーズ 2)
crypto ipsec transform-set <トランスフォームセット名> <暗号化アルゴリズム> <認証アルゴリズム>
mode <tunnel|transport>
◆暗号化する通信の送信元と宛先の定義
ip access-list extended <ACL名>
permit ip <送信元address> <送信元wildcard> <宛先address> <宛先wildcard>
暗号化する通信の送信元と宛先を定義する ACL 設定をする際に、すべての通信を暗号化したいからといって「permit ip any any
」と設定することは推奨されません。そのように設定した場合、VPN 接続できない事象が発生することが報告されています。送信元/宛先は必要な通信を含む形で any 以外で設定してください。
◆暗号マップの設定(IKE フェーズ 2)
crypto map <暗号マップ名> <1-65535(シーケンス番号)> ipsec-isakmp
match address <上で定義したACL名>
set peer <ピアアドレス>
set transform-set <トランスフォームセット名>
set security-association lifetime seconds <120-2592000(秒)> "※オプション"
set pfs <グループ名> "※オプション"
◆インタフェースへ暗号マップを適用
interface <インタフェース名>
crypto map <暗号マップ名>
ポリシーベース VPN 設定例
◆検証構成
以下の構成で IPsec VPN を構築します。

- ルータ C891FJ-K9 (1) の LAN 側セグメントは 10.10.0.0/24 です
- ルータ C891FJ-K9 (2) の LAN 側セグメントは 10.20.0.0/24 と 10.30.0.0/24 です
- ルータ間でポリシーベースの IPsec VPN を構築します
- 暗号化対象通信は 10.10.0.0/24 と 10.20.0.0/24 間の通信のみとします
◆設定値の決定
項目 | IKE フェーズ1 | IKE フェーズ2 |
発信インターフェース | Vlan99 | Vlan99 |
セキュリティプロトコル | – | esp |
暗号化アルゴリズム | aes 256 | esp-aes 256 |
ハッシュアルゴリズム | sha256 | – |
認証アルゴリズム | – | esp-sha256-hmac |
認証方式 | pre-share | – |
Pre-shared Key | ipsec-password | – |
DH/PFS グループ | 15 | 無効 |
ISAKMP/IPsec SA ライフタイム | 86400秒 (デフォ) | 3600秒 (デフォ) |
IPsec 通信モード | – | tunnel |
IKE キープアライブ(DPD) | 無効 | – |
IPsec の対象トラフィック | – | 10.10.0.0/24 ⇔ 10.20.0.0/24 |
IKE モード | Main | Quick |
◆C891FJ-K9 (1) の設定
crypto isakmp policy 1
authentication pre-share
encryption aes 256
hash sha256
group 15
lifetime 86400
crypto isakmp key ipsec-password address 10.99.0.2
crypto ipsec transform-set TF-SET esp-aes 256 esp-sha256-hmac
mode tunnel
ip access-list extended ACL-IPsec
permit ip 10.10.0.0 0.0.0.255 10.20.0.0 0.0.0.255
crypto map CR-MAP 1 ipsec-isakmp
match address ACL-IPsec
set peer 10.99.0.2
set transform-set TF-SET
set security-association lifetime seconds 3600
interface GigabitEthernet0
switchport access vlan 99
no ip address
interface GigabitEthernet7
switchport access vlan 10
no ip address
interface Vlan10
ip address 10.10.0.254 255.255.255.0
interface Vlan99
ip address 10.99.0.1 255.255.255.0
crypto map CR-MAP
ip route 10.20.0.0 255.255.255.0 10.99.0.2
ip route 10.30.0.0 255.255.255.0 10.99.0.2
◆C891FJ-K9 (2) の設定
crypto isakmp policy 1
authentication pre-share
encryption aes 256
hash sha256
group 15
lifetime 86400
crypto isakmp key ipsec-password address 10.99.0.1
crypto ipsec transform-set TF-SET esp-aes 256 esp-sha256-hmac
mode tunnel
ip access-list extended ACL-IPsec
permit ip 10.20.0.0 0.0.0.255 10.10.0.0 0.0.0.255
crypto map CR-MAP 1 ipsec-isakmp
match address ACL-IPsec
set peer 10.99.0.1
set transform-set TF-SET
set security-association lifetime seconds 3600
interface GigabitEthernet0
switchport access vlan 99
no ip address
interface GigabitEthernet2
switchport access vlan 20
no ip address
interface GigabitEthernet3
switchport access vlan 30
no ip address
interface Vlan20
ip address 10.20.0.254 255.255.255.0
interface Vlan30
ip address 10.30.0.254 255.255.255.0
interface Vlan99
ip address 10.99.0.2 255.255.255.252
crypto map CR-MAP
ip route 10.10.0.0 255.255.255.0 10.99.0.1
◆パケットキャプチャしてみる
C891FJ-K9 (1) の LAN 側にいる 10.10.0.254 から C891FJ-K9 (2) LAN 側のアドレスに Ping をしつつ、C891FJ-K9 (1) の Gi0 をパケットキャプチャしてみます。

まず、10.20.0.254 宛に Ping をした場合、これは暗号化対象通信に該当するため、以下のようにプロトコル ESP で表示され、暗号化されていることが分かります。

次に、10.30.0.254 宛に Ping をした場合、これは暗号化対象通信に該当しないため、以下のように暗号化されずに Ping がそのまま送信されていることが分かります。

暗号マップで定義した対象の通信のみが暗号化され、それ以外の通信は暗号化されない、という動きが分かったかと思います。これがポリシーベース VPN です。
ルートベース IPsec VPN の設定方法
◆IKE ポリシーの設定(IKE フェーズ 1)
crypto isakmp policy <優先度>
authentication pre-share
encryption <暗号化アルゴリズム>
hash <ハッシュアルゴリズム>
group <DHグループ番号>
lifetime <60-86400(秒)> "※オプション"
◆共通鍵の指定と対向ルータのIPアドレスの設定(IKE フェーズ 1)
crypto isakmp key <パスワード> address <ピアアドレス>
◆IPsec トランスフォームセットの設定(IKE フェーズ 2)
crypto ipsec transform-set <トランスフォームセット名> <暗号化アルゴリズム> <認証アルゴリズム>
mode <tunnel|transport>
◆IPsec プロファイルの設定(IKE フェーズ 2)
crypto ipsec profile <プロファイル名>
set security-association lifetime seconds <120-2592000(秒)> "※オプション"
set transform-set <トランスフォームセット名>
set pfs <グループ名> "※オプション"
◆トンネルインターフェースの設定(IPsec プロファイルの適用)
interface Tunnel<0-2147483647>
ip address <アドレス> <マスク>
tunnel source <ソースインターフェース名>
tunnel destination <ピアアドレス>
tunnel mode ipsec ipv4
tunnel protection ipsec profile <IPsecプロファイル名>
◆ルーティング設定
- 暗号化したい通信が Tunnel インターフェースを通るように設定する
ルートベース VPN 設定例
◆検証構成
以下の構成で IPsec VPN を構築します。

- ルータ C891FJ-K9 (1) の LAN 側セグメントは 10.10.0.0/24 です
- ルータ C891FJ-K9 (2) の LAN 側セグメントは 10.20.0.0/24 と 10.30.0.0/24 です
- ルータ間でルートベースの IPsec VPN を構築します
- 双方のルータで、デフォルトルートのネクストホップをトンネルの対向のアドレスとします
- つまり、すべての通信を暗号化させます
◆設定値の決定
項目 | IKE フェーズ1 | IKE フェーズ2 |
Tunnel インターフェース | Tunnel0 | Tunnel0 |
Tunnel souce | Vlan99 | Vlan99 |
Tunnel destination | 10.99.0.2/ 10.99.0.1 | 10.99.0.1/ 10.99.0.2 |
Tunnel mode | ipsec ipv4 | ipsec ipv4 |
セキュリティプロトコル | – | esp |
暗号化アルゴリズム | aes 256 | esp-aes 256 |
ハッシュアルゴリズム | sha256 | – |
認証アルゴリズム | – | esp-sha256-hmac |
認証方式 | pre-share | – |
Pre-shared Key | ipsec-password | – |
DH/PFS グループ | 15 | 無効 |
ISAKMP/IPsec SA ライフタイム | 86400秒 (デフォ) | 3600秒 (デフォ) |
IPsec 通信モード | – | transport |
IKE キープアライブ(DPD) | 無効 | – |
IPsec の対象トラフィック | – | すべて |
IKE モード | Main | Quick |
◆C891FJ-K9 (1) の設定
crypto isakmp policy 1
authentication pre-share
encryption aes 256
hash sha256
group 15
lifetime 86400
crypto isakmp key ipsec-password address 10.99.0.2
crypto ipsec transform-set TF-SET esp-aes 256 esp-sha256-hmac
mode transport
crypto ipsec profile PROF-IPsec
set security-association lifetime seconds 3600
set transform-set TF-SET
interface GigabitEthernet0
switchport access vlan 99
no ip address
interface GigabitEthernet7
switchport access vlan 10
no ip address
interface Vlan10
ip address 10.10.0.254 255.255.255.0
interface Vlan99
ip address 10.99.0.1 255.255.255.0
interface Tunnel0
ip address 172.16.0.1 255.255.255.252
tunnel source Vlan99
tunnel destination 10.99.0.2
tunnel mode ipsec ipv4
tunnel protection ipsec profile PROF-IPsec
ip route 0.0.0.0 0.0.0.0 172.16.0.2
◆C891FJ-K9 (2) の設定
crypto isakmp policy 1
authentication pre-share
encryption aes 256
hash sha256
group 15
lifetime 86400
crypto isakmp key ipsec-password address 10.99.0.1
crypto ipsec transform-set TF-SET esp-aes 256 esp-sha256-hmac
mode transport
crypto ipsec profile PROF-IPsec
set security-association lifetime seconds 3600
set transform-set TF-SET
interface GigabitEthernet0
switchport access vlan 99
no ip address
interface GigabitEthernet2
switchport access vlan 20
no ip address
interface GigabitEthernet3
switchport access vlan 30
no ip address
interface Vlan20
ip address 10.20.0.254 255.255.255.0
interface Vlan30
ip address 10.30.0.254 255.255.255.0
interface Vlan99
ip address 10.99.0.2 255.255.255.252
interface Tunnel0
ip address 172.16.0.2 255.255.255.252
tunnel source Vlan99
tunnel destination 10.99.0.1
tunnel mode ipsec ipv4
tunnel protection ipsec profile PROF-IPsec
ip route 0.0.0.0 0.0.0.0 172.16.0.1
◆パケットキャプチャしてみる
C891FJ-K9 (1) の LAN 側にいる 10.10.0.254 から C891FJ-K9 (2) LAN 側のアドレスに Ping をしつつ、C891FJ-K9 (1) の Gi0 をパケットキャプチャしてみます。

まず、10.20.0.254 宛に Ping をした場合、ルータのルーティングテーブルに従い、Tunnel0 を通るため、暗号化されます。パケットキャプチャの結果としても以下のように ESP となっており暗号化されていることが分かります。

次に、10.30.0.254 宛に Ping をした場合についても同様に、ルータのルーティングテーブルに従い、Tunnel0 を通るため、暗号化されます。パケットキャプチャの結果としても以下のように ESP となっており暗号化されていることが分かります。

さらに次は、10.99.0.2 宛に Ping をしてみます。10.99.0.2 はルータ(1)にとって直結セグメントのため、Tunnel を通らずに Gi0 (Vlan99) から直接発信されます。そのため行きの通信は暗号化されません。一方、戻りの通信はルータ(2)のルーティングに従って Tunnel を通るため暗号化されます。パケットキャプチャからもその様子が確認できます。

Tunnel を通る通信はすべて暗号化され、どの通信が Tunnel を通るかはルータのルーティングによって決定される、これがルートベース VPN です。
IPsec 状態確認コマンド・クリアコマンド
状態確認コマンド
show crypto isakmp sa
show crypto session
show crypto ipsec sa
クリアコマンド
clear crypto isakmp
clear crypto session
色々いじっていて VPN 確立できなくなってしまった場合など、クリアすると確立できるかもしれません。
各種設定値の設計時の考え方
IKE フェーズ 1 の設定値
暗号化アルゴリズム
こちらの Cisco のページによると推奨度は以下の通り。
- des → 避けるべき
- 3des → レガシー(限界的だが許容可能)
aes
→ 許容できる- 128
- 192
- 256
ハッシュアルゴリズム
こちらの Cisco のページによると推奨度は以下の通り。
- md5 → 避けるべき
- sha → レガシー(限界的だが許容可能)
sha256
→ 次世代の暗号化sha384
→ 次世代の暗号化sha512
→ 次世代の暗号化
キープアライブ
- 動的ルーティングによって障害時にはルートが切り替わる場合、キープアライブは設定しないという設計もあり
IKE フェーズ 2 の設定値
暗号化アルゴリズム
こちらの Cisco のページによると推奨度は以下の通り。
- esp-des → 避けるべき
- esp-3des → レガシー(限界的だが許容可能)
esp-aes
→ 許容できる- 128
- 192
- 256
認証アルゴリズム
こちらの Cisco のページによると推奨度は以下の通り。
- esp-md5-hmac → レガシー(限界的だが許容可能)
- esp-sha-hmac → 許容できる
esp-sha256-hmac
→ 次世代の暗号化、HMAC-MD5 の代替- esp-sha384-hmac
- esp-sha512-hmac
DH グループ(IKE フェーズ 1/2)
こちらの Cisco のページによると推奨度は以下の通り。
- 1 (768 bit) → 避けるべき
- 2 (1024 bit) → 避けるべき
- 5 (1536 bit) → 弱いアルゴリズム(こちらのマニュアル より)
14 (2048 bit)
→ 許容できる15 (3072 bit)
→ 許容できる、グループ 1,2 の代替- 16 (4096 bit)
- 19 (256 bit ecp)
- 20 (384 bit ecp)
- 21 (521 bit ecp)
- 24 (2048 bit, 256 bit subgroup)
MTU、MSS の計算、設定
- MTU、MSS 計算のための有用参考ページ
- MTU は WAN 側インターフェースに設定する
- MSS は LAN 側インターフェースに設定する
参考資料
