はじめに
こんにちは。ネットワークエンジニアの「だいまる」です。
今回は、GRE(Generic Routing Encapsulation)について復習かつ実機確認してみたのでまとめていきたいと思います。
GREとは
GRE(Generic Routing Encapsulation)とはトンネルプロトコルの1つとなります。
トンネルプロトコルには、L2のL2FやPPTP、L2TPなどがあり、L3ではGRE、IPsec等あります。
GREは、暗号化機能を備えていないため、データそのものの安全性は担保されていません。
しかし、その性質を使ったルーティングが必要な場合や様々なルーティングプロトコルやマルチキャストを利用したルーティングプロトコルが利用可能なため、使われているプロトコルとなります。
GREのヘッダは、基本的なIPヘッダに対してGREに関するヘッダを追加しているものになります。
GREの設定方法
IOSのGRE設定方法の一般的な流れは、主に4ステップあります。(オプションを含めると7ステップ)
(config)# interface tunnel <トンネル番号>
(config-if)# tunnel source <IPアドレス|IF名>
この設定はGREでEncapsulationやDecapsulationを実施したいIF(物理IFやLoopback)のIPアドレスやIFを直接指定します。
(config-if)# tunnel destination <IPアドレス>
ここではSourceの指定同様にEncap/DecapしたいIFに関して設定するのですが、IPアドレスの設定のみ可能となります。
(config-if)# ip address <アドレス> <サブネットマスク>
この設定は、トンネルIFで実際に利用するアドレスをアサインします。
通常のIFにアドレスをアサインするのと同じです。
(config-if)# bandwidth <通信帯域>
(config-if)# keepalive <時間(sec)>
(config-if) ip mtu <mtu値>
上記の設定を各エンドポイントとなるルータで実施することでGREトンネルを張ることができます。
個人的にMTUを除いてオプションの設定をしているルータをあまりみたことがないので、設定しているルータやその経緯を知ってみたいなと思いますね。
では、実際に実機で確認していきましょう。
CMLによる実機確認
今回、GREを構築した構成は、以下の通りとなります。
今回はRouter1とRouter2の間にトンネルIF 100を作成し、GREトンネルを構築する形で確認を行いました。
事前確認は特に設定が入ってないことを確認するのみなので割愛とします。
Router1に設定を入れた際のログは以下の通りとなります。
Router1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#ip route 0.0.0.0 0.0.0.0 100.64.1.2
Router1(config)#interface tunnel 100
Router1(config-if)#ip address 192.168.100.1 255.255.255.0
Router1(config-if)#tunnel source 100.64.1.1
Router1(config-if)#tunnel destination 100.64.2.2
Router1(config-if)#exit
Router1(config)#router ospf 100
Router1(config-router)#network
Router1(config-router)#network 192.168.100.0 0.0.0.255 area 0
Router1(config-router)#network 10.1.1.0 0.0.0.255 area 0
Router1(config-router)#end
Router1#wr
Building configuration...
[OK]
*Nov 16 00:06:21.689: %SYS-5-CONFIG_I: Configured from console by cisco on vty0 (192.168.11.19)
*Nov 16 00:06:41.178: %SYS-5-CONFIG_I: Configured from console by cisco on vty0 (192.168.11.19)
*Nov 16 00:06:42.474: %GRUB-5-CONFIG_WRITING: GRUB configuration is being updated on disk. Please wait...
*Nov 16 00:06:43.137: %GRUB-5-CONFIG_WRITTEN: GRUB configuration was written to disk successfully.
*Nov 16 00:09:05.166: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel100, changed state to down
*Nov 16 00:09:58.733: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel100, changed state to up
*Nov 16 00:10:28.357: %SYS-5-CONFIG_I: Configured from console by cisco on vty0 (192.168.11.19)
*Nov 16 00:10:30.185: %GRUB-5-CONFIG_WRITING: GRUB configuration is being updated on disk. Please wait...
*Nov 16 00:10:30.850: %GRUB-5-CONFIG_WRITTEN: GRUB configuration was written to disk successfully.
上記の設定を入れることでTunnel 100はUPしました。
ただ、Router2側で設定をまだ入れていないのでOSPFネイバーはあがりません。
では、Router2に設定を追加していきましょう。
Router2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router2(config)#ip route 0.0.0.0 0.0.0.0 100.64.2.1
Router2(config)#interface tunnel 100
Router2(config-if)#ip address 192.168.100.2 255.255.255.0
Router2(config-if)#tunnel source 100.64.2.2
Router2(config-if)#tunnel destination 100.64.1.1
Router2(config-if)#exit
Router2(config)#router ospf 100
Router2(config-router)#network 192.168.100.0 0.0.0.255 area 0
Router2(config-router)#network 10.2.2.0 0.0.0.255 area 0
Router2(config-router)#end
*Nov 16 00:06:54.620: %SYS-5-CONFIG_I: Configured from console by cisco on vty0 (192.168.11.19)
*Nov 16 00:07:02.649: %SYS-5-CONFIG_I: Configured from console by cisco on vty0 (192.168.11.19)
*Nov 16 00:07:03.916: %GRUB-5-CONFIG_WRITING: GRUB configuration is being updated on disk. Please wait...
*Nov 16 00:07:04.583: %GRUB-5-CONFIG_WRITTEN: GRUB configuration was written to disk successfully.
*Nov 16 00:11:17.300: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel100, changed state to down
*Nov 16 00:11:35.879: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel100, changed state to up
*Nov 16 00:11:53.820: %OSPF-5-ADJCHG: Process 100, Nbr 10.1.1.1 on Tunnel100 from LOADING to FULL, Loading Done
*Nov 16 00:12:05.879: %SYS-5-CONFIG_I: Configured from console by cisco on vty0 (192.168.11.19)
*Nov 16 00:12:07.035: %GRUB-5-CONFIG_WRITING: GRUB configuration is being updated on disk. Please wait...
*Nov 16 00:12:07.697: %GRUB-5-CONFIG_WRITTEN: GRUB configuration was written to disk successfully.
設定投入後、SyslogからもOSPFネイバーが確立されました。
事後確認としていくつかログを見ていきましょう。
Router1#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
10.2.2.1 0 FULL/ - 00:00:37 192.168.100.2 Tunnel100
Router1#show interfaces tunnel 100
Tunnel100 is up, line protocol is up
Hardware is Tunnel
Internet address is 192.168.100.1/24
MTU 17916 bytes, BW 100 Kbit/sec, DLY 50000 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation TUNNEL, loopback not set
Keepalive not set
Tunnel linestate evaluation up
Tunnel source 100.64.1.1, destination 100.64.2.2
Tunnel protocol/transport GRE/IP
Key disabled, sequencing disabled
Checksumming of packets disabled
Tunnel TTL 255, Fast tunneling enabled
Tunnel transport MTU 1476 bytes
Tunnel transmit bandwidth 8000 (kbps)
Tunnel receive bandwidth 8000 (kbps)
Last input 00:00:06, output 00:00:03, output hang never
Last clearing of "show interface" counters 00:04:15
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
Queueing strategy: fifo
Output queue: 0/0 (size/max)
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
17 packets input, 1756 bytes, 0 no buffer
Received 0 broadcasts (0 IP multicasts)
0 runts, 0 giants, 0 throttles
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
28 packets output, 2856 bytes, 0 underruns
0 output errors, 0 collisions, 0 interface resets
0 unknown protocol drops
0 output buffer failures, 0 output buffers swapped out
Router1#
このログからもわかるようにGREでトンネリングされていることがわかります。
では、GREのパケットを見ていきましょう。
以下画像ではGREのIPヘッダ(宛先が100.64.1.1・送信元が100.64.2.2)とGRE Flagが追加されていることがわかる。
これでGREの動作や設定方法を確認することができたと思います。
最後に
ここ最近はCCNPの勉強をしている関係もあり、基本的なネットワークプロトコルを攻めている状況となります。
CCNP合格後、SR関連に手を出したいと思います。