تا حالا اتفاق افتاده با خودرو شخصی مشغول مسافرت باشید و قسمتی از مسیرتون، هوایی یا دریایی باشد؟ آیا می توانید با همان خودرو مسیر دریایی را طی کنید؟ این کار غیرممکن است. پس چارهی کار چیست؟ شاید یک روش ساده این باشد که برای طی مسیر دریایی، خودرو را داخل کشتی قرار بدهید و پس از رسیدن به آن طرف ساحل، مجدد از طریق مسیر جاده ای ادامه بدهید. این همان کاری است که GRE انجام میدهد. در این مقاله، با GRE و نحوه عملکرد آن آشنا خواهیم شد؛ با داریا همراه باشید.
GRE Tunnel چیست؟
Generic Routing Encapsulation یا به اختصار GRE پروتکلی است که پکِتها را به منظور مسیریابی پروتکل های مختلف روی شبکههای آی پی کپسوله میکند. (encapsulate)/ Encapsulating به معنای قرار دادن یک پکِت داده در یک پکِت داده دیگر است، مانند قرار دادن یک جعبه در داخل جعبهی دیگر. GRE توسط اینترنت RFC 2784 تعریف شده است و به عنوان یک ابزار تانلینگ (tunneling) برای حمل پروتکلهای شبکه ای لایه 3 OSI بر روی یک شبکه آی پی توسعه یافته است. در اصل، GRE یک ارتباط نقطه به نقطه خصوصی، دقیقا مانند یک شبکه خصوصی مجازی (VPN) ایجاد می کند.
اجازه دهید جهت سهولت درک موضوع، مثالی از دنیای واقعی را بررسی کنیم. GRE استفاده از پروتکلهایی که معمولاً توسط شبکه پشتیبانی نمیشوند را امکانپذیر میکند؛ چرا که پکِتها در پکِتهای دیگری که از پروتکلهای پشتیبانی شده استفاده میکنند، قرار میگیرند.
برای درک مکانیزم کاری GRE، تفاوت بین خودرو و کشتی را در نظر بگیرید. یک ماشین در خشکی حرکت می کند، در حالی که یک کشتی روی آب حرکت می کند. یک ماشین معمولاً نمی تواند روی آب حرکت کند؛ ولی برای انجام این کار می توان یک ماشین را در یک کشتی قرار داد.
در این قیاس، نوع زمین (terrain) همان شبکه ای است که از پروتکل های مسیریابی خاصی پشتیبانی می کند و وسایل نقلیه مانند پکِتهای داده هستند. GRE روشی برای قرار دادن یک نوع پکِت در پکِت دیگر است، به طوری که اولین پکِت بتواند از شبکه ای عبور کند که معمولاً نمی تواند از آن عبور کند، درست همانطور که یک نوع وسیله نقلیه (خودرو) بر روی نوع دیگری از وسیله نقلیه (کشتی) قرار می گیرد؛ بدون کشتی، ماشین امکان عبور از دریا را نخواهد داشت.
حال فرض کنید یک شرکت باید یک ارتباط بین شبکههای محلی (LAN) در دو دفتر مختلف خود راه اندازی کند. هر دو شبکه محلی از آخرین نسخه پروتکل اینترنت IPv6 استفاده می کنند. اما برای رسیدن از یک شبکه اداری به شبکهی دیگر، ترافیک باید از طریق شبکه ای که توسط شخص ثالث مدیریت می شود (که تا حدودی قدیمی است و فقط از پروتکل IPv4 قدیمی پشتیبانی می کند)، عبور کند.
با GRE، این شرکت میتواند ترافیک را از طریق این شبکه با کپسوله کردن پکِتهایIPv6 در پکِتهای IPv4 ارسال کند. در این مقایسه، پکِتهایIPv6 خودرو هستند، پکِتهایIPv4 کشتی هستند و شبکه شخص ثالث آب است.
پروتکل GRE شامل کپسوله کردن یا بسته بندی یک پکِت داده در سایر پکِتهای داده است. با انجام این کار، یک تانل (که گاه تانل GRE نیز نامیده می شود) بین دو روتر ایجاد می شود و یک ارتباط مستقیم یا نقطه به نقطه بین شبکهها یا پروتکل های آی پی جداگانه برقرار میکند. این چنین تانلینگ پکِتها، ارتباطات بین شبکه ها را ساده می کند.
فرض کنیم قرار است یک ارتباط بین دو شبکه یا LAN برقرار شود؛ یکی از شبکهها از پروتکل IPv6 استفاده می کند در حالی که شبکه دیگر از پروتکل قدیمی IPv4 پشتیبانی می کند. بدون GRE، این دو شبکه به دلیل تفاوت در پروتکل، امکان برقراری ارتباط با یکدیگر را نخواهند داشت. اما با GRE، پکِتهای IPv6 درون پکِتهای IPv4 کپسوله میشوند و بدین ترتیب پکِتهای IPv6 اجازه مییابند تا از شبکه IPv4 عبور کنند.
چرا از GRE استفاده میکنیم؟
از تانلینگ GRE در مواقعی استفاده می شود که به راه اندازی یک ارتباط مستقیم یا نقطه به نقطه بین دو شبکه یا پروتکل نیاز باشد؛ جهت شفافیت موضوع، سازمانی را در نظر بگیرید که واحدها یا بخشهای مختلف تجاری آن، توسط شبکههای مختلف پشتیبانی می شوند. کپسوله کردن پکِتها و ایجاد یک تانل GRE، به روترها در دو شبکه اجازه می دهد تا به گونه ای عمل کنند که گویی یک ارتباط مستقیم دارند و به پکِتها اجازه می دهد تا بین آنها حرکت کنند؛ که در غیر این صورت نمی توانستند انجام دهند.
GRE چگونه کار می کند؟
مکانیزم کاری GRE به این شکل است که کپسوله سازی مجدد پکِت (یعنی یک پکِت داخلی که باید به شبکه مقصد ارسال شود) در داخل یک پکِت آی پی خارجی کپسوله می شود. نقاط پایانی تانل GRE، محموله (payload) را از طریق تانلهای GRE با مسیریابی پکِتهای کپسوله شده از طریق شبکه های آی پی میانی (intervening) ارسال می کنند. سایر روترهای آی پی در طول مسیر، بار (پکِت داخلی) را تجزیه نمی کنند. آنها فقط پکِت آی پی بیرونی را هنگام ارسال آن به سمت نقطه پایانی تانل تجزیه می کنند. با رسیدن به نقطه پایانی تانل، کپسوله سازی GRE حذف میشود و محموله (payload) به مقصد نهایی خود ارسال می شود.
کپسوله سازی جهت ایجاد یک تانل GRE بین دو روتر خاص در دو انتهای تانل انجام می شود. این بدان معنی است که فقط آن روترها امکان ارسال و دریافت پکِتهای GRE را دارند. روتر سمت فرستنده، هِدِر GRE را رمزگذاری (این عملیات توسط IPSec میسر خواهد شد) می کند و روتر سمت گیرنده آن را رمزگشایی می کند. در طول مسیر، پکِت کپسوله شده از طریق تانل GRE به شکل رمزگذاری شده عبور می کند و سپس از روتر گیرنده به عنوان پکِت اصلی (original) خارج می شود. سپس روتر گیرنده کپسوله را حذف کرده و پکِت داخلی را به مقصد نهایی آن در شبکه خود ارسال می کند.
برای داشتن اطلاعات بیشتر در رابطه با IPSec کلیک کنید.
روترهای بدون کانفیگ GRE که بین دو روتر با کانفیگ GRE هستند، پکِت کپسوله شده را با ارجاع به هِدِرهای پیرامون خود ارسال می کنند. آنها پکِتها را رمزگشایی یا باز نمی کنند؛ کار رمزگشایی توسط روتر دریافت کننده با کانفیگ GRE انجام خواهد گرفت.
پکتها و هدرهای GRE
در هر شبکهای، یک پکِت به واحدی از داده اطلاق می شود که از یک منبع به یک مقصد حرکت می کند. همه پکِتها از یک محموله (payload) و اطلاعات کنترلی تشکیل شده اند. محموله (payload) حاوی داده کاربر (اطلاعات واقعی) است، در حالی که اطلاعات کنترل شامل عناصری مانند آدرسهای مبدا و مقصد و ترتیب ارسال است. اطلاعات کنترل در هدر پکِت قرار میگیرد و به هر پکِت، یک هدر پیوست میشود.
قبل از اینکه تانل GRE ایجاد شود، بسته اصلی یا خارجی دارای یک هدر آیپی (20 بایتی) است. ایجاد تانل به معنای ایجاد یک پکِت GRE با دو هدر آی پی است. هدر آی پی برای پکِت اصلی دست نخورده باقی می ماند. هنگامی که تانل ایجاد شد، پروتکل یک هدر GRE جدید (4 بایتی) اضافه می کند که نشان دهنده نوع پروتکلی است که توسط پکِت کپسوله شده استفاده خواهد شد. هدر GRE همچنین شامل اطلاعاتی مانند آدرس مبدا و مقصد پکِت، شماره توالی و شناسه پروتکل است.
هنگامی که هر دو هدر ایجاد شدند، پکِت کپسوله شده می تواند از روتر مبدا به روتر مقصد حرکت کند. روتر پایانی، کپسوله پکِت را باز میکند (decapsulate) و از اطلاعات هدر برای هدایت پکِت به مقصدش استفاده می کند.
هدرهای GRE به پکِتی که در حال ارسال است اضافه می شود.
ویژگیهای GRE
ویژگی اصلی پروتکل GRE توانایی آن در قرار دادن یک پکِت داده در داخل پکِت دیگر است که به پکِتها اجازه می دهد بین دو پروتکل یا شبکه ناسازگار (که در غیر این صورت ناسازگار میبودند) حرکت کنند. تطبیق پذیری یکی دیگر از ویژگی های GRE است. این پروتکل می تواند با پروتکل های لایه 3 متعددی از جمله IP، IPX و DECnet کار کند. در نتیجه، یک تانل GRE میتواند انواع مختلفی از ترافیک را حمل کند و پکِتها را به مقصد نهایی خود هدایت کند.
تانلهای GRE، stateless هستند، به این معنی که نقاط انتهایی تانل (روترها) هیچ اطلاعاتی در مورد روتر دریافت کننده، از جمله وضعیت و در دسترس بودن آن، نگه نمی دارند. در نتیجه، روتر منبع، توانایی تغییر وضعیت رابط تانل یا پایین آوردن پروتکل خط را در صورت غیرقابل دسترسی بودن روتر دریافت کننده ندارد.
مزایا و معایب GRE
ایجاد یک تانل GRE، استفاده از پروتکلهایی را که توسط یک شبکه پشتیبانی نمی شوند، امکان پذیر می کند؛ بنابراین امکان ارتباط بین شبکهها و زیرشبکه ها را فراهم می کند. علاوه بر این، پروتکل بسیار قابل اعتماد است، چرا که افزودن یک هدر GRE به یک پکِت تضمین میکند که به مقصدش خواهد رسید.
برخلاف تانل آیپی به آیپی، تانل GRE میتواند ترافیک مالتیکست (multicast) و IPv6 را بین شبکهها انتقال دهد. علاوه بر این، GRE یک ارتباط خصوصی stateless فراهم میکند، بنابراین رابط تانل، حتی اگر انتهای تانل غیرقابل دسترسی باشد، اکتیو باقی میماند.
دیگر مزایای تانلهای GRE
تانلهای GRE:
- چندین پروتکل را روی یک ستون فقرات تک پروتکل (single-protocol backbone) محصور میکنند.
- راهکارهایی را برای شبکههایی با پرشهای (hop) محدود فراهم میکنند.
- زیرشبکههای (sub-network) ناپیوسته را متصل می کنند.
- به VPNها اجازه میدهند تا در WAN عمل کنند.
نقطه ضعف اصلی GRE این است که به عنوان یک پروتکل ایمن در نظر گرفته نمیشود؛ چرا که از رمزگذاری به مانند (IPsec) Encapsulating Security Payload که به عنوان RFC 2406 تعریف شده است، استفاده نمیکند. در نتیجه، تانلهای GRE ممکن است برای راه اندازی حملات DDoS مورد استفاده قرار گیرند. مهاجمان سایبری میتوانند یک باتنت بسازند و آن را از طریق GRE کنترل کنند، سپس با استفاده از ترافیک ناخواسته (junk traffic)، شبکه را اشباع کرده و آن را برای کاربران قانونی، غیرقابل دسترس کنند. این خطر را می توان با تنظیمات احراز هویت و مکانیسمهای رمزگذاری در تانلهای GRE به حداقل رساند.
سخن پایانی
Generic Routing Encapsulation یا به اختصار GRE پروتکلی است که پکِتها را به منظور مسیریابی پروتکل های مختلف روی شبکههای آیپی کپسوله میکند (encapsulate). پکِتها به این دلیل کپسوله میشوند که گاه شبکههایی که داده بینشان انتقال داده می شود، از پروتکلهای متفاوتی پشتیبانی می کنند؛ مثلا یکی از پروتکل نسخه 4 و دیگری از نسخه 6 پشتیبانی می کنند.
برای اینکه بتوان پکِتهای داده را بین این دو شبکه عبور داد، از تانلینگ GRE استفاده می شود، یعنی یکی از پکِتها درون پکِت دیگر کپسوله می شود. علاوه بر کپسوله کردن پکِتها که ویژگی اصلی GRE است، از stateless بودن تانلهای GRE و تطبیق پذیری میتوان به عنوان مزیت های دیگر آن نام برد؛ در مقابل ایمن نبودن پروتکل، عمدهترین نقطه ضعف GRE است.
سوالات متداول
آیا GRE همان IPSec است؟
GRE یک پروتکل تانلینگ است که برای انتقال پکِتهای مالتیکست (multicast)، برادکست (broadcast) و پکِتهای non-IP مانند IPX و غیره استفاده می شود. در حالی که IPSec یک پروتکل رمزگذاری است که فقط توانایی انتقال پکِتهای یونیکست (unicast) را دارد.
امنیت تانل GRE چقدر است؟
تانلهای GRE هیچ گونه احراز هویت، محرمانگی، یا یکپارچگی ترافیک کپسوله شده را ارائه نمی کنند و این یعنی هر کسی که بتواند پکِتهای GRE را رهگیری کند، میتواند پروتکل لایه شبکه اصلی (original) و محموله (payload) آن را ببیند و به طور بالقوه آن را تغییر داده یا جعل کند.
GRE از چه پروتکلی استفاده می کند؟
پکِتهای GRE که مستقیماً در آیپی کپسوله میشوند، از پروتکل آیپی نوع 47 در فیلد پروتکل هدر IPv4 یا فیلد Next Header هِدر IPv6 استفاده میکنند. به دلایل عملکردی، GRE همچنین می تواند در پکِتهای UDP کپسوله شود.
تانل سازی GRE چگونه کار می کند؟
با استفاده از GRE، مسیریابی بین شبکههای خصوصی از طریق اینترنت عمومی امکانپذیر میشود. پکِت اصلی درون یک پکِت GRE و آیپی بیرونی کپسوله میشود و به آن اجازه می دهد تا از طریق اینترنت به شبکه خصوصی مقصد هدایت(to be routed) شود.
Leave A Comment