Security Gateway and IPsec
作成日 | 2000/Feb/07 |
最終変更日 | 2001/May/31 |
文書サイズ | 17kB |
このドキュメントでは、ダイアルアップVPN機能の仕様を説明する。ダイアルアップVPN機能は、セキュリティゲートウェイ(以下、SGWと書く) のIPアドレスが動的に変化するような環境で、 VPNを構築するための仕組みを提供するものである。
仕様変更の主軸は、SGWの識別子として「名前」を導入することである。名前は、鍵交換プロトコルIKEのメッセージの中に格納されて相手に通知される。メッセージを受けたSGWは、相手のIPアドレスではなく、通知された名前によって相手のSGWを識別する。名前は鍵交換の相手ごとに使い分けることができ、異なる相手に対しては、異なる名前を名乗ることができる。
ダイアルアップVPN機能では、SGWが非対称な役割を持って動作する。一方のSGWは、 IPアドレスが不定な相手から鍵交換を受け付け、もう一方の SGWは、IPアドレスが固定な相手に対して鍵交換を要求する。以下の文章では、「センタ−側」と「拠点側」という言葉を使って、それぞれの役割を区別する。「センター側」のSGWには固定のIPアドレスが割り当てられ、拠点側のSGWにはIPアドレスが動的に割り当てられる。鍵交換は、常に拠点側からセンター側に対して要求される。
なお、ダイアルアップVPNという言葉による誤解を避けるために補足すると、拠点側は、必ずしもWANの回線を収容している必要はなく、ローカルルータとして動作することもできる。例えば、以下の例では、 IPCPによって、SGWではない機器にIPアドレスが割り当てられている。
+-------------> ダイアルアップ ------------+ | | | 不定なアドレス(IPCP) | +--------+ +--------+ | RT140i | NAT | RT140p | +--------+ (IPCP <=> 192.168.0.0/24) +--------+ | | -----+-----+-- 192.168.0.0/24 -----+-----+-- | | +--------+ 拠点側 センター側 +--------+ | RT140e | *************** 暗号トンネル ************** | RT140e | +--------+ +--------+ | | ----+------ ---+------
ここでは、ダイアルアップVPN機能を使用する場合の制約事項を説明する。
まず、拠点側のSGWでは、ipsec ike local addressコマンドで、自分側のIPアドレスを設定する必要がある。このIPアドレスは、必ず固定なものを選ぶ必要があるので、通常は、 LAN側に設定されたIPアドレスと同じものを設定すればよい。また、拠点側のSGWが、IPCPでIPアドレスを取得する場合には、ここで設定したアドレスとIPCPによるアドレスを NATディスクリプタで変換する。
このときに、アドレス変換の方式としてIPマスカレードを利用することができるが、鍵交換プロトコルの通信を妨げないために、UDPの500番を素通しする必要がある (5.2.の設定例を参照)。
+------> ダイアルアップ | | | pp = IPCP +--------------+ | | | セキュリティ | IPマスカレード | ゲートウェイ | (IPCP <=> 192.168.0.0/24) | | (udp/500は変換せずに通す) +--------------+ | lan = 192.168.0.1 (自分側のSGWのアドレス) | -> ipsec ike local addressとして設定 | -----------+----- 192.168.0.0/24
IPアドレスが自由に変化するため、認証ヘッダ(AH)を利用することはできない。すなわち、認証機能の利用は、暗号ペイロード(ESP)のオプションとして提供されるものに限定される。
センター側がリブートした場合には、センター側が管理していたSAは削除される。ダイアルアップVPNの場合には、センター側が拠点側に対してリブートを通知することができないため、SAの再構成は行われない。
ダイアルアップVPNの設定による他機種との相互接続性については保証しない。
ここでは、ダイアルアップVPN機能の特徴的な動作を説明する。その他の動作については、過去に公開したドキュメントを参照されたい。
鍵交換は必ず拠点側が始動(initiate)する。センター側は起動時にも、鍵が古くなったときにも、決して鍵交換を始動しない。鍵交換のタイミングは、鍵の残り寿命が少なくなったときと、必要な鍵が存在しないときである。鍵交換に失敗した場合には、いったん待機状態に移る。待機状態では、暗号化の必要なIPパケットが現れるまで、鍵交換を保留する。
拠点側のIPアドレスが変化したときには、これを検出して、古いSAを削除する。IPアドレスの変化を検出するタイミングは、新しいIPアドレスに基づく鍵が作成されたときと、新しいIPアドレスから暗号化されたパケットを受信したときである。両者の場合とも、センター側が拠点側に対して、鍵交換を再起動するように要請する。
拠点側では、鍵交換による発呼をなるべく抑えるための仕組みが働く。まず、起動時には鍵交換を要求せず、鍵の必要な処理が発生したときに始めて鍵交換を要求する。鍵の必要な処理とは、具体的には、IPパケットの暗号化や復号化の処理である。また、拠点側は、生成した鍵が実際に使われたかどうかを判断し、使われたときに限って新しい鍵を生成する。もし、使われない鍵があれば、その鍵の更新を保留する。さらに使われることがなければ、寿命に従って削除する。この後は待機状態に移り、鍵の必要な処理が発生するまで鍵交換は保留される。
コマンド仕様の最も大きな変更点は、SGWの識別子として名前を定義できるようになったことである。このため、SGWの名前を定義するためのコマンドが新設される。また、事前共有鍵の扱いが少し複雑になる。従来は、相手のSGWのIPアドレスごとに1つの事前共有鍵を設定していたが、ダイアルアップVPN機能では、以下のような3つ組の識別子に対して事前共有鍵を設定できるようになる。
(相手側のSGWのIPアドレス, 相手側のSGWの名前, 自分側のSGWの名前)
過去のリリースにおける2つのコマンドの書式が変更された。 1つはipsec pre-shared-keyコマンドであり、もう1つはipsec sa policyコマンドである。これらのコマンドの書式は、リビジョンアップの際に自動的に、新しい書式に書きかえられる。また、TFTPによる設定では、古い書式を解釈して自動的に新しい書式に変換する。コマンドラインによる設定では、古い書式を入力することはできない。
ipsec ike local nameコマンドとipsec ike remote nameコマンドは、それぞれ自分側と相手側のSGWの名前を設定するコマンドである。これらのコマンドは必ず対で用いる必要がある。つまり、一方のSGWでipsec ike local nameコマンドを設定したときには、もう一方のSGWでは、ipsec ike remote nameコマンドによって、同じ名前を設定する必要がある。
ipsec ike local nameコマンドで設定された名前は、鍵交換の際に相手に通知される。相手ごとに異なる名前を設定でき、相手に応じて異なる名前を名乗ることができる。
○ 自分側のセキュリティゲートウェイの名前の設定 [入力形式] ipsec ike local name GATEWAY NAME [パラメータ] GATEWAY セキュリティゲートウェイの識別子 1 - 10 (RT103i) 1 - 20 (RT140/RT200i) NAME 名前(最大32文字) or 'clear' [説明] 自分側のセキュリティゲートウェイの名前を設定する。 [デフォルト値] clear
○ 相手側のセキュリティゲートウェイの名前の設定 [入力形式] ipsec ike remote name GATEWAY NAME [パラメータ] GATEWAY セキュリティゲートウェイの識別子 1 - 10 (RT103i) 1 - 20 (RT140/RT200i) NAME 名前(最大32文字) or 'clear' [説明] 相手側のセキュリティゲートウェイの名前を設定する。 [デフォルト値] clear
ipsec ike remote addressコマンドでは、相手側のSGWのIPアドレスを設定するが、相手側のSGWのIPアドレスが不定であるときには、 'any'という引数を設定する。拠点側では'any'を設定してはならず、センター側では必ず'any'を設定しなければならない。
○ 相手側のセキュリティゲートウェイのアドレスの設定 [入力形式] ipsec ike remote address GATEWAY ADDRESS ipsec ike remote address GATEWAY any ipsec ike remote address GATEWAY clear [パラメータ] GATEWAY セキュリティゲートウェイの識別子 1 - 10 (RT103i) 1 - 20 (RT140/RT200i) ADDRESS IPアドレス [説明] 相手側のセキュリティゲートウェイのIPアドレスを設定する。 [デフォルト値] clear
従来のipsec sa policyコマンドでは、相手側のSGWのIPアドレスを設定するが、 IPアドレスの代りにゲートウェイ番号を設定できるようになった。これは、同じIPアドレスを持つ相手に対して、複数のトンネルを構成できるようにするための仕様変更である。
○ SAのポリシーの設定 [入力形式] ipsec sa policy ID IP_ADDRESS PROTOCOL ALGORITHM [ALGORITHM] ipsec sa policy ID GATEWAY PROTOCOL ALGORITHM [ALGORITHM] [パラメータ] GATEWAY セキュリティゲートウェイの識別子 1 - 10 (RT103i) 1 - 20 (RT140/RT200i) PROTOCOL IPsecプロトコル esp ah ALGORITHM アルゴリズム des-cbc 3des-cbc md5-hmac sha-hmac [説明] SAのポリシーを設定する
これまでのリビジョンでは、ipsec pre-shared-keyコマンドによって、相手のIPアドレスごとに事前共有鍵を設定していたが、 (相手側のSGWのIPアドレス, 相手側のSGWの名前, 自分側のSGWの名前)という 3つ組の識別子に対して、事前共有鍵を設定できるようになった。ただし、引数として3つの識別子を与えるのは煩雑であるため、ゲートウェイ番号を介して、識別子と事前共有鍵が対応づけられる。また、コマンド名が、ipsec pre-shared-keyからipsec ike pre-shared-key に変更される。
○ IKEが用いる事前共有鍵の設定 [入力形式] ipsec ike pre-shared-key GATEWAY clear ipsec ike pre-shared-key GATEWAY text TEXT_KEY ipsec ike pre-shared-key GATEWAY BINARY_KEY [パラメータ] GATEWAY セキュリティゲートウェイの識別子 1 - 10 (RT103i) 1 - 20 (RT140/RT200i) TEXT_KEY テキスト鍵 最大32文字まで BINARY_KEY = '0x...' バイナリ鍵 最大32バイトまで [説明] IKEが用いる事前共有鍵を設定する。 [ノート] 相手側のセキュリティゲートウェイでも同じ鍵を設定する必要がある。 [デフォルト値] clear
設定の注意点は以下の通りである。
以下のような構成における設定例を示す。2つのRT103iは拠点側のルータであり、ダイアルアップでプロバイダ等に接続する。RT140iはセンター側のルータであり、 172.16.0.2という固定のグローバルアドレスが割り当てられているものとする。
[ 構成 ]
プロバイダ ............ プロバイダ .............. プロバイダ : : | : : | : : | ダイアルアップ接続 ダイアルアップ接続 専用線接続 : : | : : | 172.16.0.2 +---------+ +---------+ +------+ |RT103i(a)| |RT103i(b)| |RT140i| +---------+ +---------+ +------+ | 192.168.1.1 | 192.168.2.1 | 192.168.0.1 | | | ---+---- 192.168.1.0/24 ---+---- 192.168.2.0/24 ---+--- 192.168.0.0/24
[ RT103i(a)の設定 ]
isdn local address xxxxx ip lan address 192.168.1.1/24 ip lan routing protocol none ipsec auto refresh on ; RT140iに対するVPNの設定 ipsec ike local address 1 192.168.1.1 ipsec ike local name 1 rt103i(a) ipsec ike pre-shared-key 1 text rt103i(a)-himitsu ipsec ike remote address 1 172.16.0.2 ipsec sa policy 101 1 esp des-cbc md5-hmac tunnel select 1 ip tunnel route add net 192.168.0.0/24 1 ipsec tunnel 101 tunnel enable 1 nat descriptor type 1 masquerade nat descriptor masquerade static 1 1 192.168.1.1 udp 500 nat descriptor masquerade static 1 2 192.168.1.1 esp * (外側からIPsecの通信を始めることがなければ不要) pp select 1 isdn remote address call xxxxxx ip pp route add net default 1 ip pp nat descriptor 1 pp enable 1 dhcp service server dhcp scope 1 192.168.1.2-192.168.1.2/24
[ RT103i(b)の設定 ]
isdn local address xxxxxx ip lan address 192.168.2.1/24 ip lan routing protocol none ipsec auto refresh on ; RT140iに対するVPNの設定 ipsec ike local address 1 192.168.2.1 ipsec ike local name 1 rt103i(b) ipsec ike pre-shared-key 1 text rt103i(b)-himitsu ipsec ike remote address 1 172.16.0.2 ipsec sa policy 101 1 esp des-cbc md5-hmac tunnel select 1 ip tunnel route add net 192.168.0.0/24 1 ipsec tunnel 101 tunnel enable 1 nat descriptor type 1 masquerade nat descriptor masquerade static 1 1 192.168.2.1 udp 500 nat descriptor masquerade static 1 2 192.168.2.1 esp * (外側からIPsecの通信を始めることがなければ不要) pp select 1 isdn remote address call xxxxxx ip pp route add net default 1 ip pp nat descriptor 1 pp enable 1 dhcp service server dhcp scope 1 192.168.2.2-192.168.2.2/24
[ RT140iの設定 ]
bri line 1 l128 ip lan1 address 192.168.0.1/24 ip lan1 routing protocol none ipsec auto refresh on ; RT103i(a)に対するVPNの設定 ipsec ike pre-shared-key 1 text rt103i(a)-himitsu ipsec ike remote address 1 any ipsec ike remote name 1 rt103i(a) ipsec sa policy 101 1 esp des-cbc md5-hmac tunnel select 1 ip tunnel route add net 192.168.1.0/24 1 ipsec tunnel 101 tunnel enable 1 ; RT103i(b)に対するVPNの設定 ipsec ike pre-shared-key 2 text rt103i(b)-himitsu ipsec ike remote address 2 any ipsec ike remote name 2 rt103i(b) ipsec sa policy 102 2 esp des-cbc md5-hmac tunnel select 2 ip tunnel route add net 192.168.2.0/24 1 ipsec tunnel 102 tunnel enable 2 pp select 1 pp bind bri 1 ip pp local address 172.16.0.2/24 ip pp remote address 172.16.0.1 ip pp route add net default 1 pp enable 1 dhcp service server dhcp scope 1 192.168.0.2-192.168.0.254/24