מבוא

מי רוצה לקרוא את המדריך?

כל מי שעובד עם רשת מקומית, עשוי לרצות להשתמש ב dhcp.
ככל שרשת המחשבים גדולה יותר, וככול שהיא מורכבת יותר, השימוש ב dhcp הופך להגיוני יותר.

זכויות יוצרים

כל הזכויות שמורות © 2002 לנדב מבור
הרשות נתונה בזאת להעתיק, להפיץ ו/או לשנות את המסמך הזה, תחת תנאי רשיון ה-GFDL גרסה 1.1 או כל גרסה מאוחרת יותר שתפורסם ע”י המוסד לתוכנה חופשית.
השימוש במדריך מותר לשימוש לא מסחרי. העתקתו / הפצתו מחדש, מותרת בצירוף זכויות היוצרים ובהתאם למפורט ברשיון ה GFDL.

רישיון ה-GFDL זמין בכתובת http://www.gnu.org/copyleft/fdl.html

השימוש במדריך הוא על אחריות המשתמש

תודות

ברצוני להודות לברק בלוך על הסיוע בהעלאת המדריך לאתר.
המדריך נכנתב על ידי nadav לשימוש אתר הפינגווין.

התקנה והגדרת ה DHCP

מה זה dhcp בכלל?

שרתי ה DHCP הם שרתים שנועדו לבזר מידע לגבי האופן של פעולת הרשת ללקחותיה בצורה דינמית, ובמה דברים אמורים?
ראשית, ראשי התיבות של המונח הם: DHCDynamic Host Configuration Protocol.
תחנה שמוגדרת לעבוד מול DHCP “תבקש” בהפעלתה (או בהפעלה ידנית של קליינט ה-DHCP) כל מידע רלוונטי לגבי הרשת כגון: ה IP של התחנה (שרת ה DHCP יקצה IP לתחנה) , שרתי ה DNS של הרשת וכו'…
אם יש לנו רשת עם 10 מחשבים (שלא לדבר על רשת עם מאות מחשבים) לא צריך להגדיר בכל תחנה ידנית את הנתונים השונים.
חשוב לא פחות - אם בשלב כלשהו משתנה נתון כלשהו (למשל שרת ה DNS עובר לכתובת אחרת) לא צריך לעדכן ידנית כל תחנה - כל העדכונים יעשו אוטומטית על ידי השירות.

בגדול, זה באמת שרת פשוט לתצורה ושימוש, ובד”כ קובץ הקונפיגורציה יהיה קטן מאוד (מספר שורות בודדות).
אבל… כמו תמיד, גם כאן, אפשר להגיע לתחכום רב יחסית (למשל שילוב עם מערכת ה DNS), וכבר ראיתי קבצים די גדולים - 300 שורות וצפונה….

התקנת השירות במערכת

הדרך הקלה להתקנת השרת, במערכות מהסוג של ראד האט הוא שימוש ב rpm.
כאן אני אסביר כיצד לבצע זאת בראד האט, אבל כל משתמש יכול ליישם את זה (עם ההתאמות הדרושות) בלי שום בעיה גם בהפצות אחרות כמובן.

השירות מורכב משתי חבילות:

  1. חבילת השרת.
  2. חבילת הלקוח.

אנחנו נתקין על השרת את שני החבילות ועל התחנות רק את הלקוח. הערה: בד”כ חבילת הלקוח (ובתצורות התקנה של שרת גם חבילת השרת) מותקנת כבר במערכת. אפשר לבדוק אם החבילות מותקנות ככה:

[nadav@mavor dhcp]$ rpm -qa | grep dhcp
dhcpcd-1.3.22pl1-7
dhcp-2.0pl5-8
[nadav@mavor dhcp]$

בדוגמא הנ”ל שני החבילות מותקנות. אם נרצה להתקין אותן, במידה והן לא מותקנות:

% mount /dev/cdrom
% cd /mnt/cdrom/RedHat/RPMS
% rpm -ivh dhcp*.rpm

בדוגמא הנ”ל ביצענו התקנה של כל החבילות שמתחילות ב dhcp וזה יכלול גם את השרת וגם את הלקוח.

הגדרת תחנות העבודה (הקליינטים)

הגדרות תחנות לינוקס את תחנות העבודה שמריצות לינוקס מגדירים בעזרת הכלי netconfig (יש מערכות שבהם הוא נקרא netcfg), או כל כלי אחר שמסופק על ידי ההפצה להגדרת הרשת. כשמדובר ב netconfig נקבל מסך (טקסטואלי) מאוד פשוט שבו נצטרך רק לסמן כוכבית בשורה של Use dynamic IP configuration (BOOTP/DHCP) ולאשר. מעתה, עם כל איתחול המערכת תשלוף את הנתונים ישירות מהשרת DHCP.

למי שרוצה, תמיד אפשר לקבוע ידנית את הנתונים. בראד האט, בהנחה וכרטיס הרשת הוא eth0 ניתן לערוך ידנית את הקובץ: /etc/sysconfig/network-scripts/ifcfg-eth0

באותו קובץ יש לדאוג שתהיה השורה:

BOOTPROTO=dhcp

בכל מקרה, במקרה הזה, שימוש ב netconfig באמת יתן את התוצאות הרצויות ועריכה ידנית זה באמת אינו דבר הכרחי. הגדרת תחנות שמריצות חלונות גם כאן ההגדרות די קלות: במידה הפרוטוקול TCP/IP מותקן , בברירת מחדל הוא מוגדר לעבוד על DHCP. אם הגדרנו לתחנה בעבר IP אפשר בקלות להכנס להגדרות הרשת (זה תלוי בגרסאת החלונות המדוייקת) תחת לוח הבקרה ולהגדיר שימוש ב DHCP בחלק הדן בהגדרות TCP/IP .

הגדרת השרת

כמו (כמעט) כל שירות במערכת, קובץ ההגדרות יושב תחת הספריה etc, במקרה שלנו קובץ הקונפיגורציה הוא: /etc/dhcpd.conf

להלן דוגמא לקובץ בסיסי שניתן ליצור:

subnet 192.168.0.0 netmask 255.255.255.0 {
# default gateway
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;

range dynamic-bootp 192.168.0.16 192.168.0.253;
default-lease-time 21600;
max-lease-time 43200;
}

הקובץ הנ”ל יחלק IP בתחום 192.168.0.16 עד 192.168.0.253 למחשבים השונים כשה subnet-mask הוא 255.255.255.0 כלומר רשת CLASS C . כדי לבדוק שהקובץ תקין (ולהרצת השרץ) ניתן להריץ את הפקודה הבאה:

/usr/sbin/dhcpd -d -f

אם הקובץ תקין (ואין סיבה שלא זה יהיה המצב) השירות יעלה כמובן ומה שנותר זה רק לאתחל את ממשק הרשת בתחנות העבודה כדי להכניס את השינויים מיידית).

כדי שהשרת יעלה עם האתחול של המערכת (במערכת ראד האט) :

chkconfig --add dhcpd
chkconfig dhcpd on

אפשר כמובן להשתמש גם בכלי ntsysv (שבו מסמנים את הכוכבית ליד השירות של dhcp כדי לקבע אותו בעליה הבאה של המערכת באותו מצב ריצה נוכחי).

קצת על מבנה הקובץ: כמו שאפשר לראות הקובץ דומה משהו לקובץ בשפת C - כל מקטע מוקף בסוגריים מסולסלים (בדומה לפוקנציות בשפת C ) וכן בסיומן של השורות מופיע התו נקודה פסיק ( התו `;` ) .

נחזור לדוגמא של הקובץ בתחילת סעיף זה. השורה:

option routers 192.168.0.1;

מגדירה ללקוחות איזה מחשב ישמש עבורן כראוטר.

השורה

option subnet-mask 255.255.255.0;

הגדירה שה subnet-mask של הרשת הוא 255.255.255.0 .

השורה:

range dynamic-bootp 192.168.0.16 192.168.0.253;

מגדירה את טווח הכתובות המוקצות לקליינטים של שרת ה DHCP .

השורות הבאות ידרשו הסבר קצת יותר נרחב:

default-lease-time 21600;
max-lease-time 43200;

בגלל ששירות ה DHCP הוא דינמי, התחנות צריכות לבדוק (כל פרק זמן מסויים) אם יש שינוי כלשהו בהגדרות הרשת מול השרת (למשל האם השתנו ההגדרות של שרתי ה DNS ) . השורה הראשונה ( default-lease-time ) קובעת את פרק הזמן שבו הקליינטים אמורים לשמור על ההגדרות שהם קיבלו מהשרת (למעשה כל כמה זמן הם יפנו לשרת ה DHCP ויבדקו האם יש שינוי הגדרות של הרשת) ואילו השורה השניה (max-lease-time) מגדירה לתחנות העבודה מהו פרק הזמן המקסימלי שיכול לעבור לפני שהנתונים שהתקבלו מהשרת נחשבים ללא נכונים ויש צורך לבקש אותם מחדש.

אפשר להציץ בלוגים של המערכת תחת /var/log/messages ולראות כיצד בפועל “משוחחים” בינהם השרת עם הקליינט, לדוגמא:

Nov 25 22:06:15 localhost dhcpd: DHCPREQUEST for 192.168.0.10 from 00:01:53:00:d2:2e via eth1
Nov 25 22:06:15 localhost dhcpd: DHCPACK on 192.168.0.10 to 00:01:53:00:d2:2e via eth1
Nov 25 23:48:40 localhost dhcpd: DHCPDISCOVER from 00:50:56:40:00:40 via eth1
Nov 25 23:48:41 localhost dhcpd: DHCPOFFER on 192.168.0.248 to 00:50:56:40:00:40 via eth1
Nov 25 23:48:41 localhost dhcpd: DHCPREQUEST for 192.168.0.248 from 00:50:56:40:00:40 via eth1
Nov 25 23:48:41 localhost dhcpd: DHCPACK on 192.168.0.248 to 00:50:56:40:00:40 via eth1

בלוג הנ”ל, אנחנו רואים שני סוגים של בקשות, שניהם מגיעים לשרת דרך eth1. אחד מגיע אם בקשת חידוש(192.168.0.10) DHCP והוא מקבל כתובת והבקשה השניה היא ממחשב חדש ששולח את הכתובת MAC שלו ובתמורה “מוצע” לו 192.168.0.248, הוא “נענה לבקשה” ומקבל את ה IP שהוצע לו.

הגדרות מתקדמות שניתן להוסיף בקונפיגורצית השרת

מה קורה אם רוצים לתת לתחנה מסויימת IP קבוע דרך ה DHCP? גם לזה יש פתרון. הרעיון הוא פשוט: מגדירים לתחנה (כפי שנראה בהמשך) IP קבוע כשהמזהה שלה מול שרת ה DHCP הוא הכתובת MAC המשוייכת לכרטיס הרשת בתחנה. אם למשל נרצה להקצות למחשב שה MAC שלו הוא: 00:01:53:00:D2:2E את המספר IP 192.168.0.10 , נוסיף את המקטע הבא לקובץ הקונפיגורציה של שרת ה DHCP :

host station1
{
hardware ethernet 00:01:53:00:D2:2E;
fixed-address 192.168.0.10;
}

המילה host מציינת שזו הצהרה על הגדרות לתחנה כלשהי, אחריה בה שם המקטע (במקרה שלנו station1) ותחום בין הסוגרים המסולסלים ההגדרות של אותה תחנה.

הגדרות מתקדמות נוספות שניתן להוסיף בקובץ הקונפיגורציה הן:

option domain-name-servers 192.1.1.42;

הגדרנו את שרת ה DNS ללקוחות. במקרה שלנו השרת יושב בכתובת 192.1.1.42.

עוד אפשרות:

option broadcast-address 192.168.1.255;

כאן הגדרנו את ה brodcast-address עבור ה IP 192.168.1.255 .

אפשר להגדיר גם “שרתי זמן” בעזרת שימוש ב- option time-servers.

הערת אבטחה חשובה

.

מעצם הגדרתו, ה DHCP מהווה בעית אבטחה: ברגע שאדם חיצוני מתחבר עם המחשב שלו לשקע ברשת המקומית, הוא למעשה בלי להגדיר כלום נמצא בתוך הרשת המקומית. המלצתי היא לזהות את הלקוחות בעזרת ה MAC ADDRESS לזהות את הלקוחות שמתחברים לרשת המקומית ולפי זה להקצות להם IP, למרות שזה דורש קצת יותר עבודה בהגדרת המערכת.

כמו כן, השירות עובד בפורטים 67 ו- 68, ויותר מרצוי לסגור אותם אל מול הרשת החיצונית.

סיכום

.

השגת עוד מידע

.

המדריך אינו מתיימר לענות על 100 אחוז מהשאלות והצרכים שעשויים להתעורר, ולפיכך, ניתן כמו תמיד להעזר בתיעודים השונים.
ראשית, יש את דפי ה-man הרלוונטים:

man dhcpd
man dhcpd.conf
man dhcp-options
man dhcpcd

ה-man האחרון ברשימה הוא ה-manual לשימוש בקליינט של dhcp במערכת הלינוקס.

ה README של השרת, קובץ הדגמה של קונפיגורציה בסיסית לשרת ועוד, אפשר למצוא בספריה הרלוונטית תחת /usr/share/doc למשל אצלי המידע נמצא ב:
/usr/share/doc/dhcp-2.0pl5
/usr/share/doc/dhcpcd-1.3.22pl1

תמיד ניתן להעזר ב howto הרשמי, שאפשר לקרוא בכתובת:
http://www.ibiblio.org/pub/Linux/docs/HOWTO/mini/other-formats/html_single/DHCP.html

ויש כמובן עוד מדריכים רבים, וכרגיל, google יכול לסייע למצוא אותם במהירות ובקלות.

סיכום המדריך

.

מטרת המדריך היא לימוד מהיר ומעשי של נושא השימוש ב DHCP תחת לינוקס.
אני בטוח שניתן להרחיב עוד רבות, אבל העדפתי לדבר “תכלס” ישר ולעניין, ואני מקווה שהמדריך עונה על מרבית השאלות העיקריות שקשורות ב DHCP.

אם מצאת שגיאות, או שיש לך הארות / הערות או סתם רצית לספר לי שנהנית מהמדריך, ניתן לשלוח אלי מייל:
nadav@mavor.com

מדריכים/למד_לעבוד_עם_dhcp_בחמש_דקות.txt · שונה לאחרונה ב: 2008/06/19 18:34 (עריכה חיצונית)
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0