＜前頁 次頁＞ ＜＜ ＞＞ ↓ 目次 （番号順 (詳細)・ 回線別 (詳細)・ 機能別 (詳細)）

CentreCOM AR550S 設定例集 2.9 #90

# NAT機器をはさむ2点間IPsec VPN（ESP over UDP）

インターネット上に暗号化されたトンネルを張り、2つの拠点をIP接続するIPsec VPNの設定例です（自動鍵管理）。この例は、IPsecルーター間に既設のNAT機器（ダイヤルアップルーターなど）が存在する場合の基本設定です。ここでは、NAT機器の設定を変更することなくNAT経由でIPsec（ESP）を使用するため、ESPパケットをUDPでカプセル化するESP over UDPを使用しています。

なお、この構成では常にルーターBから通信が開始されるため、NAT機器に特別な設定をする必要はありません。ただし、無通信時にセッション情報がNAT変換テーブルから消えてしまわないよう、ルーターB側から定期的にUDPパケットを送信するようにします（UDPハートビート機能）。
ここでは、次のようなネットワーク構成を例に解説します。

表 1
| ルーターA | ルーターB
WAN側物理インターフェース | eth0 | −
PPPユーザー名 | user@isp | −
PPPパスワード | isppasswd | −
PPPoEサービス名 | 指定なし | −
WAN側（ppp0）IPアドレス | 12.34.56.78/32 | −
LAN側（vlan1）IPアドレス(1) | 192.168.10.1/24 | 192.168.20.1/24
LAN側（eth0）IPアドレス(2) | − | 192.168.100.254/24
デフォルトゲートウェイ | ppp0（WAN側） | 192.168.100.1（NATボックス）

表 2：IKEフェーズ1（ISAKMP SAのネゴシエーション）
ルーター間の認証方式 | 事前共有鍵（pre-shared key）
IKE交換モード | Aggressiveモード
事前共有鍵 | secret（文字列）
ルーターAの認証ID | IPアドレス：12.34.56.78（デフォルト）
ルーターBの認証ID | 名前：client
Oakleyグループ | 1（デフォルト）
ISAKMPメッセージの暗号化方式 | DES（デフォルト）
ISAKMPメッセージの認証方式 | SHA1（デフォルト）
ISAKMP SAの有効期限（時間） | 86400秒（24時間）（デフォルト）
ISAKMP SAの有効期限（KByte数） | なし（デフォルト）
起動時のISAKMPネゴシエーション | 行わない

表 3：IKEフェーズ2（IPsec SAのネゴシエーション）
SAモード | トンネルモード
セキュリティープロトコル | ESP（暗号＋認証）
暗号化方式 | DES
認証方式 | SHA1
IPsec SAの有効期限（時間） | 28800秒（8時間）（デフォルト）
IPsec SAの有効期限（KByte数） | なし（デフォルト）
トンネリング対象IPアドレス | 192.168.10.0/24 ←→ 192.168.20.0/24
トンネル終端アドレス | 12.34.56.78（A）・不定（B）
インターネットとの平文通信 | 行う

ルーターAの設定

1. IPsecはセキュリティーモードでないと動作しないので、同モードで管理設定を行うことのできるSecurity Officerレベルのユーザーをあらかじめ登録しておきます。

   `ADD USER=secoff PASSWORD=PasswordS PRIVILEGE=SECURITYOFFICER ↓`

   > Note - Security Officerのパスワードは厳重に管理してください。

2. WAN側Ethernetインターフェース（eth0）上にPPPインターフェースを作成します。「OVER=eth0-XXXX」の「XXXX」の部分には、ISPから通知されたPPPoEの「サービス名」を記述します。ISPから指定がない場合は、どのサービス名タグでも受け入れられるよう、「ANY」を設定します。

   `CREATE PPP=0 OVER=eth0-ANY ↓`
3. ISPから通知されたPPPユーザー名とパスワードを指定します。LQRはオフにし、代わりにLCP Echoパケットを使ってPPPリンクの状態を監視するようにします。また、ISDN向けの機能であるBAPはオフにします。

   `SET PPP=0 OVER=eth0-ANY USER=user@isp PASSWORD=isppasswd BAP=OFF LQR=OFF ECHO=ON ↓`
4. IPモジュールを有効にします。

   `ENABLE IP ↓`
5. LAN側（vlan1）インターフェースにIPアドレスを設定します。

   `ADD IP INT=vlan1 IP=192.168.10.1 MASK=255.255.255.0 ↓`
6. WAN側（ppp0）インターフェースにISPから割り当てられたIPアドレスを設定します。

   `ADD IP INT=ppp0 IP=12.34.56.78 MASK=255.255.255.255 ↓`
7. デフォルトルートを設定します。

   `ADD IP ROUTE=0.0.0.0 INT=ppp0 NEXTHOP=0.0.0.0 ↓`
8. ファイアウォール機能を有効にします。

   `ENABLE FIREWALL ↓`
9. ファイアウォールの動作を規定するファイアウォールポリシー「net」を作成します。

   `CREATE FIREWALL POLICY=net ↓`
10. ICMPパケットはPing（Echo/Echo Reply）と到達不可能（Unreachable）のみ双方向で許可します。

    `ENABLE FIREWALL POLICY=net ICMP_F=PING,UNREACH ↓`

    > Note - デフォルト設定では、ICMPはファイアウォールを通過できません。

11. ルーターのidentプロキシー機能を無効にし、外部のメール（SMTP）サーバーなどからのident要求に対して、ただちにTCP RSTを返すよう設定します。

    `DISABLE FIREWALL POLICY=net IDENTPROXY ↓`
12. ファイアウォールポリシーの適用対象となるインターフェースを指定します。
    - LAN側（vlan1）インターフェースをPRIVATE（内部）に設定します。

      `ADD FIREWALL POLICY=net INT=vlan1 TYPE=PRIVATE ↓`
    - WAN側（ppp0）インターフェースをPUBLIC（外部）に設定します。

      `ADD FIREWALL POLICY=net INT=ppp0 TYPE=PUBLIC ↓`
13. LAN側ネットワークに接続されているすべてのコンピューターがENAT機能を使用できるよう設定します。グローバルアドレスには、ppp0のIPアドレスを使用します。

    `ADD FIREWALL POLICY=net NAT=ENHANCED INT=vlan1 GBLINT=ppp0 ↓`
14. このままでは、対向ルーターからのISAKMPパケットがファイアウォールを通過できないので、穴をあける設定をします。

    `ADD FIREWALL POLICY=net RULE=1 ACTION=ALLOW INT=ppp0 PROT=UDP GBLPORT=500 GBLIP=12.34.56.78 PORT=500 IP=12.34.56.78 ↓`
15. また、ISAKMPパケットと同様に、ESPパケットをカプセル化しているUDPパケット（ESP over UDP）も通すよう設定します。ESP over UDPは、デフォルトでUDPのポート2746番を使用します。

    `ADD FIREWALL POLICY=net RULE=2 ACTION=ALLOW INT=ppp0 PROT=UDP GBLPORT=2746 GBLIP=12.34.56.78 PORT=2746 IP=12.34.56.78 ↓`
16. ローカルLANからリモートLANへのパケットにはNATをかけないよう設定します。

    `ADD FIREWALL POLICY=net RULE=3 ACTION=NONAT INT=vlan1 PROT=ALL IP=192.168.10.1-192.168.10.254 ↓
    SET FIREWALL POLICY=net RULE=3 REMOTEIP=192.168.20.1-192.168.20.254 ↓
    `
17. 基本ルールのままではIPsecパケットまで遮断されてしまうので、これらのパケットを通過させるためのルールを設定します。「ENCAP=IPSEC」は、IPsecパケットからオリジナルのパケットを取り出したあとでこのルールを適用することを示します。よって、以下のコマンドは、「取り出したパケットの終点が192.168.10.1〜192.168.10.254、つまり、ローカル側LANならばNATの対象外とする」の意味になります。

    `ADD FIREWALL POLICY=net RULE=4 ACTION=NONAT INT=ppp0 PROT=ALL IP=192.168.10.1-192.168.10.254 ENCAP=IPSEC ↓
    `
18. ここからがIPsecの設定になります。最初にISAKMPで使用する事前共有鍵（pre-shared key）を作成します。

    `CREATE ENCO KEY=1 TYPE=GENERAL VALUE="secret" ↓`

    > Note - このコマンドはコンソールから直接入力したときだけ有効で、エディターなどで設定ファイルに記述した場合は無効になります。

19. ルーターBとのIKEネゴシエーション要求を受け入れるISAKMPポリシー「i」を作成します。KEYには、前の手順で作成した事前共有鍵（鍵番号「1」）を指定します。また、この例では相手のアドレスが不定なため、PEERにANYを、REMOTEIDで相手の認証IDを指定し、「MODE=AGGRESSIVE」でAggressiveモードを使うよう設定します。

    `CREATE ISAKMP POLICY=i PEER=ANY KEY=1 SENDN=TRUE REMOTEID="client" MODE=AGGRESSIVE ↓`
20. IPsec通信の基本仕様を定義するSAスペック「1」を作成します。セキュリティープロトコル、暗号、ハッシュの両アルゴリズムを指定します。UDPトンネリングを使うときは、セキュリティープロトコルAHは使用できませんのでご注意ください。

    `CREATE IPSEC SASPEC=1 KEYMAN=ISAKMP PROT=ESP ENCALG=DES HASHALG=SHA ↓`
21. SAスペックをとりまとめるSAバンドルスペック「1」を作成します。ESPとAHを併用する場合などは、複数のSAスペックを作成して、本コマンドのSTRINGパラメーターで「1 and 2」のように指定します。この例ではSAスペックが1つだけなので、単に「1」と指定します。

    `CREATE IPSEC BUNDLESPEC=1 KEYMAN=ISAKMP STRING="1" ↓`
22. ESP over UDPパケットを通過させるためのIPsecポリシー「udp」を作成します。ESP over UDP使用時は必ずこのポリシーを作成してください。

    `CREATE IPSEC POLICY=udp INT=ppp0 ACTION=PERMIT LPORT=2746 TRANSPORT=UDP ↓`
23. ISAKMPパケットを通過させるためのIPsecポリシー「isa」を作成します。ISAKMP使用時は必ず最初にこのポリシーを作成してください。

    `CREATE IPSEC POLICY=isa INT=ppp0 ACTION=PERMIT LPORT=500 RPORT=500 TRANSPORT=UDP ↓`
24. IPsec通信の範囲を指定するIPsecポリシーを作成します。ここで指定した条件に一致するパケットに対して、BUNDLEパラメーターで指定したSAバンドルスペックに基づくIPsec処理が行われます。INTERFACEパラメーターで指定したインターフェースを通過するときに、IPsecの暗号化、復号化処理が行われます。相手がNATを使っているため、ISAKMPの認証をパスしたものだけを指定する意味で、PEERにDYNAMICを指定します。

    `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 ↓
    `
25. UDPトンネリングを有効にします。これにより、UDPのポート2746番でESP over UDPパケットをリスニングするようになります。

    `SET IPSEC POLICY=vpn UDPTUNNEL=TRUE ↓`
26. インターネットとの通信を素通しさせるIPsecポリシー「inet」を作成します。

    `CREATE IPSEC POLICY=inet INT=ppp0 ACTION=PERMIT ↓`
27. IPsecを有効化します。

    `ENABLE IPSEC ↓`
28. ISAKMPを有効化します。

    `ENABLE ISAKMP ↓`
29. Security Officerレベルのユーザーでログインしなおします。

    `LOGIN secoff ↓`
30. セキュリティーモードに移行します。

    `ENABLE SYSTEM SECURITY_MODE ↓`

    > Note - セキュリティーモードに移行したあとで、再度ノーマルモードに戻すと、暗号鍵などの情報は失われます。

31. 設定は以上です。設定内容をファイルに保存し、SET CONFIGコマンドで起動時設定ファイルに指定します。

    `CREATE CONFIG=router.cfg ↓
    SET CONFIG=router.cfg ↓
    `

ルーターBの設定

1. IPsecはセキュリティーモードでないと動作しないので、同モードで管理設定を行うことのできるSecurity Officerレベルのユーザーをあらかじめ登録しておきます。

   `ADD USER=secoff PASSWORD=PasswordS PRIVILEGE=SECURITYOFFICER ↓`

   > Note - Security Officerのパスワードは厳重に管理してください。

2. 通常のIP設定を行います。クライアント側のルーターBは、NATボックス背後のLAN上に設置されているため、WAN側（eth0）、LAN側（vlan1）ともプライベートアドレスであるとします。ルーターBのデフォルトルートとなるNATボックスのLAN側インターフェースは、192.168.100.1とします。

   `ENABLE IP ↓
   ADD IP INT=vlan1 IP=192.168.20.1 MASK=255.255.255.0 ↓
   ADD IP INT=eth0 IP=192.168.100.254 ↓
   ADD IP ROUTE=0.0.0.0 INT=eth0 NEXT=192.168.100.1 ↓
   `
3. ここからがIPsecの設定になります。最初にISAKMPで使用する事前共有鍵（pre-shared key）を作成します。

   `CREATE ENCO KEY=1 TYPE=GENERAL VALUE="secret" ↓`

   > Note - このコマンドはコンソールから直接入力したときだけ有効で、エディターなどで設定ファイルに記述した場合は無効になります。

4. ルーターAとのIKEネゴシエーション要求を受け入れるISAKMPポリシー「i」を作成します。KEYには、前の手順で作成した事前共有鍵（鍵番号「1」）を指定します。PEERには相手ルーターのIPアドレスを指定します。また、自分のアドレスがNATボックスで変換されてしまうため、LOCALIDで自分の認証IDを指定し、「MODE=AGGRESSIVE」でAggressiveモードを使うよう設定します。

   `CREATE ISAKMP POLICY=i PEER=12.34.56.78 KEY=1 SENDN=TRUE LOCALID="client" MODE=AGGRESSIVE ↓`
5. IPsec通信の基本仕様を定義するSAスペック「1」を作成します。セキュリティープロトコル、暗号、ハッシュの両アルゴリズムを指定します。UDPトンネリングを使うときは、セキュリティープロトコルAHは使用できませんのでご注意ください。

   `CREATE IPSEC SASPEC=1 KEYMAN=ISAKMP PROT=ESP ENCALG=DES HASHALG=SHA ↓`
6. SAスペックをとりまとめるSAバンドルスペック「1」を作成します。

   `CREATE IPSEC BUNDLESPEC=1 KEYMAN=ISAKMP STRING="1" ↓`
7. ESP over UDPパケットを通過させるためのIPsecポリシー「udp」を作成します。ESP over UDP使用時は必ずこのポリシーを作成してください。

   `CREATE IPSEC POLICY=udp INT=eth0 ACTION=PERMIT LPORT=2746 TRANSPORT=UDP ↓`
8. ISAKMPパケットを通過させるためのIPsecポリシー「isa」を作成します。ISAKMP使用時は必ず最初にこのポリシーを作成してください。

   `CREATE IPSEC POLICY=isa INT=eth0 ACTION=PERMIT LPORT=500 RPORT=500 TRANSPORT=UDP ↓`
9. IPsec通信の範囲を指定するIPsecポリシーを作成します。ここで指定した条件に一致するパケットに対して、BUNDLEパラメーターで指定したSAバンドルスペックに基づくIPsec処理が行われます。INTERFACEパラメーターで指定したインターフェースを通過するときに、IPsecの暗号化、復号化処理が行われます。PEERには相手のIPアドレスを指定します。

   `CREATE IPSEC POLICY=vpn INT=eth0 ACTION=IPSEC KEYMAN=ISAKMP BUNDLE=1 PEER=12.34.56.78 ↓
   SET IPSEC POLICY=vpn LAD=192.168.20.0 LMA=255.255.255.0 RAD=192.168.10.0 RMA=255.255.255.0 ↓
   `
10. UDPトンネリングを有効にします。さらに、UDPハートビートを有効にして、無通信時にNATボックスからNAT変換テーブルが消えてしまわないようにします。

    `SET IPSEC POLICY=vpn UDPTUNNEL=TRUE UDPHEARTBEAT=TRUE ↓`
11. インターネットとの通信を素通しさせるIPsecポリシー「inet」を作成します。

    `CREATE IPSEC POLICY=inet INT=eth0 ACTION=PERMIT ↓`
12. IPsecを有効化します。

    `ENABLE IPSEC ↓`
13. ISAKMPを有効化します。

    `ENABLE ISAKMP ↓`
14. Security Officerレベルのユーザーでログインしなおします。

    `LOGIN secoff ↓`
15. セキュリティーモードに移行します。

    `ENABLE SYSTEM SECURITY_MODE ↓`

    > Note - セキュリティーモードに移行したあとで、再度ノーマルモードに戻すと、暗号鍵などの情報は失われます。

16. 設定は以上です。設定内容をファイルに保存し、SET CONFIGコマンドで起動時設定ファイルに指定します。

    `CREATE CONFIG=router.cfg ↓
    SET CONFIG=router.cfg ↓
    `

メモ

■ セキュリティーモードに移行すると、Security OfficerレベルでルーターにTelnetログインすることができなくなります。セキュリティーモードにおいて、Security OfficerレベルでTelnetログインしたい場合は、あらかじめRSO（Remote Security Officer）コマンドを使ってログインを許可するホストのIPアドレスを指定しておく必要があります。
たとえば、ネットワーク192.168.10.0/24、192.168.20.0/24上のすべてのホストからSecurity OfficerレベルでのTelnetログインを許可する場合は、次のようにします。

`ENABLE USER RSO ↓
ADD USER RSO IP=192.168.10.0 MASK=255.255.255.0 ↓
ADD USER RSO IP=192.168.20.0 MASK=255.255.255.0 ↓
`

■ セキュリティーモードでは、たとえSecurity Officerでログインした場合であっても、セキュリティーコマンドを一定期間入力しないでいると、次回セキュリティーコマンドを入力したときにパスワードの再入力を求められます。このタイムアウト値は、下記コマンドによって変更できますが、IPsecの設定を行うときは、ノーマルモードで設定を行った後、セキュリティーモードに変更することをおすすめします。
■ セキュリティー関連コマンドのタイムアウトは、次のコマンドで変更できます。SECUREDELAYパラメーターには、10〜3600（秒）を指定します。デフォルトは60秒です。

`SET USER SECUREDELAY=300 ↓`

まとめ

ルーターAのコンフィグ [テキスト版]
* 「#」で始まる行は、コンソールから入力しないと意味を持たないコマンドか、設定ファイル（.cfg）に記述しても無効なコマンドを示しています。詳細は本文の説明をご覧ください。

`ADD USER=secoff PASSWORD=PasswordS PRIVILEGE=SECURITYOFFICER ↓ CREATE PPP=0 OVER=eth0-ANY ↓ SET PPP=0 OVER=eth0-ANY USER=user@isp PASSWORD=isppasswd BAP=OFF LQR=OFF ECHO=ON ↓ ENABLE IP ↓ ADD IP INT=vlan1 IP=192.168.10.1 MASK=255.255.255.0 ↓ ADD IP INT=ppp0 IP=12.34.56.78 MASK=255.255.255.255 ↓ ADD IP ROUTE=0.0.0.0 INT=ppp0 NEXTHOP=0.0.0.0 ↓ ENABLE FIREWALL ↓ CREATE FIREWALL POLICY=net ↓ ENABLE FIREWALL POLICY=net ICMP_F=PING,UNREACH ↓ 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 ↓ ADD FIREWALL POLICY=net RULE=1 ACTION=ALLOW INT=ppp0 PROT=UDP GBLPORT=500 GBLIP=12.34.56.78 PORT=500 IP=12.34.56.78 ↓ ADD FIREWALL POLICY=net RULE=2 ACTION=ALLOW INT=ppp0 PROT=UDP GBLPORT=2746 GBLIP=12.34.56.78 PORT=2746 IP=12.34.56.78 ↓ ADD FIREWALL POLICY=net RULE=3 ACTION=NONAT INT=vlan1 PROT=ALL IP=192.168.10.1-192.168.10.254 ↓ SET FIREWALL POLICY=net RULE=3 REMOTEIP=192.168.20.1-192.168.20.254 ↓ ADD FIREWALL POLICY=net RULE=4 ACTION=NONAT INT=ppp0 PROT=ALL IP=192.168.10.1-192.168.10.254 ENCAP=IPSEC ↓ # CREATE ENCO KEY=1 TYPE=GENERAL VALUE="secret" ↓ CREATE ISAKMP POLICY=i PEER=ANY KEY=1 SENDN=TRUE REMOTEID="client" MODE=AGGRESSIVE ↓ CREATE IPSEC SASPEC=1 KEYMAN=ISAKMP PROT=ESP ENCALG=DES HASHALG=SHA ↓ CREATE IPSEC BUNDLESPEC=1 KEYMAN=ISAKMP STRING="1" ↓ CREATE IPSEC POLICY=udp INT=ppp0 ACTION=PERMIT LPORT=2746 TRANSPORT=UDP ↓ CREATE IPSEC POLICY=isa INT=ppp0 ACTION=PERMIT LPORT=500 RPORT=500 TRANSPORT=UDP ↓ 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 ↓ SET IPSEC POLICY=vpn UDPTUNNEL=TRUE ↓ CREATE IPSEC POLICY=inet INT=ppp0 ACTION=PERMIT ↓ ENABLE IPSEC ↓ ENABLE ISAKMP ↓ # LOGIN secoff ↓ # ENABLE SYSTEM SECURITY_MODE ↓`

ルーターBのコンフィグ [テキスト版]
* 「#」で始まる行は、コンソールから入力しないと意味を持たないコマンドか、設定ファイル（.cfg）に記述しても無効なコマンドを示しています。詳細は本文の説明をご覧ください。

`ADD USER=secoff PASSWORD=PasswordS PRIVILEGE=SECURITYOFFICER ↓ ENABLE IP ↓ ADD IP INT=vlan1 IP=192.168.20.1 MASK=255.255.255.0 ↓ ADD IP INT=eth0 IP=192.168.100.254 ↓ ADD IP ROUTE=0.0.0.0 INT=eth0 NEXT=192.168.100.1 ↓ # CREATE ENCO KEY=1 TYPE=GENERAL VALUE="secret" ↓ CREATE ISAKMP POLICY=i PEER=12.34.56.78 KEY=1 SENDN=TRUE LOCALID="client" MODE=AGGRESSIVE ↓ CREATE IPSEC SASPEC=1 KEYMAN=ISAKMP PROT=ESP ENCALG=DES HASHALG=SHA ↓ CREATE IPSEC BUNDLESPEC=1 KEYMAN=ISAKMP STRING="1" ↓ CREATE IPSEC POLICY=udp INT=eth0 ACTION=PERMIT LPORT=2746 TRANSPORT=UDP ↓ CREATE IPSEC POLICY=isa INT=eth0 ACTION=PERMIT LPORT=500 RPORT=500 TRANSPORT=UDP ↓ CREATE IPSEC POLICY=vpn INT=eth0 ACTION=IPSEC KEYMAN=ISAKMP BUNDLE=1 PEER=12.34.56.78 ↓ SET IPSEC POLICY=vpn LAD=192.168.20.0 LMA=255.255.255.0 RAD=192.168.10.0 RMA=255.255.255.0 ↓ SET IPSEC POLICY=vpn UDPTUNNEL=TRUE UDPHEARTBEAT=TRUE ↓ CREATE IPSEC POLICY=inet INT=eth0 ACTION=PERMIT ↓ ENABLE IPSEC ↓ ENABLE ISAKMP ↓ # LOGIN secoff ↓ # ENABLE SYSTEM SECURITY_MODE ↓`

CentreCOM AR550S 設定例集 2.9 #90

(C) 2005-2012 アライドテレシスホールディングス株式会社

PN: J613-M0710-04 Rev.M

＜前頁 次頁＞ ＜＜ ＞＞ ↑ 目次 （番号順 (詳細)・ 回線別 (詳細)・ 機能別 (詳細)）