[index]
CentreCOM AR410 V2 コマンドリファレンス 2.6
IPsec/概要・基本設定
- 基本設定
- ISAKMP/IKEによるIPsec VPN
- 手動鍵によるIPsec VPN
- 詳細設定
- IPsec/ISAKMPモジュールの有効化
- IPsecポリシー(SPD)
- SA情報の設定
- SAスペック
- バンドルスペック
- 鍵管理の設定
- ISAKMP/IKEによる自動鍵管理
- 手動鍵管理
- その他
- UDPトンネリング(ESP over UDP)
- IPsec NAT-Traversal(NAT-T)
- IPsecとファイアウォールの併用
- Unnumbered IPインターフェース使用時の注意
- 動作・設定の確認
- 基本的な情報
- デバッグオプション
- 統計カウンター
IPsec(IP security)は、IPに暗号化や認証などのセキュリティー機能を付加する一連のプロトコル群です。
本製品は、暗号・圧縮ボード(AR011 V2)を装着することによりIPsecを使用した安全性の高いVPN(Virtual Private Network)を構築できます。
IPsecを使用すると、次のようなことが可能になります。
- IP通信の暗号化:IPを使うすべての通信(WWW、FTP、Telnetなど)を暗号化できます。IP層で暗号化するため、上位のIPアプリケーションがIPsecに対応している必要はありません。また、暗号化をルーターで行うためユーザーがIPsecの存在を意識する必要がありません。
- IP通信の改ざん検出:IPパケットに付加された認証データを検証することにより、通信経路上でのパケット改ざんを検出・防止できます。
- IP通信の相手認証:IPパケットに付加された認証データを検証することにより、パケットの送信元が意図した相手であることを確認できます。
- IP通信のトンネリング:ルーター間でパケットをトンネリングすることにより、プライベートネットワーク間のIP通信が可能になります(VPN)。
ここでは、本製品におけるIPsecの基本設定について解説します。
Note
- IPsecを使用するには、通信データの暗号化と復号化を行うすべてのルーターに暗号・圧縮ボード(AR011 V2)を装着する必要があります。
IPsecによるVPN(以下、IPsec VPN)の基本構成を次に示します。本製品を使ってIPsec VPNを構築するためには、最低限次の条件を満たす必要があります。
- 本製品2台に暗号ボードが装着されていること
- 本製品同士がIPで直接通信できること
- 少なくとも一方のルーターのアドレスが固定されていること

この構成のIPsec VPNでは、次のような通信が可能です。
- プライベートネットワーク間のVPN通信
- トンネリングによるプライベートIPアドレスの隠蔽
- IPsecによる暗号化と認証データ付加
- インターネットとの(通常の)IP通信
以下の各節では、上記の基本構成に基づき、IPsecの設定方法について解説します。
ここでは、自動鍵管理によるIPsec VPN構築の要点を説明します。
ISAKMP/IKEを使用する場合は、以下の設定が必要です。
- IKEネゴシエーションを行うための設定(ISAKMPポリシー)
- IPsec通信の基本仕様の設定(SAスペックとSAバンドルスペック)
- IPsec通信の範囲指定(IPsecポリシー)
- IPsec VPNは、ルーター(セキュリティーゲートウェイ)間でIPトンネルを張ることによって実現されます。そのためには、ルーター間でIPの通信ができなくてはなりません。各ルーターの接続形態に応じて、通常のIP設定までをすませておいてください。
- 鍵管理プロトコルISAKMP/IKEの設定を行います。最初に、ルーター間で認証を行うときに使う事前共有鍵(pre-shared key)を作成します。共有鍵なので、鍵の値は両方のルーターで同じでなくてはなりません。鍵番号は異なっていてもかまいません。
CREATE ENCO KEY=1 TYPE=GENERAL VALUE="jogefoge" ↓
- ISAKMPポリシーを作成し、IKEネゴシエーションの相手ルーターを登録します。PEERに相手ルーターのIPアドレスを、KEYに事前共有鍵の番号を指定してください。
CREATE ISAKMP POLICY=i PEER=2.2.2.2 KEY=1 SENDN=TRUE ↓
なお、相手ルーターのアドレスが不定な場合はPEERにANYを指定し、代わりに相手ルーターのID(任意の文字列)を「REMOTEID="RouterB"」のように指定してください。相手ルーター側では、自分のIDを「LOCALID="RouterB"」のように指定してください。
また、片側のアドレスが不定な場合は、「MODE=AGGRESSIVE」を指定してAggressiveモードを使うようにしてください(省略時はMainモードになります)。
- アドレス固定側
CREATE ISAKMP POLICY=i PEER=ANY KEY=1 SENDN=TRUE REMOTEID="RouterB" MODE=AGGRESSIVE ↓
- アドレス不定側
CREATE ISAKMP POLICY=i PEER=1.1.1.1 KEY=1 SENDN=TRUE LOCALID="RouterB" MODE=AGGRESSIVE ↓
Note
- 両方のルーターのアドレスが不定な場合は、IPsec VPNを実用的に使用することはできません。通常の運用では、少なくとも片側のアドレスが固定になっている必要があります。
- 次にIPsec SA(IPsecの通信仕様)の設定を行います。SAスペックとSAバンドルスペックを作成し、IPsec通信で使用するセキュリティープロトコルとアルゴリズムの組み合わせを指定します。ここでは、ESP(IP暗号ペイロード)を使ってIPパケットの暗号化と認証を行うための設定を示します。通常はこの設定で問題ないでしょう。
CREATE IPSEC SASPEC=1 KEYMAN=ISAKMP PROT=ESP ENCALG=DES HASHALG=SHA ↓
CREATE IPSEC BUNDLE=1 KEYMAN=ISAKMP STRING="1" ↓
- ここからIPsecポリシー(IPsecの適用範囲)の設定を行います。最初にISAKMPメッセージ(始点・終点ともにUDP500番)を素通しするためのポリシーを作成します。IPsecポリシーの検索は作成順に行われるため、ISAKMP/IKEを使用する場合は必ず最初にこの設定を行ってください。INTERFACEパラメーターには、WAN側インターフェースを指定します。その他は例のとおりで結構です。
CREATE IPSEC POLICY=isa INT=ppp0 ACTION=PERMIT LPORT=500 RPORT=500 TRANSPORT=UDP ↓
- 次にIPsecを適用するパケットの条件(IPsec VPNのアドレス範囲)を指定します。IPsec VPNでは、プライベートLAN間の通信だけをIPsecの対象とします。少し長くなりますが、最低限以下のパラメーターを実際の環境に合わせて指定してください。
- INTERFACE:ルーターのWAN側インターフェース
- BUNDLE:手順4で作成したSAバンドルスペックの番号
- PEER:相手ルーターのIPアドレス。相手のアドレスが不定なときはDYNAMICを指定してください。
- LAD, LMA:ローカル側LANの範囲。LADにネットワークアドレスを、LMAにネットマスクを指定します。
- RAD, RMA:リモート側LANの範囲。RADにネットワークアドレスを、RMAにネットマスクを指定します。
CREATE IPSEC POLICY=vpn INT=ppp0 ACTION=IPSEC KEYMAN=ISAKMP BUNDLE=1 PEER=2.2.2.2 ↓
SET IPSEC POLICY=vpn LAD=192.168.10.0 LMA=255.255.255.0 RAD=192.168.20.0 RMA=255.255.255.0 ↓
この例では、192.168.10.0/24と192.168.20.0/24間の通信にIPsecを適用しています。
- 最後にVPN通信以外のパケットを素通しするポリシーを作成します。この設定は、インターネットへのアクセスが必要ない場合は省略してもかまいません。
CREATE IPSEC POLICY=inet INT=ppp0 ACTION=PERMIT ↓
Note
- この構成ではLAN側のコンピューターにプライベートアドレスが設定されているため、実際にLANからインターネットへアクセスするにはNATの設定が必要です。詳しくは「IPsecとファイアウォールの併用」をご覧ください。
- IPsecとISAKMPを有効にします。
ENABLE IPSEC ↓
ENABLE ISAKMP ↓
- Security Officerレベルのユーザーを登録します。
ADD USER=secoff PASS=PasswordS PRIVILEGE=SECURITYOFFICER ↓
- Security Officerレベルのユーザーでログインしなおします。
- 設定内容を保存し、次回起動時に読み込まれるように設定します。
CREATE CONFIG=ipsecvpn.cfg ↓
SET CONFIG=ipsecvpn.cfg ↓
- セキュリティーモードに移行します。
ENABLE SYSTEM SECURITY_MODE ↓
Note
- Security Officerレベルのユーザーが登録されていないと、セキュリティーモードに移行できません。
■ IPsecとファイアウォールやNATを併用する場合は、追加の設定が必要になります。詳しくは「IPsecとファイアウォールの併用」をご覧ください。また、具体的な設定例については設定例集をご覧ください。
ここでは、手動鍵管理によるIPsec VPN構築の要点を説明します。
手動で鍵の管理を行う場合、以下の設定が必要です。
- IPsec通信で使う暗号鍵・認証鍵の作成
- IPsec通信の基本仕様の設定(SAスペックとSAバンドルスペック)
- IPsec通信の範囲指定(IPsecポリシー)
Note
- 手動鍵を使う場合は、両方のルーターのアドレスが固定されていなくてはなりません。片側のアドレスが不定な場合は、ISAKMP/IKEによる自動鍵管理をご使用ください。
- IPsec VPNは、ルーター(セキュリティーゲートウェイ)間でIPトンネルを張ることによって実現されます。そのためには、ルーター間でIPの通信ができなくてはなりません。各ルーターの接続形態に応じて、通常のIP設定までをすませておいてください。
- IPsec通信で使う暗号鍵と認証鍵を作成します。ここでは、暗号に56ビットDESを、認証にSHA-1を使うものとします。これらの鍵は共有鍵なので、両方のルーターで同じになるように設定してください。ただし、鍵番号は異なっていてもかまいません。鍵作成の詳細については、「暗号・圧縮」の章をご覧ください。
■ 通常は、片側のルーターでランダムに鍵を生成し、その値をもう一方のルーターに手動入力します。
CREATE ENCO KEY=1 TYPE=DES RANDOM DESCRIPTION="IPsec DES key" ↓
CREATE ENCO KEY=2 TYPE=GENERAL LENGTH=20 RANDOM DESCRIPTION="IPsec SHA-1 key" ↓
■ 作成した鍵の値を表示させるには、SHOW ENCO KEYコマンドを使います。
Manager > show enco key=1
9cemvrwgn5hvek
0xF888CAC6C66ECF52
Manager > show enco key=2
0x431d62cd3cb76fb8101dacaf43aa4dbfb919e957
|
■ もう一方のルーターに手動で鍵の値を入力します。
CREATE ENCO KEY=1 TYPE=DES VALUE=0xF888CAC6C66ECF52 DESCRIPTION="IPsec DES key" ↓
CREATE ENCO KEY=2 TYPE=GENERAL VALUE=0x431d62cd3cb76fb8101dacaf43aa4dbfb919e957 DESCRITION="IPsec SHA-1 key" ↓
- 次にIPsec SA(IPsecの通信仕様)の設定を行います。SAスペックとSAバンドルスペックを作成し、IPsec通信で使用するセキュリティープロトコルとアルゴリズムの組み合わせ、暗号鍵と認証鍵、外向き・内向きのSPI値(256〜4294967295)を指定します。ここでは、ESP(IP暗号ペイロード)を使ってIPパケットの暗号化と認証を行うための設定を示します。通常はこの設定で問題ないでしょう。相手ルーターでは、INSPIとOUTSPIの値を入れ替えてください。
CREATE IPSEC SASPEC=1 KEYMAN=MANUAL PROT=ESP ENCALG=DES ENCKEY=1 HASHALG=SHA HASHKEY=2 INSPI=1000 OUTSPI=1001 ↓
CREATE IPSEC BUNDLE=1 KEYMAN=MANUAL STRING="1" ↓
- ここからIPsecポリシー(IPsecの適用範囲)の設定を行います。最初にIPsecを適用するパケットの条件(IPsec VPNのアドレス範囲)を指定します。IPsec VPNでは、プライベートLAN間の通信だけをIPsecの対象とします。少し長くなりますが、最低限以下のパラメーターを実際の環境に合わせて指定してください。
- INTERFACE:ルーターのWAN側インターフェース
- BUNDLE:手順4で作成したSAバンドルスペックの番号
- PEER:相手ルーターのIPアドレス。相手のアドレスが不定なときは手動鍵は使用できません。
- LAD, LMA:ローカル側LANの範囲。LADにネットワークアドレスを、LMAにネットマスクを指定します。
- RAD, RMA:リモート側LANの範囲。RADにネットワークアドレスを、RMAにネットマスクを指定します。
CREATE IPSEC POLICY=vpn INT=ppp0 ACTION=IPSEC KEYMAN=MANUAL BUNDLE=1 PEER=2.2.2.2 ↓
SET IPSEC POLICY=vpn LAD=192.168.10.0 LMA=255.255.255.0 RAD=192.168.20.0 RMA=255.255.255.0 ↓
この例では、192.168.10.0/24と192.168.20.0/24間の通信にIPsecを適用しています。
- 最後にVPN通信以外のパケットを素通しするポリシーを作成します。この設定は、インターネットへのアクセスが必要ない場合は省略してもかまいません。
CREATE IPSEC POLICY=inet INT=ppp0 ACTION=PERMIT ↓
Note
- この構成ではLAN側のコンピューターにプライベートアドレスが設定されているため、実際にLANからインターネットへアクセスするにはNATの設定が必要です。詳しくは「IPsecとファイアウォールの併用」をご覧ください。
- IPsecを有効にします。
- Security Officerレベルのユーザーを登録します。
ADD USER=secoff PASS=PasswordS PRIVILEGE=SECURITYOFFICER ↓
- Security Officerレベルのユーザーでログインしなおします。
- 設定内容を保存し、次回起動時に読み込まれるように設定します。
CREATE CONFIG=ipsecvpn.cfg ↓
SET CONFIG=ipsecvpn.cfg ↓
- セキュリティーモードに移行します。
ENABLE SYSTEM SECURITY_MODE ↓
Note
- Security Officerレベルのユーザーが登録されていないと、セキュリティーモードに移行できません。
■ IPsecとファイアウォールやNATを併用する場合は、追加の設定が必要になります。詳しくは「IPsecとファイアウォールの併用」をご覧ください。また、具体的な設定例については設定例集をご覧ください。
IPsecに関する各種設定の詳細について解説します。個々のパラメーターについては、コマンドリファレンスをご覧ください。
■ IPsecを使用するためには、ENABLE IPSECコマンドでIPsecモジュールを有効にする必要があります。
■ 自動鍵管理(ISAKMP/IKE)を使う場合は、ENABLE ISAKMPコマンドでISAKMPモジュールも有効にします。
■ IPsecの有効・無効は、SHOW IPSECコマンドで確認できます。
■ ISAKMPの有効・無効は、SHOW ISAKMPコマンドで確認できます。
セキュリティーポリシーデータベース(SPD)は、パケットにどのような処理を行うかを定義するデータベースです。始点・終点アドレスやプロトコル、ポート番号をもとにパケットを識別し、該当する処理を実行します。IPsecにおけるパケットフィルターと考えてもよいでしょう。
SPDは個々のIPsecポリシーによって構成されます。IPsecポリシーの作成は、CREATE IPSEC POLICYコマンドで行います。
IPsecポリシーは、最小限以下の要素で構成されます。
CREATE IPSEC POLICY=name INTERFACE=interface ACTION={DENY|IPSEC|PERMIT} selectors... ipsec_params... ↓
表 1:IPsecポリシーの基本パラメーター
パラメーター |
説明 |
POLICY |
ポリシー名。任意です |
INTERFACE |
適用インターフェース。IPsecポリシーはインターフェースごとに設定します。ポリシーの検索は、パケットが指定インターフェースから送信されるとき、および、指定インターフェースで受信したときに行われます。通常はWAN側のインターフェースを指定します |
ACTION |
パケットに対する処理(アクション)。IPsec適用、通過、拒否の3種類があります(別表参照)。ポリシーの順番に気を付けてください |
selectors... |
パケットの条件指定パラメーター。始点・終点アドレス、プロトコル、ポートなど、パケットを分類するための条件を指定します(別表参照) |
ipsec_params... |
IPsec処理に関するパラメーター。アクションとして「IPsec適用」を選択したときだけ指定します(別表参照) |
パケットの条件指定(selectors...)には、以下のパラメーターを使います。ここでの「ローカル側」とは、送信パケットでは始点、受信パケットでは終点のことを意味します。また「リモート側」も同様で、送信パケットでは終点、受信パケットでは始点のことになります。IPsecではこれらのフィルタリング条件を「セレクター」と呼んでいます。
表 2:IPsecポリシーの条件パラメーター
パラメーター |
説明 |
LADDRESS |
ローカル側IPアドレス |
LMASK |
LADDRESSに対するネットマスク |
LNAME |
ローカル側システム名(フェーズ2 ID) |
LPORT |
ローカル側ポート番号(プロトコルがTCPかUDPのときのみ) |
RADDRESS |
リモート側IPアドレス |
RMASK |
RADDRESSに対するネットマスク |
RNAME |
リモート側システム名(フェーズ2 ID) |
RPORT |
リモート側ポート番号(プロトコルがTCPかUDPのときのみ) |
TRANSPORTPROTOCOL |
IPプロトコルタイプ(TCP、UDPなど) |
また、マッチしたパケットに対する処理はACTIONパラメーターで指定します。
表 3:IPsecポリシーのアクション
アクション |
説明 |
PERMIT |
パケットを通過させる(IPsecを適用しない) |
IPSEC |
パケットにIPsec処理を適用する(BUNDLESPECIFICATIONパラメーターで指定したSAバンドルの処理を適用する) |
DENY |
パケットを破棄する |
IPsec処理を指定した場合(ACTION=IPSEC)は、さらに以下のIPsec関連パラメーター(ipsec_params...)も指定します。
表 4:IPsec関連パラメーター
パラメーター |
説明 |
BUNDLESPECIFICATION |
SAバンドルスペック。IPsec処理(SAスペックで記述)の組み合わせを記述したSAバンドルスペックの番号を指定します |
KEYMANAGEMENT |
鍵管理方式。鍵を自動(ISAKMP)で管理するか手動(MANUAL)で管理するかを指定します |
PEERADDRESS |
対向IPsec機器のアドレス。トンネルモードSAの場合は、カプセル化したパケットの送り先(トンネルの終端)を指定します。また、トランスポートモードSAの場合は、対象パケットの最終的な送信先を指定します |
以下、具体例を示します。IPsecポリシーの設定コマンドは長くなりがちなので、CREATEとSETに分けています。また、適宜省略形をご使用ください。
■ ISAKMPパケット(始点・終点ともUDP500番)を通過させるポリシー「isa」を作成します。ISAKMP/IKEを使うときは、必ずこのポリシーを作成してください。そのとき、IPsecを適用するポリシー(ACTION=IPSEC)よりも前にこのポリシーを置いてください。
CREATE IPSEC POLICY=isa INT=ppp0 ACTION=PERMIT LPORT=500 RPORT=500 TRANSPORT=UDP ↓
このコマンドは、「ppp0から送出するIPパケットのうち、始点・終点ポートが500番のUDPパケットはIPsecを適用せずにそのまま送信する。また、ppp0で受信したパケットのうち、始点・終点ポートが500番のUDPパケットにはIPsecの復号化処理を適用せずにそのまま受け入れる」の意味になります。
■ ローカル側LAN(192.168.10.0/24)とリモート側LAN(192.168.20.0/24)の間の通信にIPsec処理を適用するポリシー「vpn」を作成します。IPsec処理の内容はBUNDLESPECIFICATIONパラメーターで指定したSAバンドルスペックによって定義します(詳細は「SA情報の設定」をご覧ください)。トンネルモード用のポリシー例です。また、IPsec処理後のパケットの送り先はPEERADDRESSパラメーターで指定します。ここでは自動鍵を使っています。

CREATE IPSEC POLICY=vpn INT=ppp0 ACTION=IPSEC KEYMAN=ISAKMP BUNDLE=1 PEER=2.2.2.2 ↓
SET IPSEC POLICY=vpn LAD=192.168.10.0 LMA=255.255.255.0 RAD=192.168.20.0 RMA=255.255.255.0 ↓
このコマンドは、「ppp0から送出するIPパケットのうち、始点アドレスが192.168.10.0/24(192.168.10.0〜192.168.10.255)の範囲で、終点アドレスが192.168.20.0/24(192.168.20.0〜192.168.20.255)の範囲のものに対し、バンドルスペック「1」のIPsec処理を施した上でパケットに新しいIP(トンネル)ヘッダーを付け、対向IPsec機器2.2.2.2に送信する。また、ppp0で受信したIPsecパケットのうち、バンドルスペック「1」の処理内容と合致しているものに対して復号化処理を行い、復号化後のパケットの始点アドレスが192.168.20.0/24の範囲で、終点アドレスが192.168.10.0/24の範囲であれば受け入れる」の意味になります。
Note
- 手動鍵の場合は、KEYMANAGEMENTパラメーターにMANUALを指定してください。
■ 相手ルーターのアドレスが不定なときはPEERADDRESSにDYNAMICを指定します。これは、ISAKMPの認証をパスした相手のアドレスを意味します。このようなケースでは、常にアドレス不定側から通信が開始されることになります。
CREATE IPSEC POLICY=vpn INT=ppp0 ACTION=IPSEC KEYMAN=ISAKMP BUNDLE=1 PEER=DYNAMIC ↓
SET IPSEC POLICY=vpn LAD=192.168.10.0 LMA=255.255.255.0 RAD=192.168.20.0 RMA=255.255.255.0 ↓
このとき、相手ルーター(アドレス不定側)の対応するポリシーは次のようになります。アドレス不定側では相手ルーターのアドレスがわかっているので、PEERADDRESSには固定アドレスが入ります。
CREATE IPSEC POLICY=vpn INT=ppp0 ACTION=IPSEC KEYMAN=ISAKMP BUNDLE=1 PEER=1.1.1.1 ↓
SET IPSEC POLICY=vpn LAD=192.168.20.0 LMA=255.255.255.0 RAD=192.168.10.0 RMA=255.255.255.0 ↓
Note
- 片側のアドレスが不定なときはISAKMP/IKE(AggressiveモードまたはXAUTH)を使ってください。アドレスが不定なときは手動鍵は使えません。
■ ローカル側LAN(192.168.10.0/24)とVPNクライアント(1.2.3.4)の間の通信にIPsec処理を適用するポリシー「vpncli」を作成します。PEERADDRESSとRADDRESSが同じになっていることと、リモート側アドレス(RADDRESS、RMASK)がホストアドレスになっている点に注目してください(RMASK省略時はホストマスク255.255.255.255となります)。

CREATE IPSEC POLICY=vpncli INT=ppp0 ACTION=IPSEC KEYMAN=ISAKMP BUNDLE=1 PEER=1.2.3.4 ↓
SET IPSEC POLICY=vpncli LAD=192.168.10.0 LMA=255.255.255.0 RAD=1.2.3.4 ↓
■ VPNクライアントのアドレスが不定なときはPEERADDRESSにDYNAMICを指定します。これは、ISAKMPの認証をパスした相手のアドレスを意味します。また、パケット条件のリモート側アドレスも不定になるため、RADDRESSの代わりにRNAME(相手のフェーズ2 ID)を使います。このようなケースでは、常にアドレス不定側から通信が開始されることになります。
CREATE IPSEC POLICY=vpncli INT=ppp0 ACTION=IPSEC KEYMAN=ISAKMP BUNDLE=1 PEER=DYNAMIC ↓
SET IPSEC POLICY=vpncli LAD=192.168.10.0 LMA=255.255.255.0 RNAME=clientname ↓
このとき、VPNクライアント側の対応するポリシーは次のようになります。クライアント側では相手ルーターのアドレスがわかっているので、PEERADDRESSには固定アドレスが入ります。ただし、自分のアドレスが不定なのでLADDRESSの代わりにLNAME(自分のフェーズ2 ID)を使います。
CREATE IPSEC POLICY=vpncli INT=ppp0 ACTION=IPSEC KEYMAN=ISAKMP BUNDLE=1 PEER=1.1.1.1 ↓
SET IPSEC POLICY=vpncli LNAME=clientname RAD=192.168.10.0 RMA=255.255.255.0 ↓
Note
- 片側のアドレスが不定なときはISAKMP/IKE(AggressiveモードまたはXAUTH)を使ってください。アドレスが不定なときは手動鍵は使えません。
■ 複数のVPNクライアントと通信するときは、クライアントごとにIPsecポリシーを作成する必要があります。クライアントのアドレスが不定な場合は、クライアントごとに異なるLNAME、RNAMEを設定してください。次の例では、3つのクライアント(client1、client2、client3)との接続を想定しています。IPsec処理の内容は全クライアント共通と仮定しているため、BUNDLEには同じバンドルスペックを指定しています。クライアント側の設定でも、それぞれ対応するLNAMEを指定してください。
CREATE IPSEC POLICY=v1 INT=ppp0 ACTION=IPSEC KEYMAN=ISAKMP BUNDLE=1 PEER=DYNAMIC ↓
SET IPSEC POLICY=v1 LAD=192.168.10.0 LMA=255.255.255.0 RNAME=client1 ↓
CREATE IPSEC POLICY=v2 INT=ppp0 ACTION=IPSEC KEYMAN=ISAKMP BUNDLE=1 PEER=DYNAMIC ↓
SET IPSEC POLICY=v2 LAD=192.168.10.0 LMA=255.255.255.0 RNAME=client2 ↓
CREATE IPSEC POLICY=v3 INT=ppp0 ACTION=IPSEC KEYMAN=ISAKMP BUNDLE=1 PEER=DYNAMIC ↓
SET IPSEC POLICY=v3 LAD=192.168.10.0 LMA=255.255.255.0 RNAME=client3 ↓
■ トランスポートモードの場合は、パケット条件のローカル側アドレス(LADDRESS)が自分のアドレスと同じになり、リモート側アドレス(RADDRESS)が対向IPsec機器アドレス(PEERADDRESS)と同じになります。この設定では、ルーターAとVPNクライアント間のIP通信だけが保護の対象となります(VPNクライアントからLAN Aにはアクセスできません)。

CREATE IPSEC POLICY=vpn INT=ppp0 ACTION=IPSEC KEYMAN=ISAKMP BUNDLE=2 PEER=1.2.3.4 ↓
SET IPSEC POLICY=vpn LAD=1.1.1.1 RAD=1.2.3.4 ↓
このコマンドは、「ppp0から送出するIPパケットのうち、始点アドレスが1.1.1.1で終点アドレスが1.2.3.4のものに対し、バンドルスペック「2」のIPsec処理を施した上で対向IPsec機器1.2.3.4に送信する。また、ppp0で受信したIPsecパケットのうち、バンドルスペック「2」の処理内容と合致しているものに対して復号化処理を行い、復号化後のパケットの始点アドレスが1.2.3.4で終点アドレスが1.1.1.1であれば受け入れる」の意味になります。
Note
- SAスペック、バンドルスペックの設定については「SA情報の設定」をご覧ください。
■ 本製品でトランスポートモードを使うケースはまれですが、L2TPと併用するときにはトランスポートモードが有効に働きます。例として次のようなL2TP VPNを考えます。

この構成ではルーターA・B間にL2TPのトンネルを張って、LAN A・B間の通信(IPとIPX)をトンネリングしています。L2TPはPPPをトンネリングするため複数のプロトコルを通すことができますが、暗号化・認証などのセキュリティー機能はありません。L2TPトンネルにセキュリティーを付加するには、トランスポートモードのIPsecを併用します。
L2TPトンネルの実体は、ルーターA・B間のUDPパケット(始点・終点ともに1701番)です。これは1対1の通信なので、このパケットにトランスポートモードのIPsecを適用すればL2TPトンネルを暗号化できることになります。

CREATE IPSEC POLICY=l2 INT=ppp0 ACTION=IPSEC KEYMAN=ISAKMP BUNDLE=3 PEER=2.2.2.2 ↓
SET IPSEC POLICY=vpn LAD=1.1.1.1 LPORT=1701 RAD=2.2.2.2 RPORT=1701 TRANSPORT=UDP ↓
このコマンドは、「ppp0から送出するIPパケットのうち、始点アドレス1.1.1.1、始点ポート1701、終点アドレス2.2.2.2、終点ポート1701のUDPパケットに対し、バンドルスペック「3」のIPsec処理を施した上で対向IPsec機器2.2.2.2に送信する。また、ppp0で受信したIPsecパケットのうち、バンドルスペック「3」の処理内容と合致しているものに対して復号化処理を行い、復号化後のパケットの始点アドレスが2.2.2.2、始点ポートが1701、終点アドレスが1.1.1.1、終点ポートが1701、プロトコルがUDPであれば受け入れる」の意味になります。
■ すべてのパケットを通過させるポリシー「inet」を作成します。IPsec適用範囲外のパケットに対して通常の通信を許可する場合は、最後にこのポリシーを作成してください。インターフェースに対して1つでもIPsecポリシーを作成すると、ポリシーリストの末尾にすべてのパケットを破棄する暗黙のポリシーが作成されます。そのため、下記のポリシーを作成しない場合は、IPsec通信の範囲外ではまったく通信ができません。この例のようにパケット条件パラメーターを指定しない場合は「すべてのパケット」を意味します。
CREATE IPSEC POLICY=inet INT=ppp0 ACTION=PERMIT ↓
■ SPDのチェックは、ポリシーが設定されているインターフェース上でパケットを送受信するときに行われます。このとき、データベース内の各ポリシーが作成した順に検索され、最初に一致したポリシーで指定された処理が行われます。そのため、ポリシーの順序には十分留意してください。また、ポリシーリストの末尾にはすべてのパケットを破棄(DENY)する暗黙のポリシーが存在するため、IPsecを適用しない通信を許可するときは、最後にすべてのパケットを通過させる(PERMIT)ポリシーを作成してください。
■ SPD(ポリシーの一覧)はSHOW IPSEC POLICYコマンドで表示できます。
■ 各ポリシーの詳細を確認するには、POLICYパラメーターにポリシー名を指定します。
パケットに適用するIPsec処理の詳細は、SAスペックとバンドルスペックで定義します。
SAスペック
SAスペックでは適用するプロトコル、アルゴリズム、鍵管理方式、SAモードを指定し、手動鍵の場合はさらに鍵とSPIも指定します。SAスペックはCREATE IPSEC SASPECIFICATIONコマンドで定義します。1つのSAスペックでは、プロトコルやアルゴリズムを1つしか指定できません。複数のプロトコルを組み合わせ使いたいときは、後述するバンドルスペックで組み合わせを指定します(使用プロトコルが1つしかないときでもバンドルスペックは必要です)。
CREATE IPSEC SASPECIFICATION=spec-id KEYMANAGEMENT={ISAKMP|MANUAL} PROTOCOL={AH|COMP|ESP} [MODE={TRANSPORT|TUNNEL}] algorithms... keys... spis... ↓
以下、具体例を示します。
■ 自動鍵でESPトンネルモードによる暗号化と認証を行うSAスペック「1」を作成します。ESPを使うときは、暗号アルゴリズム(ENCALG)と認証アルゴリズム(HASHALG)を指定してください。MODEパラメーター省略時はトンネルモードになります。鍵とSPIはISAKMP/IKEによって自動的にネゴシエーションされます。
CREATE IPSEC SASPEC=1 KEYMAN=ISAKMP PROTO=ESP ENCALG=DES HASHALG=SHA ↓
■ ESPでは暗号化と認証の両機能を使用できますが、アルゴリズムにNULLを指定すると、どちらか一方だけを使うよう設定することもできます。たとえば、DESによる暗号化だけを行い、認証機能を使わない場合は次のようにします。
CREATE IPSEC SASPEC=1 KEYMAN=ISAKMP PROTO=ESP ENCALG=DES HASHALG=NULL ↓
また、暗号化を行わず(NULL暗号化)に認証機能だけを使う場合は次のようにします。これは、ESPのデバッグに便利です。
CREATE IPSEC SASPEC=1 KEYMAN=ISAKMP PROTO=ESP ENCALG=NULL HASHALG=SHA ↓
Note
- ENCALGとHASHALGの両方にNULLを指定することはできません。
■ 手動鍵でESPトンネルモードによる暗号化と認証を行うSAスペック「1」を作成します。手動鍵の場合は、暗号鍵(ENCKEY)、認証鍵(HASHKEY)と送信時SPI(OUTSPI)、受信時SPI(INSPI)を手動で設定する必要があります。INSPIとOUTSPIは、対向IPsec機器と逆になるように設定してください。
CREATE IPSEC SASPEC=1 KEYMAN=MANUAL PROTO=ESP ENCALG=DES HASHALG=SHA ENCKEY=1 HASHKEY=2 INSPI=1000 OUTSPI=1001 ↓
■ 自動鍵でAHトンネルモードによる認証を行うSAスペック「2」を作成します。AHを使うときは、認証アルゴリズム(HASHALG)を指定してください。MODEパラメーター省略時はトンネルモードになります。鍵とSPIはISAKMP/IKEによって自動的にネゴシエーションされます。
CREATE IPSEC SASPEC=2 KEYMAN=ISAKMP PROTO=AH HASHALG=SHA ↓
■ 手動鍵でAHトンネルモードによる認証を行うSAスペック「2」を作成します。手動鍵の場合は、認証鍵(HASHKEY)と送信時SPI(OUTSPI)、受信時SPI(INSPI)を手動で設定する必要があります。INSPIとOUTSPIは、対向IPsec機器と逆になるように設定してください。
CREATE IPSEC SASPEC=2 KEYMAN=MANUAL PROTO=AH HASHALG=SHA HASHKEY=2 INSPI=2000 OUTSPI=2001 ↓
■ 自動鍵でIPCompによるペイロード圧縮を行うSAスペック「3」を作成します。IPCompを使うときは、圧縮アルゴリズム「LZS」だけを指定してください。
CREATE IPSEC SASPEC=3 KEYMAN=ISAKMP PROTO=COMP COMPALG=LZS ↓
Note
- IPCompを使うときは、圧縮用のソフトウェアチャンネルを接続先拠点数にかかわりなく1チャンネル確保してください。これにはSET ENCO SWコマンドのSTACCHANNELSパラメーターを使います。チャンネル確保の設定はルーターを再起動しないと有効になりませんのでご注意ください。なお、暗号・圧縮ボードを装着している場合は本コマンドは必要ありません(実行するとメモリーの無駄になります)。
SET ENCO SW STACCHANNELS=1 ↓
■ 手動鍵でIPCompによるペイロード圧縮を行うSAスペック「3」を作成します。
CREATE IPSEC SASPEC=3 KEYMAN=MANUAL PROTO=COMP COMPALG=LZS ↓
■ SAスペックの設定内容は、SHOW IPSEC SASPECIFICATIONコマンドで確認できます。
SHOW IPSEC SASPECIFICATION ↓
SHOW IPSEC SASPECIFICATION=1 ↓
■ SAスペックに基づいて確立されたSAの情報はSHOW IPSEC SAコマンドで確認できます。
SHOW IPSEC SA ↓
SHOW IPSEC SA=1 ↓
バンドルスペック
バンドルスペックでは、プロトコルごとに定義したSAスペックの組み合わせを指定します。バンドルは、パケットに対して複数のプロトコルを適用するためのメカニズムですが、プロトコルを1つしか使わないときであってもバンドルスペックを定義する必要があります。IPsecポリシーのアクションで「ACTION=IPSEC」を指定するときに、処理内容をバンドルスペックの番号で指定するためです。
バンドルスペックはCREATE IPSEC BUNDLESPECIFICATIONコマンドで作成します。
CREATE IPSEC BUNDLESPECIFICATION=bspec-id KEYMANAGEMENT={ISAKMP|MANUAL} ↓
STRING="bundle-string" sa_lifetime... ↓
最低限、バンドルスペック番号、鍵管理方式、SAスペックの組み合わせを指定してください。
SAスペックの組み合わせはSTRINGパラメーターで指定します。このパラメーターを指定するときは、3種類の記号「AND」、「OR」、「,」を使うことができます。以下、それぞれの使い方を示します。ここでは、説明のため次のようなSAスペックが定義されているものと仮定します。
表 5:SAスペックのサンプル
番号 |
プロトコル |
暗号方式 |
認証方式 |
圧縮方式 |
1 |
ESP |
DES |
SHA1 |
− |
2 |
ESP |
DES |
MD5 |
− |
3 |
AH |
− |
SHA1 |
− |
4 |
AH |
− |
MD5 |
− |
5 |
IPComp |
− |
− |
STAC LZS |
■ プロトコルを1つしか適用しない場合は、使用するSAスペックの番号を1つだけ指定します。たとえば、ESP(DES + SHA1)を適用するときはSTRINGパラメーターに次のように指定します。
■ 「AND」は、併用するプロトコルの組み合わせと適用順序を示します。「AND」でつなげるSAスペックはそれぞれ異なるプロトコルでなくてはなりません。たとえば、IPComp(LZS)、ESP(DES + SHA1)、AH(SHA1)の順に適用する場合は、次のように指定します。
プロトコルの適用順序は、通常IPComp、ESP、AHの順とします。IPCompは必ず最初に適用しなくてはなりません。
ISAKMP/IKEを使用する場合は、プロトコルの組み合わせもネゴシエーションによって決定されます。そのため、バンドルスペックでは可能な組み合わせ(候補)を複数記述できます。「OR」と「,」はそのための記号です(手動鍵のときは使えません)。
■ 「OR」は、使用するアルゴリズムの選択肢を示すもので、同一プロトコルでアルゴリズムが異なるSAスペックを指定します。たとえば、IPComp、ESP、AHの順にプロトコル適用する場合で、AHの認証アルゴリズムとしてSHA1かMD5のどちらか一方を使いたい場合は、次のように指定します。
■ 「,」(カンマ)は、組み合わせパターンを複数提示したいときに使います。「IPComp(LZS)、ESP(DES + SHA1)、AH(SHA1)」の組み合わせが第1候補、「ESP(DES + SHA1)、AH(SHA1)」が第2候補、「ESP(DES + SHA1)」のみが第3候補なら次のように指定します。
"5 and 1 and 3, 1 and 3, 1" ↓
以下、バンドルスペックの作成例を示します。SAスペックは先ほどの例をもとにします。
■ 自動鍵でESP(DES + SHA1)を使うバンドルスペック「1」を作成します。
CREATE IPSEC BUNDLE=1 KEYMAN=ISAKMP STR="1" ↓
■ 手動鍵でESP(DES + MD5)、AH(MD5)の順に適用するバンドルスペック「2」を作成します。
CREATE IPSEC BUNDLE=2 KEYMAN=MANUAL STR="2 and 4" ↓
■ 自動鍵で「IPComp(LZS)、ESP(DES + SHA1)」を第1候補、「ESP(DES + SHA1)」のみを第2候補とするバンドルスペック「3」を作成します。
CREATE IPSEC BUNDLE=3 KEYMAN=ISAKMP STR="5 and 1, 1" ↓
■ バンドルスペックの設定内容は、SHOW IPSEC BUNDLESPECIFICATIONコマンドで確認できます。
SHOW IPSEC BUNDLESPECIFICATION ↓
SHOW IPSEC BUNDLESPECIFICATION=1 ↓
■ 実際に確立されたSAバンドルの情報は、SHOW IPSEC POLICYコマンドのSABUNDLEオプションで確認できます。
SHOW IPSEC POLICY SABUNDLE ↓
SHOW IPSEC POLICY=v1 SABUNDLE ↓
ISAKMP/IKEによる自動鍵管理
自動鍵管理の設定はISAKMPポリシーによって行います。ISAKMPポリシーは、フェーズ1でISAKMP SAを確立するためのパラメーターを定義するもので、相手機器のアドレスや認証方式、ISAKMP SA上で使用するアルゴリズムなどについて設定します。
ISAKMPポリシーを定義しておけば、IPsec処理の必要なパケットが検出されたときに、適切な相手機器との間で自動的にネゴシエーションが開始されます。まだフェーズ1が開始されていないときは、最初にISAKMP SAを確立し、その後フェーズ2でISAKMP SAの保護を受けながらIPsec SAのネゴシエーションを行います。
フェーズ1のネゴシエーションにおける相手認証の方式としては、共有パスフレーズによる事前共有鍵(pre-shared key)方式とRSAデジタル署名方式を使用できます。デフォルトは事前共有鍵方式です。
Note
- RSAデジタル署名方式ではPKIモジュールを使用するため、別売のPKIフィーチャーライセンス(AT-FL-06)が必要です。
ISAKMPポリシーはCREATE ISAKMP POLICYコマンドで作成します。事前共有鍵方式で相手認証を行う場合、最低限必要なパラメーターは次のとおりです。ポリシー名、相手機器のアドレス、事前共有鍵の番号を指定してください。「SENDNOTIFY=TRUE」は相互接続性のためのパラメーターです。
CREATE ISAKMP POLICY=name PEER={ipadd|ANY} [KEY=0..65535] SENDNOTIFY=TRUE ↓
■ 事前共有鍵はCREATE ENCO KEYコマンドで作成する汎用鍵(TYPE=GENERAL)です。次のようにして作成してください。鍵の作成方法の詳細については「暗号・圧縮」の章をご覧ください。
CREATE ENCO KEY=1 TYPE=GENERAL VALUE="pobaetrpnjkakdf" ↓
以下、事前共有鍵方式を使う場合のISAKMPポリシーの作成例を示します。
■ 「2.2.2.2」との間でISAKMP/IKEのネゴシエーションを行うISAKMPポリシー「i」を作成します。事前共有鍵の番号は「1」とします。
CREATE ISAKMP POLICY=i PEER=2.2.2.2 KEY=1 SENDN=TRUE ↓
このコマンドは、「2.2.2.2とのネゴシエーションでは事前共有鍵「1」を用いる」の意味になります。
■ 相手機器のアドレスが不定なときはPEERにANYを指定します。これは、どのアドレスからのネゴシエーション要求であっても受け入れることを示します。しかし、これでは相手の識別ができないため、アドレス不定側でIDペイロードの内容を明示的に指定することで相手を識別します。
このように、片側のアドレスが不定でID認証を行う場合は、デフォルトのMainモードではなく、Aggressiveモードを使う必要があります。また、このようなケースでは、ISAKMPネゴシエーションは常にアドレス不定側から開始されることになります。
アドレス固定側では、REMOTEIDパラメーターで相手のIDを指定します。相手から受け取ったIDペイロードの中身がREMOTEIDで指定した値と一致しており、なおかつ、事前共有鍵の値が一致していれば認証成功となります。
CREATE ISAKMP POLICY=i PEER=ANY KEY=1 REMOTEID=client MODE=AGGRESSIVE SENDN=TRUE ↓
このコマンドは、「ID値がclientである相手とのネゴシエーションでは事前共有鍵「1」を用いる」の意味になります。
また、アドレス不定側では、LOCALIDパラメーターで自分のIDを明示的に指定します。
CREATE ISAKMP POLICY=i PEER=1.1.1.1 KEY=1 LOCALID=client MODE=AGGRESSIVE SENDN=TRUE ↓
Note
- LOCALIDを指定しなかった場合、IDペイロードには自分のIPアドレスがセットされます。
■ 複数の相手と接続する場合は、通信相手の数だけISAKMPポリシーを作成し、それぞれ個別に事前共有鍵を指定します。相手のアドレスが固定ならば、次のようにします。ここでは、2.2.2.2と3.3.3.3との接続を想定しています。2.2.2.2とのネゴシエーションでは事前共有鍵「1」を、3.3.3.3とは「2」を使って認証を行います。
CREATE ISAKMP POLICY=two PEER=2.2.2.2 KEY=1 SENDN=TRUE ↓
CREATE ISAKMP POLICY=three PEER=3.3.3.3 KEY=2 SENDN=TRUE ↓
■ 複数の相手と接続する場合で相手のアドレスが不定の場合は、次のようにします。IPアドレスでは相手を識別できないため、相手が送ってくるIDペイロードの値を一種のユーザー名(あるいはホスト名)として利用します。このように片側のアドレスが不定なときはAggressiveモードが必須です。ここでは、アドレス不定の接続相手「peer1」、「peer2」との接続を想定しています。peer1とのネゴシエーションでは事前共有鍵「1」を、peer2とは「2」を使って認証を行います。この場合、相手側では自分のIDを「LOCALID="peer1"」のように指定します。
CREATE ISAKMP POLICY=c1 PEER=ANY KEY=1 REMOTEID=peer1 MODE=AGGRESSIVE SENDN=TRUE ↓
CREATE ISAKMP POLICY=c2 PEER=ANY KEY=2 REMOTEID=peer2 MODE=AGGRESSIVE SENDN=TRUE ↓
■ 片側アドレスが不定なときに相手を認証する方法としてはもう1つ、XAUTH(Extended Authentication。拡張認証)と呼ばれる方法があります。これは、フェーズ1完了後、フェーズ2の開始前にユーザー名/パスワードなどの認証を行う方式です。
アドレス固定側では、PEERパラメーターにANY、XAUTHパラメーターにSERVER(認証を要求する側)を指定したISAKMPポリシーを1つだけ作成します。また、相手のユーザー名とパスワードをユーザー認証データベース等に登録しておきます。
CREATE ISAKMP POLICY=i PEER=ANY KEY=1 SENDN=TRUE XAUTH=SERVER ↓
ADD USER=client1 PASSWORD=passclie1 LOGIN=NO ↓
ADD USER=client2 PASSWORD=passclie2 LOGIN=NO ↓
... ↓
アドレス不定側では、XAUTHパラメーターにCLIENT(認証を受ける側)を指定します。また、自分のユーザー名とパスワードも指定します。フェーズ1の事前共有鍵はXAUTH認証を受けるすべてのクライアントで共通になります。個々のクライアントの認証はフェーズ1完了後のXAUTHによって行われます。
CREATE ISAKMP POLICY=i PEER=1.1.1.1 KEY=1 SENDN=TRUE XAUTH=CLIENT ↓
SET ISAKMP POLICY=i XAUTHNAME=client1 XAUTHPASS=passclie1 ↓
■ 相手認証にRSAデジタル署名方式を使用する場合は、AUTHTYPEパラメーターにRSASIGを指定し、LOCALRSAKEYパラメーターで自分の公開鍵ペアの番号を指定します。
CREATE ISAKMP POLICY=i PEER=2.2.2.2 AUTHTYPE=RSASIG LOCALRSAKEY=2 SENDN=TRUE ↓
RSAデジタル署名を利用したIPsecの設定方法については「PKI」の章をご覧ください。
■ フェーズ1の鍵交換で使用するDiffie-Hellman(Oakley)グループを変更するには、GROUPパラメーターを使います。省略時はグループ1(768ビットMODP)です。
CREATE ISAKMP POLICY=i PEER=2.2.2.2 KEY=1 SENDN=TRUE GROUP=2 ↓
■ ISAKMPポリシーの設定内容は、SHOW ISAKMP POLICYコマンドで確認できます。
SHOW ISAKMP POLICY ↓
SHOW ISAKMP POLICY=i ↓
手動鍵管理
ISAKMP/IKEを使わない場合は、SA(SAスペック)ごとに手動で鍵(暗号鍵と認証鍵)とSPI(外向き、内向き)を設定する必要があります。
■ 鍵の作成はCREATE ENCO KEYコマンドで行います。SAで使用する鍵はすべて共有鍵ですので、対向機器間で同じ値を使用するようにしてください。鍵の作成方法については「暗号・圧縮」の章をご覧ください。
■ 鍵とSPIの指定は、CREATE IPSEC SASPECIFICATIONコマンドで行います。詳細は「SA情報の設定」をご覧ください。
UDPトンネリング(ESP over UDP)
UDPトンネリング(ESP over UDP)は、IPsecパケット(ESP)をUDPパケットにカプセル化して送受信する本製品独自の機能です。この機能を使うと、ルーター間にNAT機器が存在する場合でもIPsecを利用できます。
Note
- NAT機器を経由する場合はIPヘッダーが変更されるため、セキュリティープロトコルとしてAHを使うことはできません。これは、AHのデータ認証範囲が外側IPヘッダー(の一部)を含むためです。
Note
- ESP over UDPを使う場合は、該当するISAKMPポリシーでNAT-Traversal(NAT-T)を無効に設定してください(デフォルトは無効)。NAT-Tの有効・無効は、CREATE ISAKMP POLICYコマンド、SET ISAKMP POLICYコマンドのNATTRAVERSALパラメーターで指定します。
■ UDPトンネリングを使用するには、「ACTION=IPSEC」のIPsecポリシーで「UDPTUNNEL=TRUE」を指定します。これにより、UDPの2746番ポートでESP over UDPパケットの送受信を行うようになります。両側のルーターともUDPトンネリングを有効にしてください。
SET IPSEC POLICY=vpn UDPTUNNEL=TRUE ↓
■ NAT機器の背後に位置するルーターでは、さらに次のコマンドを実行してUDPハートビートを有効にします。UDPハートビートは、NAT機器の変換テーブルからセッション情報が削除されないよう、30秒ごとに相手ルーター宛てに送信されるパケットです。セッション保持だけを目的とするため、受信しても特別な処理は行われません。
SET IPSEC POLICY=vpn UDPHEARTBEAT=TRUE ↓
■ UDPトンネリングを使用するときは、両側のルーターに以下のIPsecポリシーを追加し、ESP over UDPパケットを通過させるようにしてください。本ポリシーは、IPsecを適用するポリシー(ACTION=IPSEC)よりも前に置いてください(ISAKMPパケットを通過させるポリシーと同様)。
CREATE IPSEC POLICY=udp INT=ppp0 ACTION=PERMIT LPORT=2746 TRANSPORT=UDP ↓
■ UDPトンネリングパケット(ESP over UDP)は、送受信ともUDPポート2746番を使います。ポート番号を変更するには、SET IPSEC UDPPORTコマンド、および、CREATE IPSEC POLICYコマンド/SET IPSEC POLICYコマンドのUDPPORTパラメーターを使います。
ローカル側ポートを変更するには、SET IPSEC UDPPORTコマンドを使います。これにより、3456番ポートでUDPトンネリングパケットを受信するようになります。また、送信時も3456番ポートから送出します。
リモート側ポートは相手ルーターごとに設定する必要があるため、IPsecポリシーのパラメーターとして設定します。これにより、IPsecポリシー「vpn」では、UDPトンネリングパケットを相手ルーター(PEER)の3456番ポートに送信します。
SET IPSEC POLICY=vpn UDPPORT=3456 ↓
Note
- UDPポートを変更したときは、トンネリングパケットを通過させるIPsecポリシーの条件も忘れずに変更してください。
■ ファイアウォールを使用しているときは、WAN側からのトンネリングパケットを通過させるルールを追加してください。詳細は「IPsecとファイアウォールの併用」をご覧ください。
IPsec NAT-Traversal(NAT-T)
IPsec NAT-Traversal(NAT-T)は、NAT機器経由でのIPsec通信を可能にするISAKMP/IPsecの拡張機能です。本機能は、VPNクライアント(Windows PCなど)からIPsec対応ルーターに接続するリモートアクセス型のIPsec VPNをおもに想定しています。VPNクライアントとルーターの両者がNAT-Tに対応していれば、両者間にNAT機器が存在する場合でもIPsecの通信が可能です。
NAT-Tを使用する場合、NAT機器は通信経路上のどこに存在していてもかまいません。また、NAT機器が複数存在していても、あるいは、まったく存在しなくてもかまいません。NAT-Tでは、ISAKMPフェーズ1のネゴシエーション時にNAT機器の存在を検出し、NAT機器が存在しているときはIPsecパケット(ESP)をUDPでカプセル化して送受信し、NAT機器が存在していないときはIPsecパケット(ESP)を通常どおり送受信します。NAT装置の背後にあると判断した側の機器は、定期的にキープアライブパケットを送信して、NAT機器の変換テーブルからセッション情報が削除されないようにします。
本製品はNAT-Tに対応しており、NAT-T対応VPNクライアントからの接続を受け付けることができます。
Note
- NAT機器を経由する場合はIPヘッダーが変更されるため、セキュリティープロトコルとしてAHを使うことはできません。これは、AHのデータ認証範囲が外側IPヘッダー(の一部)を含むためです。
Note
- ESP over UDPを使う場合は、該当するISAKMPポリシーでNAT-Traversal(NAT-T)を無効に設定してください(デフォルトは無効)。NAT-Tの有効・無効は、CREATE ISAKMP POLICYコマンド、SET ISAKMP POLICYコマンドのNATTRAVERSALパラメーターで指定します。
NAT-Tは、ISAKMPとIPsecに次のような機能拡張を行うことによって実現されています。
- ISAKMPフェーズ1の開始時に、NAT-Tの対応バージョンを示す特殊なVendor IDペイロードを交換することで、相手もNAT-Tに対応しているかどうかを検知します。
- 同じくISAKMPフェーズ1中に、NAT-D(Discovery)ペイロードを交換して、通信経路上にNAT機器が存在しているかどうか、存在している場合はどこにあるかを検出します。
- 相手がNAT-Tに対応していない、あるいは、通信経路上にNAT機器が存在していないと判断した場合は、通常どおりISAKMPのネゴシエーションを行い、IPsecの通信を開始します。
- 相手がNAT-Tに対応しており、なおかつ、NAT機器の存在を検出した場合は、使用するUDPポートをISAKMPのデフォルトポートである500番からNAT-T用の4500番に変更し、以後4500番ポートでISAKMPとIPsec(ESP)の両方の通信を行います。
- UDP 4500番ポートでは、ISAKMPメッセージだけでなくIPsecデータ(ESP)パケットもやりとりされますが、ISAKMPメッセージの場合は、ISAKMPヘッダーの前にnon-ESPマーカーを置くことでIPsec(ESP)と区別します。
- NAT機器の配下にあると認識した側は、定期的にキープアライブメッセージを送信して、NAT機器の変換テーブルからセッション情報が削除されないようにします。
本製品のNAT-Tは、以下のIETFドラフトに基づいています。
- Negotiation of NAT-Traversal in the IKE
- draft-ietf-ipsec-nat-t-ike-02
- draft-ietf-ipsec-nat-t-ike-08
- UDP Encapsulation of IPsec Packets
- draft-ietf-ipsec-udp-encaps-02
- draft-ietf-ipsec-udp-encaps-08
■ NAT-Tを使用するには、ISAKMPポリシーの設定で「NATTRAVERSAL=TRUE」を指定します。これにより、ISAKMPピアのNAT-T対応とNAT機器の存在を検出した場合、UDPの4500番ポートを使ってISAKMPとESPパケットの送受信を行うようになります。
SET ISAKMP POLICY=i NATTRAVERSAL=TRUE ↓
■ NAT-Tを使用するときは、以下のIPsecポリシーを追加し、NAT-Tパケットを通過させるようにしてください。本ポリシーは、IPsecを適用するポリシー(ACTION=IPSEC)よりも前に置いてください(ISAKMPパケットを通過させるポリシーと同様)。
CREATE IPSEC POLICY=natt INT=ppp0 ACTION=PERMIT LPORT=4500 TRANSPORT=UDP ↓
■ ファイアウォールを使用しているときは、WAN側からのNAT-Tパケットを通過させるルールを追加してください。詳細は「IPsecとファイアウォールの併用」をご覧ください。
■ Windows XP標準のVPNクライアントを使用する場合は、L2TPとIPsec(トランスポートモード)を併用する必要があります。ルーター側の設定方法については、設定例集をご覧ください。また、VPNクライアント側の詳細設定については、VPNクライアントのマニュアルをご覧ください。
IPsecとファイアウォールの併用
IPsecルーター上でファイアウォールを有効にしているときは、ISAKMPパケットやIPsecパケットがファイアウォールで遮断されないよう、ルールを追加する必要があります。
また、ファイアウォールNATを使っている場合は、プライベートLAN間のパケットにNATが適用されないようにすることも必要です。
以下、前述の「基本構成」をもとに、IPsecとファイアウォールを併用するための設定方法を説明します。
ここでは、さきほどの「基本構成」に、次のようなファイアウォールの設定を追加したものと仮定します。これは、LAN側からのパケットはすべて通過させ、WAN側からのパケットはすべて拒否するファイアウォールの基本設定です。また、LAN側コンピューターがインターネットにアクセスできるよう、WAN側インターフェースのグローバルアドレスを利用したダイナミックENATの設定も含まれています。
ENABLE FIREWALL
CREATE FIREWALL POLICY=net
ENABLE FIREWALL POLICY=net ICMP_F=ALL
DISABLE FIREWALL POLICY=net IDENTPROXY
ADD FIREWALL POLICY=net INT=vlan1 TYPE=PRIVATE
ADD FIREWALL POLICY=net INT=ppp0 TYPE=PUBLIC
ADD FIREWALL POLICY=net NAT=ENHANCED INT=vlan1 GBLINT=ppp0
|
このようなファイアウォール設定をすると、IPsec通信に必要なパケットまで遮断されてしまうため、IPsecの通信ができなくなります。IPsecを使う場合は、ご使用の環境に応じて以下の設定を追加してください。
■ ISAKMP/IKEを使っている場合は、相手ルーターからのISAKMPパケットが遮断されないように次のようなルールを設定します(ルーターのUDP500番宛てパケットを許可)。
ADD FIREWALL POLICY=net RULE=1 ACTION=ALLOW INT=ppp0 PROT=UDP GBLPORT=500 GBLIP=1.1.1.1 PORT=500 IP=1.1.1.1 ↓
■ UDPトンネリングを使っている場合は、ISAKMPパケットと同様、ESPパケットをカプセル化しているUDPパケット(ESP over UDP)も通すように設定します(ルーターのUDP2746番宛てパケットを許可)。
ADD FIREWALL POLICY=net RULE=2 ACTION=ALLOW INT=ppp0 PROT=UDP GBLPORT=2746 GBLIP=1.1.1.1 PORT=2746 IP=1.1.1.1 ↓
■ NAT-Tを使っている場合は、ISAKMPパケットと同様、NAT-TのUDPパケットも通すように設定します(ルーターのUDP4500番宛てパケットを許可)。
ADD FIREWALL POLICY=net RULE=3 ACTION=ALLOW INT=ppp0 PROT=UDP GBLPORT=4500 GBLIP=1.1.1.1 PORT=4500 IP=1.1.1.1 ↓
■ ローカルLANからリモートLANへのパケットにNATが適用されないよう、次のようなルールを追加します。このルールは、「vlan1で受信したIPパケットのうち、始点が192.168.10.1〜192.168.10.254の範囲で、終点が192.168.20.1〜192.168.20.254の範囲ならばNATをかけない」の意味になります。
ADD FIREWALL POLICY=net RULE=4 ACTION=NONAT INT=vlan1 PROT=ALL IP=192.168.10.1-192.168.10.254 ↓
SET FIREWALL POLICY=net RULE=4 REMOTEIP=192.168.20.1-192.168.20.254 ↓
■ 相手ルーターから送られてきたIPsecパケットが遮断されないよう、次のようなルールを追加します。「ENCAP=IPSEC」は、IPsecパケットからオリジナルのパケットを取り出したあとでこのルールを適用することを示します。したがって、以下のコマンドは、「ppp0で受信したIPsecパケットから取り出したパケットの終点が192.168.10.1〜192.168.10.254の範囲、すなわちローカル側LAN宛てならばNAT変換の対象外とする」の意味になります。
ADD FIREWALL POLICY=net RULE=5 ACTION=NONAT INT=ppp0 PROT=ALL IP=192.168.10.1-192.168.10.254 ENCAP=IPSEC ↓
Unnumbered IPインターフェース使用時の注意
IPsecを使うときは、IPパケットの始点アドレスとしてルーター自身のアドレスが使われるため、IPsecポリシーを適用するWAN側インターフェースがUnnumberedの場合は、いくつか注意すべきことがあります。
IPsecパケットを送出するインターフェースがUnnumberedの場合、始点アドレスとして有効なアドレスがないため、その他のインターフェースの中で一番最初に設定されたアドレスが始点アドレスとして使用されます。
WAN側Unnumberedのときは、通常LAN側にISPから割り当てられたグローバルを設定しますが、このときIPsecパケットの始点として使いたいアドレスを最初にADD IP INTERFACEコマンドで設定するよう注意してください。
■ このような問題が発生するのは次のような構成のときです。

この構成では、WAN側インターフェース(ppp0)がUnnumberedになっています。そのため、ppp0から送出されるIPsecパケットやISAKMPパケットの始点アドレスには、他のインターフェースの中で最初に設定されたアドレスが使用されます。
そのため次の順序でアドレスを設定すると、ルーター自身が送信するパケットでは始点アドレスとして192.168.10.1が使われてしまい、インターネット上での通信ができなくなってしまいます。
ADD IP INT=vlan1-1 IP=192.168.10.1 MASK=255.255.255.0 ↓
ADD IP INT=vlan1-0 IP=4.4.4.1 MASK=255.255.255.248 ↓
このような状況を避けるため、このケースでは次の順序でアドレスを設定するよう注意してください。これにより、4.4.4.1が始点アドレスとして使われるようになります。
ADD IP INT=vlan1-0 IP=4.4.4.1 MASK=255.255.255.248 ↓
ADD IP INT=vlan1-1 IP=192.168.10.1 MASK=255.255.255.0 ↓
■ なお、次のような構成では、WAN側がUnnumberedであってもその他のアドレスが1つしかないため、上記のような問題は発生しません。

■ PPPoE LAN型接続では、WAN側Unnumberedというものの、実際にはUnnumberedではなく、ネットワークアドレスがWAN側に割り当てられるケースがあるようです。この場合は、始点アドレスとしてWAN側インターフェースに設定されたネットワークアドレス(ホストアドレスとしては無効)を使おうとするため、他のインターフェースのアドレスが始点になるよう設定を工夫してください。次のような構成を例に解説します。

IPsec等を使わない場合(ルーター自身がインターネット側にパケットを送信することがない場合)は、次のように設定しても問題ありません。ppp0のアドレスはホストアドレスとしては無効なため、実質的にはUnnumberedになります。
ENABLE IP ↓
ENABLE IP REMOTEASSIGN ↓
ADD IP INT=ppp0 IP=0.0.0.0 ↓
ADD IP INT=vlan1-0 IP=4.4.4.1 MASK=255.255.255.248 ↓
ADD IP INT=vlan1-1 IP=192.168.10.1 MASK=255.255.255.0 ↓
ADD IP ROUTE=0.0.0.0 INT=ppp0 NEXT=0.0.0.0 ↓
しかし、IPsecを使う場合は前記のような問題が発生します。この設定では、IPsecパケットがppp0から送出されますが、このケースではppp0が純粋なUnnumberedでないため、ホストアドレスとしては本来無効なはずのネットワークアドレス(4.4.4.0)が始点アドレスとして使われてしまいます。そのため、ISP側のルーターでパケットが破棄されIPsecの通信ができなくなります。
これを回避するためには、WAN側インターフェースをマルチホーミングして有効なホストアドレスを設定し、デフォルトルートが有効なアドレスを持つインターフェースを向くように設定します。

ENABLE IP ↓
ENABLE IP REMOTEASSIGN ↓
ADD IP INT=ppp0-0 IP=0.0.0.0 ↓
ADD IP INT=ppp0-1 IP=4.4.4.6 MASK=255.255.255.255 ↓
ADD IP INT=vlan1-0 IP=4.4.4.1 MASK=255.255.255.248 ↓
ADD IP INT=vlan1-1 IP=192.168.10.1 MASK=255.255.255.0 ↓
ADD IP ROUTE=0.0.0.0 INT=ppp0-1 NEXT=0.0.0.0 ↓
この場合、アドレスが1つ無駄になりますが、IPsecパケットがppp0-1から送出されるため、始点アドレスとして有効な4.4.4.6が使われるようになります。
IPsecの動作や設定を確認する場合、あるいは、IPsecの通信ができない場合は、以下の各項目をチェックしてみてください。
■ 最初にIPsecモジュールが有効になっているかどうかを確認します。SHOW IPSECコマンドを実行し、Module StatusがENABLEDになっているかどうか確認してください。
■ ISAKMPを使っているときは、ISAKMPモジュールが有効になっているかどうかも確認してみましょう。SHOW ISAKMPコマンドを実行し、Module StatusがENABLEDになっているかどうか確認してください。
■ 自動鍵管理(ISAKMP/IKE)を使っているときは、IPsec SAのネゴシエーション(フェーズ2)に先立ち、ISAKMP SAのネゴシエーションが行われます(フェーズ1)。SHOW ISAKMP SAコマンドでISAKMP SAが確立されているかどうかを確認してください。
SecOff > show isakmp sa
Expiry Limits - hard/soft/used
SA Id PeerAddress EncA. HashA. Bytes Seconds
-----------------------------------------------------------------------------
3 1.1.1.1 DES SHA -/-/- 86400/82080/1382
|
ISAKMP SAの確立に失敗するおもな原因は、事前共有鍵(pre-shared key)やISAKMPポリシーの設定ミスです。事前共有鍵が両方のルーターで同じに設定されているか、各ルーターのISAKMPポリシーに矛盾がないかを確認してください。
SHOW ENCO KEY=1 ↓
SHOW ISAKMP POLICY ↓
SHOW ISAKMP POLICY=i ↓
SHOW CONFIG DYNAMIC=ISAKMP ↓
■ ISAKMP関連のイベントはログにも記録されます。必要に応じてログを確認してください。ISAKMP SAやIPsec SAの確立に成功していれば、「Exchange n: Completed successfully」のようなメッセージが記録されているはずです。
または
SecOff > show log module=isak
Date/Time S Mod Type SType Message
-------------------------------------------------------------------------------
03 11:22:49 3 ISAK IKMP MSG ISAKMP has been enabled
03 11:31:10 3 ISAK IKMP XCHG Exchange 1: Phase 1 [init] started with peer
2.2.2.2
03 11:31:14 3 ISAK IKMP XCHG Exchange 1: Notification Received - DOI
03 11:31:14 3 ISAK IKMP XCHG Exchange 1: Completed successfully
03 11:31:14 3 ISAK IKMP XCHG Exchange 2: Phase 2 [init] started with peer
2.2.2.2
03 11:31:14 3 ISAK IKMP XCHG Exchange 2: Completed successfully
-------------------------------------------------------------------------------
|
■ SHOW ISAKMP EXCHANGEコマンドを実行すると、完了していないISAKMPネゴシエーションがあるかどうかを確認できます。いつになっても、同じ情報が表示されるときは、ネゴシエーションが途中で止まってしまっている可能性が大です。通常は、このコマンドを実行しても何も表示されません。
SecOff > show isakmp exchange
ISAKMP Exchanges
Id Phase State PeerAddress Type
-----------------------------------------------------------------
3 4 WAIT_HASH_SA_NONCE 2.2.2.2 QUICK
|
■ IPsec通信が行われるためには、ルーター間にIPsec SAが確立されている必要があります。IPsec SAは使用するプロトコルごとに用意します。IPsec SAは、自動鍵管理ではISAKMP/IKEのネゴシエーション(フェーズ2)によって自動的に確立されます。一方、手動鍵のときは、管理者が固定的に設定します。SHOW IPSEC SAコマンドでIPsec SAが確立されているかどうかを確認してください。
SecOff > show ipsec sa
SA Id Policy Bundle State Protocol OutSPI InSPI
-----------------------------------------------------------------------------
2 v1 1 Valid ESP 3154027431 4241764757
3 v1 1 Valid AH 1252362122 3221961085
4 vf3 1 Valid ESP 28060662 981246197
5 vf1 1 Valid ESP 51507534 3371320620
|
また、IPsec SAバンドルの情報はSHOW IPSEC POLICYコマンドのSABUNDLEオプションで確認できます。
SecOff > show ipsec policy sabundle
Ipsec Policy SA Bundles
Bundle Expiry Limits - hard/soft/used
Index SA's State Bytes Seconds
------------------------------------------------------------------------
Policy ..........v1
0 2,3 VALID -/-/1728 28800/27360/2732
Policy ..........vx1
Policy ..........vf1
0 5 VALID -/-/220 28800/27360/2004
Policy ..........vf2
Policy ..........vf3
0 4 VALID -/-/440 28800/27360/2052
|
ISAKMP/IKEでIPsec SAの確立に失敗するおもな原因は、IPsecの設定(SAスペック、バンドルスペック、IPsecポリシー)が両方のルーターで食い違っていることです。次の各コマンドで両方のルーターの設定に矛盾がないか確認してください。また、前述の手順にしたがい、SHOW ISAKMP SAコマンドでISAKMP SAが確立されているかどうかも確認してください。ISAKMP SAが確立されていないとIPsec SAのネゴシエーション自体が行えません。
SHOW IPSEC SASPECIFICATION ↓
SHOW IPSEC BUNDLESPECIFICATION ↓
SHOW IPSEC POLICY ↓
SHOW CONFIG DYNAMIC=IPSEC ↓
また、手動鍵の場合も上記のコマンドを実行して、ルーター間でSAやポリシーに矛盾がないか確認してください。
■ IPsec関連のイベントはログにも記録されます。必要に応じてログを確認してください。
または
SecOff > show log type=ipsc
Date/Time S Mod Type SType Message
-------------------------------------------------------------------------------
17 07:54:36 3 IPSE IPSC MSG IPSEC has been enabled
17 07:55:29 3 IPSE IPSC MSG SA bundle created: Policy - v1
17 08:11:28 3 IPSE IPSC MSG SA bundle created: Policy - vf3
17 08:12:17 3 IPSE IPSC MSG SA bundle created: Policy - vf1
-------------------------------------------------------------------------------
|
■ ISAKMPのデバッグオプションを有効にすると、ISAKMPパケットの処理が行われるたびに、コンソールにデバッグ情報が表示されます。デバッグオプションを有効にするには、ENABLE ISAKMP DEBUGコマンドを使います。
ENABLE ISAKMP DEBUG={ALL|DEFAULT|PACKET|PKT|PKTRAW|STATE|TRACE|TRACEMORE} ↓
次にPKTオプションを有効にしたときの画面表示例を示します。PKTは、ルーターが送受信するISAKMPメッセージをデコードして詳細に表示するオプションです。ISAKMP/IKEネゴシエーションの様子を詳しく観察することができます。
SecOff > enable isakmp debug=pkt
Info (182057): ISAKMP Debugging has been enabled.
SecOff > ISAKMP Tx Message
Cookie's: 5052045c2e566b81:0000000000000000
Xchg Type: IDPROT(2) Ver: 10 Flags: 00
MessageID: 00000000 Total Length: 84
Payload #: 0 Length: 56 Type: Security Association (SA)
DOI: IPSEC(0) Situation: 00000001
Proposal#: 1 Protocol: ISAKMP(1) #Trans: 1 SPI:
Transform#: 1
Transform Id .................. IKE(1)
Encryption Algorithm........... DES(1)
Authentication Algorithm....... SHA(2)
Authentication Method.......... PRESHARED(1)
Group Description.............. 768(1)
Group Type..................... MODP
Expiry Seconds................. 86400
|
■ IPsecポリシーのデバッグオプションを有効にすると、IPパケットに対してIPsecの処理が行われるたびに、コンソールにデバッグ情報が表示されます。デバッグオプションを有効にするには、ENABLE IPSEC POLICY DEBUGコマンドを使います。
ENABLE IPSEC POLICY=policy DEBUG={FILTER|PACKET|TRACE|ALL} ↓
SecOff > ena ipsec policy=vpn debug=packet
Info (181057): IPSEC Policy Debugging has been enabled.
SecOff >
IPSEC vpn: 2: OUT: pre processing:
IP: 45000028eb1040002006d908c0a81464c0a80102
TCP: 0429005005b7e65c01faee4c5004000038560000
data:
IPSEC vpn: 2: OUT: post processing:
IP: 450000604b7f00004032fa573f0c42ef01010101
ESP: 14f45fa300000b09:35d26e02458706623d9aa9bf
data: 9fcd18d0a34ffeecb8b0f574ddeaa820f8ba0db36cd7a9fc0254f08215e2aa7ecdb34688
6193f17d39cc7f096276238bf262b668920b51c535d26e02458706623d9aa9bf
|
以下の各コマンドでは、IPsecやISAKMPに関する統計カウンターを確認することができます。多くのカウンターはルーターの内部処理にかかわる非常に細かい情報ですが、通信上のトラブルシューティングに役立つものもあります。
■ IPsecの全般的な動作に関するカウンターはSHOW IPSEC COUNTERSコマンドで確認できます。COUNTERSパラメーターで特定のカウンターだけを表示させることもできます。
■ ISAKMP関連の統計カウンターはSHOW ISAKMP COUNTERSコマンドで確認できます。
■ ISAKMP SAのネゴシエーション(フェーズ1)に失敗する場合は、Mainモード(MODE=MAINのとき。デフォルト)またはAggressiveモード(MODE=AGGRESSIVE)のカウンターに注目してください。
SHOW ISAKMP COUNTERS=MAIN ↓
SHOW ISAKMP COUNTERS=AGGRESSIVE ↓
■ ISAKMP SAは確立できたが、IPsec SAのネゴシエーション(フェーズ2)に失敗する場合は、QUICKモードのカウンターに注目してください。
SHOW ISAKMP COUNTERS=QUICK ↓
■ それぞれのIPsecポリシーでどのような処理が何回行われたかは、SHOW IPSEC POLICYコマンドのCOUNTERSオプションで確認できます。
SHOW IPSEC POLICY=vpn COUNTERS ↓
■ IPsec SAの統計カウンターは、SHOW IPSEC SAコマンドのCOUNTERSオプションで確認できます。
SHOW IPSEC SA ↓
SHOW IPSEC SA=2 ↓
(C) 2002 - 2008 アライドテレシスホールディングス株式会社
PN: J613-M3048-01 Rev.M