تبلیغات
ل . ی . ن . و . ک . س ..::.. Linux - DHCP در سرور لینوکس
ل . ی . ن . و . ک . س ..::.. Linux
سرویس DHCP(Dynamic Host Configuration Protocol) بصورت خودکار تمامی اطلاعات مربوط به TCP/IP از قبیل IP آدرس , DNS سرور , Gateway و بسیار گزینه های دیگر را در اختیار کلاینت ها قرار می دهد که پرکاربردترین آنها مورد اشاره واقع شد.

عملیات مربوط به تخصیص آدرس IP به کلاینت ها در چندین مرحله صورت می پذیرد که در اینجا به آن می پردازیم :
1 - کلاینت ها در زمان بوت شدن سیستم یا شروع مجدد سرویس یا با استفاده از دستور ipconfig /renew در ویندوز شروع به پخش پیغام هایی به نام DHCP Discover بصورت همگانی (broadcast) می کنند و در این پیغام ها درخواست IP خود را برای DHCP سرور های در محل اعلام می کنند.
2 - سروهای DHCP که این پیغام را دریافت می کنند در جوب پیغامی بنام DHCP Offer برای کلاینت ارسال می کنند و IP مورد نظر خود را به کلاینت پیشنهاد می دهند.
3 - کلاینت که ممکن است از چندین سرور پیشنهاد IP داشته باشد معمولا به سریعترین پیشنهاد با پیغامی بنام DHCP Request درخواست IP می کند.کلاینت این پیغام را بصورت همگانی ارسال می کند که برای سرور مورد نظر نشان دهنده قبول پیشنهاد و برای بقیه نشان دهنده عدم قبول می باشد.
4-سرور DHCP هم با یک پیغام DHCP ACK با این درخواست موافقت می کند.
شکل زیر مراحل بالا را بخوبی نشان می دهد:
pic1

برای جلوگیری از اینکه دو سیستم همزمان از یک آدرس استفاده کنند میتوان DHCP سرور را تنظیم کرد تا قبل از اختصاص IP به کلاینت آن را ping کند تا مشکلی بوجود نیاید.همچنین کلاینت با استفاده از ARP این عمل را انجام می دهد.

سرور DHCP این تنظیمات را برای دوره زمانی مشخصی در اختیار کلاینت قرار می دهد که اصطلاحا lease time گفته می شود.کلاینت وقتی به 50% از زمان باقی مانده رسید از سرور تقاضای تمدید زمان اجاره را می کند که در این مرحله پیغام ها بصورت Unicast رد و بدل می شود.
اگر سرور تا 87.5% از زمان باقی مانده به کلاینت پاسخ ندهد , کلاینت شروع به فرستادن پیغام های DHCP Request بصورت همگانی می کند تا سرورهای دیگر هم بتوانند به او پاسخ دهند.
pic2



گاها در بعضی شبکه ها DHCP سرورهای قلابی یا Rogue DHCP سرورها به کلاینت ها آدرس اختصاص می دهند که در آموزش زیر کاملا به آن می پردازیم.
پیدا کردن DHCP سرورهای قلابی یا Rogue DHCP servers در شبکه



اگر DHCP سرور و کلاینت ها در دو شبکه مجزا از هم قرار داشته باشند میبایست از یک Relay Agent استفاده کرد تا درخواست ها را از طرف کلاینت ها برای DHCP سرور بازپخش کند و سپس جواب را از طرف DHCP به کلاینت ها منتقل کند.
DHCP Relay Agent (dhcrelay) درخواست هایی که از سابنت بدون DHCP سرور میآید را به DHCP سرور های سابنتهای دیگر که ما مشخص کرده ایم بازپخش میکند.
دلیل استفاده از DHCP Relay Agent اینست که روتر Broadcast را از خود عبور نمیدهد و DHCP clientها برای گرفتن IP از Broadcast استفاده میکنند پس برای حل این مشکل ما از یک DHCP Relay Agent استفاده میکنیم که بدین ترتیب عمل میکند :
DHCP Relay Agent پیغام هایی که به صورت Broadcast ارسال میشود و تقاضای IP میکنند را جمع آوری میکند و سپس خود بصورت Unicast با DHCP سرور درخواست مورد نظر را مطرح میکند و جواب گرفته شده را برای client ارسال میکند.در واقع DHCP Relay Agent نقش میانجی را ایفا میکند.

در آموزش های زیر DHCP relay agnet کاملا توضیح داده شده است :
آموزش تصویری تنظیم DHCP Relay Agent در Debian
آموزش تصویری تنظیم DHCP Relay Agent در ویندوز سرور 2003


برای اینکه کلاینت های لینوکسی را برای استفاده از DHCP تنظیم کرد میتوانید از آموزش های زیر بهره ببرید:
تنظیمات اولیه شبکه در دبین و آبانتو و توزیع ها مبتنی بر آنها
تنظیمات اولیه شبکه در Redhat , Fedora , CentOS و توزیع های مبتنی بر آنها


بعد از فهمیدن اینکه DHCP چیست و چه انتظاری از آن داریم به سراغ نصب و تنظیم آن در لینوکس می رویم.

نصب در لینوکس های بر پایه دبین :
apt-get  install  dhcp3-server
نصب در لینوکس های بر پایه ردهت :
yum install dhcp

محل قرار گیری فایل کانفیگ :
در دبین :
etc/dhcp3/dhcpd.conf/
در ردهت :
etc/dhcpd.conf/

برای آغاز بکار کردن سرویس یا شروع مجدد در هر دو نمونه توزیع بدین شکل عمل می کنیم :
etc/init.d/dhcpd   start/restart/

تنظیم سرویس برای اینکه هنگام بوت شدن سیستم اجرا شود :
در ردهت :
chkconfig  dhcpd  on
در دبین بصورت خودکار تنظیم می شود.

تنظیم اینکه DHCP سرور به کدام اینترفیس برای دریافت درخواست ها گوش دهد :
در دبین :
nano  /etc/default/dhcp3-server
INTERFACES="eth1"
در ردهت :
nano  /etc/sysconfig/dhcpd
DHCPDARGS=eth0

در دبین فایل کانفیگ بصورت پیش فرض دربردارنده یک سری از تنظیمات می باشد که با تغییر آنها با نیازهای خودتان می توانید سرویس را راه اندازی کنید.
در ردهت برای استفاده از فایل کانفیگ پیش فرض بدین ترتیب عمل می کنیم :
cp  /usr/share/doc/dhcp-<version>/dhcpd.conf.sample  /etc/dhcpd.conf

یک نمونه فایل کانفیگ ساده و بهمراه Optionهای پر کاربرد و مهم بهمراه توضیحات :
ddns-update-style none;    1
option domain-name "persianadmins.com";    2
option domain-name-servers 192.168.0.100, 1992.168.0.101;    3
default-lease-time 86400;    4
max-lease-time 604800;    5
authoritative;    6

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.200 192.168.0.250;    7
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;    8
option time-offset +12600; # Iran     9
option ntp-servers 192.168.0.2;    10
}
host reza {    11
hardware ethernet 00:A0:78:8E:9E:AA;     12
fixed-address 192.168.1.4;    14
}
1-این گزینه به DHCP می گوید که آیا IP های کلاینت ها را در DNS سرور بروز رسانی کند یا خیر.
2-این گزینه دامنه اختصاص یافته به کلاینت ها را مشخص می کند.
3-با استفاده از این گزینه DNS سرور ها را برای کلاینت تنظیم می کنیم.
4-مقدار زمان پیش فرض اجاره تنظیمات
5-حداکثر زمان اجاره
6-اگر این گزینه رو بکار نبریم بدین معناست که اگر کلاینت برای آدرسی درخواست کرد که سرور هیچ چیز در مورد آن نمی داند و همچنین برای آن شبکه اشتباه شمرده می شود , پیغامی از نوع DHCPNAK برای کلاینت نمی فرستد که استفاده از این IP را متوقف کند.
7-محدوده IP هایی که می خواهیم به کلاینت ها اختصاص دهیم را مشخص می کنیم.
8-تنظیم gateway
9-این گزینه time zone را مشخص می کند و برحسب ثانیه و بر مبنای ساعت مرجع GMT محاسبه می شود.
10-مشخص کردن یک ntp سرور برای هماهنگ سازی ساعت کامپیوتر های موجود در شبکه.
11-با استفاده از host می توانیم یک آدرس را برای کلاینت خاص رزرو کنیم.
12-MAC آدرس کلاینتی که آدرس برای آن رزرو شده است.
13-آدرس IP که برای کلاینت رزرو شده و نیابد در رنج IP هایی که تنظیم کرده ایم وجود داشته باشد.


Option هایی که باید به کلاینت ها اعمال شوند را می توان در چند سطح تنظیم کرد.وجود سطح های مختلف برای تنظیم Optionها باعث می شود تا قدرت مدیریتی راحت تر و بهتری برای تنظیم DHCP سرور در اختیار مدیر شبکه قرار گیرد.
این سطوح عبارت اند از :
1-Host
در DHCP میتوان برای کلاینت ها بر اساس آدرس سخت افزاری (MAC) آدرس IP رزرو کرد تا اگر درخواست آدرس از طرف این کلاینت ها ارسال شد حتما این IP خاص به آن اختصاص داده شود.
تنظیمات مربوط به این کلاینت ها توسط Host انجام می شود.
2-Group
تشکیل شده از چندین Host .این سطح سبب سهل شدن تنظیمات Option ها برای چندین Host می شود بطوریکه تمام تنظیمات یکبار نوشته می شود و اگر لازم شد می توان بواسطه سطح Host این تنظیمات را غیر فعال کرد.
3-Subnet
تنظیمات این سطح به رنج IP که در آن مشخص شده اعمال می گردد.
4- Shared-network
در برگیرنده چندین Subnet بطوریکه اگر Subnet ها دارای تنظیمات مشابهی هستند از این سطح می توان بهره برد و در صورت لزوم بعضی optionها را توسط سطح Subnet غیرفعال کرد.
5-Global
همانطور که از اسم آن آشکار است , Optionهایی که در این سطح تنظیم شود به تمام سطوح گفته شده در بالا اعمال خواهد شد.


این سطح ها را در 2 بخش باید مورد بررسی قرار داد :

سطوح اعمال تنظیمات برای زمانی که کلاینت از رنچ آدرس تعیین شده IP می گیرد :
1-Global Declaration
2-Shared-network Declaration
3-Subnet Declaration
Subnet----override----->Shared-network----override----->Global

سطوح اعمال تنظیمات برای زمانی که آدرس IP برای کلاینت از قبل رزرو شده است :
1-Global Declaration
2-Group Declaration
3-Host Declaration
Host----override----->Group----override----->Global

Optionهایی که در سطوح پایین تر تنظیم شده اند بر دیگر تنظیمات اولویت پیدا خواهند کرد.


Global Declaration :
default-lease-time 600;
max-lease-time 7200;
option smtp-server smtp.persianadmins.com;
option pop-server pop3.persianadmins.com;
option nntp-server news.persianadmins.com;
option routers 192.168.0.254;
option domain-name-servers 192.168.0.1, 192.168.0.2;
option domain-name "persianadmins.com";

Shared-network Declaration :
shared-network name {
option domain-name "persianadmins.ir";
option domain-name-servers ns1.persianadmins.ir, ns2.persianadmins.ir;
option routers 192.168.1.254;

subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.1 192.168.10.31;
}

subnet 192.168.1.0 netmask 255.255.255.0 {
option domain-name "admins.ir";
range 192.168.1.33 192.168.1.63;
}
}

Subnet Declaration :
subnet 192.168.2.0 netmask 255.255.255.0 {
option routers 192.168.2.254;
option subnet-mask 255.255.255.0;
option domain-name "persianadmins.com";
option domain-name-servers 192.168.2.1;
option time-offset +12600; # Iran

range 192.168.2.10 192.168.2.100;
}


Group Declaration :

group {
option routers 192.168.3.254;
option subnet-mask 255.255.255.0;
option domain-name "behroozi.info";
option domain-name-servers 192.168.3.1;
option time-offset +12600; # Iran

host reza {
option host-name "reza.behroozi.info";
hardware ethernet 00:A0:78:8E:9E:AA;
fixed-address 192.168.1.4;
}

host behroozi {
option domain-name "4so.ir";
option host-name "behroozi.4so.ir";
hardware ethernet 00:A1:DD:74:C3:F2;
fixed-address 192.168.1.6;
}
}

Host Declaration :

host shiraz {
option domain-name "charso.ir";
option host-name "shiraz.charso.ir";
hardware ethernet 00:C0:78:9E:9F:BB;
fixed-address 192.168.1.5;
}


تمامی IP ها و تنظیماتی که به کلاینت ها اختصاص داده می شود در فایلی به نام dhcpd.leases واقع شده در دایرکتوری var/lib/dhcp/ ذخیره می شود.نمونه این فایل :

cat /var/lib/dhcp3/dhcpd.leases

# All times in this file are in UTC (GMT), not your local timezone. This is
# not a bug, so please don't ask about it. There is no portable way to
# store leases in the local timezone, so please don't request this as a
# feature. If this is inconvenient or confusing to you, we sincerely
# apologize. Seriously, though - don't ask.
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-V3.0.4

lease 192.168.0.131 {
starts 1 2007/07/16 00:57:43;
ends 1 2007/07/16 12:57:43;
tstp 1 2007/07/16 12:57:43;
binding state free;
hardware ethernet 00:0c:29:49:b9:30;
}
lease 192.168.0.130 {
starts 2 2007/07/24 02:13:14;
ends 2 2007/07/24 14:13:14;
binding state active;
next binding state free;
hardware ethernet 00:50:56:c0:00:01;
uid "\001\000PV\300\000\001";
client-hostname "reza1";
}


تمامی مراحلی که dhcp سرور به کلاینت IP می دهد در syslog ثبت می شود :

Jul 15 20:57:42 debian dhcpd: DHCPDISCOVER from 00:0c:29:49:b9:30 via eth1
Jul 15 20:57:43 debian dhcpd: DHCPOFFER on 192.168.0.131 to 00:0c:29:49:b9:30 via eth1
Jul 15 20:57:43 debian dhcpd: DHCPREQUEST for 192.168.0.131 (192.168.0.21) from 00:0c:29:49:b9:30 via eth1
Jul 15 20:57:43 debian dhcpd: DHCPACK on 192.168.0.131 to 00:0c:29:49:b9:30 via eth1

از این ویژگی می توانید برای پیدا کردن مشکلات احتمالی استفاده کنید , همچنین تمامی خطاهایی که در طول شروع سرویس روی می دهد در syslog ثبت می شود.

All Rights Reserved 2005-2006 © http://linoox.mihanblog.com