GREトンネルとは ― VPNとの違い
GRE
GREトンネルとは、パケットを包んで運ぶカプセル化の規格
GRE(Generic Routing Encapsulation)は、元のパケットを新しいIPパケットで包んで送る、カプセル化の規格です。トンネルの両端の機器が、元のパケットを包んだり取り出したりします。
GREは、中身を暗号化しません。暗号化が要るときは、IPsecと組み合わせたGRE over IPsecという構成を使います。以下では、GREヘッダの中身、MTUへの影響、VPNとの違いを順に説明します。
GREヘッダの構造
GREは、元のパケットの前にGREヘッダを付けます。その前に、新しいIPヘッダをさらに付けます。GREヘッダの先頭4バイトは、どの構成でも必ず付きます。
先頭4バイトには、Checksumの欄が付くかどうかを示すCビットと、バージョンの欄があります。バージョンの欄は常に0です。続くProtocol Typeの欄には、元のパケットの種類が入ります。Checksumの欄とReserved1の欄は、Cビットが1のときだけ、この4バイトの後ろに続きます。
| フィールド | 大きさ | 必須/任意 | 内容 |
|---|---|---|---|
| フラグ・バージョン・Protocol Type | 4バイト | 必須 | Protocol Typeには元のパケットの種類が入る |
| Checksum・Reserved1 | 4バイト | 任意 | Cビットが1のときだけ付く |
| Key | 4バイト | 任意 | Kビットが1のときだけ付く。トンネル内の個々の通信を識別する(RFC 2890) |
| Sequence Number | 4バイト | 任意 | Sビットが1のときだけ付く。送った順番を示す(RFC 2890) |
Key欄とSequence Number欄は、RFC 2890で追加された欄です。付くかどうかは、先頭4バイトの中のKビットとSビットで示します。Key欄は、同じトンネルを流れる個々の通信を識別するために使います。Sequence Number欄は、送った順番を示します。並び順は、Checksum・Reserved1、Key、Sequence Numberです。
カプセル化の仕組み:IPsecとの比較で見る
GREでカプセル化したパケットは、元のIPヘッダとデータの前に、GREヘッダと新しい外側IPヘッダが付きます。新しいIPヘッダで元のパケットを丸ごと包む点は、IPsecの記事で説明したESPのトンネルモードと同じです。大きな違いは、暗号化するかどうかです。
例えば、拠点Aのゲートウェイ198.51.100.20と拠点Bのゲートウェイ192.0.2.10の間でGREトンネルを張るとします。外側IPヘッダの送信元と宛先は、この2つのアドレスになります。この外側ヘッダのプロトコル番号には47が入ります。IPsecのESPでは50です。
GREは暗号化しない
GREのRFC 2784には、暗号化についての記述がありません。GREヘッダにもデータの部分にも、暗号化の機能はありません。
GREだけでトンネルを作ると、経路の途中にいる第三者は、元のIPヘッダとデータをそのまま読めます。インターネットを経由する拠点間通信では、この点に注意が必要です。RFC 2784のセキュリティの章は、GREパケットの中身まで見るファイアウォールを使うか、トンネルの両端でパケットフィルタを行う必要があると述べています。
ヘッダのオーバーヘッドとMTUへの影響
GREは、新しいIPヘッダ20バイトと、GREヘッダの最小4バイトを足した、24バイトのオーバーヘッドを持ちます。オーバーヘッドとは、元のデータに上乗せされる分のことです。Checksum・Key・Sequence Numberの欄を付けると、その分さらに増えます。
任意の欄を付けないとき、GREトンネルのMTUは、物理インターフェースのMTUより24バイト小さくなります。イーサネットの標準的なMTUは1500バイトなので、GREトンネルのMTUは1476バイトになります。
元のパケットがトンネルのMTUを超え、分割を禁止するDFビットが立っているとします。このとき、ルータはパケットを分割できず、送信元にICMPで小さいパケットを送るよう伝えます。経路の途中でこのICMPが遮断されると、大きなパケットだけが届かなくなります。ルータがTCPのMSSを書き換えてこれを避ける方法は、MTUとMSSの記事で説明しています。
GRE over IPsecの組み合わせ
拠点間VPNで使う一般的なIPsecの構成では、マルチキャストやブロードキャストのパケットを暗号化できません。OSPFなど多くの動的ルーティングプロトコルは、マルチキャストで経路情報をやり取りします。GREは、マルチキャストやブロードキャストも運べます。GREでカプセル化すると、元がマルチキャストのパケットも、外側は1つの送信元と宛先を持つユニキャストのGREパケットになります。
このユニキャストのGREパケットを、IPsecで暗号化します。GREがカプセル化を受け持ち、IPsecが暗号化を受け持つ組み合わせを、GRE over IPsecと呼びます。
この構成では、GREのトンネルの上で動的ルーティングプロトコルを動かせます。
VPNとの違い
GREは、カプセル化だけを行う規格です。VPNの記事で説明したように、インターネット上のトンネリングは暗号化と組み合わせます。GREにはその暗号化がないので、暗号化と認証はIPsecが受け持ちます。
| GRE | IPsec | |
|---|---|---|
| 暗号化 | しない | ESPを使えばする |
| 運べるもの | マルチキャスト・ブロードキャストを含む多くのプロトコル | 一般的な拠点間の構成では、ユニキャストのIPパケット |
| IPヘッダのプロトコル番号 | 47 | ESP 50・AH 51 |
| 単体でのVPN利用 | 経路上から中身を読めるので、インターネット経由では暗号化を別に足す | 暗号化と認証を備え、IPsec-VPNとして単体で使える |
拠点間をインターネットでつなぐときは、GRE単体ではなく、GRE over IPsecか、IPsecの記事で説明したIPsec単体のトンネルモードを使います。
練習問題(全6問)
正解:GREは、
GREは、
正解:Checksumが
GREヘッダの
正解:RFC 2890で
Key欄と
正解:47
GREパケットを
正解:IPsecだけでは
多くの
正解:任意の
GREは、
選んでから「採点する」を押すと、解説つきで答え合わせができます。
関連記事
おすすめの本 PR
ネットワークを初めて学ぶ人向けの入門書です。
![『[改訂新版]3分間ネットワーク基礎講座』の表紙](https://m.media-amazon.com/images/P/4774143731.09.MZZZZZZZ.jpg)
