امیرحسین تنگسیری نژاد
مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو

آموزش راه اندازی کامل MPLS L3VPN در یک سناریو عملی

درواقع پروتکل MPLS تشکیل شده از کلمات MultiProtocol Label Switch می‌باشد که به منظور ایجاد یک تحول در دنیای Routing به وجود امده است این پروتکل برخلاف Normal Routing که از طریق جدول Routing درون روتر بسته هارا و به سمت روتر های مجاور و Next-Hop های خود ارسال می‌کردند به سمت Dst IP, پروتکل MPLS به جای IP از مکانیزمی تحت عنوان Label زنی یا برچسب زنی استفاده می‌کند و بسته‌هارا از طریق برجسپ آن مسیریابی می‌کند از این سرعت بالایی در Switching بسته ها نیز دارد. علاوه بر این قطعا پروتکلی را با ارائه Concept های جدید و مباحث کانفینگ جدید آن برای بالا رفتن چند میلی ثانیه ایی Switching بسته ها ارائه نمی‌دهند. پروتکل MPLS ویژگی های بسیار زیادی دارد و استفاده آن بیشتر در محیط های Service Provider می‌باشد از جمله این ویژگی ها می‌توان به MPLS Application ها اشاره کرد که به شرح زیر هستند:

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

پروتکل MPLS چیست؟

انواع MPLS Application:

  • MPLS L3VPN
  • MPLS L2VPN
  • MPLS Traffic Engineering
  • Unicast Routing
  • Multicast Routing

برای آشنایی بیشتر با مفاهیم MPLS و اجزا آن و شروع یادگیری پروتکل MPLS به ویدیو های دوره آموزشی MPLS مراجعه کنید.

ویژگی MPLS L3VPN چیست

درواقع MPLS L3VPN همانطور که گفتیم یک MPLS Application میباشد و همانطور که از نامش نیز پیداست یک ارتباط VPN لایه 3 برای ما توسط MPLS ایجاد میکند و اما این ارتباط VPN لایه 3 چه مزیتی دارد و چرا میبایست از آن استفاده کنیم درون بستر MPLS ؟! دورواقع MPLS L3VPN که توسط نهاد های Service Provider به سمت مشتریان خود ارائه میشود یک بستری را برای مشتریان ایجاد میکند که بتوانند ارتباط شعب های مشتریان خود را برقرار کنند برای مثال یک سازمان 2 شعب دارد از یک Service Provider خدمات میگیرند اما اگر این دو شعب بخواهند با یک دیگر ارتباط داشته باشند راهکار چیست؟ درواقع اینجاست که درصورت وجود MPLS در شبکه Service Provider مورد نظر و امکان ارائه خدمات MPLS L3VPN به راحتی از سمت Service Provider میتوان ارتباط بین شعب هارا برقرار کرد. 

آموزش راه اندازی کامل MPLS L3VPN در یک سناریو عملی

نحوه کار MPLS L3VPN به چه شکل است؟

حال بیاید بررسی کنیم که MPLS L3VPN به چه شکل میتواند ارتباطات بین شعب های یک سازمان را برقرار کند. در واقع ابتدایی کاری که میبایست انجام شود این است که یک L3 Link بین روتر CE که متعلق به مشتری و روتر PE که متعلق به Service Provider میباشد راه اندازی شود

 مفهوم L3 Link‌ چیست

 درواقع L3 Link ها همان Routing Protocol های ما میباشند که در بین CE و PE پیاده سازی میشوند و به صورتی که برای ارتباط بین CE و PE به منظور راه اندازی شدن MPLS L3VPN میتوان از انواع Routing Protocol ها و حتی Static Routing استفاده کرد که به پیشنهاد شرکت Cisco گفته شده است که از Static Routing و یا eBGP استفاده کنید اما شما مایل و صاحب اختیار به راه اندازی هر Routing Protocol دیگر هستید حتی پروتکل منسوخ شده ایی مانند RIP

شروع راه اندازی MPLS L3VPN

آموزش راه اندازی کامل MPLS L3VPN در یک سناریو عملی

ابتدایی ترین کاری که میبایست انجام دهیم راه اندازی یک IGP در شبکه مان میباشد که به سبب آن توانایی راه اندازی شبکه MPLS را داشته باشیم. براساس سناریو پروتکل EIGRP را در شبکه Service Provider راه اندازی میکنیم 

PE1(config)# router eigrp 1
PE1(config-router)# network 10.0.0.8 0.0.0.3
PE1(config-router)# network 10.1.1.1 0.0.0.0

P(config)# router eigrp 1
P(config-router)# network 10.0.0.8 0.0.0.3
P(config-router)# network 10.0.0.12 0.0.0.3
P(config-router)# network 10.1.1.2 0.0.0.0

PE2(config)# router eigrp 1
PE2(config-router)# network 10.0.0.12 0.0.0.3
PE2(config-router)# network 10.1.1.3 0.0.0.0

راه اندازی L3 Link بین PE و CE

پس از راه اندازی کردن EIGRP در شبکه میبایست به سمت روتر های CE برویم و درون آنها به سمت روتر های PE یک eBGP راه اندازی کنیم و پس از آن ارتباط بین CE و PE را با eBGP برقرار کنیم

:CE1A

CE1A(config)# router bgp 64401
CE1A(config-router)# neighbor 10.0.0.1 remote-as 64501
CE1A(config-router)# network 172.16.1.0 mask 255.255.255.0

:CE2A

CE2A(config)# router bgp 64402
CE2A(config-router)# neighbor 10.0.0.17 remote-as 64501
CE2A(config-router)# network 172.16.2.0 mask 255.255.255.0

:CE1B

CE1B(config)# router bgp 64301
CE1B(config-router)# neighbor 10.0.0.5 remote-as 64501
CE1B(config-router)# network 172.16.1.0 mask 255.255.255.0

:CE2B

CE2B(config)# router bgp 64302
CE2B(config-router)# neighbor 10.0.0.21 remote-as 64501
CE2B(config-router)# network 172.16.2.0 mask 255.255.255.0

راه اندازی MP-BGP بین دیوایس های PE

پس از انجام فرآیند بالا وارد روتر های PE میشویم و در بین روتر های PE یک MP-BGP راه اندازی میکنیم درواقع به زبان ساده MP-BGP همان پروتکل BGP است اما به صورتی که از Address Family های مختلفی پشتیبانی میکندو به سبب پروتکل VPNv4 در MP-BGP ما توانایی ردوبدل سازی داده های CE های خودمان را داریم به همین سبب VPNv4 را بین دیوایس های PE خودمان راه اندازی میکنیم که اصولا به این کار VPNv4 Load Sharing نیز میگویند

:PE1

PE1(config)# router bgp 64501
PE1(config-router)# neighbor 10.1.1.3 remote-as 64501
PE1(config-router)# neighbor 10.1.1.3 update-source lo0
PE1(config-router)# address-family vpnv4
PE1(config-router-af)# neighbor 10.1.1.3 activate
PE1(config-router-af)# exit

:PE2

PE2(config)# router bgp 64501
PE2(config-router)# neighbor 10.1.1.1 remote-as 64501
PE2(config-router)# neighbor 10.1.1.1 update-source lo0
PE2(config-router)# address-family vpnv4
PE2(config-router-af) # neighbor 10.1.1.1 activate
PE2(config-router-af)# exit

راه اندازی MPLS در شبکه Service Provider 

پس از انجام فرآیند های بالا حالا نوبت راه اندازی کردن و اجرا سازی شبکه MPLS میرسد که به شکل زیر اینکار را با زدن دستور mpls ip در زیر هر Interface متصل به شبکه SP به انجام میرسانیم

:PE1

PE1(config)# interface GigabitEthernet 0/3
PE1(config-if)# mpls ip

:P

P(config)# interface GigabitEthernet 0/3
P(config-if)# mpls ip
P(config)# interface GigabitEthernet 0/4
P(config-if)# mpls ip

:PE2

PE2(config)# interface GigabitEthernet 0/4
PE2(config-if)# mpls ip

راه اندازی VRF

ویژگی ‌VRF درواقع یکی از ویژگی های جالب درون پروتکل MPLS میباشد که توانایی جدا سازی و تفکیک سازی ارتباطات CE های مختلف را برعهده دارد و بدین شکل که CE 1 و CE 2 امکان دسترسی و دیدن داده های CE 3 و CE 4 را ندارند علاوه بر این موضوع این امکان راهم به ما ارائه میدهد که درصورت وجود IP Address Overlapping درون دو شبکه این مشکل را با استفاده از VRF و مقدار RD که توانایی متمایز سازی IP Address را دارد حل میکنیم. با استفاده از VRF ما توانایی ایجاد کردن Routing Table های مجزا از هم را درون روتر هایمان داریم که این امکان و امر به ما کمک میکند که داده های CE را را مجزا از هم ردوبدل کنیم و ارتباطی به داده ها و ارتباطات درون شبکه SP هم نیز نداشته باشند.

:PE1

PE1(config)# ip vrf CustomerA
PE1(config-vrf)# rd 64501:1
PE1(config-vrf)# route-target both 64501:1
PE1(config-vrf)# ip vrf CustomerB
PE1(config-vrf)# rd 64501:2
PE1(config-vrf)# route-target both 64501:2

پس از ایجاد کردن VRF ها حالا نوبت اختصاص دادن آنها به Interface های متصل به دیوایس های CE مان میباشد

:PE1

PE1(config)# interface gigabitEthernet 0/1
PE1(config-if)# ip vrf forwarding CustomerA
PE1(config-if)# ip address 10.0.0.1 255.255.255.252

PE1(config)# interface gigabitEthernet 0/2
PE1(config-if)# ip vrf forwarding CustomerB
PE1(config-if)# ip address 10.0.0.5 255.255.255.252

:PE2

PE2(config)# ip vrf CustomerA
PE2(config-vrf)# rd 64501:1
PE2(config-vrf)# route-target both 64501:1
PE2(config-vrf)# ip vrf CustomerB
PE2(config-vrf)# rd 64501:2
PE2(config-vrf)# route-target both 64501:2

راه اندازی eBGP از سمت PE به سمت CE 

پس از این حالا در اخر میبایست وارد BGP شویم و یک eBGP را به سمت CE ها از سمت PE ها ایجاد کنیم از طریق جدول مسیریابی مجزایی که برای هر CE درون PE ها با استفاده از VRF هایمان ایجاد کردیم.

:PE1

PE1(config)# router bgp 64501
PE1(config-router)# address-family ipv4 vrf CustomerA
PE1(config-router-af)# neighbor 10.0.0.2 remote-as 64401
PE1(config-router-af)# exit

PE1(config-router)# address-family ipv4 vrf CustomerB
PE1(config-router-af)# neighbor 10.0.0.6 remote-as 64301

:PE2

PE2(config)# router bgp 64501
PE2(config-router)# address-family ipv4 vrf CustomerA
PE2(config-router-af)# neighbor 10.0.0.18 remote-as 64402
PE2(config-router-af)# exit

PE2(config-router)# address-family ipv4 vrf CustomerB
PE2(config-router-af)# neighbor 10.0.0.22 remote-as 64302

بررسی و Verification سازی پیکربندی MPLS L3VPN

ابتدایی ترین کاری که میبایست انجام دهیم از سمت کامپیوتر های CE به هم یک Ping میگیریم و میتوانیم متوجه شویم که ارتباط برقرار است یا که خیر

آموزش راه اندازی کامل MPLS L3VPN در یک سناریو عملی

در تصویر بالا یک Wireshark بر روی لینک بین P و PE1 درحال ضبط کردن بسته ها میباشد اگر توجه کنید بسته های بالا میبینیم که LSP Header بسته ICMP Echo Request برابر با 18 میباشد که دقیقا همان Label میباشد که بسته مورد نظر را به مقصد مورد نظر یعنی روتر PE 2 میرساند.

آموزش راه اندازی کامل MPLS L3VPN در یک سناریو عملی

در تصویر بالا نیز این نکته را میتوانیم ببینیم که Local Label 18 برای PE 2 میباشد


امیرحسین تنگسیری نژاد
امیرحسین تنگسیری نژاد

مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو

متخصص امنیت اطلاعات و کارشناس شکار تهدیدات بانک ملی ایران ، دارای مدارک مختلف از Splunk و AWS و Fortinet و Huawei حوزه اصلی فعالیت بنده در زمینه شبکه مباحث R&S و Service Provider می‌باشد و در زمینه امنیت نیز در موقعیت های مختلفی مانند PenTest و SoC فعالیت داشته و دارم. سابقه همکاری با بعضی سازمان های در قالب پروژه و... را داشته ام الان به عنوان تحلیلگر امنیت سایبری در زیرساخت بانک ملی مشغول به کار هستم. لینکداین: https://www.linkedin.com/in/amirhoseintangsirinezhad/

نظرات