
【9秒チャレンジ】
GRE(Generic Routing Encapsulation)は、異なるプロトコルのパケットをカプセル化してIPネットワーク上で運べる技術です。
GRE over IPsec での役割
IPsecはユニキャスト専用なので、マルチキャストを使うOSPFはそのままでは流せません。そこで、GREがOSPFパケットをカプセル化してユニキャスト化します。IPsecはそのユニキャスト化されたGREパケットを暗号化して送信します。受信側はIPsecで復号→GREを解除して、OSPFパケットを取り出します。
つまり、GREはIPsecとOSPFの架け橋になっていて、「暗号化したいけどマルチキャストしたい」問題を解決してくれるんです!
もし、この説明でモヤモヤしても、大丈夫!
以下の問題でアウトプットしていくことで無理なく理解に落とし込むことができます!
では、練習問題を通して実感していきましょう!
問題文
企業Aの拠点間接続におけるGRE over IPsecの導入
企業Aでは、本社と3つの支社間で安全かつ柔軟な通信を行うために「GRE over IPsec」を利用した拠点間VPNを導入することになった。
本社と各支社はインターネットを介して接続されており、既存の通信はIPsec VPNで暗号化されていた。しかし、支社ごとに複数のネットワークセグメントが存在し、OSPFによる動的ルーティングを利用したいという要望があった。そこで、IPsecの暗号化機能とGREのカプセル化機能を組み合わせることになった。
以下のネットワーク構成図を参照し、設問に答えよ。
[本社] ---[インターネット]---[支社1]
| |
[192.168.1.0/24] [192.168.2.0/24]
- 本社ルータ:WANインターフェース 203.0.113.1
- 支社1ルータ:WANインターフェース 198.51.100.1
GREトンネルの構成は以下の通り:
- トンネルインターフェースIP(本社):10.0.0.1/30
- トンネルインターフェースIP(支社1):10.0.0.2/30
IPsec設定は以下のポリシーに基づく:
- 暗号化アルゴリズム:AES-256
- 認証アルゴリズム:SHA-256
- IKEバージョン:IKEv2
設問
(1) GRE over IPsecを利用する理由として、以下の空欄[A]〜[C]に当てはまる語句を答えよ。
- GREは、[A] プロトコルをカプセル化することで、異なるネットワーク間で非IPトラフィックやマルチキャスト通信を通過させることができる。
- しかし、GRE自体には[B] 機能がないため、IPsecで通信内容を暗号化する必要がある。
- GRE over IPsecの構成を用いることで、[C] などの動的ルーティングプロトコルを安全に利用できる。
(2) GREトンネルを構成した際の本社ルータ側の設定コマンド(Ciscoルータ)として適切なものを以下から選び、番号で答えよ。
interface Tunnel0
ip address 10.0.0.1 255.255.255.252
tunnel source 203.0.113.1
tunnel destination 198.51.100.1
tunnel mode ipsec ipv4
interface Tunnel0
ip address 10.0.0.1 255.255.255.252
tunnel source 203.0.113.1
tunnel destination 198.51.100.1
crypto map VPN-MAP 10 ipsec-isakmp
set peer 198.51.100.1
set transform-set ESP-AES-SHA
match address 100
(3) トンネルインターフェースが正常に確立した場合、本社側ルータで以下のコマンドを実行した結果、支社側のトンネルIPが返ってこなかった。このとき、考えられる原因として最も適切なものを答えよ。
ping 10.0.0.2 source 10.0.0.1
- 支社側のトンネルインターフェースが無効になっている
- IPsecのSA(Security Association)が確立されていない
- 本社側でトンネルモードが正しく設定されていない
- 支社側ルータのNAT設定が不正である
解答と解説
設問 (1)
- GREは、[A] プロトコルをカプセル化することで、異なるネットワーク間で非IPトラフィックやマルチキャスト通信を通過させることができる。
- しかし、GRE自体には[B] 機能がないため、IPsecで通信内容を暗号化する必要がある。
- GRE over IPsecの構成を用いることで、[C] などの動的ルーティングプロトコルを安全に利用できる。
- [A] 任意のレイヤ3
- [B] 暗号化
- [C] OSPF
- GRE(Generic Routing Encapsulation)は、IPパケットだけでなく、IPv6、IPX、AppleTalk などのさまざまなレイヤ3プロトコルをカプセル化できます。これにより、異なるネットワーク間でマルチキャストやブロードキャストパケットを通過させることができます。
- ただし、GRE自体には暗号化機能がないため、データはそのまま平文で流れてしまいます。そこで、GREパケットごとIPsecで暗号化すると、安全性が確保できます。
- OSPFなどの動的ルーティングプロトコルはマルチキャストを使うので、IPsec単体では通りませんが、GREトンネル上なら正常に動作します。

IPsecはマルチキャストを扱えない。なので、OSPFのパケット(マルチキャスト)をユニキャストして扱えるようにする手段として、GREヘッダを挟むという訳です。
扱えない理由としては、IPsecで鍵交換する際にマルチキャストだと、相手が複数あり過ぎてどの相手とSAを確立すべきか分からなくなってしまうからです。また、マルチキャストに所属しているすべての相手と交換するという手段もありますが、それはもはやユニキャストになってしまい、マルチキャストのメリットが享受できません。
| IPsecヘッダ | 外側IPヘッダ | GREヘッダ | 内側IPヘッダ | OSPFパケット |
設問 (2) の解答と解説
1.
interface Tunnel0
ip address 10.0.0.1 255.255.255.252
tunnel source 203.0.113.1
tunnel destination 198.51.100.1
tunnel mode ipsec ipv4
この設定では、トンネルモードとして次の行があります:
tunnel mode ipsec ipv4
これは IPsecトンネルモード を直接トンネルインターフェースに適用しています。実はこの方法だと、GREトンネルが使えなくなるんです。つまり、「GRE over IPsec」ではなく、純粋なIPsecトンネルになります。
- GREのメリット(マルチキャスト対応、動的ルーティングプロトコルの利用)が失われる
- OSPFやEIGRPなどのマルチキャストを使うプロトコルが正常に動かない
要するに、「GREトンネルをIPsecで暗号化したい」のに、IPsecトンネルモードにしてしまうと、GRE自体が無効化されるわけです。
2.
interface Tunnel0 #仮想インターフェース "Tunnel0" を作成・設定します
ip address 10.0.0.1 255.255.255.252 #仮想インターフェース(トンネル)のIPアドレスを設定
tunnel source 203.0.113.1 #物理インタフェースのIPアドレスを設定
tunnel destination 198.51.100.1 #相手の物理インタフェースアドレスを設定
この設定では、シンプルなGREトンネルを作成しています。
- トンネルインターフェースのIPアドレスを設定(仮想リンクのIP)
- トンネルの送信元・宛先IPを指定(物理インターフェースのパブリックIP)
この状態でトンネルができたら、IPsec設定は別途 “crypto map” で行うのが正しい構成です。つまり:
- GREでマルチキャストパケットをユニキャストパケットに包む
- IPsecでGREパケットごと暗号化
この順番を守ることで、動的ルーティングプロトコルが動作しつつ、安全な通信が確立します。
3.
crypto map VPN-MAP 10 ipsec-isakmp
set peer 198.51.100.1
set transform-set ESP-AES-SHA
match address 100
これはIPsecのCrypto Mapの設定です。
- peer → トンネルの宛先IPアドレスを指定
- transform-set → 暗号アルゴリズム(AESとSHA)を指定
- match address → 暗号化対象トラフィックをアクセスリストで指定
この設定自体は必要ですが、インターフェース設定が抜けています。通常、これを使うなら:
interface Tunnel0
tunnel source 203.0.113.1
tunnel destination 198.51.100.1
crypto map VPN-MAP
のように、トンネルインターフェースにCrypto Mapを紐付ける必要があります。単にCrypto Mapだけ定義しても、インターフェース側で使わないとIPsecが動きません。
設問 (3) の解答と解説
(3) トンネルインターフェースが正常に確立した場合、本社側ルータで以下のコマンドを実行した結果、支社側のトンネルIPが返ってこなかった。このとき、考えられる原因として最も適切なものを答えよ。
ping 10.0.0.2 source 10.0.0.1
- 支社側のトンネルインターフェースが無効になっている
- IPsecのSA(Security Association)が確立されていない
- 本社側でトンネルモードが正しく設定されていない
- 支社側ルータのNAT設定が不正である
ping
コマンドで支社のトンネルIPに通信できなかった理由として最も考えられるのは、IPsecのSAが確立していないことです。
SAが確立されていなければ、GREパケットが暗号化されずインターネット上で破棄される可能性があります。
この場合、以下のコマンドでSAの状態を確認できます。
show crypto ipsec sa
もしSAが確立されていなければ、以下の点をチェックするとよいです:
- IKEフェーズ1・フェーズ2の設定(暗号化アルゴリズム、認証方式、プリシェアードキー)が一致しているか
- アクセスリストでGREトラフィック(プロトコル番号 47)が許可されているか
- 双方のルータのトンネルインターフェースのステータスが「up/up」になっているか