多くの侵入は、通信路上に複数の中継点が存在するために発生します。しかし、これらを排除できたらどうでしょうか。データパケットを守るために直接接続点を作成したい場合は、GREを試してみてください。
このガイドで詳細を確認し、まずはGREの意味から学んでいきましょう。
GRE、またはGeneric Routing Encapsulationは、データを包み込み、他のプロトコルへ容易に送るための有名なプロトコルです。REC 2784で定義され、ルータを介さずに2つのネットワーク間でIPパケットを送信する場合に非常に有用です。
この通信プロトコルを使う長所は以下の通りです:
GREを深く理解しようとすると、トンネリングという概念が必ず登場します。最も簡単に言えば、パケットを包み込む工程です。
GREはGREトンネル機能を備えており、通常は2台のルータ間で設定され、双方がトンネルの両端として動作します。
これらのルータの主な役割は、介在者を入れずにGREパケットを転送することです。ルータは包まれたパケットに直接触れることはなく、パケットが正しい宛先に届くようヘッダのみを参照します。その他の情報にはアクセスできません。
では、なぜこの方法を「トンネリング」と呼ぶのでしょうか。1台のトラックがある地点から別の地点へ移動する例を考えてみます。両地点が山の両側にあり、唯一の通行可能な道が山を越えるルートだとします。
しかし、普通のトラックが岩だらけの山をそのまま通過するのは難しいため、運転手は別のルートを選ばなければなりません。もし、山にトンネルがあれば、トラックは容易に通過できるでしょう。
同じ状況をネットワークに当てはめると、2つの目的地はインターネットに接続されたデバイスとなり、山はネットワークを意味します。トラックは移動すべきデータに相当し、ネットワークやパケット形式に不整合がある場合、データは別ルートを通らなければなりません。
こうした場合、GREはトンネルを作るのに役立ちます。非対応のデータパケットも容易に通過させる仕組みが、トンネリングプロトコルと呼ばれる所以です。
このプロセスの仕組みを見ていきます。基本的に、安全なデータ移動を支える2つのネットワークが、GREの通路を介して仮想的に接続されます。トンネルには、移動するデータに対する制限や義務は課されません。
そのため、データは1台のデバイスから別のデバイスへ直接送信されます。ここでの仮想的な接続は、ペイロード同士が直接やり取りされないことを意味し、ルータを使って目的地まで押し出す形で伝送されます。
GREトンネルの設定はルータ単位で行われ、利用するサービスやハードウェアの種類により異なります。基本的には、IPのトンネリングインターフェイスを設定し、両端にパブリックIPアドレスを割り当てます。
GREを設定する際、ファイアウォールで送信元IPアドレスをホワイトリストに登録していることを確認することが重要です。これは両端で行う必要があります。
推奨される方法の一つは、ファイアウォール前でトンネルを解消し、内部パケットを検査できるようにすることです。
次に、MTUが許容範囲内であることを確認してください。MTUはあらかじめ定義され、一般的な上限は1,500バイトですが、GREを使用する場合、GREヘッダ分の24バイトの余裕が必要となります。
GREトンネル内の通信は対称であり、推奨のMTU設定は1,400バイトです。
GREの利用とその効果は、ネットワークのMSSとMTUに大きく左右されます。従って、このプロトコルを利用する前に、これらの要件を把握することを推奨します。初心者向けに言えば、MTUはパケット全体のサイズ、MSSはペイロードのサイズを示します。
データがMTUの上限を超える場合、自動的に小さな断片に分割され、処理が容易になります。
GREを利用する際、実際のデータパケットには数バイトが自動的に追加されます。MTUとMSSの設定でこの増加分を確認できます。GREヘッダの平均サイズは24バイトで、1,500バイトMTUと1,460 MSSのデータをGREで処理すると、MTUとMSSの上限が拡大されます。
その場合、データパケットは分割され、伝送速度が低下します。結果として、エンドユーザはより多くの計算資源を必要とすることになります。
この問題の対策として、GREヘッダ分を考慮してMSSサイズを小さくする方法がありますが、その欠点はペイロードが減少し、より多くのパケットでデータを送る必要が生じる点です。従って、データに応じたMTUとMSSの要件を戦略的に設定することが求められます。
GREトンネリングを十分に活用すれば、全体もしくは部分的なDDoS攻撃の計画に大いに役立ちます。ご存じの通り、DDoS攻撃はネットワークやウェブサイトのサーバに過大な負荷をかけ、正規ユーザがアクセスできなくなる現象です。
熟練のハッカーはボットネットを構築し、GREを用いてそれらを制御しながらDDoS攻撃を計画する可能性があります。
GREとIPSecはどちらもIPパケットの包み込みを行うため、比較されることがよくあります。
両者には共通点があるものの、同一のものではありません。その違いを見ていきます。
IPSecは、各種プロトコルを含むIPセキュリティの仕組みと定義できます。ESP (Encapsulating Security Payload) はGREに最も近い機能を持ち、RFC 2406とも呼ばれ、包まれたデータを暗号化して安全を確保します。2台のデバイス間でIPパケットを交換し、安全性も求められる場合、IPSecが好まれます。
IPSecはさらに1つのIPヘッダを追加してパケットの長さを増加させます。ヘッダの長さは利用するIPSecの設定で決まり、58バイト未満となります。
IPSecには2つのモードがあり、Tunnel(デフォルト)モードはIPSecのトレーラーとヘッダを追加してIPパケットを守り、Transportモードはペイロードを守ります。
下記の表で、IPSecがGREとどのように異なるかを確認してください。
GRE vs IPSec
比較項目 | GRE | IPSec |
---|---|---|
主な用途 | データパケットを他のIPネットワークへ送るために包み込む。 | 標準規格に基づくプロトコル。IPパケットに安全性と認証が求められる場合に使用される。 |
モデル | 1 | 2モード(TunnelとTransfer) |
データのプライバシーと完全性 | サポートされない。暗号化を行わない。 | プロセス全体でデータを暗号化し、プライバシーを守る。 |
カプセル化 | パケットのペイロードのみを対象とする。 | 各モードでパケットの異なる部分を包む。 |
IPヘッダサイズ | IPヘッダに4バイト追加される。 | サイズに影響しない。 |
使用プロトコルとポート | IPプロトコル番号47 | ESPとAHを使用。交渉にはUDPポート500を使用。 |
規格 | RFC 2784規格 | RFC 2406規格 |
使いやすさ | 非常に使いやすく、習得も容易である。 | 実装は複雑である。 |
GREでは、データを包み込むことで他のプロトコルへ容易に送信でき、ペイロードの処理も簡単ですが、暗号化機能はありません。データの安全性が求められる場合は、暗号化を提供するIPSecを選択してください。
RFC 2784: Generic Routing Encapsulation (GRE) - rfc-editor.org
RFC 2406: IP Encapsulating Security Payload (ESP) - rfc-editor.org
最新情報を購読