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

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

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

اگر به شکل زیر توجه کنید دو سایت با آدرس های 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 است، دریافت می شود، روی ترافیک دیگری با آدرس مبدا و مقصد IP1 و IP2 که آدرس ابتدا و انتهای tunnel هستند، سوار می شود.  ترافیک جدید روی اینترنت مسیریابی شده و در روتر مرزی سایت مقصد که همان انتهای Tunnel است، دریافت می شود. بسته اصلی از سربار ایجاد شده جدا می شود و تحویل سایت مقصد خواهد شد.

شکل1- مفهوم Tunneling

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

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

شکل ‏8 2 پیاده سازی تونل GRE

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

  • با دستور interface tunnel تونل جدیدی ایجاد نمایید.
  • با دستور tunnel mode در محیط اینترفیس تونل، مد تونل را به GRE تغییر دهید. از آنجایی که مد پیش فرض GRE است، لذا استفاده از این دستور ضرورتی ندارد و در خروجی پیکربندی نیز نمایش داده نمی شود.
  • مبدا و مقصد تونل را با دستورات tunnel source و tunnel destination تعیین نمایید.. مبدا و مقصد تونل، آدرس بیرونی روترهای مرزی دو سایت است.
  • با یکی از روش های مسیریابی Static و یا Dynamic ترافیک بین سایت ها را از طریق تونل ارسال می کنیم. در این سناریو از پروتکل EIGRP برای مسیریابی بین سایت ها روی تونل استفاده شده است. همانطور که قبلا گفته شد یکی از مزایای تونل GRE امکان ارسال ترافیک broadcast و multicast است که امکان اجرای هر یک از پروتکل های مسیریابی را روی تونل ممکن می سازد.

مراحل فوق برای پیاده سازی تونل GRE کافی است اما در صورت نیاز می توان از ویژگی های زیر نیز در ایجاد تونل GRE استفاده نمود.

  • با فعال کردن دستور اختیاری tunnel sequence-datagrams امکان مرتب سازی ترافیک های GRE در مقصد تونل امکان پذیر می شود. اینکار با اضافه شدن فیلد sequence number در هدر GRE صورت می پذیرد.
  • با فعال کردن دستور tunnel checksum فیلد اختیاری checksum به سربار GRE اضافه می شود که امکان تشخیص خطا در ترافیک های ارسالی GRE را فراهم می کند.
  • در صورتی که تمایل به احراز هویت طرفین ارتباط تونل GRE دارید، از دستور tunnel key استفاده کنید که با اضافه کردن فیلد اختیاری key در سربار GRE امکان احراز هویت طرفین را نسبت به یکدیگر فراهم می کند. کلید به صورت clear text منتقل می شود و از امنیت کافی برخوردار نیست.
  • با فعال کردن دستور keepalive در اینترفیس tunnel، طرفین ارتباط با ارسال بسته های کوچکی به نام keepalive به صورت دوره ای ارتباط را چک می کنند و در صورت عدم دریافت keepalive در چند بازه زمانی مشخص اینترفیس Tunnel قطع و یا down خواهد شد.
  • با دستور ip mtu 1464 مقدار MTU را در اینترفیس Tunnel به 1464 تغییر می دهیم. دقیق تر آن است که بگوییم مقداری که برای MTU در اینترفیس Tunnel در نظر می گیریم به سایز سربار اضافه شده ناشی از تونل GRE بستگی دارد و از عدد 1500 بایت، که مقدار پیش فرض MTU اکثر اینترفیس های فیزیکی است، کسر می شود. در این سناریو 20 بایت هدر IP و 16 بایت هدر GRE و در مجموع 36 بایت سربار تونل GRE به بسته اصلی اضافه شده است و بنابراین 36 بایت از 1500 بایت کسر شده و به عنوان MTU اینترفیس Tunnel تنظیم می گردد. دلیل این نوع پیکربندی را در ادامه مورد بررسی قرار می دهیم.

!!! Site1

interface Tunnel0

  ip address 172.16.1.1 255.255.255.0

 ip mtu 1464

 keepalive 10 3

 tunnel source 12.1.1.2

 tunnel destination 12.1.2.2

 tunnel key 123

 tunnel sequence-datagrams

 tunnel checksum

!

router eigrp 1

 network 172.16.0.0

 network 192.168.1.0

 no auto-summary

!

!!! Site2

interface Tunnel0

 ip address 172.16.1.2 255.255.255.0  

 ip mtu 1464  

 keepalive 10 3  

 tunnel source 12.1.2.2  

 tunnel destination 12.1.1.2  

 tunnel key 123  

 tunnel sequence-datagrams  

 tunnel checksum  

!

router eigrp 1

 network 172.16.0.0  

 network 192.168.2.0  

 no auto-summary  

!

!!! Site1

SITE1(config-router)#do sh ip route eigrp

!!! بخشی از خروجی حذف شده است

D   192.168.2.0/24 [90/26905600] via 172.16.1.2, 00:02:20, Tunnel0

!

CLIENT#ping 192.168.2.2

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.2.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 20/24/28 ms

 

بررسی هدر GRE

شکل زیر چگونگی بسته بندی ترافیک IP را با پروتکل GRE نشان می دهد. به صورت پیش فرض GRE ما بین بسته داخلی و بیرونی قرار می گیرد و دو فیلد اصلی و اجباری دارد که هر کدام 2 بایت و مجموعا 4 بایت دارند. فیلد Protocol Type نوع بسته داخلی را مشخص می کند و دقیقا به خاطر همین فیلد است که هر نوع ترافیکی را می توان روی GRE سوار کرد. فیلد Flags عدم و یا عدم وجود فیلدهای اختیاری در GRE را نشان می دهد. بدیهی است در صورت وجود فیلدهای اختیاری که در ذیل معرفی می گردند، سایز هدر GRE از 4 بایت بیشتر خواهد شد. حداکثر سایز سربار GRE 16 بایت است.

شکل ‏8 3 GRE Tunneling

در شکل زیر فبلدهای اختیاری پروتکل GRE در کنار فیلدهای اصلی نشان داده شده است. Sequence number، checksum و key فیلدهای اختیاری GRE هستند که به ترتیب وظیفه مرتب سازی ترافیک GRE، تشخیص خطا در ارسال ترافیک GRE و احراز هویت ابتدا و انتهای تونل نسبت به هم را به عهده دارند. کلید در GRE به صورت clear text و بدون رمزنگاری منتقل می شود.

GRE Tunneling به همراه فیلدهای اختیاری

شکل زیر ساختار سربار پروتکل GRE را به صورت دقیق تر نشان می دهد. فیلدهای C، K و S در GRE Flag نشان دهنده وجود یا عدم وجود قیلدهای اختیاری checksum، sequence number و key است.

ساختار دقیق پروتکل GRE

 

نوشتن دیدگاه


تصویر امنیتی
تصویر امنیتی جدید