ネットワークエンジニアの備忘録

トラブルや気になった点をメモしておきます。

GRE ( Generic Routing Encapsulation )

IPSecに引き続き、GREについても環境を作成する機会があったので整理します。GREはトンネリングプロトコルの一つです。トンネリングと言っていますが、実態はGRE機能を有効化した機器の両端でGREヘッダを付与および剥奪しています。

GREの良いところはGREを有効化した機器の経路上に存在する機器がGREヘッダに付与されたIPアドレス以外解決しなくて良いところです。下記の例だとGREヘッダの送信元 IP、宛先IPはLoopback0のIPアドレス(1.1.1.1および2.2.2.2)に設定しているため、RelayRT00はPC00/01のセグメント(192.168.0.0/24および192.168.10.0/24)のルート情報が不要になります。また、トンネリングによりマルチキャストアドレスも伝送できるため、直接接続していない場合もネイバー関係を形成することが出来ます。ただし、Loopback0のIPアドレスは解決できる必要があります。

GRERT00#show run interface tunnel 0
interface Tunnel0
ip address 10.0.0.1 255.255.255.0
tunnel source 1.1.1.1
tunnel destination 2.2.2.2
GRERT01#show run interface tunnel 0
interface Tunnel0
ip address 10.0.0.2 255.255.255.0
tunnel source 2.2.2.2
tunnel destination 1.1.1.1

f:id:hy0:20171106222859p:plain

実際にパケットキャプチャをしてみると送信元IPと宛先IPはTunnel Interfaceに割り当てたIPになりますが、GREは暗号化機能を保有していないため、実際のIPも確認できます。暗号化まで期待する場合はIPSecを組み合わせる必要があります。

f:id:hy0:20171106223820p:plain

Wiresharkは優秀なため、画面上部は実IPアドレスが表示されていますが、下部を見るとSrc:1.1.1.1 Dst:2.2.2.2とGREヘッダのIPアドレスが表示されます。中継機器はこの箇所を見てルーティングを行うため、内部のアドレス情報を理解する必要がありません。Arubaをはじめとした無線LANコントローラもAPとGREを形成するため、複数のSSIDとVLANを設定してもAPのアップリンクをTrunkにしなくて良いのは同じ理屈でGREヘッダだけ見て転送するからです。当然コントローラ障害時にAPが自立する場合は、APが各Vlan Tagを付与する必要があるのでアップリンクはTrunkにする必要があります。

GREの注意点として暗号化が実施されないこと、MTUが1476になるため、MTUサイズの設計を適切にする必要があります。

実際はIPSecもトンネリング技術なのですが、Ciscoの仕様でユニキャストしか伝送できないため、マルチキャストを伝送する場合はGREを使用するか、組み合わせる必要があります。個人的に拠点間でダイナミックルーティングを実現するためにIPSec+GREを使うパターンはあまり無い気がします。。設計をシンプル化したいのもありますが、大規模な環境を作る場合も一度に拠点展開することはあまりないので、拠点展開手順にStatic Routeを追加するところまで盛り込んでしまうことが多いので、、、

最終設定時の各コンフィグは以下となります。

GRERT00#
interface Tunnel0
ip address 10.0.0.1 255.255.255.0
ip ospf network point-to-point
tunnel source 1.1.1.1
tunnel destination 2.2.2.2
!
interface Loopback0
ip address 1.1.1.1 255.255.255.255
!
interface FastEthernet0/0
ip address 172.16.0.1 255.255.255.0
!
interface FastEthernet0/1
ip address 192.168.0.254 255.255.255.0
!
router ospf 1
router-id 1.1.1.1
log-adjacency-changes
network 10.0.0.0 0.0.0.255 area 0
network 192.168.0.0 0.0.0.255 area 0
!
ip route 2.2.2.2 255.255.255.255 172.16.0.254
GRERT01#
interface Tunnel0
 ip address 10.0.0.2 255.255.255.0
ip ospf network point-to-point
tunnel source 2.2.2.2
tunnel destination 1.1.1.1
!
interface Loopback0
ip address 2.2.2.2 255.255.255.255
!
interface FastEthernet0/0
ip address 192.168.10.254 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 172.16.10.1 255.255.255.0
duplex auto
speed auto
!
router ospf 1
router-id 2.2.2.2
log-adjacency-changes
network 10.0.0.0 0.0.0.255 area 0
network 192.168.10.0 0.0.0.255 area 0
!
ip classless
ip route 1.1.1.1 255.255.255.255 172.16.10.254
no ip http server
no ip http secure-server
RelayRT00#
interface FastEthernet0/0
ip address 172.16.0.254 255.255.255.0
!
interface FastEthernet0/1
ip address 172.16.10.254 255.255.255.0
!
ip route 1.1.1.1 255.255.255.255 172.16.0.1
ip route 2.2.2.2 255.255.255.255 172.16.10.1