あわせて読みたい関連記事
- Cisco IPsec VPNが繋がらない原因と対処法
- FortiGate IPsec VPN設定手順|拠点間接続のCLI設定例
- MTUとは?確認方法・MSS・フラグメント・設定値の決め方
- MTUとMSSの確認方法|ip tcp adjust-mss設定
- ループバックインターフェースとは?OSPF/BGPでの使い方
- OSPFの設定コマンドとエリア設計
GREトンネルとは?仕組みをわかりやすく解説
複数拠点を仮想的に接続する技術として、GREトンネル(Generic Routing Encapsulation)はネットワークエンジニアにとって基本かつ重要なスキルのひとつです。OSPFやEIGRPなどの動的ルーティングプロトコルをインターネット越しに使いたい場合や、プライベートIPをインターネット上でやりとりしたい場合に非常に有効です。
本記事では、GREの仕組み・Ciscoルータでの設定手順・IPsecとの組み合わせによるセキュリティ確保・トラブルシューティングまで、現場目線で体系的に解説します。
2拠点間でOSPFを使ってルーティングを統合したいという要件がありました。拠点間はインターネット回線のみ。通常OSPFのマルチキャストパケット(224.0.0.5)はインターネット越しに届きません。
GREトンネルを張ることでトンネルインターフェース上でOSPFを動かし、あたかも直接L3接続しているかのようにルーティングを統合できました。さらにGRE over IPsecで暗号化を追加して完成。GREがなければこの要件は別の手段で対応するしかなく、設計が複雑になっていたと思います。

GREトンネルとは
GRE(Generic Routing Encapsulation)は、任意のレイヤ3プロトコルのパケットを新しいIPヘッダでカプセル化してトンネル転送する技術です。外側から見ると通常のIPパケットとして扱われるため、インターネット経由でも透過的に通信できます。
GREが必要になる主なシナリオ
CiscoルータによるGREトンネル構成
構成図
Router A の設定
Router-A# configure terminal
! トンネルインターフェースを設定
Router-A(config)# interface Tunnel0
Router-A(config-if)# ip address 10.0.0.1 255.255.255.252
Router-A(config-if)# tunnel source 203.0.113.1 ← 自拠点のWAN IP
Router-A(config-if)# tunnel destination 198.51.100.1 ← 対向拠点のWAN IP
Router-A(config-if)# tunnel mode gre ip ← GREモード(デフォルトだが明示推奨)
Router-A(config-if)# no shutdown
! 対向LAN宛のスタティックルート(またはOSPFを使う場合はトンネルIF上で有効化)
Router-A(config)# ip route 192.168.2.0 255.255.255.0 Tunnel0
Router-A(config)# end
Router-A# copy running-config startup-configRouter B の設定
Router-B# configure terminal
Router-B(config)# interface Tunnel0
Router-B(config-if)# ip address 10.0.0.2 255.255.255.252
Router-B(config-if)# tunnel source 198.51.100.1
Router-B(config-if)# tunnel destination 203.0.113.1
Router-B(config-if)# tunnel mode gre ip
Router-B(config-if)# no shutdown
Router-B(config)# ip route 192.168.1.0 255.255.255.0 Tunnel0
Router-B(config)# end
Router-B# copy running-config startup-config1500 − 24 = 1476バイトとなります。TCPの通信障害を防ぐために以下を設定することを推奨します。Router-A(config-if)# ip tcp adjust-mss 1436 ← 1476 - 40(IP+TCPヘッダ)= 1436OSPFをGREトンネル上で動かす例
GREトンネルの最大の強みは動的ルーティングプロトコルが使えることです。トンネルインターフェースをOSPFのnetworkに含めるだけでネイバーが確立します。
! Router AでOSPFをトンネルIF上で有効化
Router-A(config)# router ospf 1
Router-A(config-router)# network 10.0.0.0 0.0.0.3 area 0 ← トンネルIF
Router-A(config-router)# network 192.168.1.0 0.0.0.255 area 0 ← 拠点A LANGRE over IPsecでセキュリティを確保
GRE単体では通信内容が平文のままインターネットを流れます。インターネット越しに使う場合はIPsecでGREトラフィックを暗号化するGRE over IPsec構成が必須です。
- マルチキャスト・動的ルーティングに対応
- 暗号化なし→盗聴リスクあり
- 社内閉域網・ラボ環境では使用可能
- GREのマルチキャスト対応を保持
- IPsecで暗号化・完全性保護
- インターネット経由では必須
GRE over IPsecの設定例(Router A)
! GREトラフィックを暗号化対象にするACL
Router-A(config)# access-list 110 permit gre host 203.0.113.1 host 198.51.100.1
! ISAKMPポリシー(Phase1)
Router-A(config)# crypto isakmp policy 10
Router-A(config-isakmp)# encryption aes 256
Router-A(config-isakmp)# hash sha256
Router-A(config-isakmp)# authentication pre-share
Router-A(config-isakmp)# group 14 ← group 2(1024bit)は非推奨。group14以上を使用
Router-A(config-isakmp)# lifetime 86400
Router-A(config-isakmp)# exit
! 事前共有鍵の設定
Router-A(config)# crypto isakmp key SecureKey2024! address 198.51.100.1
! トランスフォームセット(Phase2)
Router-A(config)# crypto ipsec transform-set GRE-SET esp-aes 256 esp-sha256-hmac
Router-A(cfg-crypto-trans)# mode tunnel
Router-A(cfg-crypto-trans)# exit
! crypto map の設定
Router-A(config)# crypto map GRE-MAP 10 ipsec-isakmp
Router-A(config-crypto-map)# set peer 198.51.100.1
Router-A(config-crypto-map)# set transform-set GRE-SET
Router-A(config-crypto-map)# match address 110
Router-A(config-crypto-map)# exit
! WAN側インターフェースに適用
Router-A(config)# interface GigabitEthernet0/0
Router-A(config-if)# crypto map GRE-MAPgroup 2(1024ビット)は現在のガイドラインで非推奨です。新規構築ではgroup 14(2048ビット)以上を使用してください。既存環境がgroup 2の場合は早急な更新を推奨します。パケットの処理フロー(GRE over IPsec)
② Router A がパケットをGREでカプセル化
→ 元IPヘッダ + GREヘッダ + 外側IPヘッダ(203.0.113.1 → 198.51.100.1)
③ IPsecのACLにマッチ → GREパケット全体をESPで暗号化
→ ESPヘッダ + 暗号化データ + 外側IPヘッダ
④ インターネットを通過(暗号化済み)
⑤ Router B がIPsecを復号 → GREパケット取り出し → 内側IPを取り出して転送
⑥ 拠点Bの192.168.2.10に届く
確認コマンドとトラブルシューティング
基本確認コマンド
! トンネルインターフェースの状態確認
Router-A# show interface Tunnel0
! ルーティングテーブルの確認(対向ネットワークへのルートがあるか)
Router-A# show ip route
! トンネルを通じたpingでの疎通確認
Router-A# ping 10.0.0.2 ← 対向トンネルIPへのping
Router-A# ping 192.168.2.1 ← 対向LANゲートウェイへのping
! IPsec Phase1の状態確認
Router-A# show crypto isakmp sa
! IPsec Phase2の状態確認(pkts encaps/decapsが増えているか)
Router-A# show crypto ipsec sa(show interface Tunnel0 の正常時出力)
Tunnel0 is up, line protocol is up
Hardware is Tunnel
Internet address is 10.0.0.1/30
Tunnel source 203.0.113.1, destination 198.51.100.1
Tunnel protocol/transport GRE/IP
...
(問題のある出力)
Tunnel0 is up, line protocol is down ← トンネルは設定されているが宛先に到達できない| 症状 | 原因 | 対処 |
|---|---|---|
| Tunnel0がup/down | tunnel destinationへのルートがない(WAN側の経路不備) | show ip route でWAN IPへのルートを確認 |
| トンネルIPへのpingが通らない | tunnel sourceまたはtunnel destinationのIPが誤っている | 両端の設定を照合して送信元/宛先IPを修正 |
| LAN間の通信が通らない | スタティックルートがない・OSPFのネイバーが上がっていない | show ip route / show ip ospf neighbor |
| 大きなパケットだけ通らない | GREオーバーヘッドによるMTU超過 | ip tcp adjust-mss 1436 をTunnel0に設定 |
| IPsecが確立しない | Phase1/Phase2の設定不一致・PSK不一致 | show crypto isakmp sa debug crypto isakmp |
GREとVTI(ルートベースIPsec)の使い分け
GRE over IPsecと似た構成として、CiscoではVTI(Virtual Tunnel Interface)を使ったルートベースIPsecも選択肢になります。
| 比較項目 | GRE over IPsec | VTI(ルートベースIPsec) |
|---|---|---|
| マルチキャスト対応 | ✅ 対応(GREがマルチキャストを通す) | ✅ 対応(IPsec VTIもマルチキャスト可) |
| 設定の複雑さ | GRE + IPsecの2段構成でやや複雑 | tunnel modeをipsecに変更するだけでシンプル |
| 対向機器の互換性 | 対向がGREに対応していれば可 | Cisco同士またはIKEv2対応機器向け |
| 推奨用途 | OSPFやEIGRP等のマルチキャスト通信が必要な既存環境 | 新規構築でシンプルに暗号化トンネルを張りたい場合 |
まとめ
GREトンネルは、複数拠点のネットワークを柔軟に接続するための強力な技術です。設定自体はシンプルですが、MTUオーバーヘッドへの対応と、インターネット経由での使用時のIPsec暗号化が重要です。
tunnel source・tunnel destinationは両端で対称に設定する- GREオーバーヘッドは24バイト。
ip tcp adjust-mss 1436でTCPの断片化を防ぐ - インターネット経由ではGRE over IPsecで暗号化する。DHグループはgroup 14以上を使用
- Tunnel0がup/downの場合はWAN側へのルートを確認する
- OSPFをGREトンネル上で動かすことで動的ルーティング統合が可能
- 新規構築でシンプルな暗号化トンネルが必要な場合はVTI(ルートベースIPsec)も検討
確認コマンド(show interface Tunnel0・show ip route・show crypto ipsec sa)で状態を確認しながら設定を進めましょう。
よくある質問(FAQ)
Q. CiscoでGREトンネルを設定するコマンドは?
interface Tunnel0 → ip address [トンネルIP] [マスク] → tunnel source [送信元IF or IP] → tunnel destination [対向IP] で設定します。両端で対称的に設定し、tunnel sourceとdestinationを正しく対応させる必要があります。show interface Tunnel0 で状態を確認できます。
Q. GREトンネルとIPsecの違いは?
GREはカプセル化のみで暗号化機能がありません。IPsecは暗号化・認証を提供しますが、マルチキャストやブロードキャストを直接通せません。両者を組み合わせた「IPsec over GRE」構成では、GREでマルチキャスト対応のトンネルを作り、IPsecで暗号化するため、OSPFなどのルーティングプロトコルをVPN越しに使えます。
Q. GREトンネルでMTU問題が発生する理由は?
GREは24バイトのオーバーヘッド(GREヘッダ4バイト + 外側IPヘッダ20バイト)を追加するため、トンネルインターフェースの実効MTUは1476バイトになります。ip mtu 1476 と ip tcp adjust-mss 1436 をトンネルインターフェースに設定してフラグメントを防止してください。



