DHCP+Mysql nkesa na Python

DHCP+Mysql nkesa na Python

Ebumnuche nke ọrụ a bụ:

  • Mụta maka DHCP na netwọk IPv4
  • Ịmụ Python (obere karịa site na ọkọ 😉)
  • nnọchi nkesa DB2DHCP (ndụdụ m), nke mbụ ebe a, nke na-esiwanye ike ịgbakọta maka OS ọhụrụ. Enweghị m mmasị na ọ bụ ọnụọgụ abụọ na ọ nweghị ụzọ isi "gbanwee ugbu a"
  • Inweta ihe nkesa DHCP na-arụ ọrụ nwere ikike ịhọrọ adreesị IP onye debanyere aha site na iji mac onye debanyere aha ma ọ bụ gbanwee njikọ ọdụ ụgbọ mmiri Mac + (Nhọrọ 82)
  • na-ede igwe kwụ otu ebe ọzọ (Oh! nke a bụ ọrụ kacha amasị m)
  • ịnata nkọwa gbasara aka klọb gị na Habrahabr (ma ọ bụ nke ka mma, ọkpụkpọ òkù) 😉

Nsonaazụ: ọ na-arụ ọrụ 😉 A nwalere na FreeBSD na Ubuntu OS. N'ụzọ doro anya, enwere ike ịgwa koodu ahụ ka ọ rụọ ọrụ n'okpuru OS ọ bụla, n'ihi na Ọ dị ka enweghị njikọ akọwapụtara na koodu ahụ.
Kpachapụ anya! Enwere ọtụtụ ihe ndị ọzọ na-abịa.

Njikọ na ebe nchekwa maka ndị amateur "metụ ndụ".

Usoro nke ịwụnye, ịhazi na iji nsonaazụ nke "ịmụ ihe ngwaike" dị ntakịrị ala, mgbe ahụ, ntakịrị echiche banyere usoro DHCP. Maka onwe m. Na maka akụkọ ihe mere eme 😉

Obere tiori

Kedu ihe bụ DHCP

Nke a bụ usoro netwọkụ nke na-enye ngwaọrụ ohere ịchọpụta adreesị IP ya (na ihe ndị ọzọ dị ka ọnụ ụzọ ámá, DNS, wdg) site na sava DHCP. A na-eji ụkpụrụ UDP gbanwere ngwugwu. Ụkpụrụ izugbe nke ịrụ ọrụ nke ngwaọrụ mgbe ị na-arịọ parampat netwọkụ bụ nke a:

  1. Ngwaọrụ ahụ (onye ahịa) na-eziga arịrịọ mgbasa ozi UDP (DHCPDISCOVER) na netwọkụ ahụ niile yana arịrịọ "ọfọn, mmadụ nye m adreesị IP." Ọzọkwa, na-emekarị (ma ọ bụghị mgbe niile) arịrịọ na-abịa site n'ọdụ ụgbọ mmiri 68 (isi iyi), ebe njedebe bụ ọdụ ụgbọ mmiri 67 (ebe a na-aga). Ụfọdụ ngwaọrụ na-ezigakwa ngwugwu site na ọdụ ụgbọ mmiri 67. Adreesị MAC nke ngwaọrụ onye ahịa gụnyere n'ime ngwugwu DHCPDISCOVER.
  2. Sava DHCP niile dị na netwọkụ (ma enwere ike ịnwe ọtụtụ n'ime ha) na-etolite onyinye DHCPOFFER nwere ntọala netwọkụ maka ngwaọrụ zitere DHCPDISCOVER, ma gbasaa ya na netwọkụ. Nchọpụta onye e bu n'obi maka ngwugwu a dabere na adreesị MAC nke onye ahịa enyere na mbụ na arịrịọ DHCPDISCOVER.
  3. Onye ahịa ahụ na-anabata ngwugwu nwere atụmatụ maka ntọala netwọkụ, họrọ nke kachasị mma (ihe njirisi nwere ike ịdị iche, dịka ọmụmaatụ, oge nnyefe ngwugwu, ọnụ ọgụgụ nke ụzọ etiti), wee mee “arịrịọ gọọmentị” DHCPREQUEST na ntọala netwọkụ. sitere na sava DHCP ọ masịrị ya. N'okwu a, ngwugwu ahụ na-aga na nkesa DHCP akọwapụtara.
  4. Ihe nkesa nwetara DHCPREQUEST na-eziga ngwugwu usoro DHCPACK, nke ọ depụtara ọzọ ntọala netwọk ezubere maka onye ahịa a.

DHCP+Mysql nkesa na Python

Na mgbakwunye, enwere ngwugwu DHCPINFORM nke sitere n'aka onye ahịa, na ebumnuche ya bụ ịgwa sava DHCP na "onye ahịa dị ndụ" ma na-eji ntọala netwọk enyere. Na mmejuputa ihe nkesa a, a na-eleghara ngwugwu ndị a anya.

Usoro ngwugwu

N'ozuzu, ihe ngwugwu Ethernet dị ka nke a:

DHCP+Mysql nkesa na Python

N'ọnọdụ anyị, anyị ga-atụle naanị data ozugbo sitere na ọdịnaya nke ngwugwu UDP, na-enweghị isi ihe mkpuchi oyi akwa OSI, ya bụ usoro DHCP:

DHCPDISCOVER

Yabụ, usoro nke inweta adreesị IP maka ngwaọrụ na-amalite site na onye ahịa DHCP na-eziga arịrịọ mgbasa ozi site na ọdụ ụgbọ mmiri 68 ruo 255.255.255.255:67. Na ngwugwu a, onye ahịa na-agụnye adreesị MAC ya, yana ihe kpọmkwem ọ chọrọ ịnata site na ihe nkesa DHCP. A kọwara nhazi ngwugwu na tebụl dị n'okpuru.

Tebụl nhazi ngwugwu DHCPDISCOVER

Ọnọdụ na ngwugwu
Aha bara uru
Ihe nlele:
Okwu Mmalite
Byte
Nkọwa

1
Arịrịọ buut
1
Hex
1
Ụdị ozi. 1 - arịrịọ sitere n'aka onye ahịa gaa na nkesa, 2 - nzaghachi site na nkesa na onye ahịa

2
Ụdị ngwaike
1
Hex
1
Ụdị adreesị ngwaike, na protocol a 1 - MAC

3
Ogologo adreesị ngwaike
6
Hex
1
Ogologo adreesị MAC ngwaọrụ

4
Hops
1
Hex
1
Ọnụọgụ nke ụzọ etiti

5
Azụmahịa ID
23:cf:de:1d
Hex
4
Ihe nchọpụta azụmahịa pụrụ iche. Emepụtara site n'aka onye ahịa na mmalite nke ọrụ arịrịọ

7
Nke abụọ gafere
0
Hex
4
Oge na sekọnd site na mmalite nke usoro ịnweta adreesị

9
Ọkọlọtọ buut
0
Hex
2
Ụfọdụ ọkọlọtọ enwere ike ịtọ iji gosi paramita protocol

11
Adreesị IP onye ahịa
0.0.0.0
Ahịrị
4
Adreesị IP onye ahịa (ọ bụrụ na ọ bụla)

15
Adreesị IP onye ahịa gị
0.0.0.0
Ahịrị
4
Adreesị IP nke ihe nkesa na-enye (ọ bụrụ na ọ dị)

19
Adreesị IP nkesa na-esote
0.0.0.0
Ahịrị
4
Adreesị IP nkesa (ọ bụrụ na amaara ya)

23
Adreesị IP onye nnọchi anya
172.16.114.41
Ahịrị
4
Adreesị IP nke onye nnọchi anya relay (dịka ọmụmaatụ, mgba ọkụ)

27
Adreesị MAC ndị ahịa
14:d6:4d:a7:c9:55
Hex
6
Adreesị MAC nke onye na-ezigara ngwugwu (onye ahịa)

31
Mkpuchi adreesị ngwaike onye ahịa
 
Hex
10
Oche echekwara. Na-ejupụtakarị na efu

41
Aha nnabata sava
 
Ahịrị
64
Aha sava DHCP. A naghị ebufekarị ya

105
Aha faịlụ buut
 
Ahịrị
128
Aha faịlụ na ihe nkesa nke ọdụ diski enweghị diski na-eji mgbe ị na-ebupụ

235
Kuki anwansi
63: 82: 53: 63
Hex
4
Nọmba "Anwansi" dị ka nke, gụnyere. ị nwere ike ikpebi na ngwugwu a bụ nke usoro DHCP

Nhọrọ DHCP. Nwere ike ịga n'usoro ọ bụla

236
Nọmba nhọrọ
53
Dec
1
Nhọrọ 53, nke na-akọwapụta ụdị ngwugwu DHCP

1 - DHCPDISCOVER
3 - DHCPREQUEST
2 - DHCPOFFER
5 - DHCPACK
8 - DHCPINFORM

 
Ogologo nhọrọ
1
Dec
1

 
Uru nhọrọ
1
Dec
1

 
Nọmba nhọrọ
50
Dec
1
Kedu adreesị IP onye ahịa chọrọ ịnata?

 
Ogologo nhọrọ
4
Dec
1

 
Uru nhọrọ
172.16.134.61
Ahịrị
4

 
Nọmba nhọrọ
55
 
1
Ntọala netwọkụ nke onye ahịa rịọrọ. Ihe mejupụtara nwere ike ịdị iche

01 - ihe mkpuchi netwọkụ
03 - Ọnụ ụzọ
06 - DNS
oc - Aha nnabata
0f - aha ngalaba netwọkụ
1c - adreesị nke arịrịọ mgbasa ozi (mgbasa ozi)
42 - Aha sava TFTP
79 - Ụzọ Static na-enweghị klaasị

 
Ogologo nhọrọ
8
 
1

 
Uru nhọrọ
01:03:06:0c:0f:1c:42:79
 
8

 
Nọmba nhọrọ
82
Dec
 
Nhọrọ 82, nke na-ebufe adreesị MAC nke ngwaọrụ repeater na ụfọdụ ụkpụrụ ndị ọzọ.

Ọtụtụ mgbe, nke a bụ ọdụ ụgbọ mmiri nke ngbanwe nke onye ahịa DHCP na-agba ọsọ, nhọrọ a nwere paramita ndị ọzọ, nke mbụ bụ ọnụ ọgụgụ nke "suboption", nke abụọ bụ ogologo ya na uru ya.

N'okwu a, na nhọrọ 82, etinyere nhọrọ ndị a:
Agent Circuit ID = 00:04:00:01:00:04, ebe bytes abụọ ikpeazụ bụ ọdụ ụgbọ mmiri ndị ahịa DHCP nke arịrịọ ahụ sitere na ya.

Agent Remote ID = 00:06:c8:be:19:93:11:48 - adreesị MAC nke ngwaọrụ nkwugharị DHCP

 
Ogologo nhọrọ
18
Dec
 

 
Uru nhọrọ
01:06
00:04:00:01:00:04
02:08
00:06:c8:be:19:93:11:48
Hex
 

 
Ọgwụgwụ ngwugwu
255
Dec
1
255 na-anọchi anya njedebe nke ngwugwu ahụ

DHCPOFFER

Ozugbo ihe nkesa ahụ nwetara ngwugwu DHCPDISCOVER ma ọ bụrụ na ọ hụ na ọ nwere ike inye onye ahịa ihe site na nke a rịọrọ, mgbe ahụ ọ na-ewepụta nzaghachi maka ya - DHCPDISCOVER. A na-eziga nzaghachi na ọdụ ụgbọ mmiri "site na ebe o si bịa", site na mgbasa ozi, n'ihi na N'oge a, onye ahịa ahụ enwebeghị adreesị IP, yabụ ọ nwere ike ịnakwere ngwugwu ahụ ma ọ bụrụ na ezitere ya site na mgbasa ozi. Onye ahịa ahụ ghọtara na nke a bụ ngwugwu maka ya site na adreesị MAC ya n'ime ngwugwu ahụ, yana nọmba azụmahịa ọ na-emepụta n'oge e mepụtara ngwugwu mbụ.

Tebụl nhazi ngwugwu DHCPOFFER

Ọnọdụ na ngwugwu
Aha uru (nkịtị)
Ihe nlele:
Okwu Mmalite
Byte
Nkọwa

1
Arịrịọ buut
1
Hex
1
Ụdị ozi. 1 - arịrịọ sitere n'aka onye ahịa gaa na nkesa, 2 - nzaghachi site na nkesa na onye ahịa

2
Ụdị ngwaike
1
Hex
1
Ụdị adreesị ngwaike, na protocol a 1 - MAC

3
Ogologo adreesị ngwaike
6
Hex
1
Ogologo adreesị MAC ngwaọrụ

4
Hops
1
Hex
1
Ọnụọgụ nke ụzọ etiti

5
Azụmahịa ID
23:cf:de:1d
Hex
4
Ihe nchọpụta azụmahịa pụrụ iche. Emepụtara site n'aka onye ahịa na mmalite nke ọrụ arịrịọ

7
Nke abụọ gafere
0
Hex
4
Oge na sekọnd site na mmalite nke usoro ịnweta adreesị

9
Ọkọlọtọ buut
0
Hex
2
Ụfọdụ ọkọlọtọ enwere ike ịtọ iji gosi paramita protocol. N'okwu a, 0 pụtara ụdị arịrịọ Unicast

11
Adreesị IP onye ahịa
0.0.0.0
Ahịrị
4
Adreesị IP onye ahịa (ọ bụrụ na ọ bụla)

15
Adreesị IP onye ahịa gị
172.16.134.61
Ahịrị
4
Adreesị IP nke ihe nkesa na-enye (ọ bụrụ na ọ dị)

19
Adreesị IP nkesa na-esote
0.0.0.0
Ahịrị
4
Adreesị IP nkesa (ọ bụrụ na amaara ya)

23
Adreesị IP onye nnọchi anya
172.16.114.41
Ahịrị
4
Adreesị IP nke onye nnọchi anya relay (dịka ọmụmaatụ, mgba ọkụ)

27
Adreesị MAC ndị ahịa
14:d6:4d:a7:c9:55
Hex
6
Adreesị MAC nke onye na-ezigara ngwugwu (onye ahịa)

31
Mkpuchi adreesị ngwaike onye ahịa
 
Hex
10
Oche echekwara. Na-ejupụtakarị na efu

41
Aha nnabata sava
 
Ahịrị
64
Aha sava DHCP. A naghị ebufekarị ya

105
Aha faịlụ buut
 
Ahịrị
128
Aha faịlụ na ihe nkesa nke ọdụ diski enweghị diski na-eji mgbe ị na-ebupụ

235
Kuki anwansi
63: 82: 53: 63
Hex
4
Nọmba "Anwansi" dị ka nke, gụnyere. ị nwere ike ikpebi na ngwugwu a bụ nke usoro DHCP

Nhọrọ DHCP. Nwere ike ịga n'usoro ọ bụla

236
Nọmba nhọrọ
53
Dec
1
Nhọrọ 53, nke na-akọwa ụdị ngwugwu DHCP 2 - DHCPOFFER

 
Ogologo nhọrọ
1
Dec
1

 
Uru nhọrọ
2
Dec
1

 
Nọmba nhọrọ
1
Dec
1
Nhọrọ iji nye onye ahịa DHCP ihe mkpuchi netwọkụ

 
Ogologo nhọrọ
4
Dec
1

 
Uru nhọrọ
255.255.224.0
Ahịrị
4

 
Nọmba nhọrọ
3
Dec
1
Nhọrọ iji nye onye ahịa DHCP ọnụ ụzọ ndabara

 
Ogologo nhọrọ
4
Dec
1

 
Uru nhọrọ
172.16.12.1
Ahịrị
4

 
Nọmba nhọrọ
6
Dec
1
Nhọrọ iji nye DHCP onye ahịa DNS

 
Ogologo nhọrọ
4
Dec
1

 
Uru nhọrọ
8.8.8.8
Ahịrị
4

 
Nọmba nhọrọ
51
Dec
1
Oge ndụ nke parampat netwọkụ ewepụtara na sekọnd, mgbe nke ahụ gasịrị, onye ahịa DHCP ga-arịọrịrị ha ọzọ

 
Ogologo nhọrọ
4
Dec
1

 
Uru nhọrọ
86400
Dec
4

 
Nọmba nhọrọ
82
Dec
1
Nhọrọ 82, na-emegharị ihe batara na DHCPDISCOVER

 
Ogologo nhọrọ
18
Dec
1

 
Uru nhọrọ
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d:ec
Dec
18

 
Ọgwụgwụ ngwugwu
255
Dec
1
255 na-anọchi anya njedebe nke ngwugwu ahụ

DHCPREQUEST

Mgbe onye ahịa natara DHCPOFFER, ọ na-etolite ngwugwu na-arịọ paramita netwọk ọ bụghị maka sava DHCP niile na netwọkụ ahụ, kama ọ bụ naanị otu onye akọwapụtara, onye DHCPOFFER na-enye ọ “masịrị” nke ukwuu. Usoro "dị ka" nwere ike ịdị iche ma dabere na mmejuputa DHCP nke onye ahịa. A na-akọwapụta onye natara arịrịọ ahụ site na iji adreesị MAC nke ihe nkesa DHCP. Ọzọkwa, onye ahịa nwere ike izipu ngwugwu DHCPREQUEST na-ebughị ụzọ mepụta DHCPDISCOVER, ma ọ bụrụ na enwetalarị adreesị IP nke ihe nkesa na mbụ.

Tebụl nhazi ngwugwu DHCPREQUEST

Ọnọdụ na ngwugwu
Aha uru (nkịtị)
Ihe nlele:
Okwu Mmalite
Byte
Nkọwa

1
Arịrịọ buut
1
Hex
1
Ụdị ozi. 1 - arịrịọ sitere n'aka onye ahịa gaa na nkesa, 2 - nzaghachi site na nkesa na onye ahịa

2
Ụdị ngwaike
1
Hex
1
Ụdị adreesị ngwaike, na protocol a 1 - MAC

3
Ogologo adreesị ngwaike
6
Hex
1
Ogologo adreesị MAC ngwaọrụ

4
Hops
1
Hex
1
Ọnụọgụ nke ụzọ etiti

5
Azụmahịa ID
23:cf:de:1d
Hex
4
Ihe nchọpụta azụmahịa pụrụ iche. Emepụtara site n'aka onye ahịa na mmalite nke ọrụ arịrịọ

7
Nke abụọ gafere
0
Hex
4
Oge na sekọnd site na mmalite nke usoro ịnweta adreesị

9
Ọkọlọtọ buut
8000
Hex
2
Ụfọdụ ọkọlọtọ enwere ike ịtọ iji gosi paramita protocol. N'okwu a, edobere “mgbasa ozi”.

11
Adreesị IP onye ahịa
0.0.0.0
Ahịrị
4
Adreesị IP onye ahịa (ọ bụrụ na ọ bụla)

15
Adreesị IP onye ahịa gị
172.16.134.61
Ahịrị
4
Adreesị IP nke ihe nkesa na-enye (ọ bụrụ na ọ dị)

19
Adreesị IP nkesa na-esote
0.0.0.0
Ahịrị
4
Adreesị IP nkesa (ọ bụrụ na amaara ya)

23
Adreesị IP onye nnọchi anya
172.16.114.41
Ahịrị
4
Adreesị IP nke onye nnọchi anya relay (dịka ọmụmaatụ, mgba ọkụ)

27
Adreesị MAC ndị ahịa
14:d6:4d:a7:c9:55
Hex
6
Adreesị MAC nke onye na-ezigara ngwugwu (onye ahịa)

31
Mkpuchi adreesị ngwaike onye ahịa
 
Hex
10
Oche echekwara. Na-ejupụtakarị na efu

41
Aha nnabata sava
 
Ahịrị
64
Aha sava DHCP. A naghị ebufekarị ya

105
Aha faịlụ buut
 
Ahịrị
128
Aha faịlụ na ihe nkesa nke ọdụ diski enweghị diski na-eji mgbe ị na-ebupụ

235
Kuki anwansi
63: 82: 53: 63
Hex
4
Nọmba "Anwansi" dị ka nke, gụnyere. ị nwere ike ikpebi na ngwugwu a bụ nke usoro DHCP

Nhọrọ DHCP. Nwere ike ịga n'usoro ọ bụla

236
Nọmba nhọrọ
53
Dec
3
Nhọrọ 53, nke na-akọwa ngwungwu DHCP ụdị 3 - DHCPREQUEST

 
Ogologo nhọrọ
1
Dec
1

 
Uru nhọrọ
3
Dec
1

 
Nọmba nhọrọ
61
Dec
1
NJ ndị ahịa: 01 (maka Ehernet) + adreesị MAC ndị ahịa

 
Ogologo nhọrọ
7
Dec
1

 
Uru nhọrọ
01:2c:ab:25:ff:72:a6
Hex
7

 
Nọmba nhọrọ
60
Dec
 
"Ihe nchọpụta klas ndị na-ere ahịa". N'ọnọdụ m, ọ na-akọ ụdị onye ahịa DHCP. Ikekwe ngwaọrụ ndị ọzọ na-eweghachi ihe dị iche. Windows dịka ọmụmaatụ na-akọ MSFT 5.0

 
Ogologo nhọrọ
11
Dec
 

 
Uru nhọrọ
udhcp 0.9.8
Ahịrị
 

 
Nọmba nhọrọ
55
 
1
Ntọala netwọkụ nke onye ahịa rịọrọ. Ihe mejupụtara nwere ike ịdị iche

01 - ihe mkpuchi netwọkụ
03 - Ọnụ ụzọ
06 - DNS
oc - Aha nnabata
0f - aha ngalaba netwọkụ
1c - adreesị nke arịrịọ mgbasa ozi (mgbasa ozi)
42 - Aha sava TFTP
79 - Ụzọ Static na-enweghị klaasị

 
Ogologo nhọrọ
8
 
1

 
Uru nhọrọ
01:03:06:0c:0f:1c:42:79
 
8

 
Nọmba nhọrọ
82
Dec
1
Nhọrọ 82, na-emegharị ihe batara na DHCPDISCOVER

 
Ogologo nhọrọ
18
Dec
1

 
Uru nhọrọ
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d:ec
Dec
18

 
Ọgwụgwụ ngwugwu
255
Dec
1
255 na-anọchi anya njedebe nke ngwugwu ahụ

DHCPACK

Dị ka nkwenye na "ee, nke ahụ ziri ezi, nke a bụ adreesị IP gị, agaghị m enye ya onye ọ bụla ọzọ" site na ihe nkesa DHCP, ngwugwu na usoro DHCPACK site na ihe nkesa na-eje ozi. A na-ezigara ya dị ka ngwugwu ndị ọzọ. Ọ bụ ezie na, na koodu dị n'okpuru maka ihe nkesa DHCP emejuputa atumatu na Eke Ọgba, ọ bụrụ na m na-emegharị arịrịọ mgbasa ozi ọ bụla site na izipu ngwugwu na IP onye ahịa kpọmkwem, ma ọ bụrụ na ọ maralarị. Ọzọkwa, ihe nkesa DHCP adịghị eche ma ọlị ma ngwugwu DHCPACK erutela onye ahịa ahụ. Ọ bụrụ na onye ahịa ahụ enwetaghị DHCPACK, mgbe obere oge gachara ọ na-emegharị DHCPREQUEST

Tebụl nhazi ngwugwu DHCPACK

Ọnọdụ na ngwugwu
Aha uru (nkịtị)
Ihe nlele:
Okwu Mmalite
Byte
Nkọwa

1
Arịrịọ buut
2
Hex
1
Ụdị ozi. 1 - arịrịọ sitere n'aka onye ahịa gaa na nkesa, 2 - nzaghachi site na nkesa na onye ahịa

2
Ụdị ngwaike
1
Hex
1
Ụdị adreesị ngwaike, na protocol a 1 - MAC

3
Ogologo adreesị ngwaike
6
Hex
1
Ogologo adreesị MAC ngwaọrụ

4
Hops
1
Hex
1
Ọnụọgụ nke ụzọ etiti

5
Azụmahịa ID
23:cf:de:1d
Hex
4
Ihe nchọpụta azụmahịa pụrụ iche. Emepụtara site n'aka onye ahịa na mmalite nke ọrụ arịrịọ

7
Nke abụọ gafere
0
Hex
4
Oge na sekọnd site na mmalite nke usoro ịnweta adreesị

9
Ọkọlọtọ buut
8000
Hex
2
Ụfọdụ ọkọlọtọ enwere ike ịtọ iji gosi paramita protocol. N'okwu a, edobere “mgbasa ozi”.

11
Adreesị IP onye ahịa
0.0.0.0
Ahịrị
4
Adreesị IP onye ahịa (ọ bụrụ na ọ bụla)

15
Adreesị IP onye ahịa gị
172.16.134.61
Ahịrị
4
Adreesị IP nke ihe nkesa na-enye (ọ bụrụ na ọ dị)

19
Adreesị IP nkesa na-esote
0.0.0.0
Ahịrị
4
Adreesị IP nkesa (ọ bụrụ na amaara ya)

23
Adreesị IP onye nnọchi anya
172.16.114.41
Ahịrị
4
Adreesị IP nke onye nnọchi anya relay (dịka ọmụmaatụ, mgba ọkụ)

27
Adreesị MAC ndị ahịa
14:d6:4d:a7:c9:55
Hex
6
Adreesị MAC nke onye na-ezigara ngwugwu (onye ahịa)

31
Mkpuchi adreesị ngwaike onye ahịa
 
Hex
10
Oche echekwara. Na-ejupụtakarị na efu

41
Aha nnabata sava
 
Ahịrị
64
Aha sava DHCP. A naghị ebufekarị ya

105
Aha faịlụ buut
 
Ahịrị
128
Aha faịlụ na ihe nkesa nke ọdụ diski enweghị diski na-eji mgbe ị na-ebupụ

235
Kuki anwansi
63: 82: 53: 63
Hex
4
Nọmba "Anwansi" dị ka nke, gụnyere. ị nwere ike ikpebi na ngwugwu a bụ nke usoro DHCP

Nhọrọ DHCP. Nwere ike ịga n'usoro ọ bụla

236
Nọmba nhọrọ
53
Dec
3
Nhọrọ 53, nke na-akọwa ụdị ngwugwu DHCP 5 - DHCPACK

 
Ogologo nhọrọ
1
Dec
1

 
Uru nhọrọ
5
Dec
1

 
Nọmba nhọrọ
1
Dec
1
Nhọrọ iji nye onye ahịa DHCP ihe mkpuchi netwọkụ

 
Ogologo nhọrọ
4
Dec
1

 
Uru nhọrọ
255.255.224.0
Ahịrị
4

 
Nọmba nhọrọ
3
Dec
1
Nhọrọ iji nye onye ahịa DHCP ọnụ ụzọ ndabara

 
Ogologo nhọrọ
4
Dec
1

 
Uru nhọrọ
172.16.12.1
Ahịrị
4

 
Nọmba nhọrọ
6
Dec
1
Nhọrọ iji nye DHCP onye ahịa DNS

 
Ogologo nhọrọ
4
Dec
1

 
Uru nhọrọ
8.8.8.8
Ahịrị
4

 
Nọmba nhọrọ
51
Dec
1
Oge ndụ nke parampat netwọkụ ewepụtara na sekọnd, mgbe nke ahụ gasịrị, onye ahịa DHCP ga-arịọrịrị ha ọzọ

 
Ogologo nhọrọ
4
Dec
1

 
Uru nhọrọ
86400
Dec
4

 
Nọmba nhọrọ
82
Dec
1
Nhọrọ 82, na-emegharị ihe batara na DHCPDISCOVER

 
Ogologo nhọrọ
18
Dec
1

 
Uru nhọrọ
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d:ec
Dec
18

 
Ọgwụgwụ ngwugwu
255
Dec
1
255 na-anọchi anya njedebe nke ngwugwu ahụ

ọnọdụ

Nrụnye ahụ nwere n'ezie ịwụnye modul Python dị mkpa maka ọrụ. A na-eche na MySQL etinyelarị ma hazie ya.

FreeBSD

pkg tinye python3 python3 -m ensurepip pip3 tinye mysql-njikọ

Ubuntu

sudo apt-nweta wụnye python3 sudo apt-nweta wụnye pip3 sudo pip3 tinye mysql-njikọ

Anyị na-emepụta nchekwa data MySQL, bulite pydhcp.sql n'ime ya, ma hazie faịlụ nhazi ahụ.

Nhazi

Ntọala sava niile dị na faịlụ xml. Faịlụ ntụaka:

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 nwale nwale pydhcp nhọrọ_8.8.8.8_hex:sw_port82:1:20 nhọrọ_22_hex:sw_port82:2:16 nhọrọ_18_hex:sw_mac:82:26 40 họrọ ip, mask, router, dns n'aka ndị ọrụ ebe elu (mac) = elu ('{option_3_AgentRemoteId_hex}') na elu (ọdụ ụgbọ mmiri) = elu ('{option_1_AgentCircuitId_port_hex}') họrọ ip, mask, router, dns n'aka ndị ọrụ ebe elu (mac) = elu ('{sw_mac}') na elu (ọdụ ụgbọ mmiri) = elu ('{sw_port82}') họrọ ip, mask, router, dns n'aka ndị ọrụ ebe elu (mac) = elu ('{ClientMacAddress}') tinye n'ime akụkọ ihe mere eme (id,dt,mac,ip, comment) ụkpụrụ (efu, now(),'{ClientMacAddress}','{RequestedIpAddress}','DHCPACK/INFORM')

Ugbu a na nkọwa ndị ọzọ na mkpado:

Ngalaba dcpserver na-akọwa ntọala ntọala maka ịmalite sava ahụ, ya bụ:

  • onye ọbịa - ihe adreesị IP nke ihe nkesa na-ege ntị na ọdụ ụgbọ mmiri 67
  • mgbasa ozi - nke ip bụ mgbasa ozi maka DHCPOFFER na DHCPACK
  • DHCPServer - gịnị bụ ip nke ihe nkesa DHCP
  • Oge mgbazinye LeaseTime nke adreesị IP enyere
  • ThreadLimit - ole eri na-agba ọsọ n'otu oge iji hazie ngwugwu UDP na-abata na ọdụ ụgbọ mmiri 67. O kwesiri inye aka na oru ibu ibu 😉
  • defaultMask,defaultRouter,defaultDNS - ihe a na-enye onye debanyere aha na ndabara ma ọ bụrụ na achọtara IP na nchekwa data, mana akọwapụtaghị paramita ndị ọzọ maka ya.

ngalaba mysql:

onye ọbịa, aha njirimara, paswọọdụ, aha aha - ihe niile na-ekwu maka onwe ya. Etinyere ụkpụrụ nchekwa data dị nso na GitHub

Akụkụ ajụjụ: arịrịọ maka ịnata OFFER/ACK ka akọwara ebe a:

  • offer_count - ọnụ ọgụgụ ahịrị nwere arịrịọ na-eweghachite nsonaazụ dị ka ip, mask, router, dns.
  • offer_n - eriri ajụjụ. Ọ bụrụ na nloghachi efu, mechaa arịrịọ onyinye a
  • History_sql - ajụjụ na-ede, dịka ọmụmaatụ, na "akụkọ ikike" maka onye debanyere aha

Arịrịọ nwere ike ịgụnye mgbanwe ọ bụla sitere na ngalaba nhọrọ ma ọ bụ nhọrọ sitere na protocol DHCP.

Ngalaba nhọrọ. Nke a bụ ebe ọ na-adọrọ mmasị karị. N'ebe a, anyị nwere ike ịmepụta mgbanwe ndị anyị nwere ike iji mechaa na ngalaba ajụjụ.

Dịka ọmụmaatụ:

option_82_hex:sw_port1:20:22

, ahịrị iwu a na-ewe ahịrị dum nke batara na nhọrọ DHCP arịrịọ 82, na usoro hex, na nso nso site na 20 ruo 22 bytes gụnyere ma tinye ya na sw_port1 nke ọhụrụ mgbanwe (mgbanye ọdụ ụgbọ mmiri site na ebe arịrịọ ahụ bịara)

option_82_hex:sw_mac:26:40

, kọwaa mgbanwe sw_mac, na-ewere hex site na oke 26:40

Ị nwere ike ịhụ nhọrọ niile enwere ike iji na ajụjụ site na ịmalite ihe nkesa na-d switch. Anyị ga-ahụ ihe dị ka log a:

--a ngwugwu DHCPINFORM rutere n'ọdụ ụgbọ mmiri 67, site na 0025224ad764 , b'x91xa5xe0xa3xa5xa9-x8fx8a' , ('172.30.114.25', 68) {'ClientMacAddress': 'address': 'address':'0025224 764%"Jxd00d' , 'HType': 'Ethernet', 'HostName': b'x7xa91xe5xa0xa3xa5-x9fx8a', 'ReqListDNS': Eziokwu, 'ReqListDomainName': Eziokwu, 'ReqListPerfowmRouterDiscover': Eziokwu, 'ReqLister': True, 'ReqListRouter' 'ReqListSubnetM na-ajụ': Ezi, 'ReqListVendorSpecInfo': 8, 'RequestedIpAddress': '43', 'Onye na-ere': b'MSFT 0.0.0.0', 'chaddr': '5.0ad0025224', 'ciaddr'.764': '172.30.128.13. , 'ọkọlọtọ': b'x00x00', 'giadr': '172.30.114.25', 'gpoz': 308, 'hlen': 6, 'hops': 1, 'htype': 'MAC', 'magic_kuki': b'cx82Sc', 'op': 'DHCPINFORM', 'nhọrọ12': 12, 'nhọrọ53': 53, 'nhọrọ55': 55, 'nhọrọ60': 60, 'nhọrọ61': 61, 'nhọrọ82': 82,' nhọrọ_82_byte': b'x12x01x06x00x04x00x01x00x06x02x08x00'b'x06x00x1eXx9exb2xad', 'nhọrọ_82_hex': '12010600040001000602080006001e 589_len': 2 82, 'nhọrọ_18_str': "b'x82x12x01x06x00x04x00x01x00x06x02x08x00x06x00eXx1exb9xad", 'nsonaazụ': Ụgha, 'sekọnd': 2, 'siadr': '768', 'sw_mac': '0.0.0.0e001eb589ad', 'sw_port2': '1', 'xidbyte': b'

N'ihi ya, anyị nwere ike kechie mgbanwe ọ bụla na {} ma a ga-eji ya na ajụjụ SQL.

Ka anyị dekọọ maka akụkọ ihe mere eme na onye ahịa natara adreesị IP:

DHCP+Mysql nkesa na Python

DHCP+Mysql nkesa na Python

Mmalite nkesa

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

- d njikwa mmepụta mode DEBUG
- c <filename> faịlụ nhazi

Nkọwapụta

Ma ugbu a nkọwa ndị ọzọ gbasara imejuputa ihe nkesa na Python. Ọ bụ ihe mgbu. A mụrụ Python na ofufe. A na-eme ọtụtụ oge n'ụdị "wow, n'ụzọ ụfọdụ m mere ka ọ rụọ ọrụ." Emezighị ya ma ọlị, wee hapụ ya n'ụdị a n'ihi ntakịrị ahụmịhe na mmepe Python. M ga-ebi na akụkụ kachasị mma nke mmejuputa ihe nkesa na "koodu".

Nchọgharị faịlụ nhazi XML

A na-eji modul Python ọkọlọtọ xml.dom. O yiri ka ọ dị mfe, ma n'oge mmejuputa a na-ahụ anya enweghị akwụkwọ doro anya na ihe atụ na netwọk site na iji modul a.

    osisi = minidom.parse (gconfig ["config_file") mconfig = osisi.getElementsByTagName ("mysql") maka elem na mconfig: gconfig ["mysql_host"] = elem.getElementsByTagName ("onye ọbịa") [0].firstChild.data gconfig["mysql_username"]=elem.getElementsByTagName("aha njirimara")[0].firstChild.data gconfig["mysql_password"]=elem.getElementsByTagName("password")[0].firstChild.data gconfig["mysql_basename"] =elem.getElementsByTagName("basename")[0].firstChild.data dconfig=osisi.getElementsByTagName("dhcpserver") maka elem na dconfig: gconfig["mgbasa ozi"]=elem.getElementsByTagName("mgbasa ozi")[0]. firstChild.data gconfig ["dhcp_host"]=elem.getElementsByTagName("onye ọbịa")[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_de =elem.getElementsByTagName("defaultMask"). defaultDNS")[0].firstChild.data qconfig=osisi.getElementsByTagName("ajụjụ") maka elem na qconfig: gconfig ["offer_count"]=elem.getElementsByTagName ("offer_count") [0] .firstChild.data maka ọnụọgụ na nso (int(gconfig ["offer_count")): gconfig["offer_"+str(num+0)]=elem.getElementsByTagName("onyinye_"+str(num+0))[1].firstChild.data gconfig ["history_sql"]=elem.getElementsByTagName("history_sql")[1].firstChild.data nhọrọ=tree.getElementsByTagName("nhọrọ") maka elem na nhọrọ: node=elem.getElementsByTagName("nhọrọ") maka nhọrọ na node. NhọrọMod.append (nhọrọ.firstChild.data)

Multithreading

N'ụzọ dị ịtụnanya, a na-emejuputa multithreading na Python n'ụzọ doro anya na dị mfe.

def PacketWork (data, addr): ... # mmejuputa iwu nke ịkọwapụta ngwugwu na-abata na ịzaghachi ya ... ebe Eziokwu: data, addr = udp_socket.recvfrom(1024) # na-echere eriri ngwugwu UDP = threading.Thread( target=PacketWork , args=(data,addr,)))bido() # dị ka ọ bịara - anyị na-ebupụta ọrụ PacketWork akọwara na mbụ n'azụ yana paramita mgbe threading.active_count ()>gconfig ["dhcp_ThreadLimit"]: oge. ụra(1) # ma ọ bụrụ na ọnụọgụgụ enwere ọtụtụ eri na-agba ọsọ karịa na ntọala, anyị na-echere ruo mgbe ha dị ole na ole.

Anata/zipụ ngwugwu DHCP

Iji gbochie ngwugwu UDP na-abịa site na kaadị netwọkụ, ị ga-ebuli oghere:

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

, ebe ọkọlọtọ dị:

  • AF_INET - pụtara na usoro adreesị ga-abụ IP: ọdụ ụgbọ mmiri. Enwere ike ịnwe AF_UNIX - ebe ejiri aha faịlụ nyere adreesị.
  • SOCK_DGRAM - pụtara na anyị anaghị anabata "ngwugwu raw", kama nke gaferelarị na firewall, yana ngwugwu edoziri nke ọma. Ndị ahụ. anyị na-enweta naanị ngwugwu UDP na-enweghị akụkụ "anụ ahụ" nke ngwugwu ngwugwu UDP. Ọ bụrụ na ị na-eji ọkọlọtọ SOCK_RAW, ị ga-achọkwa ịtụgharị "wrapper" a.

Izipu ngwugwu nwere ike ịdị ka mgbasa ozi:

                    udp_socket.setsockot(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) #gbanwee oghere ka ọ bụrụ ọnọdụ mgbasa ozi rz=udp_socket.sendto(packetack, (gconfig ["broadcast"),68))

, na adreesị “ebe ngwugwu ahụ si bịa”:

                        udp_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # gbanwee oghere ka ọ bụrụ ọnọdụ ọtụtụ ndị na-ege ntị rz=udp_socket.sendto(packetack, addr)

, ebe SOL_SOCKET pụtara "protocol larịị" maka ịtọ nhọrọ,

, SO_BROADCAST nhọrọ na ngwugwu okpu agha bụ "mgbasa ozi"

  ,SO_REUSEADDR nhọrọ na-agbanye oghere na ọnọdụ "ọtụtụ ndị na-ege ntị". Na tiori, ọ dịghị mkpa na nke a, ma na otu n'ime FreeBSD sava nke m nwalere na ya, koodu adịghị arụ ọrụ na-enweghị nhọrọ a.

Na-enyocha ngwugwu DHCP

Nke a bụ ebe Python masịrị m nke ukwuu. Ọ na-apụta na n'ime igbe ahụ ọ na-enye gị ohere ịmegharị nke ọma na bytecode. Na-enye ohere ka asụgharị ya n'ụzọ dị mfe ka ọ bụrụ ụkpụrụ iri, eriri na hex - ya bụ. nke a bụ ihe anyị kwesịrị n'ezie ịghọta nhazi nke ngwugwu. Yabụ, dịka ọmụmaatụ, ị nwere ike nweta ọtụtụ bytes na HEX yana naanị bytes:

    res["xidhex"]=data[4:8].hex() res["xidbyte"]=data[4:8]

, kpochie bytes n'ime nhazi:

res["ọkọlọtọ"] = ngwugwu ('BB', data[10], data[11])

Nweta IP site na nhazi:

res["ciadr"]=socket.inet_ntoa(mkpọ ('BBBB',data[12],data[13],data[14],data[15]));

Na nke ọzọ:

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

Nke ahụ bụ ihe niile ugbu a 😉

isi: www.habr.com

Tinye a comment