GRE Tunnel
GRE
GRE(Generic Routing Encapsulation)はL3で動作するトンネルプロトコル。
IPヘッダの外側にGREオーバーロード(GREヘッダとIPヘッダ)を付ける。
ユニキャストのみでなくマルチキャスト通信も可能
データ自体に暗号化は行われないため、暗号化したい場合はIPsecを併用する。
今回の構成
NAPTを併用する。
R2とR4の間でGREトンネルを実装し、A-net,B-netそれぞれから、PC-CにアクセスできればOK
当然、R2,R4は共にR3をデフォルトルートとするが、R3にはデフォルトルートを設定せず、
192.168.10.0のネットワークを認知していないため、通常は通信できない。
構築
まずはIPアドレスを正しく設定する。
各ルータの基本設定は省略
NAPT, StaticNAT
R1
(config)#int g0/0
(config-if)#ip add 192.168.3.1 255.255.255.252
(config-if)#no shut
(config-if)#int g0/3
(config-if)#ip add 192.168.2.254 255.255.255.0
(config-if)#no shut
(config-if)#exit
(config)#ip route 0.0.0.0 0.0.0.0 192.168.3.2
R2
(config)#int g0/0
(config-if)#ip add 192.168.3.2 255.255.255.252
(config-if)#ip nat inside
(config-if)#no shut
(config-if)#int g0/1
(config-if)#ip add 10.1.1.1 255.255.255.248
(config-if)#ip nat outside
(config-if)#no shut
(config-if)#int g0/3
(config-if)#ip add 192.168.1.254 255.255.255.0
(config-if)#ip nat inside
(config-if)#no shut
(config-if)#exit
(config-if)#ip route 0.0.0.0 0.0.0.0 10.1.1.6 //デフォルトルートはR3
(config-if)#ip route 192.168.2.0 255.255.255.0 192.168.3.1 //B-netの経路を登録
(config-if)#exit
(config)#access-list 1 permit 192.168.1.0 0.0.0.255 //A-net用のACL
(config)#access-list 2 permit 192.168.2.0 0.0.0.255 //B-net用のACL
(config)#ip nat pool A-net 10.1.1.3 10.1.1.3 netmask 255.255.255.248
(config)#ip nat pool B-net 10.1.1.4 10.1.1.4 netmask 255.255.255.248
(config)#ip nat inside source list 1 pool A-net overload
(config)#ip nat inside source list 2 pool B-net overload
(config)#ip nat inside source static 192.168.1.1 10.1.1.2
R3
IPアドレス設定のみなので省略
R4
(config)#int g0/0
(config-if)#ip add 10.1.2.2 255.255.255.252
(config-if)#no shut
(config-if)#int g0/3
(config-if)#ip add 192.168.10.254 255.255.255.0
(config-if)#exit
(config)#ip route 0.0.0.0 0.0.0.0 10.1.2.1 //R3
これでR4とA-net,B-netは疏通ができるようになる。
次にGREトンネルを設定する。
GRE
R2
まずはトンネルインターフェースを作成
(config)#int tunnel 0
(config-if)#ip add 10.1.3.1 255.255.255.252
(config-if)#tunnel source g0/1 //送信元IPもしくは送信元IF
(config-if)#tunnel destination 10.1.2.2 //ピアを張る相手ルータ
R4も同様
(config)#int tunnel 0
(config-if)#ip add 10.1.3.2 255.255.255.252
(config-if)#tunnel source g0/0 //送信元IPもしくは送信元IF
(config-if)#tunnel destination 10.1.1.1 //ピアを張る相手ルータ
トンネルインターフェースがUPされる。
トンネルインターフェースが動作している。
次に、ルーティング設定。
GREが張られてもルーティングは別。
動的ルーティングでもいいが、今回はスタティック
R2
(config)#ip route 192.168.10.0 255.255.255.0 10.1.3.2
R4
(config)#ip route 192.168.1.0 255.255.255.0 10.1.3.1
(config)#ip route 192.168.2.0 255.255.255.0 10.1.3.1
これらの設定を入れることでPC-AからPC-Cにpingができることが確認できる。
キャプチャ内容を見てみる。
192.168.1.1から192.168.10.1にpingを行っている通信のキャプチャ。
IPv4の外側にGRE,IPv4とカプセル化されている。
このカプセル化によりR3でも問題なく転送される。
シンプル。
次はNetflowを試す予定。Elastic Stackで可視化までやりたい。