DHCP Relay Agent چیست ؟! چاپ نامه الکترونیک
امتیاز کاربر: / 13
بدخوب 
مقالات - شبکه
نوشته شده توسط محمد مهدی حاجی اسمعیلی   
شنبه ۲۷ تیر ۱۳۸۸ ساعت ۲۱:۱۰

DHCP Relay Agent چیست ؟!


شاید از بین پیاده سازی سرویسهای مختلف شبکه بشه گفت که پیاده سازی DHCP Server از بقیه ی اونها آسانتر به نظر میرسه. اغلب ما عادت داریم که به کمک Wizard بسیار راحت و کارآمد Microsoft اقدام به پیاده سازی یک DHCP Server بکنیم و بعدش با درست کردن یک Scope درست و فعال کردن اون همه چیز تموم میشه : هر کامپیوتری که به شبکه ما وصل بشه اقدام به گرفتن آدرس تعریف شده درون Scope ما میکنه ! ولی یه جاهایی هم هست که ممکنه مشکلات عدیده ایی در سر راه ما قرار بگیرن و ما رو مجبور به پیاده سازی راههایی بکنند که با وجود کاربردی بودنشون، ممکنه یه کمی گرون برای ما تموم بشن.


این سناریوی زیر رو در نظر بگیرین...در سناریوی زیر ما اقدام به ایجاد دو  Subnet جدا برای شبکه مون کردیم که در بازه ی آدرسهای Private معروف یعنی 172.16.x.x/16 و 192.168.0.x/24 قرار دارن. ما میدونیم که درخواستهای مربوط به DHCP که مربوط به 4 حالت اصلی DISCOVER , OFFER , REQUEST , ACK/NACK هستند همگی به دلایل کاملا فنی و تکنیکی دارای نوع Broadcast هستند.


مشکل اینجاست که یک Router به هیچ وجه درخواستهای Broadcast رو از خودش عبور نمیده و همونطوری که من عادت دارم بگم، Router اسم دیگه ش Broadcast Killer هستش ! پس اگر کامپیوتری در یک Subnet باشه که درش یک DHCP Server نیست و در Subnet کناریش DHCP Server باشه، و با فریاد زدن ( همون Broadcast) اعلام کنه که "من یه آدرس اتوماتیک میخوام"، این فریادش وقتی که به روتر میرسه، همونجا سرش زیر آب میره !


پس این کامپیوتر در این سناریو هیچوقت نمیتونه یک آدرس اتوماتیک بگیره.یک ادمین شبکه ی چیز (!) میاد و اولین حالتی که به ذهنش میرسه این میشه که اقدام به پیاده سازی DHCP Server های مجزا برای هر Subnet بکنه بدین معنی که مثلا اگر 5 تا Subnet دارین پس باید 5 تا DHCP Server مجزا هم روی هرکدوم نصب کنین...این ایده میشه تصویر زیر :

 

dhcp relay agent scenario 1

خب ! مشکل این ایده چیه ؟!


این ایده با اینکه واقعا از بعضی دیدگاهها احمقانه به نظر میرسه، حتی اگر هم بخواین پیاده سازیش بکنین توی ایران میتونین اینکار مزخرف رو انجام بدین ! منظورم چیه ؟! منظورم اینه که نسخه های Server سیستم عامل ویندوز که مفت نیستند تا هر وقتی حال کردین برین و زرتی در هر شبکه ایی نصبشون کنین و تموم بشه بره پی کارش !


باید اقتصادی فکر کنین...در این سناریو یک کامپیوتر بجای اینکه میتونه یک Client باشه و اقدام به سرویس دهی به کارکنان شرکت بکنه باید نقش یک DHCP Server رو به عهده بگیره که نه تنها داریم منابع داخلیمون رو از دست میدیم بلکه باید دوباره پول License و پول سیستم عامل بدیم و هزار تا بدبختی دیگه !


اینجاست که به بحث اصلیمون میرسیم : ما در سناریومون چندین Subnet داریم که سیستمهای درون آنها نیاز به گرفتن IP دارند و از طرفی نمیخوایم در هر زیرشبکه مون یه Server فقط برای IP دادن راه بندازیم...در عین حال ما میدونیم که درخواستهای DHCP از نوع "فریاد" و یا همون Broadcast هستش...

پس میایم یه کار میکنیم : اگه یه کامپیوتر در هر Subnet وجود داشته باشه که به هنگام شنیدن "فریاد" های مخصوص به درخواست IP این درخواست رو بگیره و نوعش رو تبدیل به "صحبت مستقیم" و یا همون Unicast بکنه و اونوقت این درخواست رو به روتر بفرسته، دیگه روتر نمیتونه جلوی این درخواست رو به بهانه ی Broadcast بودن بگیره  !


و اینطوری مفهوم DHCP Relay Agent به وجود میاد. Relay Agent یک دستگاه هستش که درون هر زیر شبکه مستقر میشه و درخواستهای دستگاههای شبکه ی خودش رو میگیره و با تبدیل نوع اونها از Broadcast به Unicast و فرستادن درخواست یک کامپیوتر دیگه به DHCP Server و برگردوندن جواب به اون کامپیوتر در واقع تبدیل به یک نوع وکیل و یا Proxy برای ارسال درخواستهای DHCP میشه.

dhcp relay agent scenario 2


مراحل رو اینطوری دنبال میکنیم :


1.درخواست Discover از یک کامپیوتر به صورت Broadcast برای شبکه ارسال میشه.


2.این درخواست هم به روتر میرسه و هم به کامپیوترهای دیگر شبکه که در اینحالت روتر درخواست رو به خاطر اینکه از نوع Broadcast هستش عبور نمیده. از طرف دیگر سیستمی که Relay Agent هستش، این درخواست رو مثل بقیه ی سیستمهای دیگر درون شبکه میشنوه.


3.این دستگاه که میدونه DHCP Server اصلی در کجا مستقر هستش، درخواست رو از نوع Broadcast به نوع Unicast تغییر میده و سپس خودش درخواست کامپیوتری که IP میخواست رو به DHCP Server ارسال میکنه.


4.درخواست فوق به روتر میرسه ولی چون Unicast هستش اجازه ی عبور پیدا میکنه.


5.جواب از طرف DHCP Server  اصلی میاد و یک سری درخواستها و جوابها بین این دو سیستم شروع میشه که در نهایت منجر به گرفتن یک IP از طرف DHCP Server به DHCP Relay Agent میشه.


6.حالا Relay Agent این درخواست رو به کامپیوتر درخواست کننده برمیگردونه.


7.کامپیوتر درخواست کننده بدون اینکه متوجه چیزی شده باشه، جواب رو دریافت میکنه و اصلا نمیفهمه که این جواب نه از طرف DHCP Server بلکه از طرف Relay Agent براش فرستاده شده.


اینطوری خیلی باحال بود نه ؟! ولی بازم مشکل نصب یک سیستم عامل Server درون هر زیر شبکه برطرف نمیشه بلکه ما فقط با اینکار اومدیم و نیاز به نصب چندین DHCP Server رو از بین بردیم وگرنه باز هم باید Windows Server نصب کنیم و بعدشم تازه باید RRAS رو روشون نصب کنیم !

اینجاست که به بهترین و آخرین راه میرسیم : در اینحالت ما میایم و Router مون رو تبدیل به DHCP Relay Agent میکنیم و اتفاقی که میفته اینه که هر درخواستی که به صورت Broadcast ارسال میشه، وقتی که به روتر میرسه، این دستگاه متوجه این میشه که این درخواست با اینکه از نوع Broadcast هستش ولی برای دریافت IP فرستاده شده و بهمین جهت درخواست رو میگیره و خودش تبدیلش میکنه به Unicast و سپس ارسالش میکنه به DHCP Server یی که براش تعیین کردیم کجاست. در اینحالت نیازی به نصب سیستم عامل سرور درون هر زیر شبکه ایی نیست و تنها جایی که باید Relay Agent فعال شود بر روی روتر هستش.

dhcp relay agent scenario 3

 

از این منظر هم باید اشاره کرد که ما هم روتر سخت افزاری داریم (Cisco Routers) و هم روتر نرم افزاری که تمرکز ما در این بحث روترهای نرم افزاری هستند که سیستم عاملهای سرور به خوبی از عهده این کار بر میان ! ما برای پیاده سازی یک روتر نرم افزاری کافیه که یک Windows Server رو نصب کرده و سپس RRAS رو بر روی اون Config کنیم تا هم بعنوان Lan Router عمل کند و هم به عنوان Relay Agent و بدینصورت با کمترین هزینه ها و با دوری کردن از خرید Router های خفن گرون سخت افزاری، تونستیم یک زیرساخت DHCP برای شبکه مون با چندین Subnet پیاده کنیم.


توضیح در مورد چگونگی پیاده سازی نرم افزاری Relay Agent در Windows Server

 

 

دانلود مقاله ی بالا به صورت نسخه ی PDF : یک DHCP Relay Agent چیست ؟!

 

 

 

نظرات  

 
0 #11 هانا ۱۳۹۲-۱۰-۰۹ ۱۹:۰۳
سلام
بابت مطلب واقعا مفیدی که گذاشتید ممنونم.
به نظر شما DHCPای وجود داره که با unicastکار کنه و دیگه با broadcast کار نکنه؟
با اصلا DHCPای وجود داره که روی لایه IP پیاده سازی شده باشه؟
ممنونم
نقل قول
 
 
0 #10 villager ۱۳۹۲-۰۷-۲۴ ۱۲:۰۵
خیلی خوب بود
نقل قول
 
 
0 #9 kamran ۱۳۹۲-۰۲-۲۷ ۲۰:۵۲
سلام
مطلب واقعا عالی بود .لطفا ip helper را واسم توضیح بدید و نحوه ی پیاده سازی اون در paket tracer را واسم توضیح بدید ممنون
نقل قول
 
 
0 #8 kamran ۱۳۹۱-۰۵-۳۱ ۰۰:۰۱
مرسی از زحمات و مطالب دلچسب و خوبتون .امیدوارم این روند ادامه دار باشه.
امیدوارم همه مثل شما علم رو برای همه بخوان
نقل قول
 
 
0 #7 شمس ۱۳۹۱-۰۳-۱۳ ۲۳:۳۰
بسیار بسیار عالی....ای کاش همه شیوه بیانی شما رو داشتند...
نقل قول
 
 
0 #6 علی ۱۳۹۰-۱۱-۱۵ ۰۹:۳۹
بسیار عالی بود

با تشکر
نقل قول
 
 
0 #5 س.م.ف ۱۳۹۰-۰۶-۰۶ ۰۸:۲۴
سلام

شما خیلی مطالب را خوب توضیح می دهید ، با تشکر
نقل قول
 
 
0 #4 narges ۱۳۹۰-۰۳-۱۹ ۱۱:۰۹
مرسی،مثل همیشه عالی بود :-)
نقل قول
 
 
0 #3 farzan ۱۳۸۹-۰۸-۲۱ ۱۱:۲۲
سلام. نوشته ها و مقالاتتان عالی هستند . اگر مطالب سایت را افزایش دهید عالی می شود . با سپاس فراوان از زحمات شما
نقل قول
 
 
0 #2 مهدي ۱۳۸۹-۰۴-۱۶ ۱۱:۵۲
خيلي جالب و جامع و دلچسب و قابل فهم بود نخ سوزن اون قسمت "زرت" خيلي چسبيد. دمت گرم. لري نوشته بودي فهميديم كي كيو مورد عنايت قرار داد :cheer:
نقل قول
 

ارسال نظر


کد امنیتی
بروزرسانی

مقالات سر راهی !

دسترسی به یک کامپیوتر از طریق اینترنت

اتصال به یک کامپیوتر از طریق اینترنت بدون داشتن Public IP

از اونجاییکه سوال شما سوال معروفی هستش و خیلیها به دنبال جواب اون هستن (و خب ! بهش نمیرسن !) بنده سعی میکنم یک جواب کامل و علمی که برای همه هم مفید باشه بهش بدم :

دسترسی به یک کامپیوتر از هر شبکه ایی نیازمند داشتن IP اون کامپیوتر در شبکه ی فوق هستش...در شبکه های غیر جهانی مثل شبکه های LAN خانگی و یا حتی شبکه ایی که دوستان از یک ISP ازش اینترنت میگیرن، آدرس منطقی (همون آدرس IP) که به شما اختصاص داده میشه در 99 درصد موارد جزو سه بازه ی آدرسی هستش که ارگان IANA به طور بین المللی به عنوان "آدرسهای اختصاصی" تعیین کرده...

 

دسترسی به یک کامپیوتر از طریق اینترنت

تبلیغات تصویری

آگهی
آگهی