gre

معرفی GRE

GRE پروتکلی برای تونل زدن انواع پروتکل ها روی بستر IP است. بدین معنی که با GRE Tunnel قادر خواهید بود تا دو سایت را که ممکن است از نوع IPV4، IPV6، IPX و یا هر پروتکل دیگری باشند را روی بستر IPV4 و به صورت Point-to-Point به یکدیگر متصل کنید.

ما در این بخش ترافیک IP را روی بستر اشتراکی IP با روش GRE تونل می زنیم تا بتوانیم ارتباط سایت ها را روی بسترهای عمومی و اشتراکی مانند اینترنت به یکدیگر متصل کنیم.

دقیق تر اینکه اگر دو سایت داریم که محدوده آدرس آنها اختصاصی است و روی بستر اینترنت به یکدیگر متصل هستند، ارتباط کاربران این دو سایت به صورت کاملا Transparent بدون GRE Tunnel دشوار است. به این دلیل که آدرس های محدوده اختصاصی روی اینترنت مسیریابی نمی شوند و برای ارتباط هر دو کاربری که قصد ارتباط روی اینترنت را دارند باید از روش هایی مانند NAT استفاده شود که Transparent نیست. GRE Tunnel ترافیک بین دو سایت را (که آدرس مبدا و مقصد آن اختصاصی است) مجددا روی ترافیک جدیدی از نوع IP بسته بندی می کند که آدرس مبدا و مقصد آن آدرس بیرونی و اینترنتی روترهای مرزی دو سایت است و بدین ترتیب ارتباط بین دو سایت امکان پذیر می شود.

آموزش راه اندازی GRE در روتر سودار

اگر به شکل زیر توجه کنید دو سایت با آدرس های 192.168.1.0/24 و 192.168.2.0/24 از طریق اینترنت به یکدیگر متصل هستند. کاربران این دو سایت نمی توانند به صورت transparent و همانند LAN با یکدیگر ارتباط برقرار کنند زیرا آدرس های محدوده private در اینترنت مسیریابی نمی شوند. اینترفیس بیرونی روترهای مرزی این دو سایت آدرس اینترنتی IP1 و IP2 دارند که از طریق اینترنت قابل دیدن هستند و بنابراین روترهای مرزی این دو سایت می توانند کاملا به صورت transparent با هم در ارتباط باشند.
در چنین سناریویی با ایجاد Tunnel می توان ارتباط بین کاربران دو سایت را نیز به صورت کاملا transparent برقرار نمود. بدین صورت که ترافیک بین دو سایت که آدرس مبدا و مقصد آن 192.168.1.x و 192.168.2.x است، وقتی در روتر مرزی سایت مبدا ،که همان ابتدای Tunnel است، دریافت می شود، روی ترافیک دیگری با آدرس مبدا و مقصد 200.1.2.1/24 و 200.2.3.3/24 که آدرس ابتدا و انتهای tunnel هستند، سوار می شود. ترافیک جدید روی اینترنت مسیریابی شده و در روتر مرزی سایت مقصد که همان انتهای Tunnel است، دریافت می شود. بسته اصلی از سربار ایجاد شده جدا می شود و تحویل سایت مقصد خواهد شد.

GRE Tunnel روشی از tunneling است که قادر است هر نوع ترافیکی را روی IP سوار و منتقل کند. ضمنا قابلیت انتقال ترافیک های multicast و broadcast را نیز دارد. این بدان معنی است که اگر از سایت مبدا ترافیک multicast و یا broadcast به سایت مقصد ارسال شود، قابل انتقال توسط GRE خواهد بود. این ویژگی اجرای پروتکل های مسیریابی را روی GRE امکان پذیر می کند و یکی از مزایای مهم GRE محسوب می شود

در ذیل شیوه پیاده سازی تونل GRE بین دو سایت روی بستر اینترنت نشان داده شده است :

Gre3

برای پیاده سازی تونل GRE مراحل زیر انجام می پذیرد:

برای تنظیم تونل gre باید ابتدا یک اینترفیس tunnel ایجاد کنید :

Site-1(config)# interface tunnel 10

سپس مبدا و مقصد تونل را مشخص می کنیم و به اینترفیس تونل ip می دهیم :

Site-1(config-if)# tunnel source 200.1.2.1
Site-1(config-if)# tunnel destination 200.2.3.3
Site-1(config-if)# ip address 172.17.1.10/32

در Site-2 هم به همین ترتیب عمل می کنیم :

Site-2(config)# interface tunnel 10
Site-2(config-if)# tunnel source 200.1.2.3
Site-2(config-if)# tunnel destination 200.1.2.1
Site-2(config-if)# ip address 172.17.1.20/32

اضافه کردن Route از طریق تونل

اکنون می توانیم با استفاده از static route ارتباط بین این دو شبکه را از طریق تونل برقرار کنیم :

Site-1(config)# ip route 192.168.2.0/24 tunnel10
Site-2(config)# ip route 192.168.1.0/24 tunnel10

تنظیم mtu در اینترفیس تونل

با دستور ip mtu 1464 مقدار MTU را در اینترفیس Tunnel به 1464 تغییر می دهیم. دقیق تر آن است که بگوییم مقداری که برای MTU در اینترفیس Tunnel در نظر می گیریم به سایز سربار اضافه شده ناشی از تونل GRE بستگی دارد و از عدد 1500 بایت، که مقدار پیش فرض MTU اکثر اینترفیس های فیزیکی است، کسر می شود. در این سناریو 20 بایت هدر IP و 16 بایت هدر GRE و در مجموع 36 بایت سربار تونل GRE به بسته اصلی اضافه شده است و بنابراین 36 بایت از 1500 بایت کسر شده و به عنوان MTU اینترفیس Tunnel تنظیم می گردد.

Site-1(config)# interface tunnel10
Site-1(config-if)# ip mtu 1464
Site-2(config)# interface tunnel10
Site-2(config-if)# ip mtu 1464

بررسی ارتباط تونل gre

پس از تنظیم تونل gre باید ارتباط کلاینت با سرور از طریق تونل gre برقرار باشد .

تنظیم vrf در تونل

به شکل زیر می توان جدول vrf که باید برای تونل gre استفاده شود را مشخص کرد :

soodar(config-if)# tunnel vrf green

با تنظیم فوق مشخص می شود که برای برقراری تونل gre و اصطلاحا lookup کردن ip مقصد از vrf green باید استفاده شود .

فعال کردن log های GRE

با دستور زیر می توانید Log های مربوط به gre را فعال کنید:

soodar1# debug gre event

mgre

در حال حاضر فقط نگاشت استاتیک NHRP در تونل mgre پشتیبانی می شود . سناریوی زیر را در نظر بگیرید . در این سناریو روتر n1 به روتر های n3 , n4 تونل gre از نوع gre-mp دارد ارتباط این سه روتر از طریق اینترنت (نود n2) برقرار می شود .

mGre نحوه تنظیم تونل mgre به شکل زیر است :

n1(config)# interface tunnel100
n1(config-if)# tunnel source 200.1.2.1
n1(config-if)# tunnel mode gre multipoint
n1(config-if)# ip address 192.168.1.1/32
n1(config-if)# ip nhrp map 192.168.1.3 200.2.3.3
n1(config-if)# ip nhrp map 192.168.1.4 200.2.4.4

آدرس های 192.168.1.3 و 192.168.1.4 به ترتیب مربوط به ip اینترفیس تونل در روترهای n3 و n4 می باشد .

حال staticRoute را برای برقراری ارتباط شبکه های 1.1.1.0 , 3.1.1.0 , 4.1.1.0 بدین شکل در n1 اضافه می کنیم

n1(config)# ip route 3.1.1.0/24 192.168.1.3
n1(config)# ip route 4.1.1.0/24 192.168.1.4

تنظیمات تونل در n3 :

n3(config)# interface tunnel30
n3(config-if)# tunnel source 200.2.3.3
n3(config-if)# tunnel destination 200.1.2.1
n3(config-if)# ip address 192.168.1.3/32
n3(config)# ip route 1.1.1.0/24 192.168.1.3
n3(config)# ip route 4.1.1.0/24 192.168.1.3

تنظیمات تونل در n4 :

n4(config)# interface tunnel40
n4(config-if)# tunnel source 200.2.4.4
n4(config-if)# tunnel destination 200.1.2.1
n4(config-if)# ip address 192.168.1.4/32
n4(config)# ip route 1.1.1.0/24 192.168.1.4
n4(config)# ip route 3.1.1.0/24 192.168.1.4

بدین ترتیب یک تونل multi-point در روتر n1 ایجاد شده و ارتباط شبکه های 1.1.1.0/24 , 3.1.1.0/24 , 4.1.1.0/24 از طریق تونل gre برقرار می گردد .