GREとは何か:ネットワークトンネリングの技術・運用・セキュリティ完全ガイド
はじめに
GRE(Generic Routing Encapsulation)は、さまざまなネットワーク層プロトコルを別のプロトコルのペイロードとしてカプセル化し、トンネルを形成するための汎用的な技術です。企業ネットワークやクラウド環境でのサイト間接続、マルチキャストやブロードキャストトラフィックの転送、ルーティングプロトコルの透過的な連携など、多様なユースケースで利用されます。本稿ではGREの設計思想、プロトコル構造、実運用上の注意点、セキュリティ対策、代替技術との比較、トラブルシューティングまでを技術的かつ実践的に深掘りします。
GREの基本概念と歴史的背景
GREはRFCで標準化されており、代表的な文書にRFC2784(Generic Routing Encapsulation)があり、拡張仕様としてRFC2890(Key and Sequence Number Extensions to GRE)があります。GREは『任意のネットワーク層プロトコルをIPパケット内にカプセル化する』という単純な発想に基づき、IPv4上にIPv4/IPv6や他のプロトコルを透過的に運ぶことを可能にします。初期の目的は異なるネットワークドメイン間でのルーティング情報やマルチキャスト配信を容易にすることでした。
GREパケットの構造(概要)
最小限のGREヘッダは4バイトで、主にフラグとプロトコルタイプ(EtherTypeに相当)を含みます。拡張オプションとしては、チェックサム、キー(識別子)、シーケンス番号などがあり、これらはRFC2890で定義されています。実装によってはこれらのオプションを付加することで、トンネル識別や順序管理、簡易な整合性チェックが可能です。
外側IPヘッダ(IPv4/IPv6): トンネルの送受信ノード間でのルーティングに使用。
GREヘッダ: 最低4バイト。フラグやプロトコルタイプを示す。
内側ペイロード: カプセル化される実際のパケット(IPv4/IPv6/その他)。
主要なユースケース
GREは以下のような用途に多く使われます。
サイト間トンネリング: 拠点間で透過的に異なるプロトコルを転送する。
ルーティングプロトコルのトンネリング: OSPFやEIGRPなどのルーティングアップデートを経路上で透過的に送る。
マルチキャスト配信: ネイティブにマルチキャストをサポートしない経路をまたいでマルチキャストを運ぶ。
DMVPNなどの複合技術: 動的VPNでGREとIPsec、NHRPを組み合わせるケースが典型。
L2トンネル(GRETAP): イーサネットフレームをそのままカプセル化してL2ブリッジを実現する。
GREの長所と短所
長所としては単純さと汎用性が挙げられます。ほとんどのルータやOSでサポートされ、ブロードキャスト/マルチキャストを透過的に扱えるため、特定のアプリケーションに向いています。一方で短所はセキュリティとMTUの管理です。GRE自体には暗号化や認証の仕組みがないため、機密性や整合性を必要とする場合はIPsec等で保護する必要があります。また、カプセル化によりオーバーヘッドが増え、MTU/MSS調整や断片化の問題が発生しやすいです。
運用上の注意点(MTU/フラグメンテーション)
GREを用いると、外側IPヘッダ(IPv4では20バイト)、GREヘッダ(最小4バイト、オプションでさらに増加)などのオーバーヘッドが生じます。結果として内側パケットの最大転送単位(MTU)は減少します。一般的な対策は次のとおりです。
トンネルリンクのMTUを小さく設定する(例: 1400バイトなど)。
TCP MSSの調整を行い、セッション開始時のMSS値を小さくする。
パスMTUディスカバリ(PMTUD)を有効にする。ただしファイアウォールやNATによってICMPがブロックされるとPMTUDが機能しない。
必要に応じて送信側でパケット分割(フラグメンテーション)や再組立の設定を調整する。
セキュリティ面:GRE単体の限界とIPsecの併用
GREは暗号化・認証を提供しないため、盗聴や改ざんのリスクがあります。実運用ではGREトンネルをIPsecで保護することが一般的です。ここでのポイントは次の通りです。
IPsecはESP(Encapsulating Security Payload)でトンネル全体を暗号化するか、トランスポートモードでGREペイロードを保護する構成がある。
GREはIPプロトコル番号47を使用するため、NATデバイスでは処理できない場合がある。NAT環境下ではGRE over IPsec(NATトラバーサル)やUDPでのカプセル化を検討する。
トンネルエンドポイントの認証、アクセス制御リスト(ACL)、管理プレーンでの強固な認証とログ管理を行う。
GREと他のオーバーレイ技術との比較
近年、VXLAN、NVGRE、GENEVEなどのオーバーレイ技術が仮想化環境やクラウドで広く使われています。GREはこれらに比べてシンプルで多用途ですが、スケーラビリティやマルチテナンシー、ハードウェアオフロードの観点で劣る場合があります。
VXLAN: UDPベースでスイッチング的なL2オーバーレイを提供。マルチキャストやBGP EVPNと組み合わせる運用が多い。
NVGRE: マイクロソフト発の技術で、GREをベースにしたL2オーバーレイ。
GENEVE: 拡張性を重視した最新のオーバーレイ仕様。
用途により適切な選択が必要です。単純な拠点間のL3トンネルやルーティングプロトコルの透過転送ならGREで十分ですが、クラウドの大規模仮想ネットワークや多租用環境ではVXLANやGENEVEなどが優位になる場合があります。
運用時のチェックポイントとトラブルシューティング
トラブル発生時は以下を順に確認します。
物理/外側IPの疎通: pingや tracerouteで外側の経路が通っているか。
ファイアウォール設定: IPプロトコル47(GRE)やIPsecに必要なトラフィックが遮断されていないか。
MTUとフラグメンテーション: 大きなパケットが破棄されていないか、ICMPがブロックされていないか。
GRE設定の一致: 両端のトンネルのIPアドレス、キー(使用している場合)、ルーティングの設定が一致しているか。
ログとデバッグ: ルータのデバッグコマンドやパケットキャプチャで外側IP/ GREヘッダの確認。
実装上のベストプラクティス
導入・運用時に推奨されるベストプラクティスは次のとおりです。
セキュリティ要件がある場合は必ずIPsecや他の暗号化技術で保護する。
トンネルのMTUを事前に算出し、MSSクラッキングやPMTUDの設定を検討する。
監視とログを充実させ、トンネルのUp/Downや遅延、パケットロスを常時監視する。
運用ドキュメントにトンネル構成、IPアドレス、キー情報(可能なら非公開)、ACLやファイアウォールの例外を明記する。
可能であれば冗長化を検討し、ルーティングプロトコルやフェイルオーバー手順を整備する。
まとめ
GREはシンプルで柔軟なトンネリング技術として今でも幅広く利用されています。カプセル化によるオーバーヘッドやセキュリティの欠如といった課題はあるものの、IPsecとの併用や適切なMTU調整、監視によって実用上の問題は十分に対処可能です。用途に応じてVXLANやGENEVEなどのモダンなオーバーレイ技術と比較・選定し、要件(セキュリティ、スケール、L2/L3の要不要)に合った設計を行ってください。
参考文献
- RFC 2784 - Generic Routing Encapsulation (GRE)
- RFC 2890 - Key and Sequence Number Extensions to GRE
- Cisco - What is GRE?
- Wikipedia - Generic Routing Encapsulation


