لینکهای ترانک در vlan
تو این مقاله میخوایم راجع به اینترفیس های Trunk صحبت کنیم و تفاوت اونرو با اینترفیس های Access ببینیم.
تو این سناریو اومدم در سوئیچ 1 دوتا کامپیوتر(1.10 و 1.11) رو گذاشتم توی vlan2 و کامپیوترهای (2.10 و 2.11) رو گذاشتم توی vlan3 و روی سوئیچ 2 کامپیوتر (1.12) رو گذاشتم تو vlan2 و کامپیوتر (2.12) رو گذاشتم تو vlan3
همونطور که قبلا گفته بودم میشه vlan ها رو روی بیش از یک سوئیچ پخش کرد و میخوایم الان اینو باهم ببینیم که چطور کامپیوترهای vlan2 در سوئیچ 1 میتونن با کامپیوتر vlan2 در سوئیچ 2 ارتباط بگیرن.
حالا با توجه به سناریو اول اومدیم برای کامپیوترها ip سِت کردیم و بعد میایم در سوئیچ 1 vlan های 2 و 3 رو میسازیم و بعد اینترفیسهای fa0/1 و fa0/2 رو در سوئیچ 1 عضو vlan2 کردیم و بعد اینترفیسهای fa0/3 و fa0/4 رو در سوئیچ 1 عضو vlan3 کردیم.
در سوئیچ دوم هم vlan های 2 و3 رو میسازیم و اینترفیس fa0/1 رو عضو vlan2 میکنیم و اینترفیس fa0/2 رو عضو vlan3 میکنیم.
حالا از (1.10) ping میکنیم (1.11) رو باید ping شون برقرار باشه و بعد از (1.10) در سوئیچ 1 ping میکنیم (1.12) رو در سوئیچ 2 ولی ارتباط برقرار نیست.
حالا میایم از (2.10) ping میکنیم (2.11) رو و ping باید برقرار باشه و دوباره از (2.10) ping میکنیم (2.12) رو ولی ارتباط برقرار نیست.
پس تا اینجا ارتباط بین vlan های همنام از سوئیچ 1 به سوئیچ 2 برقرار نیست.دلیلشم واضحه چون وقتی از (1.10) در سوئیچ 1 ping میکنیم (1.12) رو در سوئیچ 2 اولین کاری که میکنه میاد ARP میزنه و ARP یه بسته برادکست هستش و به تمامی اعضای vlan2 ارسال میشه. برای اینکه به سوئیچ 2 برسه باید به fa0/10 ارسال بشه ولی اگه یه show vlan brief بگیرید میبینید که fa/10 عضو vlan1 هستش و همین نشون میده که منطقا ARP نباید به سوئیچ 2 برسه.
حالا بریم تست کنیم اگه من fa0/10 رو در سوئیچ 1 عضو vlan2 کنم مشکل من حل میشه یا نه؟ البته اینترفیس fa0/10 در سوئیچ 2 رو هم عضو vlan2 میکنیم و اگه show vlan brief بگیریم در هر دو سوئیچ نشون میده که fa0/10 عضو vlan2 شده.
حالا میایم از (1.10) در سوئیچ 1 (1.12) رو در سوئیچ 2 ping میکنیم و میبینیم که پینگش برقراره.
الان سوال اینه که آیا توی vlan3 کلاینتهاش میتونن بین سوئیچ ها باهم ارتباط داشته باشن؟
قطعا نه. وقتی از (2.10) در سوئیچ 1 میاید (2.12) در سوئیچ 2 رو ping میگیرید میبینید که ارتباط برقرار نیست. پس اگه بخوایم ارتباط vlan3 بین سوئیچ ها برقرار بشه باید fa0/10 در سوئیچ 1 و سوئیچ 2 رو عضو vlan3 کنیم و اونوقت ارتباط vlan2 قطع میشه. الان مشکل ما اینه که نمیشه ترافیکهای بیش از یک vlan رو روی fa0/10 پخش کرد و فقط ترافیک یدونه vlan رو از روی لینکش عبور میده و ازونورم نمیتونم یک پورت access رو عضو بیش از یک vlan کنم. حالا من چیکار کنم که بتونم هم ترافیک vlan2 رو عبور بدم و هم ترافیک vlan3 رو؟
تو این شکل دقت کنید که در سوئیچهای بالا هم vlan1 داریم و هم vlan2 . اگه پورت بین سوئیچ ها vlan1 باشه اونوقت ترافیک vlan1 فقط عبور میکنه ولی ترافیک vlan2 عبور نمیکنه. اگه پورت بین سوئیچ ها عضو vlan2 باشه اونوقت فقط ترافیک vlan2 عبور میکنه و vlan2 یی ها باهم ارتباط دارن ولی vlan1 ها نه.
اینجاست که پای اینترفیسهای Trunk (ترانک) میاد وسط. من میخوام که vlan هام رو روی بیش از یک سوئیچ پخش کنم و اینترفیسها و ارتباطات بین سوئیچ هام رو نوع ترانک تعریف میکنم. ترانک چجوری میتونه مشکلم رو حل کنه؟
به اینصورته که میگه سوئیچ شما زمانیکه یک بسته رو روی vlan1 دریافت میکنه مثلا (یک فریم اترنت ردی سوئیچ روی vlan1 دریافت میکنه) زمانیکه میخواد ARP ِش رو ارسال کنه ، روی همه اینترفیسهای اون vlan میفرسته بعلاوه اینترفیسهای ترانک. پس ترافیک الان روی ترانک ارسال میشه. فقط توی ارتباطات ترانک کاری که انجام میشه اینه که بین دو سره ترانک میاد vlan id رو اضافه میکنه. یعنی میگه من الان ترافیک رو روی vlan1 گرفتم و میخوام روی ترانک بفرستم و اینجا عدد 1 رو اضافه میکنم(یعنی در قسمت vlan id بجای id میاد 1 میزاره) و ارسال میکنم.
طرف مقابل نگاه میکنه که vlan1 تَگ خورده(بهش میگن TAG زدن) و این TAG رو ازش جدا میکنه و اصلِ فریم رو تحویل vlan1 میده. همین اتفاقا برای vlan2 میتونه بیفته. از vlan2 دریافت میکنه و وقتی میخواد روی ترانک بفرسته یه تَگِ 2 به فریم اضافه میکنه و سمت مقابل این تگِ 2 رو جدا میکنه و Ethernet frame اصلی رو به vlan2 تحویل میده.
ما دوتا پروتکل Trunking داریم. ISL و 802.1Q
ISL پروتکل اولیه ای بود که سیسکو اینو ابداع کرد ولی 802.1Q یه پروتکل استانداردِ IEEE هستش.
نتیجه اینه که بین یک سوئیچ سیسکو و یک سوئیچ غیره سیسکو حتما باید پروتکل Trunking مون 802.1Q باشه.
ISL دیگه Expire شده ولی الان هنوز توی خیلی از سوئیچها بدلیل سازگاری با ورژنهای قبلی ساپورت میشه ولی توی خیلی از سوئیچهام دیگه ساپورت نمیشه و فقط 802.1Q رو ساپورت میکنن.
یکی از تفاوتهایی که اینا باهم دارن علاوه بر اینکه 802.1Q پروتکلِ IEEE standard هستش و ISL برای سیسکو هستش ، تو نحوه ای هستش که اینا vlan id یا vlan number رو میخوان ارسال کنن. ISL میومد کل فریم رو مجدد روش هِدِر میبست و توی FCS میذاشت(یعنی دوباره Encapsulation میکرد توی فریمِ ISL) ، در صورتیکه 802.1Q میاد vlan id رو بعد از Source mac و قبل از شروع شدن پکت بعنوان یک TAG میاد و insert میکنه داخل Frame و چون اینکار باعث میشه که FCS تغییر بکنه میاد FCS رو مجددا حساب میکنه و قرار میده.
از یه دیدگاه دیگه تفاوتی که این دوتا (ISL و 802.1Q) باهم دارن بحثِ Native vlan هستش. Native vlan یه concept یی بود که توی 802.1Q معرفی شد. به اینصورت کار میکنه که اگه سوئیچی یه بسته ای رو روی اینترفیس ترانکش دریافت بکنه که این بسته روی اسنترفیس ترانکش TAG نخورده باشه عملا نگاه میکنه Native vlan نِش چیه و اون بسته بدون TAG رو میره روی Native vlan تحویل میده.
ازون سمت هم بخوایم نگاه کنیم ، بسته هایی که عضو vlan یی هستن (مثلا فرض کنید من Native vlan رو گذاشتم 10) و ازونورم توی کلاینتهام vlan 10 دارم که با Native vlan همنام هستن و اگه سوئیچ بخواد این بسته رو ارسال کنه روی ترانکی که Native vlan نِش 10 هستش و خودِ بسته هم از vlan10 داره میاد این TAG رو نمیزنه. پس بسته های Native vlan بدون TAG ارسال و دریافت میشن و ازونطرف Native vlan بصورت دیفالت vlan1 هستش و این قابلیت رو خواهید داشت که Native vlan رو تغییر بدید.
بحثهای مربوط به configuration ترانک کار خیلی سادست. اولا دقت کنید توی سوئیچهایی که ISL رو ساپورت نمیکنن و فقط 802.1Q ساپورت میکنن شما کافیه توی اون اینترفیسی که میخواید ترانکش کنید فقط اینو بزنید :
Switch(config-if)#switchport mode trunk
ولی اگه سوئیچ شما ISL و 802.1Q رو باهم ساپورت میکنه و فقط بزنید switchport mode trunk میاد کامند رو ریجِکت میکنه و میگه اول برو Encapsulation رو مشخص کن و تو این شرایط باید اینو بزنید :
Switch(config-if)#switchport trunk encapsulation 802.1Q
Switch(config-if)#switchport mode trunk
حالا بریم توی سناریو و یه نگاه بندازیم به این قضیه. میایم تو سناریو و لینک fa0/10 بین سوئیچهای 1 و 2 رو پاک میکنیم و مثلا fa0/20 در سوئیچ 1 رو وصل میکنیم به fa0/20 در سوئیچ 2 و مدشون رو ترانک قرار میدیم.
حالا یه سوئیچ 3560 میزاریم تا Encapsulation رو بهتون نشون بدم. مثلا میریم سراغ اینترفیس fa0/10 این سوئیچ 3560 و میخوام این اینترفیس رو ترانک کنم.
ولی اینجا اومد دستورمون رو ریجِکت کرد چون باید اول نوعِ Encapsulation رو مشخص کنیم.
هدف از استفاده از سوئیچ 3560 اینبود که بدونید توی سوئیچهایی که Encapsulation یی بغیر از 802.1Q روهم ساپورت میکنن کانفیگشون به اینصورته.
حالا برگردیم به سناریوی اصلیمون و یه تست بگیریم که ارتباط بین vlan های همنام در سوئیچهای مختلف برقرار شده ، چون بین دو سوئیچ رو Trunk تعریف کردیم و میایم از (1.11) ping میکنیم (1.12) رو و میبینیم که ping برقراره و این دوتا توی vlan2 بودن.
حالا بریم ببینیم که کامپیوترهای vlan3 باهم ارتباط دارن؟ میایم از (2.11) ping میکنیم (2.12) رو و میبینیم که ping برقراره.
الان ارتباط بین vlan2 و vlan3 در سوئیچ 1 با vlan2 و vlan3 در سوئیچ 2 از طریق ارتباط Trunk برقرار شد.
حالا میخوایم یه سری به مباحث مانیتورینگ بزنیم :
توی سوئیچ 1 میزنیم show vlan brief و مشاهده میکنید که fa0/20 رو عضو vlan1 نمیبینید چون اینترفیسهای ترانک توی show vlan brief نمایش داده نمیشن. پس چطوری باید وضعیتش رو ببینم؟ با دستور show interfaces trunk
تو شکل بالا داره نشون میده که fa0/20 با Encapsulation نِش 802.1q هستش و وضعیتش روی trunking قرار داره و Native vlan نِش هم default 1 هستش.
بصورت دیفالت روی اینترفیس ترانک همه vlan ها اجازه عبور دارن. من روی این سوئیچ vlan های 1 و 2 و 3 رو دارم و اینا اجازه عبور دارن.
حالا ممکنه توی یک سناریو بر اساس مباحث security بخواین تعداد عبور vlan از روی ترانک رو محدود کنید. مثلا بگید اجازه نداره vlan 10 تگ بخوره. حالا من در اینجا vlan های 1 و 2 و3 رو دارم و عبور همه vlan هارو میخوام محدود کنم به چندتا vlan خاص. اینموارد رو سعی کنید خیلی تمرین کنید چون مربوط به مباحث امنیتی هستش و جلوتر بهشون میپردازیم.
این کانفیگهایی که در شکل بالا میبینید توی برقراری ارتباط کمکتون نمیکنه و اینا توی بحثهای بعد از برقراری ارتباط یعنی مباحث امنیتی کمکتون میکنه. پس من میتونم با این دستور Switch(config-if)#switchport trunk allowed vlan vlan-id مشخص کنم که چه vlan هایی اجازه عبور دارن روی ترانک و بصورت دیفالت همه vlan ها جازه عبور دارن. ولی ممکنه من بخوام بگم فقط سه تا vlan 1 و2 و3 اجازه TAG خوردن داشته باشن (مثل شکل بالا در قسمت Example سطر اولش)
یا میتونم با دستور add بهش یه vlan اضافه کنم یا با دستور remove ازش یه vlan کم کنم (مثل مثالهای بالا در قسمت Example)
در مثال بالا در قسمت add (سطر دوم زیر Example) داره میگه vlan4 هم به vlan های 1 و 2 و3 اضافه بشه برای عبور (Tag خوردن) روی ترانک یا توی همون مثال در سطر سوم بیام بگم که vlan3 رو ازش کم کن و اجزای عبور از روی ترانک رو نداره.
با دستور Switch(config-if)#switchport trunk native vlan-id میتونیم Native vlan رو تغییر بدیم و از حالت دیفالت خارجش کنیم.
تا اینجا درباره ترانکها صحبت کردیم و دیدید که ترانکها چه کاربردی دارن و چجوری باید کانفیگشون کرد و حالا میخوایم درباره پروتکلی بنام DTP صحبت کنیم. این پروتکل اومده تا کارِ مارو توی Trunking راحت کنه. فرض کنید دوتا ساختمون دارم که با Fiber optic (فیبر نوری) اینارو باهم متصل کردم و این دوتا ساختمون باهم یک کیلومتر فاصله دارن. من میخوام وقتی یک سمتِ لینکم رو ترانک کردم دیگه تا اونسَرِ لینکم نرم ترانکش کنم. میخوام وقتی یکطرف رو ترانک کردم باعث بشه طرف دیگه ترانک بشه. برای همین شما اول باید با بحثهای Administrative mode و Operational mode آشنا بشید. وقتی میگیم Operational mode یعنی لینکِ شما در نهایت میتونه یا access باشه یا Trunk . پس یک لینک در نهایت Operational مدِش یا access هستش یا Trunk.
حالا Administrative مدِش چطوریه ؟ این مُد میتونه بیش از access یا trunk باشه. یعنی میتونه Dynamic desirable و Dynamic auto باشه. این دوتا اون مُدهای Administrative یی هستن که تو بحثهای DTP میخوایم دربارش صحبت کنیم.
شما جدای اینکه چه Administrative مُدی رو انتخاب میکنید (access ، Dynamic auto ، Trunk و Dynamic desirable) در نهایت اینا توی جدول شما بعنوان Operational مُدِ شماست. یعنی یا access هستش یا trunk . حالا نکته اینجاست که اصولا پروتکل DTP بر مبنای مکانیزمهای پروپوزال و agreement کار میکنه. یعنی یکطرف به طرف مقابل پیشنهاد ترانک شدن میده و طرف مقابل پیشنهادش رو یا قبول میکنه یا قبول نمیکنه. ازین چهارتا Administrative مُدی که داریم یه مدی هستش به اسم access . مدِ access بهیچ عنوان پیشنهاد ترانک شدن رو قبول نمیکنه. یعنی اگه یک سمتِ لینکتون رو بزارید access و اونطرف هرچی میخواد باشه و لینک در نهایت access هستش. پس تنها مدی که بهیچ عنوان ترانک رو قبول نمیکنه مُدِ access هستش. سه تا مدِ دیگه (Dynamic desirable ، Trunk و Dynamic auto) اینا پروپوزال قبول میکنن. یعنی اگه کسی بهشون پیشنهاد بده بیا ترانک شیم قبول میکنن که لینک رو ترانک کنن.
حالا ازئنطرف هم (Trunk و Dynamic desirable) پیشنهاد دهنده هستن ولی Dynamic auto پیشنهاد دهنده نیست. یعنی اگه یکسره اینکم Dynamic auto باشه و سره دیگشم Dynamic auto باشه در نهایت لینک من access هستش چون هیچکسی اصلا پیشنهاد نمیده . ولی اگه یکسره لینک رو بزارید Dynamic auto و سره دیگشو بزارید (یا trunk یا Dynamic desirable) و چون این دوتا پیشنهاد دهنده هستن در نهایت لینک میتونه Trunk باشه.
حالا سوال اینه که چه فرقی بین Trunk و Dynamic desirable هستش ؟ هردو که پیشنهاد میدن و هردو هم پیشنهاد قبول میکنن.
در واقع میتونم بهتون بگم که شما میتونید DTP رو روی ترانکهاتون disable کنید. یعنی بعنوان مثال میتونید بیاید با دستور Switch(config-if)#switchport mode trunk بصورت دستی مدِ اینترفیستون رو بزارید روی trunk و بعد با دستور Switch(config-if)#switchport nonegotiate بیاید DTP رو disable کنید ولی Dynamic desirable بر مبنای negotiation داره کار میکنه. برای اینترفیس رو ببرید تو مدِ Dynamic به اینصورته :
Switch(config-if)#switchport mode dynamic {desirable | auto}
حالا بریم این قضیه رو توی سناریو بررسی کنیم و برای اینکه خوب متوجه بشید میخوام چهارتا حالت مختلف رو تست بگیریم طبق سناریوی بالا
حالت اول به اینصورته که یکسره لینک trunk هستش و طرف دیگش Dynamic auto و دیفالت اینترفیس های شما رو مدِ Dynamic auto هستن و وقتی هر دوسره لینک Dynamic auto باشه پیشنهاد نمیده و لینک ترانک نمیشه. حالا اگه بیایم یکطرف لینک رو trunk کنیم چی میشه؟ آیا Dynamic auto پیشنهاد قبول میکنه ؟ بله قبول میکنه. اینور چطور؟ آیا trunk پیشنهاد میده؟ بله میده.
در شکل بالا داره نشون میده که در SW1 اینترفیس fa0/1 مدش trunk هستش
در شکل بالا داره نشون میده که SW2 مدش روی Dynamic auto هستش و encapsulation نِش با negotiate شده 802.1q و status روهم trunking زده.
حالا روی SW1 و SW2 در اینترفیس fa0/1 هر دو سوئیچ بصورت دستی اینو سِت کن
SW1(config-if)#switchport mode trunk
SW1(config-if)#switchport nonegotiate
حالا روی SW1 میزنیم show int trunk و میبینیم که Mode رو on نشون میده یعنی trunk برامون on شده و روی SW2 هم اگه یه Show int trunk بگیریم به اینصورت نشون میده.
در شکل بالا میبینید که در SW2 در قسمت Encapsulation دیگه negotiate قطع شده (یعنی همون n-802.1q) و DTP رو اومدید disable کردید.
حالت دیگه اینه که یکسرِ لینک Dynamic desirable باشه و سمت دیگش auto باشه(بصورت دیفالت اینترفیسها رو مدِ auto قرار دارن)
اول میایم در SW3 اینترفیس fa0/1 رو تو مد Dynamic desirable قرار میدیم
حالا روی SW3 و SW4 یه show int trunk میگیریم و میبینیم که لینکمون از طریق negotiate ترانک شده.(اینترفیس fa0/1 از SW3 پیشنهاد دهنده و fa0/1 از SW4 پیشنهاد گیرنده)
حالا توی حالت دیگه میایم هردو سرِ لینک رو میزاریم رو مدِ Dynamic desirable
میایم اینترفیسهای fa0/1 در SW5 و SW6 رو در مد Dynamic desirable قرار میدیم و در هر دو سوئیچ show int trunk میگیریم و میبینیم که دوسرِ لینک با استفاده از negotiate اومدن لینک رو ترانک کردن (802.1q)
حالا در حالت دیگه یک سرِ لینک رو تو مد trunk قرار میدیم و سرِ دیگش رو تو مد access
میایم در اینترفیس fa0/1 سوئیچ SW7 مدش رو trunk قرار میدیم و بعد اینترفیس fa0/1 سوئیچ SW8 رو مدش رو access قرار میدیم
حالا تو هر کدوم از سوئیچ ها show int trunk میگیریم :
در SW7 مدِ این پورت on هستش و وضعیت این پورت trunking هستش.
در SW8 هیچ چیزی از وضعیت trunking بهمون نشون نداد چون باید دو سمتِ لینک ترانک باشه تا لینکمون ترانک بشه و چون یکسرِ لینک access بود دیگه فرقی نمیکنه که اونسمت چی باشه و اون لینک دیگه ترانک نمیشه
نویسنده
مهندس جواد هدایتی
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.