GRE over IPSEC

Merhaba

Daha önce site-to-site VPN yapılandırmasıyla ilgili bir yazı yazmıştım. Bu yazıda da IPSEC’te kullanılan tünel ve transport modlarından ve de GRE over IPSEC’ten bahsedeceğim.

IPSEC’i iki farklı modda çalıştırabiliriz. Tünel modda tüm IP paketi şifrelenir ve başına yeni bir IP başlığı eklenir. Bu IP başlığında kaynak ve hedef IP’ler router’larda peer address olarak tanımladığımız tünelin sonlandığı IP’lerdir. Transport modda ise paketin sadece payload’u şifrelenir. IP başlığı ise aynen kalır.

Tanım olarak tünel ve transport modları böyle açıklanıyor. Ancak biraz daha araştırırsak karşımıza şöyle bir kısıtlama çıkıyor: Transport mode sadece local peer address’ten remote peer address’e giden trafik için geçerlidir. Yani VPN kurduğumuz iki sitedeki kullanıcılar arasında geçen ve şifrelenmesini istediğimiz (crypto ACL’de belirttiğimiz) trafik yine de tünel modda gerçekleşiyor. Eğer router’ların peer address’leri arasındaki trafiği de crypto ACL’e dahil ederseniz işte ozaman bu trafik transport modda gerçekleşiyor. Zaten bu halde orjinal trafiğin de kaynak ve hedef IP’leri router’ların peer address’leri oluyor.

Aşağıdaki örnek topolojiye bakalım

R1 için crypto ACL de aşağıdaki gibi olsun. R2 için de bunun simetriğinin yazıldığını düşüneceğiz:

access-list 102 permit ip 21.0.0.0 0.255.255.255 22.0.0.0 0.255.255.255
access-list 102 permit ip host 10.0.0.1 host 10.0.0.2

Transport modu için iki tarafta da transform-set’in altında şu komutu yazıyoruz:

Router(cfg-crypto-trans)#mode transport

IPSEC’in oluşması için trafik yarattıktan sonra (örneğin ping atarak) R1’de “show crypto ipsec sa” komutunu girdiğimizde uzun bir çıktı geliyor karşımıza. Dikkat etmemiz gereken satırlar ise şöyle:

local  ident (addr/mask/prot/port): (10.0.0.1/255.255.255.255/0/0)
remote ident (addr/mask/prot/port): (10.0.0.2/255.255.255.255/0/0)


in use settings ={Transport, }

local  ident (addr/mask/prot/port): (21.0.0.0/255.0.0.0/0/0)
remote ident (addr/mask/prot/port): (22.0.0.0/255.0.0.0/0/0)


in use settings ={Tunnel, }

Görüldüğü gibi “mode transport” komutuna rağmen 21.0.0.0/8 ve 22.0.0.0/8 network’leri arasındaki trafik için hala tünel modu geçerli. 10.0.0.1/32 ve 10.0.0.2/32 olarak gözüken iki peer arasındaki trafik ise transport modda gerçekleşiyor. GNS3’te yaptığım bu topolojide Wireshark ile aradaki linki dinlediğimde 21.0.0.1’den 22.0.0.2’ye giden ping’in 166 byte, 10.0.0.1’den 10.0.0.2’ye giden ping’in ise 150 byte olduğunu gördüm.

Gelelim GRE over IPSEC’e. IPSEC tünellerinin şöyle bir eksisi var: Multicast ve broadcast paketleri geçirmiyor. Bunun en önemli kısıtlamalarından birisi de IPSEC tünelleri üzerinden interior routing protokollerini çalıştıramıyor oluşumuz. Çünkü bu protokoller multicast ve (RIPv1 için) broadcast adresleri kullanıyor. GRE ise tüm üçüncü katman protokollerini tünelleyebiliyor ama sağladığı bir güvenlik yok. GRE over IPSEC yaptığımızda önce GRE daha sonra IPSEC encapsulation gerçekleşiyor. GRE IPSEC için interesting traffic oluyor. GRE paketleri de her zaman unicast olduğu için tüm trafiği güvenli bir şekilde tünelleyebiliyoruz.

IPSEC’ten GRE over IPSEC’e geçerken yaptığımız değişiklikler şöyle:

Crypto ACL’i interesting traffic’i yani sadece iki peer arasındaki GRE trafiğini tarif edecek şekilde düzenliyoruz:

no access-list 102
access-list 102 permit gre host 10.0.0.1 host 10.0.0.2

GRE tünel interface’lerimizi oluşturuyoruz:

interface tunnel 0
ip address 192.168.1.1 255.255.255.0
tunnel source 10.0.0.1
tunnel destination 10.0.0.2

R1 için yazdığım bu yapılandırmanın simetriğini de R2’de yapıyoruz.

Unutmamamız gereken önemli bir nokta da şu: Artık routing’de fiziksel interface’lerimizi değil tünel interface’lerimizi kullanmamız gerekiyor. Yani statik routing’de exit interface olarak Tunnel interface’ini belirtmeliyiz, dinamik routing’de de Tunnel interface’leri üzerinden anons yapmalıyız. Aksi takdirde GRE encapsulation tetiklenmeyecek, interesting traffic oluşmayınca IPSEC encapsulation da tetiklenmeyecektir.

IPSEC’te transport mod kullanmak çok önemli değil. Fakat GRE over IPSEC’e geçtiğimizde artık bütün trafiğimiz peer’lar arasında gidip geliyor. Tünel modda GRE de IPSEC de aynı IP başlığını ekliyor yani bu IP başlıklarından biri gereksiz. Dolayısıyla transport mod mantıklı bir seçim oluyor. GRE over IPSEC’te tünel mod ve transport modda attığım ping’lerin ise sırasıyla 190 byte ve 174 byte olduğunu gördüm.

Tabi bu noktada şunu bilmemiz gerekiyor: GRE over IPSEC’te Transport mod kullanılabilmesi için tünellerin aynı noktada sonlanması gerekiyor. Çünkü IPSEC peer adresleri ve GRE tünellerinin kaynak ve hedef adresleri aynı olmalı.

Bu örnek için şekillerle gösterecek olursak (Mavi kısımlar şifrelenmiş):

IPSEC Tünel modu:

IPSEC Transport modu (sadece peer ‘lar arasındaki trafikte geçerli):

GRE over IPSEC Tünel modu:

GRE over IPSEC Transport modu:

“GRE over IPSEC” için 2 cevap

  1. Geri bildirim: 1

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir