# VPN / IPsec

IPsec（IP security）は、IPプロトコルファミリーに暗号化や認証などのセキュリティー機能を提供する一連のプロトコル群です。
Note

ファームウェアバージョン5.4.5-0.4までのAT-ARシリーズと5.4.5-1.1以降のAT-ARシリーズとの間ではIPsec接続ができません。AT-ARシリーズ同士でIPsec接続を行う場合はファームウェアのバージョンを揃えてください。

本製品は、IPsecトンネルインターフェースを通じて、次のIPsec関連機能をサポートしています。

- サポートするIPプロトコルファミリー
  - デリバリー（外側）プロトコル：IPv4/IPv6
  - ペイロード（内側）プロトコル：IPv4/IPv6
  （IPv4 over IPv4、IPv4 over IPv6、IPv6 over IPv4、IPv6 over IPv6のすべての組み合わせをサポート）
- 鍵交換と通信路のネゴシエーション機能
  - IKEv1（ISAKMP）、IKEv2
    - IKEv1フェーズ1：Mainモード、Aggressiveモード
    - IKEv2：INIT、AUTH、CREATE_CHILD_SA、INFORMATIONAL交換
    - 暗号化アルゴリズム：AES256、AES192、AES128、3DES
    - 認証アルゴリズム：SHA512、SHA256、SHA1
    - Diffie-Hellmanグループ：18、16、15、14、5、2
    - 認証方式：事前共有鍵、証明書
- 通信を保護するための機能
  - IPsecプロトコル：ESP（暗号化・認証）
  - IPsec動作モード
    - トンネルモード（IPsecトンネルインターフェース）
    - トランスポートモード（L2TPv3、GRE、マルチポイントGREトンネルインターフェース）
  - 暗号化アルゴリズム：AES256、AES192、AES128、3DES
  - 認証アルゴリズム：AES-GCM（16/12/8バイトICV）、SHA512、SHA256、SHA1
- その他の機能
  - DPD（Dead Peer Detection）
  - NAT-T（NAT-Traversal）

また、マルチポイントIPsecトンネルインターフェースにより、本製品をVPNサーバーとするリモートアクセス型のIPsec VPNも実現可能です。
その場合、サーバー（本製品）側は証明書認証、クライアント側はユーザー名・パスワードによるEAP-RADIUS認証を使用します。
Note

暗号化アルゴリズム、認証アルゴリズムなど各種パラメーターの組み合わせや優先度については、「プロファイル」をご覧ください。本製品では、一般的なパラメーターの組み合わせが「デフォルトプロファイル」としてあらかじめ定義されているため、本製品同士の接続では複雑な設定は不要ですが、他機器と接続する場合などには必要に応じて「カスタムプロファイル」を定義して使用することも可能です。

IPsec機能は、IPsecトンネルインターフェースだけでなく、L2TPv3、GRE、マルチポイントGREの各トンネルインターフェースでも利用できますが、本解説編ではIPsecトンネルインターフェースとマルチポイントIPsecトンネルインターフェースに特化した説明を行います。IPsecを利用可能な他のトンネルインターフェースについては下記の各解説編をご参照ください。

- L2TPv3トンネルインターフェース
- GREトンネルインターフェース
- マルチポイントGREトンネルインターフェース

トンネルインターフェース全般については「VPN」の「トンネルインターフェース」を、インターフェース全般については「インターフェース」の「一般設定」をご覧ください。
IPsecを使用するための具体的かつ全体的な設定については「設定例集」をご覧ください。
また、本製品では、証明書認証を使用したルーター間のIPsec VPN接続にも対応しています。
詳しくは、外部CAが発行した証明書を使用したルーター間のIPsec VPN接続をご覧ください。
Note

ルーター間のIPsec VPNで証明書認証を行う場合は、共通の外部CAが発行したサーバー証明書が必要です。

Note

AMFネットワーク構成において、証明書認証を使用して接続したAMFノード配下のAMFオートリカバリーはサポート対象外です。

## 基本設定

### IPsec over IPv4

IPv4ネットワーク上にIPsecトンネルインターフェースを作成するには、次の手順にしたがいます。

以下では、上記構成図のルーターAを例に、基本的な拠点間IPsec VPNを構築するための具体的な設定手順を示します。
なお、前提事項として、ルーターA・BはIPv4でインターネットに接続しているものとします。WAN側インターフェースのIPアドレスは固定であり、ルーター間でのIP通信もできているものとします。

1. ISAKMPの事前共有鍵を設定します。これにはcrypto isakmp keyコマンドを使います。addressパラメーターで指定するのは、IPsecの接続相手（対向装置）、すなわち、ルーターBのIPアドレスです。

       awplus(config)# crypto isakmp key ouR4ecret address 10.2.2.2

2. トンネルインターフェースtunnel0を作成します。

       awplus(config)# interface tunnel0

3. トンネリング方式としてipsec ipv4（IPsec over IPv4）を指定します。これには、tunnel mode ipsecコマンドを使います。

       awplus(config-if)# tunnel mode ipsec ipv4

4. トンネルインターフェースから送信するデリバリーパケットの始点・終点アドレス（自装置と対向装置のIPアドレス）を指定します。これには、tunnel source / tunnel destinationコマンドを使います。

       awplus(config-if)# tunnel source 10.1.1.1
       awplus(config-if)# tunnel destination 10.2.2.2

5. トンネルインターフェースに対し、IPsecによる保護を適用します。これにはtunnel protection ipsecコマンドを使います。

       awplus(config-if)# tunnel protection ipsec

6. トンネルインターフェースtunnel0にIPアドレスを設定して、同インターフェースでIPv4パケットのルーティングが行われるようにします。これには、ip addressコマンドを使います。

       awplus(config-if)# ip address 192.168.254.1/30

   Note

   トンネルインターフェースにIPアドレスを設定する場合のマスク長は30ビット以下を推奨します。トンネルインターフェースのIPアドレスを「ip address 192.168.254.1/32」のように32ビットマスクで設定することも可能ですが、トンネルインターフェース上でOSPFなどの経路制御プロトコルを動作させる場合は、ホストアドレスを複数取れる30ビット以下のサブネットマスクを設定する必要があるためです。

7. 対向拠点へのスタティック経路を登録します。これには、ip routeコマンドを使います。

       awplus(config-if)# exit
       awplus(config)# ip route 192.168.20.0/24 tunnel0

インターフェースへのIPアドレス設定については「IP」/「IPインターフェース」を、IPの経路設定については「IP」/「経路制御」、および、ダイナミックルーティングに関する各セクションをご覧ください。

### IPsec over IPv6

IPv6ネットワーク上にIPsecトンネルインターフェースを作成するには、次の手順にしたがいます。

以下では、上記構成図のルーターAを例に、基本的な拠点間IPsec VPNを構築するための具体的な設定手順を示します。
なお、前提事項として、ルーターA・BはIPv6でインターネットに接続しているものとします。WAN側インターフェースのIPv6アドレスは固定であり、ルーター間でのIPv6通信もできているものとします。

1. ISAKMPの事前共有鍵を設定します。これにはcrypto isakmp keyコマンドを使います。addressパラメーターで指定するのは、IPsecの接続相手（対向装置）、すなわち、ルーターBのIPv6アドレスです。

       awplus(config)# crypto isakmp key ouR4ecret address 2001:db8:2:2::2

2. トンネルインターフェースtunnel0を作成します。

       awplus(config)# interface tunnel0

3. トンネリング方式としてipsec ipv6（IPsec over IPv6）を指定します。これには、tunnel mode ipsecコマンドを使います。

       awplus(config-if)# tunnel mode ipsec ipv6

4. トンネルインターフェースから送信するデリバリーパケットの始点・終点アドレス（自装置と対向装置のIPv6アドレス）を指定します。これには、tunnel source / tunnel destinationコマンドを使います。

       awplus(config-if)# tunnel source 2001:db8:1:1::1
       awplus(config-if)# tunnel destination 2001:db8:2:2::2

5. トンネルインターフェースに対し、IPsecによる保護を適用します。これにはtunnel protection ipsecコマンドを使います。

       awplus(config-if)# tunnel protection ipsec

6. トンネルインターフェースtunnel0にIPv6のリンクローカルアドレスを設定して、同インターフェースでIPv6パケットのルーティングが行われるようにします。これには、ipv6 enableコマンドを使います。

       awplus(config-if)# ipv6 enable

   Note

   IPv6パケットをルーティング（転送）するだけであれば、トンネルインターフェースのIPv6アドレスはこの例のようにリンクローカルアドレス（ipv6 enable）だけでかまいませんが、BGPを使用する場合などグローバルアドレスが必要な場合はipv6 addressコマンドで適切なIPv6アドレスを設定してください。

7. 対向拠点へのスタティック経路を登録します。これには、ipv6 routeコマンドを使います。

       awplus(config-if)# exit
       awplus(config)# ipv6 route 2001:db8:10:20::/64 tunnel0

インターフェースへのIPv6アドレス設定については「IPv6」/「IPv6インターフェース」を、IPv6の経路設定については「IPv6」/「経路制御」、および、ダイナミックルーティングに関する各セクションをご覧ください。

### リモートアクセスIPsec

マルチポイントIPsecトンネルインターフェースは、リモートアクセスVPNに特化したインターフェースです。

以下では、上記構成図のルーターAを例に、IPsec VPNクライアントからのリモートアクセス接続を受け入れるIPsec VPNサーバーを構築するための具体的な設定手順を示します。
なお、前提事項として、ルーターAとクライアントはIPv4でインターネットに接続しているものとします。WAN側インターフェースのIPアドレスは固定であり、ルーター・クライアント間のIP通信も可能な状態になっているものとします。また、クライアントは各OSのIKEv2 VPN機能またはアプリを使用するものとします。
本構成では、サーバー（本製品）側は証明書認証、クライアント側はユーザー名・パスワードによるEAP-RADIUS認証を使用するため、サーバー側のIPsec設定に加えて、下記の設定が必要になります。

- (a) ローカルCAのセットアップ
- (b) ローカルCAによるサーバー証明書の発行
- (c) ローカルCA証明書のファイルへの書き出し
- (d) RADIUSサーバーのセットアップ
- (e) ローカルCA証明書のクライアントへのインストール
- (f) クライアントのVPN接続設定

ここでは、(a)～(d)については概要のみを説明します。また、(e)～(f)の説明は割愛します。
(a)～(c)の詳細は「運用・管理」/「ローカルCA」、(d)の詳細は「運用・管理」/「RADIUSサーバー」を、(e)～(f)については設定例集をご参照ください。

#### ローカルCAのセットアップ

1. crypto pki trustpointコマンドでローカルCA「local」を指定します。

       awplus(config)# crypto pki trustpoint local
       Created trustpoint "local".
       Generating 2048-bit key for local CA...
       Automatically authenticated trustpoint "local".

   Note

   ローカルCAの名前として「local」を指定した場合は、crypto pki trustpointコマンドを実行するだけで、ローカルCAの公開鍵ペア生成と自己署名ルート証明書の発行が行われ、ローカルCAの作成が完了します。「local」以外の名前を使う場合は「運用・管理」/「ローカルCA」をご覧ください。

#### サーバー証明書の発行

1. サーバー証明書のサブジェクト名（subjectName）とサブジェクト代替名（altSubjectName）を指定します。これには、subject-nameコマンドとsubject-alt-nameコマンドを使います。
   サブジェクト名のCommon Name（CN）、および、サブジェクト代替名は、クライアント側に設定する「VPN接続先」のホスト名（FQDN）またはIPアドレスと一致している必要があります。
   ここではクライアント側の設定時に本製品のIPアドレス10.1.1.1を指定するものと仮定します。クライアント側でFQDNを指定する場合は、「10.1.1.1」の代わりにたとえば「vpn.example.com」のようなFQDNを指定してください。
   Note

   iOSまたはAndroidが接続端末として存在する構成（Windows端末のみの接続構成以外）の場合、IPアドレスではなくFQDNを指定してください。

       awplus(ca-trustpoint)# subject-name /O=MyOrganization/CN=10.1.1.1
       awplus(ca-trustpoint)# subject-alt-name 10.1.1.1
       awplus(ca-trustpoint)# end

2. 本製品のサーバー証明書を発行するには、crypto pki enrollコマンドで発行元のローカルCAを指定します。
   ここでは、ローカルCA「local」を発行元として本製品のサーバー証明書を発行するため、次のようにします。

       awplus# crypto pki enroll local
       Generating 2048-bit key "server-default"...
       Successfully enrolled the local server.

3. 先の手順で作成したサーバー証明書を削除し、再度発行します。
   crypto pki enrollコマンドをno形式で実行し、その後ふたたびcrypto pki enrollコマンドを通常形式で実行してください。

       awplus# no crypto pki enroll local
       De-enrolled the server from trustpoint "local".
       awplus# crypto pki enroll local
       Generating 2048-bit key "server-default"...
       Successfully enrolled the local server.

   「server-default」という名前で識別される本製品の公開鍵ペア（秘密鍵と公開鍵）が自動的に生成され、その公開鍵証明書をローカルCAの秘密鍵で署名して、サーバー証明書の発行が完了します。
   発行したサーバー証明書の情報は、show crypto pki certificatesコマンドで確認できます。
4. 設定を保存して再起動してください。
   設定の保存は、copyコマンドを「`copy running-config startup-config`」の書式で実行するか、write fileコマンド、write memoryコマンドを使用します。また、再起動はreloadコマンド、rebootコマンドで行います。

       awplus# copy running-config startup-config
       Building configuration...
       [OK]
       awplus# reload
       ...

#### ローカルCA証明書の書き出し

1. クライアントが本製品にVPN接続したときに本製品のサーバー証明書を検証するには、ローカルCAの証明書を「信頼されたルート証明機関」としてクライアントにインストールする必要があります。ローカルCA証明書は、crypto pki export pemコマンドでファイルに書き出します。
   ファイル名は任意ですが、ここではWindowsが証明書ファイルと認識する拡張子 .cer をつけています。
   このファイルをクライアントにコピーしてインストールしてください。インストール手順はクライアントごとに異なります。具体的な方法は、設定例集をご覧ください。

       awplus# crypto pki export local pem cacert.cer
       Copying...
       Successful operation

#### RADIUSサーバーの設定

1. 次に、クライアントが接続するときに使うユーザー名・パスワード、および、クライアントのVPN仮想インターフェースにアサインするIPアドレスを登録するため、ローカルRADIUSサーバー機能の設定を行います。ここでは、ユーザーを2つ（userA、userB）登録しています。
   詳細は「運用・管理」/「RADIUSサーバー」をご覧ください。

       awplus(config)# radius-server local
       awplus(config-radsrv)# group userA
       awplus(config-radsrv-group)# attribute Framed-IP-Address 192.168.254.231
       awplus(config-radsrv-group)# exit
       awplus(config-radsrv-)# group userB
       awplus(config-radsrv-group)# attribute Framed-IP-Address 192.168.254.232
       awplus(config-radsrv-group)# exit
       awplus(config-radsrv)# user userA password passwdA group userA
       awplus(config-radsrv)# user userB password passwdB group userB
       awplus(config-radsrv)# server enable
       awplus(config-radsrv)# exit

#### リモートアクセスIPsec VPNサーバーの設定

1. クライアントのISAKMP認証にローカルRADIUSサーバーを使用するよう設定します。
   これには、radius-server hostコマンドとaaa authentication isakmpコマンドを使います。

       awplus(config)# radius-server host localhost key awplus-local-radius-serve
       awplus(config)# aaa authentication isakmp default group radius

2. リモートアクセスVPN用のカスタムISAKMPプロファイル「native-vpn」を作成します。これにはcrypto isakmp profileコマンドを使います。
   クライアントの仕様に合わせ、IKEv2（versionコマンド）、サーバー側証明書認証（local authenticationコマンド）、クライアント側ユーザー名・パスワード認証（remote authenticationコマンド）、RADIUS属性にもとづいてクライアントにIPアドレスを割り当て（configuration-attributeコマンド）、サーバー証明書（pki trustpointコマンド）、暗号/認証方式とDiffie-Hellmanグループ（transformコマンド）を指定します。

       awplus(config)# crypto isakmp profile native-vpn
       awplus(config-isakmp-profile)# version 2
       awplus(config-isakmp-profile)# local authentication certificate
       awplus(config-isakmp-profile)# remote authentication eap-radius
       awplus(config-isakmp-profile)# configuration-attribute radius
       awplus(config-isakmp-profile)# pki trustpoint local
       awplus(config-isakmp-profile)# transform 1 integrity SHA256 encryption AES256 group 14
       awplus(config-isakmp-profile)# transform 2 integrity SHA256 encryption AES256 group 2
       awplus(config-isakmp-profile)# exit

3. リモートアクセスIPsec VPN用のトンネルインターフェース（ここではtunnel0）にISAKMPプロファイル「native-vpn」を割り当てます。これには、crypto isakmp peerコマンドを使います。

       awplus(config)# crypto isakmp peer policy tunnel0 profile native-vpn

4. トンネルインターフェースtunnel0を作成します。

       awplus(config)# interface tunnel0

5. トンネリング方式としてマルチポイントIPsecを指定します。これには、tunnel mode ipsec multipointコマンドを使います。

       awplus(config-if)# tunnel mode ipsec multipoint

   Note

   通常のIPsecトンネルインターフェースと異なり、マルチポイントIPsecトンネルインターフェースはIPv4、IPv6どちらの接続でも受け入れます。
   ただし、トンネルインターフェースに設定するアドレス（内側アドレス）はIPv4のみをサポートします（IPv4 over IPv4とIPv4 over IPv6構成のみサポート）。

6. 本製品のローカル名を設定します。これには、tunnel local nameコマンドを使います。
   クライアントから見たVPN接続先、すなわち、サーバー証明書のサブジェクト名のCommon Name、およびサブジェクト代替名と同じ文字列を指定してください。

       awplus(config-if)# tunnel local name 10.1.1.1

7. トンネルインターフェースに対し、IPsecによる保護を適用します。これにはtunnel protection ipsecコマンドを使います。

       awplus(config-if)# tunnel protection ipsec

8. トンネルインターフェースtunnel0にIPアドレスを設定して、同インターフェースでIPv4パケットのルーティングが行われるようにします。これには、ip addressコマンドを使います。

       awplus(config-if)# ip address 192.168.254.1/24

インターフェースへのIPアドレス設定については「IP」/「IPインターフェース」をご覧ください。
また、各OSに対応するIKEv2 IPsec VPNクライアントの設定は、設定例集をご参照ください。

### 外部CAが発行した証明書を使用したルーター間のIPsec VPN接続

外部CAが発行した証明書を使用し、ルーター間でIPsec VPN接続を行うには、次の手順にしたがいます。

以下では、上記構成図のルーターAを例に、基本的な拠点間IPsec VPNを構築するための具体的な設定手順を示します。
なお、前提事項として、ルーターA・BはIPv4でインターネットに接続しているものとします。WAN側インターフェースのIPアドレスは固定であり、ルーター間でのIP通信もできているものとします。
本構成では、ルーター間で証明書認証を使用するため、サーバー側のIPsec設定に加えて、下記の設定が必要になります。

- (a) トラストポイントの設定
- (b) 外部CAのルート証明書をインポート
- (c) サーバー証明書の署名要求（CSR）の生成
- (d) サーバー証明書の発行
- (e) サーバー証明書のインポートとトラストポイントへの保存

ここでは(a)～(e)は、概要のみを説明します。詳しくは設定例集をご参照ください。

#### トラストポイントの設定

1. 外部CAのルート証明書、本製品の秘密鍵ペアとサーバー証明書を保存するためのトラストポイント「vpn_trust」を作成します。
   これには、crypto pki trustpoint、enrollmentコマンドを使います。

       awplus(config)# crypto pki trustpoint vpn_trust
       Created trustpoint "vpn_trust".
       awplus(ca-trustpoint)# enrollment terminal

2. サーバー証明書のサブジェクト名（subjectName）とサブジェクト代替名（altSubjectName）を指定します。
   これには、subject-nameコマンドとsubject-alt-nameコマンドを使います。
   サブジェクト名のCommon Name（CN）およびサブジェクト代替名は、トンネルインターフェースに設定する本製品のローカル名（tunnel local nameコマンドで指定する文字列）と一致している必要があります。
   Note

   サブジェクト名、サブジェクト代替名としてIPアドレスを指定したサーバー証明書はサポート対象外です。

       awplus(ca-trustpoint)# subject-name /CN=test1.example.com
       awplus(ca-trustpoint)# subject-alt-name test1.example.com
       awplus(ca-trustpoint)# end

#### 外部CAのルート証明書をインポート

1. 外部CAのルート証明書ファイルをテキストエディターで開き、`-----BEGIN CERTIFICATE-----` から `-----END CERTIFICATE-----` の行までをクリップボードにコピーします。
2. トラストポイント「vpn_trust」に外部CAのルート証明書をインポートし、同トラストポイントの使用準備を完了します。
   これにはcrypto pki authenticateコマンドを使います。
   コマンドを実行すると次のようなメッセージが表示されるので、コピーしておいたものをペーストし、「Enter」キーを押してください。

       awplus# crypto pki authenticate vpn_trust
       Paste the certificate PEM file into the terminal.
       Type "abort" to cancel.

3. 内容を確認し、「Accept this certificate?」に「y」で答えてください。

       awplus# crypto pki authenticate vpn_trust
       Paste the certificate PEM file into the terminal.
       Type "abort" to cancel.
       -----BEGIN CERTIFICATE-----
       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
       ...
       xaPuyjGcQ3kCjW32sO0InQxjLPCp/celKKRZbIwETAor
       -----END CERTIFICATE-----
       Complete ("END CERTIFICATE" detected).
       Subject     : /C=JP/O=EXAMPLE/CN=SampleRootCA
       Issuer      : /C=JP/O=EXAMPLE/CN=SampleRootCA
       Valid From  : Apr  7 05:32:30 2023 GMT
       Valid To    : Apr  4 05:32:30 2033 GMT
       Fingerprint : D51BB535 8CBCFE2C BDD6E56B 759BB5C9 4CF9DCBF
       This is a self-signed CA certificate.
       The certificate has been validated successfully.
       Accept this certificate? (y/n): y
       Successfully authenticated trustpoint "vpn_trust".

#### サーバー証明書の署名要求（CSR）の生成

1. 外部CA発行の証明書を利用するためのトラストポイント「vpn_trust」において、本製品の公開鍵ペア（秘密鍵と公開鍵）を生成し、サーバー証明書の署名要求（CSR）を生成します。
   これにはcrypto pki enrollコマンドを使います。
   コマンドを実行すると次のようにCSRの内容が出力されるので、 `-----BEGIN CERTIFICATE REQUEST-----` から `-----END CERTIFICATE REQUEST-----` の行までをクリップボードにコピーしてPC上のファイル（ここでは「example_csr.pem」とします）に保存してください。

       awplus# crypto pki enroll vpn_trust
       Using private key "server-default"...
       Cut and paste this request to the certificate authority:
       -----------------------------------------------------------------
       -----BEGIN CERTIFICATE REQUEST-----
       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
       ...
       sQCD7gbOkrMSEpDCSdB85P5on2Gs+CwpHsYlhA==
       -----END CERTIFICATE REQUEST-----
       -----------------------------------------------------------------

#### サーバー証明書の発行

1. 前の手順でPC上に保存したCSRファイル（本例ではexample_csr.pem）を外部CAに渡し、サーバー証明書の発行を依頼してください。
   ここでは、外部CAが発行した本製品のサーバー証明書を example_cert.pem という名前のファイルとして入手したものと仮定します。

#### サーバー証明書のインポートとトラストポイントへの保存

1. 本製品のサーバー証明書をテキストエディターで開き、`-----BEGIN CERTIFICATE-----` から `-----END CERTIFICATE-----` の行までをクリップボードにコピーします。
2. サーバー証明書をトラストポイントに保存します。
   これにはcrypto pki import pemコマンドを使います。
   コマンドを実行すると次のようなメッセージが表示されるので、コピーしておいたものをペーストし、「Enter」キーを押してください。

       awplus# crypto pki import vpn_trust pem terminal
       Paste the certificate PEM file into the terminal.
       Type "abort" to cancel.

3. 内容を確認し、「Accept this certificate?」に「y」で答えてください。

       awplus# crypto pki import vpn_trust pem terminal
       Paste the certificate PEM file into the terminal.
       Type "abort" to cancel.
       -----BEGIN CERTIFICATE-----
       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
       ...
       WF/C9/ijoy0UIjDFJms6uBo5gw==
       -----END CERTIFICATE-----

       Complete ("END CERTIFICATE" detected).
       Subject     : /O=AlliedWare Plus/CN=test1.example.com
       Issuer      : /C=JP/O=EXAMPLE/CN=SampleRootCA
       Valid From  : Apr 19 07:41:24 2023 GMT
       Valid To    : Apr 18 07:41:24 2024 GMT
       Fingerprint : FAB1FC57 6CD0DC6A 7198C3F2 67E37C0F 6FAE8AFB
       This is not a valid CA certificate. Attempting to import as a server certificate.
       The certificate has been validated successfully.
       Accept this certificate? (y/n): y
       The certificate was successfully imported.

#### IPsec VPNの設定

1. ISAKMPの通信方式を規定するISAKMPプロファイルを作成します。
   ここでは、crypto isakmp profileコマンドでISAKMPプロファイルを作成し、以下の情報を設定します。
   - 自装置の認証方式（local authentication）
   - 対向装置の認証方式（remote authentication）
   - 証明書認証を行う場合に使用するトラストポイント（pki trustpoint）
   - アルゴリズム（transform）

       awplus(config)# crypto isakmp profile cert_vpn
       awplus(config-isakmp-profile)# local authentication certificate
       awplus(config-isakmp-profile)# remote authentication certificate
       awplus(config-isakmp-profile)# pki trustpoint vpn_trust
       awplus(config-isakmp-profile)# transform 1 integrity SHA256 encryption AES256 group 14
       awplus(config-isakmp-profile)# exit

2. 対向ルーターとの間で使用するISAKMPプロファイルを指定します。
   これにはcrypto isakmp peerコマンドを使います。

       awplus(config)# crypto isakmp peer hostname test2.example.com profile cert_vpn

3. トンネルインターフェースtunnel0を作成します。
   これには、interfaceコマンドでトンネルインターフェースを作成し、以下の情報を設定します。
   - トンネリング方式（tunnel mode ipsec）
   - トンネルインターフェースから送信するデリバリーパケットの始点（自装置）アドレス（tunnel source）
   - トンネルインターフェースから送信するデリバリーパケットの終点（対向装置）アドレス（tunnel destination）
   - 自装置ID（ローカル名）（tunnel local name）
   - 対向装置ID（リモート名）（tunnel remote name）
   - トンネルインターフェースに対するIPsec保護の適用とIPsecプロファイルの指定（tunnel protection ipsec）
   - トンネルインターフェースのIPアドレス（ip address）

       awplus(config)# interface tunnel0
       awplus(config-if)# tunnel mode ipsec ipv4
       awplus(config-if)# tunnel source 10.1.1.1
       awplus(config-if)# tunnel destination 10.2.2.2
       awplus(config-if)# tunnel local name test1.example.com
       awplus(config-if)# tunnel remote name test2.example.com
       awplus(config-if)# tunnel protection ipsec
       awplus(config-if)# ip address 192.168.254.1/30
       awplus(config-if)# exit

4. 対向拠点へのスタティック経路を登録します。これには、ip routeコマンドを使います。

       awplus(config)# ip route 192.168.20.0/24 tunnel0

## プロファイル

IPsec機能で使用する暗号化アルゴリズム、認証アルゴリズムなど各種パラメーターの組み合わせは、「プロファイル」と呼ぶ設定要素で定義します。プロファイルにはISAKMPプロファイルとIPsecプロファイルの2種類があり、それぞれISAKMP、IPsecの通信方式を規定します。
本製品では、一般的なパラメーターの組み合わせが「デフォルトプロファイル」としてあらかじめ定義されているため、本製品同士の接続では複雑な設定は不要ですが、他機器と接続する場合などには必要に応じて「カスタムプロファイル」を定義して使用することも可能です。
以下、デフォルトプロファイルの内容と、カスタムプロファイルの定義・使用方法について説明します。

### デフォルトプロファイル

本製品では、ISAKMP、IPsecそれぞれの通信で使用する一般的なパラメーターの組み合わせが、優先順位とともに「デフォルトプロファイル」としてあらかじめ定義されています。後述するカスタムプロファイルの設定を行っていない場合は、自動的にデフォルトプロファイルが使用されます。
以下にその内容を示します。

#### デフォルトISAKMPプロファイル

デフォルトISAKMPプロファイルの内容は下記のとおりです。
ISAKMPパラメーターの組み合わせは、優先度の高いほうから順にトランスフォーム 1 ～ 12の12通りが定義されています。

トランスフォーム | 1 | 2 | 3 | 4 | 5 | 6
暗号化アルゴリズム | AES256 | AES256 | AES256 | AES256 | AES128 | AES128
認証アルゴリズム | SHA256 | SHA256 | SHA1 | SHA1 | SHA256 | SHA256
Diffie-Hellmanグループ | 14 | 16 | 14 | 16 | 14 | 16
IKEバージョン | IKEv2
認証方式 | 事前共有鍵
SA有効期間 | 24時間
DPDキープアライブ間隔 | 30秒
トランスフォーム | 7 | 8 | 9 | 10 | 11 | 12
暗号化アルゴリズム | AES128 | AES128 | 3DES | 3DES | 3DES | 3DES
認証アルゴリズム | SHA1 | SHA1 | SHA256 | SHA256 | SHA1 | SHA1
Diffie-Hellmanグループ | 14 | 16 | 14 | 16 | 14 | 16
IKEバージョン | IKEv2
認証方式 | 事前共有鍵
SA有効期間 | 24時間
DPDキープアライブ間隔 | 30秒

Note

IKEバージョン、認証方式、SA有効期間、DPDキープアライブ間隔は、同一ISAKMPプロファイル内で共通です。

#### デフォルトIPsecプロファイル

デフォルトIPsecプロファイルの内容は下記のとおりです。
IPsecパラメーターの組み合わせは、優先度の高いほうから順にプロポーザル 1 ～ 10の10通りが定義されています。

プロポーザル | 1 | 2 | 3 | 4 | 5 | 6
IPsecプロトコル | ESP | ESP | ESP | ESP | ESP | ESP
暗号化アルゴリズム（CBC） | AES256 | AES256 | AES256 | AES256 | AES128 | AES128
認証アルゴリズム（HMAC） | SHA256 | GCM16 | GCM8 | SHA1 | SHA256 | GCM16
PFS | 使用しない
SA有効期間 | 8時間
プロポーザル | 7 | 8 | 9 | 10 |  |
IPsecプロトコル | ESP | ESP | ESP | ESP |  |
暗号化アルゴリズム（CBC） | AES128 | AES128 | 3DES | 3DES |  |
認証アルゴリズム（HMAC） | GCM8 | SHA1 | SHA256 | SHA1 |  |
PFS | 使用しない
SA有効期間 | 8時間

Note

PFS、SA有効期間は、同一IPsecプロファイル内で共通です。

Note

IPsec動作モード（トンネルモード、トランスポートモード）は、IPsecおよびマルチポイントIPsecトンネルインターフェースではトンネルモード、L2TPv3、GREトンネルインターフェースではトランスポートモードとなります。

### カスタムプロファイル

デフォルトプロファイルでは一般的なパラメーターの組み合わせを網羅していますが、対向機器のサポートしているパラメーターが異なり、デフォルトプロファイルで接続できない場合は、カスタムプロファイルを定義することにより対応が可能です。

#### カスタムISAKMPプロファイル

カスタムISAKMPプロファイルは、crypto isakmp profileコマンドで命名・作成し、同コマンド実行後の移行先であるISAKMPプロファイルモードで具体的な内容を定義します。
カスタムISAKMPプロファイルでは、本製品がサポートしている範囲内で、下記パラメーターの組み合わせを自由に定義できます。
ISAKMPプロファイルの構造は、「デフォルトISAKMPプロファイル」の表をご覧いただくとイメージしやすいでしょう。

- 1つのISAKMPプロファイルに対して複数設定できるパラメーター
  下記3つのパラメーターを一組の「トランスフォーム」（transform）として、複数の組み合わせを優先順位とともに指定できます。
  - 暗号化アルゴリズム
  - 認証アルゴリズム
  - Diffie-Hellmanグループ
- 1つのISAKMPプロファイルに対して1つだけ設定できるパラメーター
  - IKEバージョンとIKE交換モード（モードはIKEv1時のみ）（version）
  - SA有効期間（lifetime）
  - DPDキープアライブ間隔（dpd-interval）
  - DPDタイムアウト（IKEv1時のみ）（dpd-timeout）
  - ローカル認証方式（local authentication）※マルチポイントIPsec/GREトンネル用
  - リモート認証方式（remote authentication）※マルチポイントIPsec/GREトンネル用
  - サーバー証明書（pki trustpoint）※マルチポイントIPsecトンネル用

##### 作成

次に、カスタムISAKMPプロファイルの具体的な定義例を示します。
IKEv1 Mainモード、SA有効期間1時間、暗号化/認証アルゴリズム/Diffie-Hellmanグループの組み合わせは「AES128/SHA1/Group2」の1つだけ。

    awplus(config)# crypto isakmp profile legacy-main
    awplus(config-isakmp-profile)# version 1 mode main
    awplus(config-isakmp-profile)# lifetime 3600
    awplus(config-isakmp-profile)# transform 1 integrity sha1 encryption aes128 group 2

IKEv1 Aggressiveモード、SA有効期間1時間、暗号化/認証アルゴリズム/Diffie-Hellmanグループの組み合わせは「AES128/SHA1/Group2」の1つだけ。

    awplus(config)# crypto isakmp profile legacy-aggr
    awplus(config-isakmp-profile)# version 1 mode aggressive
    awplus(config-isakmp-profile)# lifetime 3600
    awplus(config-isakmp-profile)# transform 1 integrity sha1 encryption aes128 group 2

##### 適用

カスタムISAKMPプロファイルは、crypto isakmp peerコマンドを使って、対向装置またはインターフェースごとに適用します。
対向装置10.2.2.2との間でカスタムISAKMPプロファイルlegacyを使用するには、次のようにします。

    awplus(config)# crypto isakmp peer address 10.2.2.2 profile legacy

IPアドレスが不定な対向装置との間でカスタムISAKMPプロファイルを使用したいときは、次のようにdynamicキーワードを使います。この場合、IPアドレスが不定なすべての対向装置とのISAKMP通信において、指定したカスタムISAKMPプロファイルが使われます。

    awplus(config)# crypto isakmp peer dynamic profile legacy-aggr

特定のトンネルインターフェースで使用するカスタムISAKMPプロファイルを固定的に設定したいときは、次のようにpolicyパラメーターにトンネルインターフェース名を指定します。この場合、該当トンネルインターフェースを使用するすべてのISAKMP通信において、指定したカスタムISAKMPプロファイルが使われます。

    awplus(config)# crypto isakmp peer policy tunnel0 profile myprof

crypto isakmp peerコマンドでカスタムISAKMPプロファイルを指定していない対向装置との間ではデフォルトISAKMPプロファイルが使われます。

#### カスタムIPsecプロファイル

カスタムIPsecプロファイルは、crypto ipsec profileコマンドで命名・作成し、同コマンド実行後の移行先であるIPsecプロファイルモードで具体的な内容を定義します。
カスタムIPsecプロファイルでは、本製品がサポートしている範囲内で、下記パラメーターの組み合わせを自由に定義できます。
IPsecプロファイルの構造は、「デフォルトIPsecプロファイル」の表をご覧いただくとイメージしやすいでしょう。

- 1つのIPsecプロファイルに対して複数設定できるパラメーター
  下記3つのパラメーターを一組の「トランスフォーム」（transform）として、複数の組み合わせを優先順位とともに指定できます。
  - IPsecプロトコル
  - 暗号化アルゴリズム
  - 認証アルゴリズム
- 1つのIPsecプロファイルに対して1つだけ設定できるパラメーター
  - SA有効期間（lifetime）
  - PFSの有効・無効、および有効時に使用するDiffie-Hellmanグループ（pfs）

Note

IPsecプロトコルはESPのみサポートのため、カスタムIPsecプロファイルの設定ではつねに「protocol esp」を指定します。

##### 作成

次に、カスタムIPsecプロファイルの具体的な定義例を示します。
SA有効期間1時間、暗号化/認証アルゴリズムの組み合わせは「AES128/SHA1」の1つだけ。

    awplus(config)# crypto ipsec profile legacy
    awplus(config-ipsec-profile)# lifetime seconds 3600
    awplus(config-ipsec-profile)# transform 1 protocol esp integrity sha1 encryption aes128

SA有効期間1時間、暗号化/認証アルゴリズムの組み合わせは優先度の高い順に「AES256/SHA256」、「AES128/SHA256」の2つ。

    awplus(config)# crypto ipsec profile shortlife
    awplus(config-ipsec-profile)# lifetime seconds 3600
    awplus(config-ipsec-profile)# transform 1 protocol esp integrity sha256 encryption aes256
    awplus(config-ipsec-profile)# transform 2 protocol esp integrity sha256 encryption aes128

##### 適用

カスタムIPsecプロファイルは、tunnel protection ipsecコマンドのprofileパラメーターを使って、トンネルインターフェースごとに適用します。
トンネルインターフェースtunnel0にカスタムIPsecプロファイルlegacyを適用するには、次のようにします。

    awplus(config)# interface tunnel0
    ...
    awplus(config-if)# tunnel protection ipsec profile legacy

tunnel protection ipsecコマンドのprofileパラメーターでカスタムIPsecプロファイルを指定していない場合、該当トンネルインターフェースではデフォルトIPsecプロファイルが使われます。

## その他

### IPsec DPD

IPsec DPDは、IPsecの対向側の接続断を検知する機能です。
本製品では、DPD要求パケットを定期的に対向側に送信するキープアライブ方式を使用しています。
対向側は、DPD要求パケットに応答することで自身が動作していることを証明します。
IKEv1とIKEv2ではSAを削除するまでの動作が次のように異なります。

#### IKEv1

IKEv1の場合、最後に成功した（応答があった）DPD要求から dpd-timeout秒後にSAが削除されます。
初期設定（dpd-interval 30、dpd-timeout 150）の場合のシーケンスを次に示します。

#### IKEv2

IKEv2の場合、最後に成功した（応答があった）DPD要求から dpd-interval + 166 秒後にSAが削除されます。
DPD要求に失敗した場合（応答がなかった場合）、4秒後にIKE再送要求（IKE retransmit request）が動作し、5回リトライします。
リトライするたびに送信間隔が徐々に大きくなります。
初期設定（dpd-interval 30）の場合のシーケンスを次に示します。

## 設定と状態の確認

ISAKMP/IPsec SAの情報を確認するには、show isakmp sa / show ipsec saコマンドを使います。

    awplus# show isakmp sa
    awplus# show ipsec sa

ISAKMP/IPsecの統計情報を確認するには、show isakmp counters / show ipsec countersコマンドを使います。

    awplus# show isakmp counters
    awplus# show ipsec counters

IPsecの動作状況を確認するには、show ipsec peer / show ipsec policyコマンドを使います。

    awplus# show ipsec peer
    awplus# show ipsec policy

ISAKMPの事前共有鍵を確認するには、show isakmp keyコマンドを使います。

    awplus# show isakmp key

ISAKMP/IPsecプロファイル（動作パラメーター）の内容を確認するには、show isakmp profile / show ipsec profileコマンドを使います。

    awplus# show isakmp profile
    awplus# show ipsec profile

各対向装置について、使用するISAKMPプロファイルと事前共有鍵の設定有無を確認するには、show isakmp peerコマンドを使います。

    awplus# show isakmp peer