امیر سلطانی
امیر سلطانی
خواندن ۵ دقیقه·۱۰ ماه پیش

چطور DHCP سرور دست ساز درست کنیم؟

تو این نوشته میخوام در مورد این بنویسم شما چطور میتونید یه DHCP سرور راه بندازید. تو این سناریو ما یه سرور DHCP سرور راه میندازیم که به کلاینت هاش مقدار IP میده و بهشون assign میکنه اون آی پی رو. خب همین اول کار بگم که این نوشته نمیخواد در مورد این صحبت کنه که مفاهیم چی هستن وصرفا پیاده سازی میپردازه و اگه نمیدونید DHCP رو چرا ازش استفاده میکنن بهتره برید بخونید در موردش تو مرحله اول.

اول باید 4 تا مرحله اصلی assign کردن یه آی پی به یه سخت افزار رو برسی کنیم. مراحل به ترتیب این زیر مینویسمشون:

  1. DHCP Discover : تو این مرحله سخت افزاری که به یه شبکه جدید اضافه شد میاد و یه ریکوئست برادکست میکنه به شبکه تا بفهمه کیه سرور دی اچ سی پی
  2. DHCP Offer : سرور دی اچ سی پی یه آی پی رو در نظر میگیره و تو شبکه برادکست میکنه
  3. DHCP Request : کلاینت درخواست رزور آی پی را به سرور دی اچ سی پی ارسال میکند
  4. DHCP Pack: دی اچ سی پی سرور به کلاینت درخواست میفرسته و میگه که من آی پی رو برات رزرو کردم. برو حالشو ببر :)

خب بریم سراغ پیاده سازی DHCP Server . اول از همه روی سرور دستور زیر رو میزنیم :

yum install dhcp

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

بعد از نصبش باید اقدام کنیم به کانفیگش. فایلش رو باز میکنیم و میریم تو کارش:

vim /etc/dhcp/dhcpd.conf

و فایلش در نهایت باید اینطوری بشه :

خب خط به خط بررسی کنیم کانفیگی که زدیم واسش رو . خط اول مشخص میکنه که subnet مون چیه و netmask مون چیه و میگه برای این سابنت و نت مسک بیا کانفیگ زیر رو اعمال کن. تو خط دوم میگیم که یه آی پی بده بهش از رنج 10.10.1.200 تا 10.10.1.240 .در خط بعدی بهش میگیم که آی پی router یا به قول خودمون Gateway مون چنده. این آی پی برای ارتباط با سایر نتورک هایی که خارج از subnet هستن تعریف میشن.تو خط بعدی یه مفهوم خیلی مهم تعریف شده است . بیایین یکمی مفهوم broadcasting رو توضیح بدم بهتون.
بیایین یکمی اساسی تر بررسی کنیم داستانو. وقتی شما میخوایید یه آی پی رو پینگ کنید چه اتفاقی پشت پرده میوفته؟ واقعیت اینه که مهم ترین چیز اون آی پی نیست .بلکه اون مک آدرسه است. در کل ببینید تو شبکه مهم ترین چیز اون مک آدرسه هست نه آی پی. فرض کنید من میخوام آی پی 10.10.1.250 رو پینگ کنم یا بهش وصل شم. ما در حقیقت از اون آی پی برای پیدا کردن و رسیدن به مک آدرس سخت افزار مقصد استفاده میکنیم(آی پی لایه سه ای است و مک آدرس لایه دو ای).برای اینکه بفهمیم مک آدرس مربوط به اون آی پی چیه باید چیکار کنیم؟ باید به کل سیستم های عضو شبکه پیام بفرستیم و از هر کدوم جواب بگیریم و تا در نهایت بفهمیم مک آدرس این آی پی چیه. خب برای این کار یه پکت میسازیم و تو قسمت source ip آی پی خود سیستمی که میخواد پینگ کنه یه چیز دیگه رو قرارش میده . تو قسمت src mac آدرس مک سخت افزاری سیستم مبدا رو میزنیم (12 تا کاراکتره که دو تا دوتا تقسیم میشه یا سه تا سه تا . بستگی داره اون شرکتی ای که اون سخت افزار رو ساخته. ). برای پر کردن قسمت dst ip دو تا گزینه داریم:

  1. راه حل اول اینه که به دونه دونه سیستم های عضو شبکه پکت ارسال کنیم به صورت جداگانه و اونا با دیدن دوازده تا F ای که تو پکته هست بفهمن که ما داریم دنبال یکی میگردیم و آی پی و مک آدرس هاشونو برگردونن بهمون.
  2. راه حل دوم اینه که آدرس برادکست رو تو پکت بذاریم و بفرستیم بره. با این کار به تموم سیستم های عضو نتورک پکت ارسال میشه و اونا با دیدن دوازده تا F به ما جواب رو آی پی و مک آدرسشون رو برمیگردونن.

خب حالا فهمیدید برادکست چیکار میکنه پشت پرده و چقدر کارمون رو راحت میکنه. مورد های بعدی هم برای میزان تایمی که آی پی رزرو بمونه برای یه سخت افزار کانفیگ میکنه.

بعدش میریم و سرویس رو استارت میکنیم و استارتش میکنیم و بعد status ش رو میگیریم ببینیم اومده بالا یا نه.

فقط یه نکته ای که هست اینه که اون آدرس نتورکی که میدید رو باید حداقل روی یکی از interface های موجود رو سرورتون قابل route دهی باشه. به طور مثال سرورتون دارای آی پی 10.10.1.16 با netmask 255.255.255.0 , در این حالت شما میتونید برای مثال رنج آی پی 10.10.1.100 الی 10.10.1.150 رو به کلاینت هاتون بدید. خب تو مرحله قبلی اگه استارت موفقیت آمیز نبود دستور زیر رو بزنید و لاگ بخونید تا متوجه مشکل بشید . خیلی احتمالش بالاست که مشکل از خطای سینتکسی باشه یا خطای عدم همخوانی آدرس نتورکتون با آدرس اینترفیس هاتون.

journalctl -xe

خب الان همه چی سمت سرور اوکی شد. بریم سمت کلاینت یه کاریش بکنیم که بره از سرور DHCP مون آی پی بگیره. تنها کار اینه که تو قسمت کانفیگ های سیستم عامل کلاینت به اینترفیس این کانفیگ رو بدیم که هر موقع نیاز بود آی پی بگیره بره از سرور DHCP آی پی بگیره. تو قسمت onboot هم بهش میگیم که اگه سرور ریست شد اینترفیس بیاد بالا به صورت اتوماتیک.
کانفیگ رو از مسیر زیر باز کنید و مثل قسمت پایین ترش کانفیگش کنید:

/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 BOOTPROTO=dhcp TYPE=Ethernet ONBOOT=yes

خب بعدش میتونید با دستور ifconfig INTERFACE _NAME آی پی این کلاینت رو چک کنیم . و بعد نتورک سرور کلاینت رو ریستارت کنیم تا بره از سرور DHCP آی پی جدید بگیره. برای این کار دستور زیر رو میزنیم:

و الان باید با اجرای دستور ifconfig INTERFACE_NAME میبینیم که آدرس آی پی جدید مطابق با Range ای که تو کانفیگ های سرور DHCP داده بودیم به سرورمون Assign شده است.

حالا میریم تو سرور DHCP و میریم به مسیر زیر تا ببینیم آی پی هایی که Assign شدن به سخت افزار ها کدوما هستن.

همونطور که میبینید به مک آدرس fa:16:3e.... مقدار آی پی 10.10.1.200 Assign شده و همه چی عین گل و بلبل سر جای خودش کار میکنه. تا درودی دیگر بدرود ؛)


DHCPسرورlinux
من یه جونیور دواپسم که دنبال چالش های جدید و یادگیری همه چیزم
شاید از این پست‌ها خوشتان بیاید