Pocket

拠点間インターネットVPN (NAT超え)に関する整理

  • add this entry to hatena bookmark

拠点間インターネットVPN(IPsec)を使って、NATをかました通信を行う事を考えています。その為の考え方や仕様について、簡単に整理してみました。初歩的なところからになり、かつ、技術的な詳細までには踏み込んでいませんが、以下に記載しておきます。

VPNの種類

まず、VPNとは、Virtual Private Network の略で、仮想的にプライベートネットワークを繋げる技術です。

VPNの種類を大きく分けると インターネットVPN と IP-VPN の2種類があります。

インターネットVPNの種類を大きく分けると、IPsec-VPN と SSL-VPN の2種類があります。

IPsec-VPN の種類を大きく分けると、拠点間VPNと、リモートアクセスVPN の2種類があります。

今回は太字部分の、拠点間インターネットVPN(IPsec)について、もう少し掘り下げて整理したいと考えています。

ちょっと補足(トンネリングと暗号化について)

ちなみに、VPNはトンネリング暗号化で実現します。トンネリング部分と暗号化部分は、以下のプロトコルが使えます。

  • トンネリング(一例)
    1. IPsec
    2. PPTP
    3. L2TP
    4. GER
  • 暗号化(一例)
    1. IPsec

よって、IPsecを使うと、IPsecの実装だけで、トンネリングと暗号化を実現する事が出来ます。

IPsec でトンネリングと暗号化を行う場合のプロトコル体系

IPsec でトンネリングと暗号化を行う場合、以下のプロトコルを用います。

  • トンネリング「IKE
    • Internet Key Exchange の略で、インターネット鍵交換プロトコルである。
    • 鍵の生成と交換、鍵の定期自動更新を行う。
    • UDP500ポートを利用。
    • SA(Security Assosiation)と呼ばれるセッションを制御し、VPN装置間でコネクションを確立し、トンネルを実現する。コネクション自体は単方向のコネクションとなる為、VPN間で送受信を行う為には、SAは2本必要になる。
    • IKEでは、計2フェーズの処理がある。
      • フェーズ1は「ISAKMP SAの確立」である。フェーズ2の通信で必要になる共有秘密鍵の生成が行われる。モードは「メインモード」と「アグレッシブモード」がある。メインモードではVPN装置間で固定IPアドレスが必要になるが、アグレッシブモードよりもセキュリティの高いネゴシエーション方法となると言われている。
      • フェーズ2は「IPsec SAの確立」である。IPsec通信で使用する秘密鍵を生成が行われる。フェーズ1で確立された「ISAKMP SA 」内で、IPsec SAを確立する
  • 暗号化「ESP
    • Encapsulationed Security Payload の略で、IPsecでパケットを認証し、暗号化を行う為のプロトコルである。
    • IKEのフェーズ2で作成したSA内で、暗号化したパケットの通信を行う。
    • IPプロトコル50 を利用。

ちなみに、「AH(Authentication Header)」というIPsecでパケットを認証するプロトコルもある。ただし、AHでは暗号化は行わない。ESPで認証機能がある為、現時点でIPsec-VPNを実装する場合は、IKEとESPでの実装が多いようである。(現在ではAHはあまり使われていないようである。)

暗号化アルゴリズムと認証アルゴリズム

ESPで暗号化を行う場合、暗号化アルゴリズムと認証アルゴリズム(暗号化アルゴリズムを用いて、対象データのハッシュ値を求めるためのアルゴリズム)は以下がある。

  • 暗号化アルゴリズム
    1. DES
    2. 3DES(DESより強固)
    3. AES(DES、3DESより強固、かつ処理が早い)
  • 認証アルゴリズム
    1. MD5
    2. SHA-1(MD5より強固)
    3. HMAC(MD5、SHA-1より強固)

IPsecの通信モード

IPsecの通信モードには以下の2種類がある。

  • トランスポートモード
    • エンドツーエンドのVPN端末でVPN接続する場合に利用する。
    • 元のIPヘッダをそのまま使い、パケットのカプセル化は行わない。
  • トンネルモード
    • VPNゲートウェイとなるVPN機器を介して、拠点間VPN接続を行う場合に利用する。よって、VPN接続を利用するPC側は、IPsecを意識する必要はない。
    • プライベートIPアドレスのパケットにグローバルIPアドレスのヘッダを付与し、パケットのカプセル化を行う。

NATの利用について

本来、VPNとNATとの相性は良くない。

NATはアドレス変換時にヘッダ内の値を変更するが、VPN側で暗号化されたヘッダにアクセスできなくなり、データの整合性が取れなくなる現象が出る為らしい。

ただし、VPN側は IPsec ESPでのトンネルモードで、NAT側は静的NAT(IPマスカレードではなく)であれば、問題はないらしい。その場合も、IPsec NAT-T(UDP4500ポート)を使う必要がある。

「NAT-T」とは、NAT Traversal in the IKE の事である。

よって、NATを通過して IPsecが正常に機能する為には、総括すると、以下のプロトコルをファイアウォールで許可する必要がある。

  • IKE(UDP 500ポート)
  • ESP(IPプロトコル 50)
  • IPsec NAT-T(UDP 4500ポート)

 

※ ESP の記載を一部修正しました。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

チェックサイト RSS Feed読者登録はいかがでしょうか?RSS配信中です。