شما اینجا هستید
معرفی و پیکربندی GRE Tunneling
ایجاد ارتباط بین بخشهای مختلف شبکه در برخی موارد با محدودیتهایی مواجه است که جهت رفع آنها و یا سادهتر کردن تنظیمات انجامشده میتوان از تکنولوژیهای Tunneling استفاده کرد. Tunneling یا سیستم ایجاد تونل ارتباطی بانام کپسوله کردن نیز شناخته میشود که به بیان ساده روشی است برای استفاده از زیرساخت یک شبکه عمومی جهت انتقال اطلاعات و برقراری ارتباط در یک کانال امن.
استفاده از tunneling ارسال و دریافت هر نوع اطلاعاتی را ممکن میسازد. درواقع تونل زنی مکانیزم حمل بستههای یک پروتکل در پروتکل دیگر را فراهم میکند.
Generic Routing Encapsulation (GRE) یکی از مکانیزمهای تونل زنی موجود است که از IP بهعنوان پروتکل انتقال استفاده میکند و طیف گستردهای از پروتکلهای لایه شبکه را در داخل لینکهای مجازی نقطهبهنقطه روی بستر شبکه اینترنت انتقال میدهد. روند کار به این صورت است که در ابتدا دادهها رمزنگاری میشوند و در قالب بستههای IP بر روی کانال فرستاده میشوند و سرویسگیرنده آنها را رمزگشایی کرده و به مقصد میرساند.
درواقع اطلاعات بهجای اینکه بهصورت اصلی و Original فرستاده شوند، با اضافه کردن یک Header (سرایند) کپسوله میشوند. این سرایند اضافی که به پکت متصل میشود، اطلاعات مسیریابی را برای پکت فراهم میکند تا اطلاعات بهصورت صحیح، سریع و فوری به مقصد برسند. هنگامیکه پکتهای کپسوله شده به مقصد رسیدند، سرایندها از روی پکت برداشتهشده و اطلاعات بهصورت اصلی خود تبدیل میشوند.
ازجمله ویژگیها و مزایای GRE میتوان به اتصال شبکههای جدا از هم، امکان انتقال ترافیک IPv6 ، امکان انتقال ترافیک Multicast ، عبور ترافیک با آدرس خصوصی روی شبکه اینترنت و پیادهسازی ساده و ... نام برد.
شکل زیر چگونگی بستهبندی ترافیک IP را با پروتکل GRE نشان میدهد. بهصورت پیشفرض GRE ما بین بسته داخلی و بیرونی قرار میگیرد و دو فیلد اصلی و اجباری دارد که هرکدام ۲ بایت و مجموعاً ۴ بایت دارند. فیلد Protocol Type نوع بسته داخلی را مشخص میکند و دقیقاً به خاطر همین فیلد است که هر نوع ترافیکی را میتوان روی GRE سوار کرد. فیلد Flags وجود و یا عدم وجود فیلدهای اختیاری در GRE را نشان میدهد. بدیهی است در صورت وجود فیلدهای اختیاری که در ذیل معرفی میگردند، سایز هدر GRE از ۴ بایت بیشتر خواهد شد. حداکثر سایز سربار GRE 16 بایت است.
شکل ۱-چگونگی کپسوله کردن ترافیک IP را با پروتکل GRE
در شکل زیر فیلدهای اختیاری پروتکل GRE در کنار فیلدهای اصلی نشان دادهشده است. Sequence number، checksum و key فیلدهای اختیاری GRE هستند که به ترتیب وظیفه مرتبسازی ترافیک GRE، تشخیص خطا در ارسال ترافیک GRE و احراز هویت ابتدا و انتهای تونل نسبت به هم را به عهدهدارند. کلید در GRE بهصورت clear text و بدون رمزنگاری منتقل میشود.
شکل ۲- فیلدهای پروتکل GRE
شکل زیر ساختار سربار پروتکل GRE را بهصورت دقیقتر نشان میدهد. فیلدهای C، K و S در GRE Flag نشاندهنده وجود یا عدم وجود فیلدهای اختیاری checksum،sequence number و key است.
شکل ۳-ساختار سربار پروتکل GRE
فهرست دستوراتی که برای پیکربندی GRE نیاز است در زیر بیانشده است.
۱- enable
۲- configure terminal
۳- int tunnel x (عدد دلخواه)
۴- ip address
۵- tunnel source
۶- tunnel destination
در جدول ۱ جزئیات عملکرد هرکدام از دستورات بالا بیانشده است.
جدول ۱- فهرست دستورات جهت تنظیمات GRE به همراه بیان عملکرد هر دستور
عملکرد |
دستور |
مرحله |
با اجرای این دستور وارد مرحله سطح دسترسی Exec میشوید. درصورتیکه از قبل برای این مرحله رمز ورود(enable secret) تعیینشده باشد باید رمز را وارد کنید. |
enable مثال: Router>enable Router# |
مرحله اول |
وارد مرحله global روتر میشوید |
Configure terminal مثال: Router# configure terminal Router(config)# |
مرحله دوم |
ورود به اینترفیس تانل |
int tunnel x مثال: Router(config )# int tunnel 1 |
مرحله سوم |
ست کردن IP در سر تانل |
ip address مثال: Router(config-if)#ip add 172.16.0.1 255.255.255.0 |
مرحله چهارم |
مبدأ تانل مشخص میشود |
tunnel source مثال: Router(config-if)# tunnel source |
مرحله پنجم |
مقصد تانل مشخص میشود |
tunnel destination مثال: Router(config-if)# tunnel destination |
مرحله ششم |
شبکه شکل زیر را در نظر بگیرید. هدف برقراری ارتباط بین دو روتر A و Bاز طریق GRE Tunnel است. مراحل پیادهسازی سناریو به ترتیب در زیر ذکر میشود.
شکل ۴-سناریو GRE Tunneling
R1(config)# interface fastethernet 0/1
R1(config-if)# ip address 12.12.12.1 255.255.255.252
R1(config-if)# no shut
R1(config-if)# exit
R1(config)# interface Tunnel 1
R1(config-if)# ip address 172.16.1.1 255.255.255.252
R1(config-if)# tunnel source 12.12.12.1
R1(config-if)# tunnel destination 12.12.12.2
***************************************
R2(config)# interface fastethernet 0/1
R2(config-if)# ip address 12.12.12.2 255.255.255.252
R2(config-if)# no shut
R2(config-if)# exit
R2(config)# interface Tunnel 1
R2(config-if)# ip address 172.16.1.2 255.255.255.252
R2(config-if)# tunnel source 12.12.12.2
R2(config-if)# tunnel destination 12.12.12.1
*****************************************
R1(config)# ip route 192.168.2.0 255.255.255.0 172.16.1.2
R2(config)# ip route 192.168.1.0 255.255.255.0 172.16.1.1
نکته : آدرس next hop در ۲ دستور فوق هم میتواند آدرس اینترفیس فیزیکی روتر باشد و هم آدرس اینترفیس تانل روتر.
تانل ها زمانی Up/Up میشوند که دو سر فیزیکی interface هایی که دارند بتوانند همدیگر را Ping کنند.
پیکربندی مربوط به روترها در زیر بیانشده است.
جدول ۲-پیکربندی روترها
روتر R2 |
روتر R1 |
Current configuration: ! interface Fastethernet 0/1 no shutdown ip address 12.12.12.2/30
interface tunnel 1 tunnel source 12.12.12.2 tunnel destination 12.12.12.1 no shutdown ip address 172.16.1.2 netmask 255.255.255.252 ! ip route 192.168.1.0 255.255.255.0 172.16.1.1 ! end |
Current configuration: ! interface Fastethernet 0/1 no shutdown ip address 12.12.12.1/30
interface tunnel 1 tunnel source 12.12.12.1 tunnel destination 12.12.12.2 no shutdown ip address 172.16.1.1 netmask 255.255.255.252 ! ip route 192.168.2.0 255.255.255.0 172.16.1.2 ! end |
فهرست دستورات نمایشی و دستورات بررسی برقراری ارتباط در زیر بیانشده است.
جدول ۳- بیان دستورات نمایشی و درستی یابی و عملکرد هر دستور
عملکرد |
دستور |
روتر R2 از طریق تونل ایجادشده قادر به برقراری ارتباط با روتر R1 است. |
R2(config-if)# do ping 192.168.1.1 PING 192.168.1.1 (192.168.1.1): 56 data bytes ۶۴ bytes from 192.168.1.1: icmp_seq=0 ttl=64 time=0.349 ms ۶۴ bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.367 ms ۶۴ bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.329 ms --- ۱۹۲.۱۶۸.۱.۱ping statistics --- ۱۳ packets transmitted, 13 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 0.317/0.364/0.394/0.021 ms |