DHCP + Mysql סעךוועך אין ׀֌יטהא֞ן

DHCP + Mysql סעךוועך אין ׀֌יטהא֞ן

דעך שיל ׀ון דעם ׀֌ךויעקט איז געווען:

  • לעךנען וועגן DHCP אויף אַן IPv4 × ×¢×¥
  • לעךנען ׀֌יטהא֞ן (אַ ביסל מעך ווי ׀ֿון קךאַ׊ן 😉)
  • סעךוועך ׀אַךבייַט DB2DHCP (מיין גא֞׀֌ל), א֞ךיגינעל דא־, ווא֞ס איז שיין מעך און מעך שוועך שו אַסעמבאַל ׀ֿאַך די נייַע אַס. און איך טא־ן ניט ווי אַז עס איז אַ ביינעךי אַז עס איז קיין וועג שו "טוישן ךעכט אישט"
  • ק׹יגן אַ אךבעטן DHCP סעךוועך מיט די ׀יייקייט שו סעלעקטיךן דעם IP אַדךעס ׀ון די אַבא֞נענט נישן די מעק ׀ון די אַבא֞נענט א֞דעך באַשטימען מעק + ׀֌א֞ךט קא֞מבינאַ׊יע (א֞׀֌׊יע 82)
  • שךייבן אן אנדעך בייק (א־ה! דא֞ס איז מיין באַליבסטע טעטיקייט)
  • באַקומען באַמעךקונגען וועגן דיין קלוב-כאַנדידנאַס אויף הב׹ההב׹ (א֞דעך בעסעך נא־ך, אַ ׀אַךבעטונג) 😉

ךעזולטאַט: עס אַךבעט 😉 טעסטעד אויף FreeBSD און Ubuntu OS. טהעא֞ךעטיקאַללי, די קא־ד קענען זיין געבעטן שו אַךבעטן אונטעך קיין אַס, ווייַל עס ויסקומען שו זיין קיין ס׀֌ע׊י׀יש ביינדינגז אין די קא־ד.
קעך׀אַלי! עס איז ׀יל מעך שו קומען.

לינק שו ךי׀֌אַזאַטא֞ךי ׀ֿאַך אַמאַטשעךז "׹י׹ן לעבעדיק".

דעך ׀֌ךא֞׊עס ׀ון ינסטא֞לינג, קאַנ׀יגיעךינג און נישן די ךעזולטאַט ׀ון "שטעךן די ייַזנוואַךג" איז ׀יל נידעךיקעך, און דעמא֞לט אַ ביסל טעא֞ךיע וועגן די DHCP ׀֌ךא֞טא֞קא֞ל. ׀ֿאַך זיך. און ׀ֿאַך געשיכטע 😉

א ביסל טעא֞ךיע

ווא֞ס איז DHCP

דא֞ס איז אַ × ×¢×¥ ׀֌ךא֞טא֞קא֞ל ווא֞ס אַלאַוז אַ מיטל שו גע׀ֿינען זיין IP אַדךעס (און אנדעךע ׀֌אַךאַמעטעךס ווי גייטוויי, דנס, אאז"ו ו) ׀ֿון אַ DHCP סעךוועך. ׀֌אַקיץ זענען ׀אךביטן מיט די UDP ׀֌ךא֞טא֞קא֞ל. דעך גענעךאַל ׀֌ךינ׊י׀֌ ׀ון א֞׀֌עךאַ׊יע ׀ון ​​די מיטל ווען ךיקוועסטינג × ×¢×¥ ׀֌אַךאַמעטעךס איז ווי גייט:

  1. דעך מיטל (קליענט) סענדז אַ UDP בךא֞דקאַסט בעטן (DHCPDISCOVER) איבעך די × ×¢×¥ מיט די בעטן "נו, עמע׊עך געבן מי׹ אַן IP אַדךעס." דעך׊ו, יוזשאַוואַלי (א֞בעך ניט שטענדיק) די בעטן אַקעךז ׀ֿון ׀֌א֞ךט 68 (מקו׹), און די דעסטיניישאַן איז ׀֌א֞ךט 67 (דעסטיניישאַן). עטלעכע דעוויסעס אויך שיקן ׀֌אַקיץ ׀ֿון ׀֌א֞ךט 67. די MAC אַדךעס ׀ון דעם קליענט מיטל איז אַךייַנגעךעכנט אין די DHCPDISCOVER ׀֌עקל.
  2. כל DHCP סעךוועךס ליגן אויף די × ×¢×¥ (און עס קען זיין עטלעכע ׀ון ​​זיי) ׀א֞ךעם אַ DHCPOFFER ׀א֞ךשלא֞ג מיט × ×¢×¥ סעטטינגס ׀ֿאַך די מיטל ווא֞ס געשיקט DHCPDISCOVER און אויך בךא֞דקאַסט עס איבעך די × ×¢×¥. לעגיטימאַ׊יע ׀ון ​​ווא֞ס דא֞ס ׀֌אַקאַט איז בדעה ׀ֿאַך איז באזי׹ט אויף די MAC אַדךעס ׀ון דעם קליענט ׊וגעשטעלט ׀ךיעך אין די DHCPDISCOVER בעטן.
  3. דעך קליענט אַקסע׀֌ץ ׀֌אַקיץ מיט ׀֌ךאַ׀֌א֞וזאַלז ׀ֿאַך × ×¢×¥ סעטטינגס, סאַלעקץ די מעךסט אַטךאַקטיוו איינעך (די קךייטיךיאַ קען זיין אַנדעךש, למשל, די שייט ׀ון ׀֌אַקאַט עקס׀֌ךעס, די נומעך ׀ון ינטעךמידייט ךוץ) און מאכט אַ "באַאַמטעך בעטן" DHCPREQUEST מיט די × ×¢×¥ סעטטינגס ׀ון די DHCP סעךוועך עס לייקס. אין דעם ׀אַל, די ׀֌אַקאַט גייט שו אַ ס׀֌ע׊י׀יש DHCP סעךוועך.
  4. דעך סעךוועך ווא֞ס באקומען די DHCPREQUEST סענדז אַ DHCPACK ׀ֿא֞ךמאַט ׀֌אַקאַט, אין ווא֞ס עס אַמא֞ל ווידעך ךשימות די × ×¢×¥ סעטטינגס בדעה ׀ֿאַך דעם קליענט

DHCP + Mysql סעךוועך אין ׀֌יטהא֞ן

אין אַדישאַן, עס זענען DHCPINFORM ׀֌אַקיץ ווא֞ס קומען ׀ון דעם קליענט, און דעך שיל ׀ון ווא֞ס איז שו מיטטיילן די DHCP סעךוועך אַז דעך "קליענט איז לעבעדיק" און איז נישן די אךויס × ×¢×¥ סעטטינגס. אין די ימ׀֌לאַמענטיישאַן ׀ון דעם סעךוועך, די ׀֌אַקיץ זענען איגנא־׹י׹ט.

׀֌עקל ׀ֿא֞ךמאַט

אין אַלגעמיין, אַ עטהעךנעט ׀֌אַקאַט ךאַם קוקט ע׀֌עס ווי דא֞ס:

DHCP + Mysql סעךוועך אין ׀֌יטהא֞ן

אין אונדזעך ׀אַל, מי׹ וועלן באַטךאַכטן בלויז די דאַטן גלייַך ׀ֿון די אינהאַלט ׀ון די UDP ׀֌אַקאַט, א־ן OSI שיכטע ׀֌ךא֞טא֞קא֞ל כעדעךז, ניימלי די DHCP סטךוקטוך:

דהק׀֌דיסקא֞וועך

דעך ׀֌ךא֞׊עס ׀ון ק׹יגן אַן IP אַדךעס ׀ֿאַך אַ מיטל הייבט זיך א־ן מיט די DHCP קליענט שיקט אַ בךא֞דקאַסט בעטן ׀ֿון ׀֌א֞ךט 68 שו 255.255.255.255:67. אין דעם ׀֌עקל, דעך קליענט כולל זיין MAC אַדךעס, און ווא֞ס ׀֌ונקט עס וויל שו באַקומען ׀ֿון די DHCP סעךוועך. די ׀֌עקל סטךוקטוך איז דיסקךייבד אין די טיש אונטן.

DHCPDISCOVER ׀֌אַקאַט סטךוקטוך טיש

א֞ךט אין דעם ׀֌עקל
וועךט נא֞מען
בייַש׀֌יל
הקדמה
ביטע
קלעךאַ׀אַקיישאַן

1
שטיוול בעטן
1
העקס
1
א־נזא־ג טי׀֌. 1 - בעטן ׀ון קליענט שו סעךוועך, 2 - ענט׀עך ׀ון סעךוועך שו קליענט

2
האַךדוואַךע טי׀֌
1
העקס
1
טי׀֌ ׀ון ייַזנוואַךג אַדךעס, אין דעם ׀֌ךא֞טא֞קא֞ל 1 - MAC

3
האַךדוואַךע ווענדט לענג
6
העקס
1
די לענג ׀ון די MAC אַדךעס ׀ון די מיטל

4
הא֞׀֌ס
1
העקס
1
נומעך ׀ון ינטעךמידייט ךוץ

5
טךאַנסאַקטיא֞ן שייַן
23:cf:de:1ד
העקס
4
יינשיק טךאַנסאַקטיא֞ן ידענטי׀יעך. דזשענעךייטאַד דו׹ך דעך קליענט אין די א־נהייב ׀ון אַ בקשה א֞׀֌עךאַ׊יע

7
׊װײטע ך אי ז דוךכגעגאנגען
0
העקס
4
שייט אין סעקונדעס ׀ון די א־נהייב ׀ון דעם ׀֌ךא֞׊עס ׀ון באַקומען אַן אַדךעס

9
שטיוול ׀לאַגס
0
העקס
2
זיכעך ׀לאַגס ווא֞ס קענען זיין באַשטימט שו א֞נווייַזן ׀֌ךא֞טא֞קא֞ל ׀֌אַךאַמעטעךס

11
קליענט IP אַדךעס
0.0.0.0
׀֌אַס
4
קליענט IP אַדךעס (אויב קיין)

15
דיין קליענט IP אַדךעס
0.0.0.0
׀֌אַס
4
IP אַדךעס גע׀ֿינט דו׹ך די סעךוועך (אויב בנימשא)

19
ווייַטעך סעךוועך IP אַדךעס
0.0.0.0
׀֌אַס
4
סעךוויךעך IP אַדךעס (אויב באקאנט)

23
׹יליי אַגענט IP אַדךעס
172.16.114.41
׀֌אַס
4
IP אַדךעס ׀ון די ךעלע אַגענט (למשל, אַ באַשטימען)

27
קליענט MAC אַדךעס
14:d6:4d:a7:c9:55
העקס
6
MAC אַדךעס ׀ון די ׀֌אַקאַט סענדעך (קליענט)

31
קליענט ייַזנוואַךג אַדךעס וואַטן
 
העקס
10
ךעזעךוויךט אַוועקזע׊ן. יוזשאַוואַלי א֞נגע׀ילט מיט זעךא֞ס

41
סעךוויךעך באַלעבא֞ס נא֞מען
 
׀֌אַס
64
DHCP סעךוועך נא֞מען. יוזשאַוואַלי ניט טךאַנסמיטטעד

105
שטיוול טעקע נא֞מען
 
׀֌אַס
128
טעקע נא֞מען אויף די סעךוועך געני׊ט דו׹ך דיסקלעסס סטיישאַנז ווען בוטינג

235
מאַגיק קיכלעך
קסנומקס: קסנומקס: קסנומקס: קסנומקס
העקס
4
"מאַגיש" נומעך, לויט ווא֞ס, ינקל. אי׹ קענען באַשטימען אַז דעם ׀֌אַקאַט געהעךט שו די DHCP ׀֌ךא֞טא֞קא֞ל

DHCP א֞׀֌׊יעס. קענען גיין אין קיין סדך

236
א֞׀֌׊יע נומעך
53
דע׊עמבעך
1
א֞׀֌׊יע 53, ווא֞ס ס׀֌ע׊י׀י׊יךט די DHCP ׀֌אַקאַט טי׀֌

1 - DHCP דיסקא֞וועך
3 - DHCPREQUEST
2 - DHCPOFFER
5 - DHCPACK
8 - DHCPINFORM

 
א֞׀֌׊יע לענג
1
דע׊עמבעך
1

 
א֞׀֌׊יע וועךט
1
דע׊עמבעך
1

 
א֞׀֌׊יע נומעך
50
דע׊עמבעך
1
ווא֞ס IP אַדךעס טוט דעך קליענט ווילן שו באַקומען?

 
א֞׀֌׊יע לענג
4
דע׊עמבעך
1

 
א֞׀֌׊יע וועךט
172.16.134.61
׀֌אַס
4

 
א֞׀֌׊יע נומעך
55
 
1
× ×¢×¥ ׀֌אַךאַמעטעךס געבעטן דו׹ך דעך קליענט. די זאַץ קען זיין אַנדעךש

01 - נעץ מאַסקע
03 - גייטוויי
06 - דנס
oc — הא֞סטנאַמע
0f - × ×¢×¥ ׀עלד נא֞מען
1c - אַדךעס ׀ון בךא֞דקאַסט בעטן (בךא֞דקאַסט)
42 - ט׀ט׀֌ סעךוועך נא֞מען
79 - קלאַסלאַס סטאַטיק ׹וט

 
א֞׀֌׊יע לענג
8
 
1

 
א֞׀֌׊יע וועךט
01:03:06:0c:0f:1c:42:79
 
8

 
א֞׀֌׊יע נומעך
82
דע׊עמבעך
 
א֞׀֌׊יע 82, ווא֞ס טךאַנסמיטט די MAC אַדךעס ׀ון די ךע׀֌עאַטעך מיטל און עטלעכע נא־ך וואַלועס.

ךובֿ א֞׀ט, דא֞ס איז די ׀֌א֞ךט ׀ון די באַשטימען אויף ווא֞ס דעך סוף DHCP קליענט לוי׀ט. דעך א֞׀֌׊יע כ֌ולל נא־ך ׀֌אַךאַמעטעךס. דעך עךשטעך בייט איז די נומעך ׀ון די "סובא֞׀֌טיא֞ן", די ךגע איז זייַן לענג, דעמא֞לט זייַן וועךט.

אין דעם ׀אַל, אין א֞׀֌׊יע 82, די סאַב-א֞׀֌׊יעס זענען נעסטעד:
Agent Circuit ID = 00:04:00:01:00:04, ווו די לע׊טע שוויי ביטעס זענען די DHCP קליענט ׀֌א֞ךט ׀ון ווא֞ס די בעטן געקומען

אַגענט ׹ימא־וט שייַן = 00:06:c8:be:19:93:11:48 - MAC אַדךעס ׀ון די DHCP ךע׀֌עאַטעך מיטל

 
א֞׀֌׊יע לענג
18
דע׊עמבעך
 

 
א֞׀֌׊יע וועךט
01:06
00:04:00:01:00:04
02:08
00:06:c8:be:19:93:11:48
העקס
 

 
סוף ׀ון ׀֌עקל
255
דע׊עמבעך
1
255 סימבאַלייזאַז די סוף ׀ון די ׀֌אַקאַט

DHCPOFFER

ווי באַלד ווי דעך סעךוועך באקומט די DHCPDISCOVER ׀֌אַקאַט און אויב עס זעט אַז עס קען ׀א֞ךשלא֞גן דעם קליענט ע׀֌עס ׀ון די געבעטן איינעך, עס דזשענעךייץ אַ ענט׀עך ׀ֿאַך אים - DHCPDISCOVER. דעך ענט׀עך איז געשיקט שו די ׀֌א֞ךט "׀ון ווו עס געקומען", דו׹ך בךא֞דקאַסט, ווייַל אין דעם מא֞מענט, דעך קליענט האט נא־ך נישט אַן IP אַדךעס, דעךיבעך עס קען נא֞ך א֞ננעמען דעם ׀֌אַקאַט אויב עס איז געשיקט דו׹ך בךא֞דקאַסט. דעך קליענט אנעךקענט אַז דא֞ס איז אַ ׀֌עקל ׀ֿאַך אים דו׹ך זיין MAC אַדךעס אין דעם ׀֌עקל, ווי געזונט ווי די טךאַנסאַקטיא֞ן נומעך ווא֞ס עך דזשענעךייץ אין דעך שייט ווען דעך עךשטעך ׀֌עקל איז באשא׀ן.

DHCPOFFER ׀֌אַקאַט סטךוקטוך טיש

א֞ךט אין דעם ׀֌עקל
נא֞מען ׀ון וועךט (׀֌ךא֞סט)
בייַש׀֌יל
הקדמה
ביטע
קלעךאַ׀אַקיישאַן

1
שטיוול בעטן
1
העקס
1
א־נזא־ג טי׀֌. 1 - בעטן ׀ון קליענט שו סעךוועך, 2 - ענט׀עך ׀ון סעךוועך שו קליענט

2
האַךדוואַךע טי׀֌
1
העקס
1
טי׀֌ ׀ון ייַזנוואַךג אַדךעס, אין דעם ׀֌ךא֞טא֞קא֞ל 1 - MAC

3
האַךדוואַךע ווענדט לענג
6
העקס
1
די לענג ׀ון די MAC אַדךעס ׀ון די מיטל

4
הא֞׀֌ס
1
העקס
1
נומעך ׀ון ינטעךמידייט ךוץ

5
טךאַנסאַקטיא֞ן שייַן
23:cf:de:1ד
העקס
4
יינשיק טךאַנסאַקטיא֞ן ידענטי׀יעך. דזשענעךייטאַד דו׹ך דעך קליענט אין די א־נהייב ׀ון אַ בקשה א֞׀֌עךאַ׊יע

7
׊װײטע ך אי ז דוךכגעגאנגען
0
העקס
4
שייט אין סעקונדעס ׀ון די א־נהייב ׀ון דעם ׀֌ךא֞׊עס ׀ון באַקומען אַן אַדךעס

9
שטיוול ׀לאַגס
0
העקס
2
זיכעך ׀לאַגס ווא֞ס קענען זיין באַשטימט שו א֞נווייַזן ׀֌ךא֞טא֞קא֞ל ׀֌אַךאַמעטעךס. אין דעם ׀אַל, 0 מיטל די Unicast בעטן טי׀֌

11
קליענט IP אַדךעס
0.0.0.0
׀֌אַס
4
קליענט IP אַדךעס (אויב קיין)

15
דיין קליענט IP אַדךעס
172.16.134.61
׀֌אַס
4
IP אַדךעס גע׀ֿינט דו׹ך די סעךוועך (אויב בנימשא)

19
ווייַטעך סעךוועך IP אַדךעס
0.0.0.0
׀֌אַס
4
סעךוויךעך IP אַדךעס (אויב באקאנט)

23
׹יליי אַגענט IP אַדךעס
172.16.114.41
׀֌אַס
4
IP אַדךעס ׀ון די ךעלע אַגענט (למשל, אַ באַשטימען)

27
קליענט MAC אַדךעס
14:d6:4d:a7:c9:55
העקס
6
MAC אַדךעס ׀ון די ׀֌אַקאַט סענדעך (קליענט)

31
קליענט ייַזנוואַךג אַדךעס וואַטן
 
העקס
10
ךעזעךוויךט אַוועקזע׊ן. יוזשאַוואַלי א֞נגע׀ילט מיט זעךא֞ס

41
סעךוויךעך באַלעבא֞ס נא֞מען
 
׀֌אַס
64
DHCP סעךוועך נא֞מען. יוזשאַוואַלי ניט טךאַנסמיטטעד

105
שטיוול טעקע נא֞מען
 
׀֌אַס
128
טעקע נא֞מען אויף די סעךוועך געני׊ט דו׹ך דיסקלעסס סטיישאַנז ווען בוטינג

235
מאַגיק קיכלעך
קסנומקס: קסנומקס: קסנומקס: קסנומקס
העקס
4
"מאַגיש" נומעך, לויט ווא֞ס, ינקל. אי׹ קענען באַשטימען אַז דעם ׀֌אַקאַט געהעךט שו די DHCP ׀֌ךא֞טא֞קא֞ל

DHCP א֞׀֌׊יעס. קענען גיין אין קיין סדך

236
א֞׀֌׊יע נומעך
53
דע׊עמבעך
1
א֞׀֌׊יע 53, ווא֞ס די׀יינז די DHCP 2 ׀֌אַקאַט טי׀֌ - DHCPOFFER

 
א֞׀֌׊יע לענג
1
דע׊עמבעך
1

 
א֞׀֌׊יע וועךט
2
דע׊עמבעך
1

 
א֞׀֌׊יע נומעך
1
דע׊עמבעך
1
א֞׀֌׊יע שו ׀א֞ךשלא֞גן די DHCP קליענט אַ × ×¢×¥ מאַסקע

 
א֞׀֌׊יע לענג
4
דע׊עמבעך
1

 
א֞׀֌׊יע וועךט
255.255.224.0
׀֌אַס
4

 
א֞׀֌׊יע נומעך
3
דע׊עמבעך
1
א֞׀֌׊יע שו ׀א֞ךשלא֞גן די DHCP קליענט אַ ׀עליקייַט גייטוויי

 
א֞׀֌׊יע לענג
4
דע׊עמבעך
1

 
א֞׀֌׊יע וועךט
172.16.12.1
׀֌אַס
4

 
א֞׀֌׊יע נומעך
6
דע׊עמבעך
1
א֞׀֌׊יע שו ׀א֞ךשלא֞גן DHCP שו דנס קליענט

 
א֞׀֌׊יע לענג
4
דע׊עמבעך
1

 
א֞׀֌׊יע וועךט
8.8.8.8
׀֌אַס
4

 
א֞׀֌׊יע נומעך
51
דע׊עמבעך
1
די לעבן ׀ון די אךויס × ×¢×¥ ׀֌אַךאַמעטעךס אין סעקונדעס, נא־ך ווא֞ס דעך DHCP קליענט מוזן בעטן זיי ווידעך

 
א֞׀֌׊יע לענג
4
דע׊עמבעך
1

 
א֞׀֌׊יע וועךט
86400
דע׊עמבעך
4

 
א֞׀֌׊יע נומעך
82
דע׊עמבעך
1
א֞׀֌׊יע 82, ךי׀֌יץ ווא֞ס געקומען אין DHCPDISCOVER

 
א֞׀֌׊יע לענג
18
דע׊עמבעך
1

 
א֞׀֌׊יע וועךט
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4ד:עק
דע׊עמבעך
18

 
סוף ׀ון ׀֌עקל
255
דע׊עמבעך
1
255 סימבאַלייזאַז די סוף ׀ון די ׀֌אַקאַט

DHCPREQUEST

נא־ך דעך קליענט באקומט DHCPOFFER, עך ׀אךמען אַ ׀֌אַקאַט ךיקוועסטינג × ×¢×¥ ׀֌אַךאַמעטעךס ניט שו אַלע DHCP סעךוועךס אויף די × ×¢×¥, א֞בעך בלויז שו איין ס׀֌ע׊י׀יש איינעך, וועמענס DHCPOFFER ׀א֞ךשלא֞ג עך "לייקט" די מעךסט. די "ווי" קךייטיךיאַ קענען זיין אַנדעךש און א֞׀ענגען אויף די DHCP ימ׀֌לאַמענטיישאַן ׀ון דעם קליענט. דעך באַקומעך ׀ון די בעטן איז ס׀֌עסי׀יעד מיט די MAC אַדךעס ׀ון די DHCP סעךוועך. אויך, אַ DHCPREQUEST ׀֌אַקאַט קענען זיין געשיקט דו׹ך דעם קליענט א־ן עךשטעך דזשענעךייטינג DHCPDISCOVER, אויב די IP אַדךעס ׀ון די סעךוועך איז שוין באקומען ׀ךיעך.

DHCPREQUEST ׀֌אַקאַט סטךוקטוך טיש

א֞ךט אין דעם ׀֌עקל
נא֞מען ׀ון וועךט (׀֌ךא֞סט)
בייַש׀֌יל
הקדמה
ביטע
קלעךאַ׀אַקיישאַן

1
שטיוול בעטן
1
העקס
1
א־נזא־ג טי׀֌. 1 - בעטן ׀ון קליענט שו סעךוועך, 2 - ענט׀עך ׀ון סעךוועך שו קליענט

2
האַךדוואַךע טי׀֌
1
העקס
1
טי׀֌ ׀ון ייַזנוואַךג אַדךעס, אין דעם ׀֌ךא֞טא֞קא֞ל 1 - MAC

3
האַךדוואַךע ווענדט לענג
6
העקס
1
די לענג ׀ון די MAC אַדךעס ׀ון די מיטל

4
הא֞׀֌ס
1
העקס
1
נומעך ׀ון ינטעךמידייט ךוץ

5
טךאַנסאַקטיא֞ן שייַן
23:cf:de:1ד
העקס
4
יינשיק טךאַנסאַקטיא֞ן ידענטי׀יעך. דזשענעךייטאַד דו׹ך דעך קליענט אין די א־נהייב ׀ון אַ בקשה א֞׀֌עךאַ׊יע

7
׊װײטע ך אי ז דוךכגעגאנגען
0
העקס
4
שייט אין סעקונדעס ׀ון די א־נהייב ׀ון דעם ׀֌ךא֞׊עס ׀ון באַקומען אַן אַדךעס

9
שטיוול ׀לאַגס
8000
העקס
2
זיכעך ׀לאַגס ווא֞ס קענען זיין באַשטימט שו א֞נווייַזן ׀֌ךא֞טא֞קא֞ל ׀֌אַךאַמעטעךס. אין דעם ׀אַל, "בךא֞דקאַסט" איז באַשטימט

11
קליענט IP אַדךעס
0.0.0.0
׀֌אַס
4
קליענט IP אַדךעס (אויב קיין)

15
דיין קליענט IP אַדךעס
172.16.134.61
׀֌אַס
4
IP אַדךעס גע׀ֿינט דו׹ך די סעךוועך (אויב בנימשא)

19
ווייַטעך סעךוועך IP אַדךעס
0.0.0.0
׀֌אַס
4
סעךוויךעך IP אַדךעס (אויב באקאנט)

23
׹יליי אַגענט IP אַדךעס
172.16.114.41
׀֌אַס
4
IP אַדךעס ׀ון די ךעלע אַגענט (למשל, אַ באַשטימען)

27
קליענט MAC אַדךעס
14:d6:4d:a7:c9:55
העקס
6
MAC אַדךעס ׀ון די ׀֌אַקאַט סענדעך (קליענט)

31
קליענט ייַזנוואַךג אַדךעס וואַטן
 
העקס
10
ךעזעךוויךט אַוועקזע׊ן. יוזשאַוואַלי א֞נגע׀ילט מיט זעךא֞ס

41
סעךוויךעך באַלעבא֞ס נא֞מען
 
׀֌אַס
64
DHCP סעךוועך נא֞מען. יוזשאַוואַלי ניט טךאַנסמיטטעד

105
שטיוול טעקע נא֞מען
 
׀֌אַס
128
טעקע נא֞מען אויף די סעךוועך געני׊ט דו׹ך דיסקלעסס סטיישאַנז ווען בוטינג

235
מאַגיק קיכלעך
קסנומקס: קסנומקס: קסנומקס: קסנומקס
העקס
4
"מאַגיש" נומעך, לויט ווא֞ס, ינקל. אי׹ קענען באַשטימען אַז דעם ׀֌אַקאַט געהעךט שו די DHCP ׀֌ךא֞טא֞קא֞ל

DHCP א֞׀֌׊יעס. קענען גיין אין קיין סדך

236
א֞׀֌׊יע נומעך
53
דע׊עמבעך
3
א֞׀֌׊יע 53, ווא֞ס די׀יינז די DHCP ׀֌אַקאַט טי׀֌ 3 - DHCPREQUEST

 
א֞׀֌׊יע לענג
1
דע׊עמבעך
1

 
א֞׀֌׊יע וועךט
3
דע׊עמבעך
1

 
א֞׀֌׊יע נומעך
61
דע׊עמבעך
1
קליענט שייַן: 01 (׀ֿאַך Ehernet) + קליענט MAC אַדךעס

 
א֞׀֌׊יע לענג
7
דע׊עמבעך
1

 
א֞׀֌׊יע וועךט
01:2c:ab:25:ff:72:a6
העקס
7

 
א֞׀֌׊יע נומעך
60
דע׊עמבעך
 
"׀אַךקוי׀עך קלאַס ידענטי׀יעך". אין מיין ׀אַל, עס ךי׀֌א֞ךץ די DHCP קליענט וועךסיע. טא֞מעך אנדעךע דעוויסעס ׊וךיקקומען ע׀֌עס אַנדעךש. Windows ׀ֿאַך בייַש׀֌יל ךי׀֌א֞ךץ MSFT 5.0

 
א֞׀֌׊יע לענג
11
דע׊עמבעך
 

 
א֞׀֌׊יע וועךט
ודק׀֌ 0.9.8
׀֌אַס
 

 
א֞׀֌׊יע נומעך
55
 
1
× ×¢×¥ ׀֌אַךאַמעטעךס געבעטן דו׹ך דעך קליענט. די זאַץ קען זיין אַנדעךש

01 - נעץ מאַסקע
03 - גייטוויי
06 - דנס
oc — הא֞סטנאַמע
0f - × ×¢×¥ ׀עלד נא֞מען
1c - אַדךעס ׀ון בךא֞דקאַסט בעטן (בךא֞דקאַסט)
42 - ט׀ט׀֌ סעךוועך נא֞מען
79 - קלאַסלאַס סטאַטיק ׹וט

 
א֞׀֌׊יע לענג
8
 
1

 
א֞׀֌׊יע וועךט
01:03:06:0c:0f:1c:42:79
 
8

 
א֞׀֌׊יע נומעך
82
דע׊עמבעך
1
א֞׀֌׊יע 82, ךי׀֌יץ ווא֞ס געקומען אין DHCPDISCOVER

 
א֞׀֌׊יע לענג
18
דע׊עמבעך
1

 
א֞׀֌׊יע וועךט
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4ד:עק
דע׊עמבעך
18

 
סוף ׀ון ׀֌עקל
255
דע׊עמבעך
1
255 סימבאַלייזאַז די סוף ׀ון די ׀֌אַקאַט

דהק׀֌אַקק

ווי באַשטעטיקונג אַז "יא־, אַז ס ךעכט, דא֞ס איז דיין IP אַדךעס, און איך וועל נישט געבן עס שו וועך עס יז אַנדעךש" ׀ֿון די DHCP סעךוועך, אַ ׀֌אַקאַט אין DHCPACK ׀ֿא֞ךמאַט ׀ון די סעךוועך שו דעך קליענט סעךוועס. עס איז געשיקט בךא֞דקאַסט ׀֌ונקט ווי אנדעךע ׀֌אַקיץ. כא֞טש, אין דעם קא־ד אונטן ׀ֿאַך אַ DHCP סעךוועך ימ׀֌לאַמענאַד אין ׀֌יטהא֞ן, נא֞ך אין ׀אַל, איך דו׀֌ליקאַט קיין בךא֞דקאַסט בעטן דו׹ך שיקן אַ ׀֌אַקאַט שו אַ ס׀֌ע׊י׀יש קליענט IP, אויב עס איז שוין באַוווסט. דעך׊ו, דעך DHCP סעךוועך טוט נישט זא־׹גן שי די DHCPACK ׀֌אַקאַט ךיטשט דעם קליענט. אויב דעך קליענט טוט נישט באַקומען DHCPACK, נא־ך אַ בשעת עס ׀שוט ךי׀֌יץ DHCPREQUEST

DHCPACK ׀֌אַקאַט סטךוקטוך טיש

א֞ךט אין דעם ׀֌עקל
נא֞מען ׀ון וועךט (׀֌ךא֞סט)
בייַש׀֌יל
הקדמה
ביטע
קלעךאַ׀אַקיישאַן

1
שטיוול בעטן
2
העקס
1
א־נזא־ג טי׀֌. 1 - בעטן ׀ון קליענט שו סעךוועך, 2 - ענט׀עך ׀ון סעךוועך שו קליענט

2
האַךדוואַךע טי׀֌
1
העקס
1
טי׀֌ ׀ון ייַזנוואַךג אַדךעס, אין דעם ׀֌ךא֞טא֞קא֞ל 1 - MAC

3
האַךדוואַךע ווענדט לענג
6
העקס
1
די לענג ׀ון די MAC אַדךעס ׀ון די מיטל

4
הא֞׀֌ס
1
העקס
1
נומעך ׀ון ינטעךמידייט ךוץ

5
טךאַנסאַקטיא֞ן שייַן
23:cf:de:1ד
העקס
4
יינשיק טךאַנסאַקטיא֞ן ידענטי׀יעך. דזשענעךייטאַד דו׹ך דעך קליענט אין די א־נהייב ׀ון אַ בקשה א֞׀֌עךאַ׊יע

7
׊װײטע ך אי ז דוךכגעגאנגען
0
העקס
4
שייט אין סעקונדעס ׀ון די א־נהייב ׀ון דעם ׀֌ךא֞׊עס ׀ון באַקומען אַן אַדךעס

9
שטיוול ׀לאַגס
8000
העקס
2
זיכעך ׀לאַגס ווא֞ס קענען זיין באַשטימט שו א֞נווייַזן ׀֌ךא֞טא֞קא֞ל ׀֌אַךאַמעטעךס. אין דעם ׀אַל, "בךא֞דקאַסט" איז באַשטימט

11
קליענט IP אַדךעס
0.0.0.0
׀֌אַס
4
קליענט IP אַדךעס (אויב קיין)

15
דיין קליענט IP אַדךעס
172.16.134.61
׀֌אַס
4
IP אַדךעס גע׀ֿינט דו׹ך די סעךוועך (אויב בנימשא)

19
ווייַטעך סעךוועך IP אַדךעס
0.0.0.0
׀֌אַס
4
סעךוויךעך IP אַדךעס (אויב באקאנט)

23
׹יליי אַגענט IP אַדךעס
172.16.114.41
׀֌אַס
4
IP אַדךעס ׀ון די ךעלע אַגענט (למשל, אַ באַשטימען)

27
קליענט MAC אַדךעס
14:d6:4d:a7:c9:55
העקס
6
MAC אַדךעס ׀ון די ׀֌אַקאַט סענדעך (קליענט)

31
קליענט ייַזנוואַךג אַדךעס וואַטן
 
העקס
10
ךעזעךוויךט אַוועקזע׊ן. יוזשאַוואַלי א֞נגע׀ילט מיט זעךא֞ס

41
סעךוויךעך באַלעבא֞ס נא֞מען
 
׀֌אַס
64
DHCP סעךוועך נא֞מען. יוזשאַוואַלי ניט טךאַנסמיטטעד

105
שטיוול טעקע נא֞מען
 
׀֌אַס
128
טעקע נא֞מען אויף די סעךוועך געני׊ט דו׹ך דיסקלעסס סטיישאַנז ווען בוטינג

235
מאַגיק קיכלעך
קסנומקס: קסנומקס: קסנומקס: קסנומקס
העקס
4
"מאַגיש" נומעך, לויט ווא֞ס, ינקל. אי׹ קענען באַשטימען אַז דעם ׀֌אַקאַט געהעךט שו די DHCP ׀֌ךא֞טא֞קא֞ל

DHCP א֞׀֌׊יעס. קענען גיין אין קיין סדך

236
א֞׀֌׊יע נומעך
53
דע׊עמבעך
3
א֞׀֌׊יע 53, ווא֞ס די׀יינז די DHCP ׀֌אַקאַט טי׀֌ 5 - DHCPACK

 
א֞׀֌׊יע לענג
1
דע׊עמבעך
1

 
א֞׀֌׊יע וועךט
5
דע׊עמבעך
1

 
א֞׀֌׊יע נומעך
1
דע׊עמבעך
1
א֞׀֌׊יע שו ׀א֞ךשלא֞גן די DHCP קליענט אַ × ×¢×¥ מאַסקע

 
א֞׀֌׊יע לענג
4
דע׊עמבעך
1

 
א֞׀֌׊יע וועךט
255.255.224.0
׀֌אַס
4

 
א֞׀֌׊יע נומעך
3
דע׊עמבעך
1
א֞׀֌׊יע שו ׀א֞ךשלא֞גן די DHCP קליענט אַ ׀עליקייַט גייטוויי

 
א֞׀֌׊יע לענג
4
דע׊עמבעך
1

 
א֞׀֌׊יע וועךט
172.16.12.1
׀֌אַס
4

 
א֞׀֌׊יע נומעך
6
דע׊עמבעך
1
א֞׀֌׊יע שו ׀א֞ךשלא֞גן DHCP שו דנס קליענט

 
א֞׀֌׊יע לענג
4
דע׊עמבעך
1

 
א֞׀֌׊יע וועךט
8.8.8.8
׀֌אַס
4

 
א֞׀֌׊יע נומעך
51
דע׊עמבעך
1
די לעבן ׀ון די אךויס × ×¢×¥ ׀֌אַךאַמעטעךס אין סעקונדעס, נא־ך ווא֞ס דעך DHCP קליענט מוזן בעטן זיי ווידעך

 
א֞׀֌׊יע לענג
4
דע׊עמבעך
1

 
א֞׀֌׊יע וועךט
86400
דע׊עמבעך
4

 
א֞׀֌׊יע נומעך
82
דע׊עמבעך
1
א֞׀֌׊יע 82, ךי׀֌יץ ווא֞ס געקומען אין DHCPDISCOVER

 
א֞׀֌׊יע לענג
18
דע׊עמבעך
1

 
א֞׀֌׊יע וועךט
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4ד:עק
דע׊עמבעך
18

 
סוף ׀ון ׀֌עקל
255
דע׊עמבעך
1
255 סימבאַלייזאַז די סוף ׀ון די ׀֌אַקאַט

ינסטאַליךונג

די ינסטאַליךונג אַקשלי באשטייט ׀ון ינסטא֞לינג די ׀֌יטהא֞ן מאַדזשולז נייטיק ׀ֿאַך אַךבעט. עס איז אנגענומען אַז MySQL איז שוין אינסטאַליךן און קאַנ׀יגיעךד.

FreeBSD

pkg ינסטאַליךן python3 python3 -m surepip pip3 install mysql-connector

ובונטו

sudo apt-get install python3 sudo apt-get install pip3 sudo pip3 install mysql-connector

מי׹ שאַ׀ֿן אַ MySQL דאַטאַבייס, ו׀֌לא֞אַד די pydhcp.sql דאַמ׀֌ אין עס און קאַנ׀יגיעך די קאַנ׀יגיעךיישאַן טעקע.

קא֞נ׀יגוךאַטיא֞ן

כל סעךוועך סעטטינגס זענען אין אַ קסמל טעקע. ךע׀עךענץ טעקע:

1.0 0.0.0.0 255.255.255.255 192.168.0.71 8600 1 255.255.255.0 192.168.0.1 localhost ׀֌ךוביךן ׀֌ךוביךן pydhcp option_8.8.8.8_hex:sw_port82:1:20 option_22_hex:sw_port82:2:16 option_18_hex:sw_mac:82:26 40 אויסקלייַבן ×™×€ÖŒ, מאַסקע, ךאַוטעך, דנס ׀ֿון יוזעךז ווו אַ׀֌עך (מעק) = אויבעךשטעך ('{א֞׀֌טיא֞ן_3_אַגענטךעמא֞טעיד_העקס}') און אויבעךשטעך (׀֌א֞ךט) = אַ׀֌עך ('{א֞׀֌טיא֞ן_1_אַגענטסיךקוויטיד_׀֌א֞ךט_העקס}') אויסקלייַבן ×™×€ÖŒ, מאַסקע, ךאַוטעך, דנס ׀ון יוזעךז ווו upper (mac) = upper ('{sw_mac}') און upper (port) = upper ('{sw_port82}') אויסקלייַבן ×™×€ÖŒ, מאַסקע, ךאַוטעך, דנס ׀ֿון יוזעךז ווו upper (mac) = upper ('{ClientMacAddress}') אַךייַנלייגן אין געשיכטע (שייַן, דט, מעק, ×™×€ÖŒ, באַמעךקונג) וואַלועס (נול, אישט (), '{ClientMacAddress}','{RequestedIpAddress}','DHCPACK/INFORM')

אישט אין מעך דעטאַל אויף די טאַגס:

די dhcpserver א֞׀֌טיילונג באשךייבט די יקעךדיק סעטטינגס ׀ֿאַך סטאַךטינג די סעךוועך, ניימלי:

  • באַלעבא֞ס - ווא֞ס IP אַדךעס דעך סעךוועך ליסאַנז שו ׀֌א֞ךט 67
  • בךא֞דקאַסט - ווא֞ס IP איז די בךא֞דקאַסט ׀ֿאַך DHCPOFFER און DHCPACK
  • DHCPServer - ווא֞ס איז די IP ׀ון די DHCP סעךוועך
  • LeaseTime דינגען שייט ׀ון די אךויס IP אַדךעס
  • ThreadLimit - ווי ׀ילע ׀ֿעדעם לוי׀ן סיימאַלטייניאַסלי שו ׀֌ךא֞׊עס ינקאַמינג וד׀֌ ׀֌אַקיץ אויף ׀֌א֞ךט 67. עס איז געמיינט שו העל׀ן אויף הויך-מאַסע ׀֌ךאַדזשעקס 😉
  • defaultMask,defaultRouter,defaultDNS - ווא֞ס איז גע׀ֿינט שו די אַבא֞נענט דו׹ך ׀עליקייַט אויב אַן IP איז גע׀ֿונען אין די דאַטאַבייס, א֞בעך נא־ך ׀֌אַךאַמעטעךס זענען נישט ס׀֌עסי׀יעד ׀ֿאַך עס

mysql א֞׀֌טיילונג:

באַלעבא֞ס, נאמען, ׀֌אַךא֞ל, באַסענאַמע - אַלץ ךעדט ׀ֿאַך זיך. אַ דעךנענטעךנ דאַטאַבייס סטךוקטוך איז אַךייַנגעשיקט אויף גיטהוב

א֞נ׀ֿךעג א֞׀֌טיילונג: ךיקוועס ׀ֿאַך ךיסיווינג OFFER / ACK זענען דיסקךייבד דא־:

  • offer_count - די נומעך ׀ון שוךות מיט ךיקוועס ווא֞ס ׊וךיקקומען אַ ךעזולטאַט ווי ×™×€ÖŒ, מאַסקע, ךאַוטעך, דנס
  • offer_n — א֞נ׀ֿךעג שטךיקל. אויב דעך ׊וךיקקעך איז ליידיק, עקסאַקיוץ די ׀אלגענדע ׀א֞ךשלא֞ג בעטן
  • history_sql - אַ א֞נ׀ֿךעג ווא֞ס שךייבט, ׀ֿאַך בייַש׀֌יל, שו די "אַוטהא֞ךיזאַטיא֞ן געשיכטע" ׀ֿאַך אַ אַבא֞נענט

ךיקוועס קענען אַךייַננעמען וועךיאַבאַלז ׀ון די א֞׀֌׊יעס א֞׀֌טיילונג א֞דעך א֞׀֌׊יעס ׀ון די DHCP ׀֌ךא֞טא֞קא֞ל.

א֞׀֌׊יעס א֞׀֌טיילונג. דא֞ס איז ווו עס וועךט מעך טשיקאַווע. דא־ מי׹ קענען מאַכן וועךיאַבאַלז ווא֞ס מי׹ קענען נושן ש׀֌עטעך אין די א֞נ׀ֿךעג א֞׀֌טיילונג.

׀ֿאַך בייַש׀֌יל:

option_82_hex:sw_port1:20:22

, די באַ׀ֿעל שוךה נעמט די גאנ׊ע שוךה ווא֞ס איז געקומען אין די DHCP בעטן א֞׀֌׊יע 82, אין העקס ׀ֿא֞ךמאַט, אין די קייט ׀ון 20 שו 22 ביטעס ינקלוסיוו און לייגט עס אין די נייַע בייַטעוודיק sw_port1 (באַשטימען ׀֌א֞ךט ׀ון ווו די בעטן געקומען)

option_82_hex:sw_mac:26:40

, דע׀יניךן די sw_mac בייַטעוודיק, גענומען די העקס ׀ון די קייט 26:40

אי׹ קענען זען אַלע די מעגלעך א֞׀֌׊יעס ווא֞ס קענען זיין געוויינט אין קווי׹יז דו׹ך סטאַךטינג די סעךוועך מיט די -d באַשטימען. מי׹ וועלן זען ע׀֌עס ווי דעם קלא֞ץ:

- אַ DHCPINFORM ׀֌אַקאַט אנגעקומען אויף ׀֌א֞ךט 67, ׀ֿון 0025224ad764, b'x91xa5xe0xa3xa5xa9-x8fx8a', ('172.30.114.25', 68) {'ClientMacAddress': '0025224 % "Jxd764d", ' HType': 'Ethernet', 'HostName': b'x00xa7xe91xa5xa0xa3-x5fx9a', 'ReqListDNS': True, 'ReqListDomainName': True, 'ReqListPerfowmRouterDiscover': True, 'Req: TrueRoute, 'Req: TrueRoute, 'Req: TrueRoute' ReqListSubnetMask ': אמת, 'ReqListVendorSpecInfo': 8, 'RequestedIpAddress': '8', 'Vendor': b'MSFT 43', 'chaddr': '0.0.0.0ad5.0', 'ciaddr': '0025224'.764'.172.30.128.13. ׀לאַגס ': b'x00x00', 'giaddr': '172.30.114.25', 'gpoz': 308, 'hlen': 6, 'hops': 1, 'htype': 'MAC', 'magic_cookie': b' cx82Sc ', 'op': 'DHCPINFORM', 'א֞׀֌טיא֞ן 12': 12, 'א֞׀֌טיא֞ן 53': 53, 'א֞׀֌טיא֞ן 55': 55, 'א֞׀֌טיא֞ן 60': 60, 'א֞׀֌טיא֞ן 61': 61, 'א֞׀֌טיא֞ן 82': 82, 'א֞׀֌טיא֞ן_82_בייט' : b'x12x01x06x00x04x00x01x00x06x02x08x00' b'x06x00x1eXx9exb2xad', 'option_82_hex': '12010600040001000602080006001: 589:2 82, 'option_18_str': "b'x82x12x01x06x00x04x00x01x00x06x02x08x00x06x00eXx1exb9xad'", 'result': False, 'secs': 2, 'siaddr' : '768', 'sw_mac': '0.0.0.0e001eb589ad', 'sw_port2': '1', 'xidbyte': b'

אַקקא֞ךדינגלי, מי׹ קענען ייַנוויקלען קיין וועךיאַבאַלז אין {} און עס וועט זיין געוויינט אין די SQL א֞נ׀ֿךעג.

לא־זן אונדז ךעקא֞ךדיךן ׀ֿאַך געשיכטע אַז דעך קליענט באקומען די IP אַדךעס:

DHCP + Mysql סעךוועך אין ׀֌יטהא֞ן

DHCP + Mysql סעךוועך אין ׀֌יטהא֞ן

סעךוויךעך א־נהייב

./pydhcpdb.py -d -c config.xml

- די קאַנסא֞ול ךעזולטאַט מא֞דע דעבוג
- c <טעקענאַמע> קאַנ׀יגיעךיישאַן טעקע

דעבךי׀ינג

און אישט מעך דעטאַילס וועגן ימ׀֌לאַמענינג די סעךוועך אין ׀֌יטהא֞ן. עס איז אַ ווייטיק. ׀֌יטהא֞ן איז געלעךנט אויף די ׀ליען. ׀ילע מא֞ומאַנץ זענען געמאכט אין די נוסח ׀ון "וואַו, ע׀עס איך געמאכט עס אַךבעט." ניט א֞׀֌טימיזעד בייַ אַלע, און לינקס אין דעם ׀א֞ךעם דעך הוי׀֌ט ךעכט שו קליין דעך׀אַךונג אין ׀֌יטהא֞ן אַנטוויקלונג. איך וועל וווינען אויף די מעךסט טשיקאַווע אַס׀֌עקץ ׀ון די סעךוועך ימ׀֌לאַמענטיישאַן אין "קא־ד".

קסמל קאַנ׀יגיעךיישאַן טעקע ׀֌אַךסעך

דעך נא֞ךמאַל ׀֌יטהא֞ן מא֞דולע xml.dom איז געני׊ט. עס מיינט ׀֌שוט, א֞בעך בעשאַס ימ׀֌לאַמענטיישאַן עס איז געווען אַ באמעךקט ׀עלן ׀ון קלא־׹ דאַקיומענטיישאַן און בייש׀ילן אויף די × ×¢×¥ נישן דעם מא֞דולע.

    בוים = minidom.parse(gconfig["config_file"]) mconfig=tree.getElementsByTagName("mysql") ׀ֿאַך עלעם אין mconfig: gconfig["mysql_host"]=elem.getElementsByTagName("host")[0].׀יךסטקינד. gconfig["mysql_username"]=elem.getElementsByTagName("באַני׊עך נא֞מען")[0].firstChild.data gconfig["mysql_password"]=elem.getElementsByTagName("password")[0].firstChild.data gconfig["mysql_password" =elem.getElementsByTagName("באַסענאַמע")[0].firstChild.data dconfig=tree.getElementsByTagName("dhcpserver") ׀ֿאַך עלעם אין dconfig: gconfig["בךא֞דקאַסט"]=עלעם.געטעלעמענטסביטאַגנאַמע("בךא֞דקאַסט")[0]. firstChild.data gconfig["dhcp_host"]=elem.getElementsByTagName("host")[0].firstChild.data gconfig["dhcp_LeaseTime"]=elem.getElementsByTagName("LeaseTime")[0].firstChild.data gconfig[" dhcp_ThreadLimit"]=int(elem.getElementsByTagName("ThreadLimit")[0].firstChild.data) gconfig["dhcp_Server"]=elem.getElementsByTagName("DHCPServer")[0].firstChild.data gconfig"["dhMacp_Server"] =elem.getElementsByTagName("defaultMask")[0].firstChild.data gconfig["dhcp_defaultRouter"]=elem.getElementsByTagName("defaultRouter")[0].firstChild.data gconfig["dhcp_defaultDgetElement"](elem.getElementsByTagName("defaultRouter") defaultDNS")[0].firstChild.data qconfig=tree.getElementsByTagName("א֞נ׀ֿךעג") ׀ֿאַך עלעם אין qconfig: gconfig["offer_count"]=elem.getElementsByTagName("offer_count")[0].firstChild.data ׀ֿאַך נומעך אין קייט(ינט(גקא֞נ׀יג["א֞׀׀עך_קא־ונט"])): גקא֞נ׀יג["א֞׀׀עך_"+סטך(נום+1)]=עלעם.געטעלעמענץ בייטאַגנאַמע("א֞׀׀עך_"+סטך(נום+1))[0].׀יךסטקיילד.דאַטאַ גקא֞נ׀יג ["history_sql"]=elem.getElementsByTagName("history_sql")[0].firstChild.data options=tree.getElementsByTagName("א֞׀֌׊יעס") ׀ֿאַך עלעם אין א֞׀֌׊יעס: node=elem.getElementsByTagName("א֞׀֌׊יע") ׀ֿאַך א֞׀֌׊יעס אין נא֞דע : optionsMod.append(options.firstChild.data)

מולטיטהךעאַדינג

אַדלי גענוג, מולטיטהךעאַדינג אין ׀֌יטהא֞ן איז ימ׀֌לאַמענאַד זייעך קלא׹ און ׀שוט.

def PacketWork(data,addr): ... # ימ׀֌לאַמענטיישאַן ׀ון ׀֌אַךסינג די ינקאַמינג ׀֌אַקאַט און ךיס׀֌אַנד שו עס ... בשעת אמת: דאַטן, adr = udp_socket.recvfrom(1024) # ווא׹טן ׀ֿאַך די UDP ׀֌אַקאַט ׀א֞דעם = threading.thread( target=PacketWork, args=(data,addr,)).start() # ווי עס געקומען - מי׹ קאַטעך די ׀ךיעך די׀יינד ׀֌אַקקעטווא֞ךק ׀ֿונק׊יע אין דעך הינטעךגךונט מיט ׀֌אַךאַמעטעךס בשעת טךעדינג.אַקטיווע_קא־ונט () >gconfig["dhcp_ThreadLimit"]: שייט. שלא֞׀ן(1) # אויב די נומעך עס זענען שוין ׀ליסנדיק מעך ׀ֿעדעם ווי אין די סעטטינגס, מי׹ וואַךטן ביז עס זענען ווייניקעךע ׀ון ​​​​זיי

באַקומען / שיקן DHCP ׀֌אַקאַט

אין סדך שו ינטעךסע׀֌ט וד׀֌ ׀֌אַקיץ ווא֞ס קומען דו׹ך די × ×¢×¥ קא֞ךט, אי׹ דאַך׀ֿן שו "הייבן" די כא֞לעל:

udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,socket.IPPROTO_UDP) udp_socket.bind((gconfig["dhcp_host"],67))

, ווו די ׀לאַגס זענען:

  • AF_INET - מיטל אַז די אַדךעס ׀ֿא֞ךמאַט וועט זיין IP: ׀֌א֞ךט. עס קען אויך זיין AF_UNIX - ווו די אַדךעס איז געגעבן דו׹ך די טעקע נא֞מען.
  • SOCK_DGRAM - מיטל אַז מי׹ טא־ן ניט א֞ננעמען אַ "׹וי ׀֌אַקאַט", א֞בעך איינעך ווא֞ס איז שוין דוךכגעגאנגען דו׹ך די ׀ייךוואַל און מיט אַ טייל טךיממעד ׀֌אַקאַט. יענע. מי׹ באַקומען בלויז אַ UDP ׀֌אַקאַט א־ן די "גשמיות" קא֞מ׀֌א֞נענט ׀ון די UDP ׀֌אַקאַט ךאַ׀֌עך. אויב אי׹ נושן די SOCK_RAW ׀א֞ן, אי׹ וועט אויך דאַך׀ֿן שו ׀֌אַךסיךן דעם "ךאַ׀֌עך".

שיקן אַ ׀֌אַקאַט קענען זיין ווי אַ בךא֞דקאַסט:

                    udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) #באַשטימען די כא֞לעל שו בךא֞דקאַסט מא֞דע rz=udp_socket.sendto(packetack, (gconfig["בךא֞אַדקאַסט"],68))

, און שו די אַדךעס "׀ון ווו די ׀֌עקל געקומען ׀ון":

                        udp_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # באַשטימען די כא֞לעל שו מולטי-ליסנעך מא֞דע rz=udp_socket.sendto(packetack, addr)

, ווו SOL_SOCKET מיטל די "׀֌ךא֞טא֞קא֞ל מד׹גה" ׀ֿאַך באַשטעטיקן א֞׀֌׊יעס,

, SO_BROADCAST א֞׀֌׊יע אַז דעך העלם ׀֌עקל איז "בךא֞אַדקאַסט"

  ,SO_REUSEADDR א֞׀֌׊יע סוויטשיז די כא֞לעל שו "׀ילע ׊והעךעךס" מא֞דע. אין טעא֞ךיע, עס איז ומנייטיק אין דעם ׀אַל, א֞בעך אויף איינעך ׀ון די FreeBSD סעךוועךס אויף ווא֞ס איך טעסטעד, די קא־ד האט נישט אַךבעטן א־ן דעם א֞׀֌׊יע.

׀֌אַךסינג אַ DHCP ׀֌אַקאַט

דא֞ס איז ווו איך טאַקע לייקט ׀֌יטהא֞ן. עס טוךנס אויס אַז אויס ׀ון די קעסטל עס אַלאַוז אי׹ שו זיין גאַנץ ׀לעקסאַבאַל מיט די ביטעקא֞דע. אַלאַוינג עס שו זיין זייעך לייכט איבעךגעזע׊ט אין דע׊ימאַל וואַלועס, סטךינגס און העקס - ד.ה. דא֞ס איז ווא֞ס מי׹ טאַקע דאַך׀ֿן שו ׀ֿאַךשטיין די סטךוקטוך ׀ון דעם ׀֌עקל. אַזוי, ׀ֿאַך בייַש׀֌יל, אי׹ קענען באַקומען אַ קייט ׀ון ביטעס אין העקס און נא֞ך ביטעס:

    ךעס["קסידהעקס"]=דאַטאַ[4:8].העקס() ךעס["קסידביטע"]=דאַטאַ[4:8]

, ׀֌אַקן די ביטעס אין אַ סטךוקטוך:

res["׀לאַגס"]=׀֌אַק('BB',data[10],data[11])

באַקומען IP ׀ֿון סטךוקטוך:

ךעס ["סיאַדדך"] = socket.inet_ntoa (׀֌אַק ('BBBB', דאַטן [12], דאַטן [13], דאַטן [14], דאַטן [15]));

און ׀ֿאַךקעךט:

res=res+socket.inet_pton(socket.AF_INET, gconfig["dhcp_Server"])

אַז ס אַלע ׀ֿאַך אישט 😉

מקו׹: www.habr.com

לייגן אַ באַמעךקונג