Seva ea DHCP + Mysql ho Python

Seva ea DHCP + Mysql ho Python

Sepheo sa morero ona e ne e le:

  • Ho ithuta ka DHCP ho netweke ea IPv4
  • Ho ithuta Python (ho feta ho tloha qalong 😉)
  • sebaka sa seva DB2DHCP (fork eaka), ea mantlha mona, e ntseng e e-ba thata le ho feta ho e bokella bakeng sa OS e ncha. 'Me ha ke rate hore ke binary hore ha ho na mokhoa oa ho "fetola hona joale"
  • ho fumana seva ea DHCP e sebetsang e nang le bokhoni ba ho khetha aterese ea IP ea motho ea ngolisitseng ho sebelisa mac kapa ho fetola motsoako oa mac + port (Khetho ea 82)
  • ho ngola baesekele e 'ngoe (Oh! ona ke mosebetsi oo ke o ratang haholo)
  • ho fumana maikutlo mabapi le ho fana ha hao ka sehlopha ho Habrahabr (kapa ho feta moo, memo) 😉

Sephetho: ea sebetsa 😉 E lekoa ho FreeBSD le Ubuntu OS. Ka khopolo, khoutu e ka botsoa ho sebetsa tlas'a OS leha e le efe, hobane Ho bonahala ho se na litlamo tse itseng khoutung.
Ka hloko! Ho na le tse ngata tse tlang.

Khokahano ea polokelo bakeng sa batho ba sa rutehang "tšoara u phela".

Mokhoa oa ho kenya, ho lokisa le ho sebelisa sephetho sa "ho ithuta hardware" e tlaase haholo, ebe joale ho na le khopolo e nyenyane ka protocol ea DHCP. Bakeng sa ka. Le bakeng sa nalane 😉

Khopolo e nyane

DHCP ke eng

Ena ke protocol ea marang-rang e lumellang sesebelisoa ho fumana aterese ea eona ea IP (le likarolo tse ling tse kang heke, DNS, joalo-joalo) ho tloha ho seva sa DHCP. Lipakete li fapanyetsanoa ho sebelisoa protocol ea UDP. Molao-motheo o akaretsang oa ts'ebetso ea sesebelisoa ha o kopa li-parameter tsa marang-rang ke tse latelang:

  1. Sesebelisoa (moreki) se romela kopo ea khaso ea UDP (DHCPDISCOVER) marang-rang ka kopo "ho lokile, motho e mong mphe aterese ea IP." Ho feta moo, hangata (empa eseng kamehla) kopo e hlaha ho tloha koung ea 68 (mohloli), 'me sebaka seo se eang ho sona ke boema-kepe ba 67 (sebaka se eang). Lisebelisoa tse ling li boetse li romela lipakete ho tsoa ho port 67. Aterese ea MAC ea sesebelisoa sa moreki e kenyelelitsoe ka har'a pakete ea DHCPDISCOVER.
  2. Li-server tsohle tsa DHCP tse fumanehang marang-rang ('me ho ka' na ha e-ba le tse 'maloa tsa tsona) li theha tlhahiso ea DHCPOFFER ka litlhophiso tsa marang-rang bakeng sa sesebelisoa se rometseng DHCPDISCOVER,' me hape se se phatlalatse holim'a marang-rang. Tlhahiso ea hore na pakete ena e reretsoe mang e ipapisitse le aterese ea MAC ea moreki e fanoeng pejana ho kopo ea DHCPDISCOVER.
  3. Mofani o amohela liphutheloana tse nang le litlhahiso bakeng sa litlhophiso tsa marang-rang, o khetha e khahlehang ka ho fetisisa (litekanyetso li ka 'na tsa fapana, mohlala, nako ea ho fana ka lipakete, palo ea litsela tse bohareng),' me o etsa "kopo ea molao" DHCPREQUEST le litlhophiso tsa marang-rang. ho tsoa ho seva ea DHCP eo e e ratang. Tabeng ena, pakete e ea ho seva se itseng sa DHCP.
  4. Seva e amohetseng DHCPREQUEST e romela sephutheloana sa sebopeho sa DHCPACK, moo e boetseng e thathamisang litlhophiso tsa marang-rang tse reretsoeng moreki enoa.

Seva ea DHCP + Mysql ho Python

Ho phaella moo, ho na le lipakete tsa DHCPINFORM tse tsoang ho mofani, 'me sepheo sa eona ke ho tsebisa seva sa DHCP hore "moreki oa phela" mme o sebelisa litlhophiso tsa marang-rang tse fanoeng. Ts'ebetsong ea seva sena, liphutheloana tsena li hlokomolohuoa.

Sebopeho sa sephutheloana

Ka kakaretso, foreimi ea pakete ea Ethernet e shebahala tjena:

Seva ea DHCP + Mysql ho Python

Tabeng ea rona, re tla nahana feela ka data ka kotloloho ho tsoa ho tse ka har'a pakete ea UDP, ntle le lihlooho tsa protocol tsa OSI layer, e leng sebopeho sa DHCP:

MOTLATSI DITLHAKI

Kahoo, mokhoa oa ho fumana aterese ea IP bakeng sa mochine o qala ka mofani oa DHCP ho romela kopo ea khaso ho tloha ho port 68 ho ea ho 255.255.255.255:67. Ka har'a sephutheloana sena, moreki o kenyelletsa aterese ea eona ea MAC, hammoho le seo a batlang ho se fumana ho tsoa ho seva sa DHCP. Sebopeho sa sephutheloana se hlalositsoe tafoleng e ka tlase.

Tafole ea Sebopeho sa Pakete ea DHCPDISCOVER

Boemo ka har'a sephutheloana
Lebitso la boleng
Mohlala:
Selelekela
Byte
Tlhaloso

1
Kopo ea Boot
1
Hex
1
Mofuta oa molaetsa. 1 - kopo ho tsoa ho moreki ho ea ho seva, 2 - karabelo ho tsoa ho seva ho ea ho moreki

2
Mofuta oa Hardware
1
Hex
1
Mofuta oa aterese ea hardware, ho protocol ena 1 - MAC

3
Bolelele ba liaterese tsa Hardware
6
Hex
1
Bolelele ba aterese ea MAC ea sesebelisoa

4
Hops
1
Hex
1
Palo ea litsela tse mahareng

5
ID ea Transaction
23:cf:de:1d
Hex
4
Sekhetho se ikhethileng sa transaction. E hlahisoa ke moreki qalong ea ts'ebetso ea kopo

7
Ea bobeli e fetile
0
Hex
4
Nako ka metsotsoana ho tloha qalong ea mokhoa oa ho fumana aterese

9
Lifolakha tsa boot
0
Hex
2
Lifolakha tse ling tse ka hlophisoang ho bonts'a liparamente tsa protocol

11
Aterese ea IP ea moreki
0.0.0.0
Lintja
4
Aterese ea IP ea moreki (haeba e teng)

15
Aterese ea hau ea IP ea bareki
0.0.0.0
Lintja
4
Aterese ea IP e fanoang ke seva (haeba e le teng)

19
Aterese ea IP ea seva e latelang
0.0.0.0
Lintja
4
Aterese ea IP ea seva (haeba e tsejoa)

23
Aterese ea IP ea moemeli ea fetisetsoang
172.16.114.41
Lintja
4
Aterese ea IP ea moemeli oa phepelo (mohlala, switch)

27
Aterese ea MAC ea moreki
14:d6:4d:a7:c9:55
Hex
6
Aterese ea MAC ea moromeli oa pakete (moreki)

31
Lisebelisoa tsa aterese ea moreki
 
Hex
10
Setulo se boloketsoeng. Hangata e tletse li-zero

41
Lebitso la moamoheli oa seva
 
Lintja
64
Lebitso la seva ea DHCP. Hangata ha e fetisoe

105
Lebitso la faele ea boot
 
Lintja
128
Lebitso la faele ho seva le sebelisoang ke liteishene tse se nang disk ha o qala

235
Li-cookie tsa boselamose
63: 82: 53: 63
Hex
4
Nomoro ea "Magic", ho ea ka eona, ho kenyelletsa. o ka tseba hore pakete ena ke ea protocol ea DHCP

DHCP dikgetho. E ka tsamaea ka tatellano efe kapa efe

236
Nomoro ea khetho
53
Dec
1
Khetho ea 53, e hlalosang mofuta oa pakete ea DHCP

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

 
Bolelele ba khetho
1
Dec
1

 
Boleng ba khetho
1
Dec
1

 
Nomoro ea khetho
50
Dec
1
Ke aterese efe ea IP eo moreki a batlang ho e fumana?

 
Bolelele ba khetho
4
Dec
1

 
Boleng ba khetho
172.16.134.61
Lintja
4

 
Nomoro ea khetho
55
 
1
Litlhophiso tsa marang-rang tse kopiloeng ke moreki. Sebopeho se ka fapana

01 - Mask ea marang-rang
03 - Gateway
06 - DNS
oc - Lebitso la moamoheli
0f - lebitso la marang-rang la marang-rang
1c - aterese ea kopo ea khaso (phatlalatso)
42 - Lebitso la seva sa TFTP
79 - Classless Static Route

 
Bolelele ba khetho
8
 
1

 
Boleng ba khetho
01:03:06:0c:0f:1c:42:79
 
8

 
Nomoro ea khetho
82
Dec
 
Khetho ea 82, e fetisang aterese ea MAC ea sesebelisoa se pheta-phetoang le litekanyetso tse ling tse eketsehileng.

Hangata, ena ke boema-kepe ba sesebelisoa seo mofani oa DHCP a sebetsang ho sona.Khetho ena e na le litekanyo tse eketsehileng. Byte ea pele ke palo ea "suboption", ea bobeli ke bolelele ba eona, joale boleng ba eona.

Tabeng ena, ho khetho ea 82, likhetho tse nyane li behiloe:
Agent Circuit ID = 00:04:00:01:00:04, moo li-byte tse peli tsa ho qetela e leng kou ea bareki ba DHCP moo kopo e tsoang teng.

Agent Remote ID = 00:06:c8:be:19:93:11:48 - Aterese ea MAC ea sesebelisoa sa DHCP se pheta-phetoang

 
Bolelele ba khetho
18
Dec
 

 
Boleng ba khetho
01:06
00:04:00:01:00:04
02:08
00:06:c8:be:19:93:11:48
Hex
 

 
Qetello ea sephutheloana
255
Dec
1
255 e tšoantšetsa qetello ea pakete

MOTLATSI

Hang ha sebatli se fumana sephutheloana sa DHCPDISCOVER mme ha se bona hore se ka fa moreki ho hong ho tsoa ho se kopiloeng, se hlahisa karabo bakeng sa sona - DHCPDISCOVER. Karabelo e romeloa koung "ho tloha moo e fihlileng teng", ka phatlalatso, hobane motsotso ona, moreki ha a e-so be le aterese ea IP, ka hona a ka amohela pakete feela haeba e romelloa ka phatlalatso. Moreki oa hlokomela hore sena ke sephutheloana sa hae ka aterese ea hae ea MAC ka har'a sephutheloana, hammoho le nomoro ea transaction eo a e hlahisang nakong eo sephutheloana sa pele se neng se etsoa.

Tafole ea Sebopeho sa Pakete ea DHCPOFFER

Boemo ka har'a sephutheloana
Lebitso la boleng (tloaelehileng)
Mohlala:
Selelekela
Byte
Tlhaloso

1
Kopo ea Boot
1
Hex
1
Mofuta oa molaetsa. 1 - kopo ho tsoa ho moreki ho ea ho seva, 2 - karabelo ho tsoa ho seva ho ea ho moreki

2
Mofuta oa Hardware
1
Hex
1
Mofuta oa aterese ea hardware, ho protocol ena 1 - MAC

3
Bolelele ba liaterese tsa Hardware
6
Hex
1
Bolelele ba aterese ea MAC ea sesebelisoa

4
Hops
1
Hex
1
Palo ea litsela tse mahareng

5
ID ea Transaction
23:cf:de:1d
Hex
4
Sekhetho se ikhethileng sa transaction. E hlahisoa ke moreki qalong ea ts'ebetso ea kopo

7
Ea bobeli e fetile
0
Hex
4
Nako ka metsotsoana ho tloha qalong ea mokhoa oa ho fumana aterese

9
Lifolakha tsa boot
0
Hex
2
Lifolakha tse ling tse ka hlophisoang ho bonts'a liparamente tsa protocol. Tabeng ena, 0 e bolela mofuta oa kopo ea Unicast

11
Aterese ea IP ea moreki
0.0.0.0
Lintja
4
Aterese ea IP ea moreki (haeba e teng)

15
Aterese ea hau ea IP ea bareki
172.16.134.61
Lintja
4
Aterese ea IP e fanoang ke seva (haeba e le teng)

19
Aterese ea IP ea seva e latelang
0.0.0.0
Lintja
4
Aterese ea IP ea seva (haeba e tsejoa)

23
Aterese ea IP ea moemeli ea fetisetsoang
172.16.114.41
Lintja
4
Aterese ea IP ea moemeli oa phepelo (mohlala, switch)

27
Aterese ea MAC ea moreki
14:d6:4d:a7:c9:55
Hex
6
Aterese ea MAC ea moromeli oa pakete (moreki)

31
Lisebelisoa tsa aterese ea moreki
 
Hex
10
Setulo se boloketsoeng. Hangata e tletse li-zero

41
Lebitso la moamoheli oa seva
 
Lintja
64
Lebitso la seva ea DHCP. Hangata ha e fetisoe

105
Lebitso la faele ea boot
 
Lintja
128
Lebitso la faele ho seva le sebelisoang ke liteishene tse se nang disk ha o qala

235
Li-cookie tsa boselamose
63: 82: 53: 63
Hex
4
Nomoro ea "Magic", ho ea ka eona, ho kenyelletsa. o ka tseba hore pakete ena ke ea protocol ea DHCP

DHCP dikgetho. E ka tsamaea ka tatellano efe kapa efe

236
Nomoro ea khetho
53
Dec
1
Khetho ea 53, e hlalosang mofuta oa pakete ea DHCP 2 - DHCPOFFER

 
Bolelele ba khetho
1
Dec
1

 
Boleng ba khetho
2
Dec
1

 
Nomoro ea khetho
1
Dec
1
Khetho ea ho fa moreki oa DHCP mask a marang-rang

 
Bolelele ba khetho
4
Dec
1

 
Boleng ba khetho
255.255.224.0
Lintja
4

 
Nomoro ea khetho
3
Dec
1
Khetho ea ho fa moreki oa DHCP monyako oa kamehla

 
Bolelele ba khetho
4
Dec
1

 
Boleng ba khetho
172.16.12.1
Lintja
4

 
Nomoro ea khetho
6
Dec
1
Khetho ea ho fana ka DHCP ho moreki oa DNS

 
Bolelele ba khetho
4
Dec
1

 
Boleng ba khetho
8.8.8.8
Lintja
4

 
Nomoro ea khetho
51
Dec
1
Nako ea bophelo ea li-parameter tsa marang-rang tse fanoeng ka metsotsoana, ka mor'a moo mofani oa DHCP o tlameha ho li kopa hape

 
Bolelele ba khetho
4
Dec
1

 
Boleng ba khetho
86400
Dec
4

 
Nomoro ea khetho
82
Dec
1
Khetho ea 82, e pheta se tlileng ka DHCPDISCOVER

 
Bolelele ba khetho
18
Dec
1

 
Boleng ba khetho
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d: mohl
Dec
18

 
Qetello ea sephutheloana
255
Dec
1
255 e tšoantšetsa qetello ea pakete

KHOTHATSO MOHAPI

Ka mor'a hore mofani a fumane DHCPOFFER, o etsa pakete e kōpang li-parameter tsa marang-rang eseng ho li-server tsohle tsa DHCP marang-rang, empa ho e 'ngoe feela e khethehileng, eo DHCPOFFER e fanang ka eona a "rata" haholo. Mekhoa ea "joaloka" e ka fapana mme e itšetlehile ka ts'ebetsong ea DHCP ea mofani. Motho ea amohelang kopo o hlalosoa a sebelisa aterese ea MAC ea seva sa DHCP. Hape, pakete ea DHCPREQUEST e ka romeloa ke mofani ntle le ho qala ka ho hlahisa DHCPDISCOVER, haeba aterese ea IP ea seva e se e fumanoe pele.

Letlapa la Sebopeho sa Pakete ea DHCPREQUEST

Boemo ka har'a sephutheloana
Lebitso la boleng (tloaelehileng)
Mohlala:
Selelekela
Byte
Tlhaloso

1
Kopo ea Boot
1
Hex
1
Mofuta oa molaetsa. 1 - kopo ho tsoa ho moreki ho ea ho seva, 2 - karabelo ho tsoa ho seva ho ea ho moreki

2
Mofuta oa Hardware
1
Hex
1
Mofuta oa aterese ea hardware, ho protocol ena 1 - MAC

3
Bolelele ba liaterese tsa Hardware
6
Hex
1
Bolelele ba aterese ea MAC ea sesebelisoa

4
Hops
1
Hex
1
Palo ea litsela tse mahareng

5
ID ea Transaction
23:cf:de:1d
Hex
4
Sekhetho se ikhethileng sa transaction. E hlahisoa ke moreki qalong ea ts'ebetso ea kopo

7
Ea bobeli e fetile
0
Hex
4
Nako ka metsotsoana ho tloha qalong ea mokhoa oa ho fumana aterese

9
Lifolakha tsa boot
8000
Hex
2
Lifolakha tse ling tse ka hlophisoang ho bonts'a liparamente tsa protocol. Tabeng ena, "phatlalatso" e behiloe

11
Aterese ea IP ea moreki
0.0.0.0
Lintja
4
Aterese ea IP ea moreki (haeba e teng)

15
Aterese ea hau ea IP ea bareki
172.16.134.61
Lintja
4
Aterese ea IP e fanoang ke seva (haeba e le teng)

19
Aterese ea IP ea seva e latelang
0.0.0.0
Lintja
4
Aterese ea IP ea seva (haeba e tsejoa)

23
Aterese ea IP ea moemeli ea fetisetsoang
172.16.114.41
Lintja
4
Aterese ea IP ea moemeli oa phepelo (mohlala, switch)

27
Aterese ea MAC ea moreki
14:d6:4d:a7:c9:55
Hex
6
Aterese ea MAC ea moromeli oa pakete (moreki)

31
Lisebelisoa tsa aterese ea moreki
 
Hex
10
Setulo se boloketsoeng. Hangata e tletse li-zero

41
Lebitso la moamoheli oa seva
 
Lintja
64
Lebitso la seva ea DHCP. Hangata ha e fetisoe

105
Lebitso la faele ea boot
 
Lintja
128
Lebitso la faele ho seva le sebelisoang ke liteishene tse se nang disk ha o qala

235
Li-cookie tsa boselamose
63: 82: 53: 63
Hex
4
Nomoro ea "Magic", ho ea ka eona, ho kenyelletsa. o ka tseba hore pakete ena ke ea protocol ea DHCP

DHCP dikgetho. E ka tsamaea ka tatellano efe kapa efe

236
Nomoro ea khetho
53
Dec
3
Khetho ea 53, e hlalosang mofuta oa pakete ea DHCP 3 - DHCPREQUEST

 
Bolelele ba khetho
1
Dec
1

 
Boleng ba khetho
3
Dec
1

 
Nomoro ea khetho
61
Dec
1
ID ea Moreki: 01 (bakeng sa Ehernet) + aterese ea MAC ea moreki

 
Bolelele ba khetho
7
Dec
1

 
Boleng ba khetho
01:2c:ab:25:ff:72:a6
Hex
7

 
Nomoro ea khetho
60
Dec
 
"Identifier ea sehlopha sa barekisi". Tabeng ea ka, e tlaleha mofuta oa moreki oa DHCP. Mohlomong lisebelisoa tse ling li khutlisa ntho e fapaneng. Windows ka mohlala e tlaleha MSFT 5.0

 
Bolelele ba khetho
11
Dec
 

 
Boleng ba khetho
udhcp 0.9.8
Lintja
 

 
Nomoro ea khetho
55
 
1
Litlhophiso tsa marang-rang tse kopiloeng ke moreki. Sebopeho se ka fapana

01 - Mask ea marang-rang
03 - Gateway
06 - DNS
oc - Lebitso la moamoheli
0f - lebitso la marang-rang la marang-rang
1c - aterese ea kopo ea khaso (phatlalatso)
42 - Lebitso la seva sa TFTP
79 - Classless Static Route

 
Bolelele ba khetho
8
 
1

 
Boleng ba khetho
01:03:06:0c:0f:1c:42:79
 
8

 
Nomoro ea khetho
82
Dec
1
Khetho ea 82, e pheta se tlileng ka DHCPDISCOVER

 
Bolelele ba khetho
18
Dec
1

 
Boleng ba khetho
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d: mohl
Dec
18

 
Qetello ea sephutheloana
255
Dec
1
255 e tšoantšetsa qetello ea pakete

TLHOKOMELISO

E le tiiso ea hore "e, ho joalo, ena ke aterese ea hau ea IP, 'me nke ke ka e fa mang kapa mang" ho tloha ho seva sa DHCP, pakete ka mokhoa oa DHCPACK ho tloha ho seva ho ea ho mofani o sebeletsa. E romelloa ho phatlalatsoa joalo ka lipakete tse ling. Leha ho le joalo, ka khoutu e ka tlase bakeng sa seva sa DHCP se kentsoeng Python, feela haeba ho ka etsahala, ke etsisa kopo leha e le efe ea phatlalatso ka ho romela pakete ho IP ea bareki ba itseng, haeba e se e tsejoa. Ho feta moo, seva sa DHCP ha se tsotelle ho hang hore na pakete ea DHCPACK e fihlile ho mofani. Haeba moreki a sa fumane DHCPACK, ka mor'a nakoana e pheta feela DHCPREQUEST

Tafole ea Sebopeho sa Pakete ea DHCPACK

Boemo ka har'a sephutheloana
Lebitso la boleng (tloaelehileng)
Mohlala:
Selelekela
Byte
Tlhaloso

1
Kopo ea Boot
2
Hex
1
Mofuta oa molaetsa. 1 - kopo ho tsoa ho moreki ho ea ho seva, 2 - karabelo ho tsoa ho seva ho ea ho moreki

2
Mofuta oa Hardware
1
Hex
1
Mofuta oa aterese ea hardware, ho protocol ena 1 - MAC

3
Bolelele ba liaterese tsa Hardware
6
Hex
1
Bolelele ba aterese ea MAC ea sesebelisoa

4
Hops
1
Hex
1
Palo ea litsela tse mahareng

5
ID ea Transaction
23:cf:de:1d
Hex
4
Sekhetho se ikhethileng sa transaction. E hlahisoa ke moreki qalong ea ts'ebetso ea kopo

7
Ea bobeli e fetile
0
Hex
4
Nako ka metsotsoana ho tloha qalong ea mokhoa oa ho fumana aterese

9
Lifolakha tsa boot
8000
Hex
2
Lifolakha tse ling tse ka hlophisoang ho bonts'a liparamente tsa protocol. Tabeng ena, "phatlalatso" e behiloe

11
Aterese ea IP ea moreki
0.0.0.0
Lintja
4
Aterese ea IP ea moreki (haeba e teng)

15
Aterese ea hau ea IP ea bareki
172.16.134.61
Lintja
4
Aterese ea IP e fanoang ke seva (haeba e le teng)

19
Aterese ea IP ea seva e latelang
0.0.0.0
Lintja
4
Aterese ea IP ea seva (haeba e tsejoa)

23
Aterese ea IP ea moemeli ea fetisetsoang
172.16.114.41
Lintja
4
Aterese ea IP ea moemeli oa phepelo (mohlala, switch)

27
Aterese ea MAC ea moreki
14:d6:4d:a7:c9:55
Hex
6
Aterese ea MAC ea moromeli oa pakete (moreki)

31
Lisebelisoa tsa aterese ea moreki
 
Hex
10
Setulo se boloketsoeng. Hangata e tletse li-zero

41
Lebitso la moamoheli oa seva
 
Lintja
64
Lebitso la seva ea DHCP. Hangata ha e fetisoe

105
Lebitso la faele ea boot
 
Lintja
128
Lebitso la faele ho seva le sebelisoang ke liteishene tse se nang disk ha o qala

235
Li-cookie tsa boselamose
63: 82: 53: 63
Hex
4
Nomoro ea "Magic", ho ea ka eona, ho kenyelletsa. o ka tseba hore pakete ena ke ea protocol ea DHCP

DHCP dikgetho. E ka tsamaea ka tatellano efe kapa efe

236
Nomoro ea khetho
53
Dec
3
Khetho ea 53, e hlalosang mofuta oa pakete ea DHCP 5 - DHCPACK

 
Bolelele ba khetho
1
Dec
1

 
Boleng ba khetho
5
Dec
1

 
Nomoro ea khetho
1
Dec
1
Khetho ea ho fa moreki oa DHCP mask a marang-rang

 
Bolelele ba khetho
4
Dec
1

 
Boleng ba khetho
255.255.224.0
Lintja
4

 
Nomoro ea khetho
3
Dec
1
Khetho ea ho fa moreki oa DHCP monyako oa kamehla

 
Bolelele ba khetho
4
Dec
1

 
Boleng ba khetho
172.16.12.1
Lintja
4

 
Nomoro ea khetho
6
Dec
1
Khetho ea ho fana ka DHCP ho moreki oa DNS

 
Bolelele ba khetho
4
Dec
1

 
Boleng ba khetho
8.8.8.8
Lintja
4

 
Nomoro ea khetho
51
Dec
1
Nako ea bophelo ea li-parameter tsa marang-rang tse fanoeng ka metsotsoana, ka mor'a moo mofani oa DHCP o tlameha ho li kopa hape

 
Bolelele ba khetho
4
Dec
1

 
Boleng ba khetho
86400
Dec
4

 
Nomoro ea khetho
82
Dec
1
Khetho ea 82, e pheta se tlileng ka DHCPDISCOVER

 
Bolelele ba khetho
18
Dec
1

 
Boleng ba khetho
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d: mohl
Dec
18

 
Qetello ea sephutheloana
255
Dec
1
255 e tšoantšetsa qetello ea pakete

bophirima

Ts'ebetso e hlile e kenyelletsa ho kenya li-module tsa python tse hlokahalang bakeng sa mosebetsi. Ho nahanoa hore MySQL e se e kentsoe ebile e hlophisitsoe.

FreeBSD

pkg kenya python3 python3 -m surepip pip3 kenya mysql-connector

Botho

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

Re theha database ea MySQL, re kenya pydhcp.sql ho lahlela ho eona, 'me re lokisa faele ea tlhophiso.

Moralo

Litlhophiso tsohle tsa seva li faeleng ea xml. Faele ea litšupiso:

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 teko teko 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 khetha ip,mask,router,dns ho tsoa ho basebelisi moo upper(mac)=upper('{option_3_AgentRemoteId_hex}') le upper(port)=upper('{option_1_AgentCircuitId_port_hex}') khetha ip,mask,router,dns ho tsoa ho basebelisi moo upper(mac)=upper('{sw_mac}') le upper(port)=upper('{sw_port82}') khetha ip,mask,router,dns ho tsoa ho basebelisi moo upper(mac)=upper('{ClientMacAddress}') kenya nalane (id,dt,mac,ip,comment) boleng (null,now(),'{ClientMacAddress}','{RequestedIpAddress}','DHCPACK/INFORM')

Joale ka lintlha tse ling mabapi le li-tag:

Karolo ea dhcpserver e hlalosa litlhophiso tsa mantlha tsa ho qala seva, e leng:

  • moamoheli - aterese ea IP eo seva e e mamelang boema-kepeng ba 67
  • kgaso - e leng ip e leng kgaso ya DHCPOFFER le DHCPACK
  • DHCPServer - ip ea seva ea DHCP ke eng
  • Nako ea ho hira ea LeaseTime ea aterese ea IP e fanoeng
  • ThreadLimit - ke likhoele tse kae tse sebetsang ka nako e le 'ngoe ho sebetsana le lipakete tsa UDP tse kenang boema-kepeng ba 67. E lokela ho thusa mererong e boima haholo 😉
  • defaultMask,defaultRouter,defaultDNS - ke eng e fuoang motho ea ngolisitseng ka boiketsetso haeba IP e fumaneha sebakeng sa polokelo ea litaba, empa li-parameter tse ling ha lia hlalosoa bakeng sa eona.

karolo ea mysql:

moamoheli, lebitso la mosebelisi, phasewete, basename - ntho e ngoe le e ngoe e ipuella. Sebopeho se hakanyetsoang sa database se behiloe ho GitHub

Karolo ea potso: likopo tsa ho amohela OFFER/ACK li hlalositsoe mona:

  • offer_count - palo ea mela e nang le likopo tse khutlisang sephetho joalo ka ip, mask,router,dns
  • offer_n - khoele ea ho botsa. Haeba khutlisetso e se na letho, etsa kopo e latelang ea tlhahiso
  • history_sql - potso e ngolang, mohlala, ho "nalane ea tumello" bakeng sa motho ea ngolisitseng

Likopo li ka kenyelletsa mefuta efe kapa efe ho tsoa karolong ea likhetho kapa likhetho tse tsoang ho protocol ea DHCP.

Karolo ea likhetho. Mona ke moo e khahlisang haholoanyane. Mona re ka theha mefuta-futa eo re ka e sebelisang hamorao karolong ea lipotso.

Ka mohlala:

option_82_hex:sw_port1:20:22

, mola ona oa taelo o nka mohala oohle o tlileng ka khetho ea kopo ea DHCP 82, ka sebopeho sa hex, ho tloha ho 20 ho ea ho 22 byte e kenyelelitsoeng 'me e e beha ka mokhoa o mocha oa sw_port1 (switch port ho tloha moo kopo e tlileng teng)

option_82_hex:sw_mac:26:40

, hlalosa phetoho ea sw_mac, ho nka hex ho tloha moeling oa 26:40

U ka bona likhetho tsohle tse ka sebelisoang lipotsong ka ho qala seva ka -d switch. Re tla bona ntho e kang ena log:

--pakete ea DHCPINFORM e fihlile boema-kepeng ba 67, ho tloha 0025224ad764 , b'x91xa5xe0xa3xa5xa9-x8fx8a' , ('172.30.114.25', 68) {'ClientMacAddress': '0025224MacAddress'" b'764MacAddressy %B" b'00 %B'Address' Jxd7d' , 'HType': 'Ethernet', 'HostName': b'x91xa5xe0xa3xa5xa9-x8fx8a', 'ReqListDNS': Ke 'nete, 'ReqListDomainName': Ke 'nete, 'ReqListPerfowmRouterDiscover': Ke 'nete, 'ReqListRouter': TrueStatic, 'ReqListRoute': TrueStatic, 'ReqListRoute': True, ' 'ReqListSubnetM ask ': Ke 'nete, 'ReqListVendorSpecInfo': 43, 'RequestedIpAddress': '0.0.0.0', 'Vendor': b'MSFT 5.0', 'chaddr': '0025224ad764', 'ciaddr'172.30.128.13'00. , 'flags': b'x00x172.30.114.25', 'giaddr': '308', 'gpoz': 6, 'hlen': 1, 'hops': 82, 'htype': 'MAC', 'magic_cookie': b'cx12Sc ', 'op': 'DHCPINFORM', 'option12': 53, 'option53': 55, 'option55': 60, 'option60': 61, 'option61': 82, 'option82': 82, ' kgetho_12_byte': b'x01x06x00x04x00x01x00x06x02x08x00x06' b'x00x1x9eXx2exb82xad', 'option_12010600040001000602080006001_hex': '589 tion_2_len': 82 18, 'option_82_str': "b'x12x01x06x00x04x00x01x00x06x02x08x00x06x00x1eXx9exb2xad'", 'sephetho': Mashano, 'metsotsoana 768': 'siaddr': '0.0.0.0', 'sw_mac': '001e589eb2ad', 'sw_port1': '06', 'xidbyte': b'

Ka hona, re ka phuthela phapang efe kapa efe ho {} mme e tla sebelisoa potsong ea SQL.

Ha re tlalehe nalane ea hore moreki o fumane aterese ea IP:

Seva ea DHCP + Mysql ho Python

Seva ea DHCP + Mysql ho Python

Seva e qala

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

- d console ea tlhahiso ea DEBUG
- c <filename> faele ea tlhophiso

Ho fana ka maikutlo

Mme joale lintlha tse ling mabapi le ho kenya tšebetsong seva ho Python. Ke bohloko. Python e ile ea ithutoa ka fofa. Metsotso e mengata e entsoe ka mokhoa oa "wow, ka tsela e itseng ke e entse hore e sebetse." Ha e ntlafatsoe ho hang, 'me e siiloe ka foromo ena haholo-holo ka lebaka la boiphihlelo bo fokolang ba nts'etsopele ea Python. Ke tla lula ka lintlha tse thahasellisang ka ho fetisisa tsa ts'ebetsong ea seva ka "khoutu".

Sehlahisoa sa faele sa tlhophiso ea XML

Ho sebelisoa module e tloaelehileng ea Python xml.dom. Ho bonahala ho le bonolo, empa nakong ea ts'ebetsong ho ne ho e-na le khaello e hlokomelehang ea litokomane tse hlakileng le mehlala ho marang-rang a sebelisang mojule ona.

    sefate = minidom.parse(gconfig["config_file"]) mconfig=tree.getElementsByTagName("mysql") bakeng sa elem ho mconfig: gconfig["mysql_host"]=elem.getElementsByTagName("host")[0].firstChild.data gconfig["mysql_username"]=elem.getElementsByTagName("username")[0].firstChild.data gconfig["mysql_password"]=elem.getElementsByTagName("password")[0].firstChild.data gconfig["mysql_base_base =elem.getElementsByTagName("lebitso la motheo")[0].firstChild.data dconfig=tree.getElementsByTagName("dhcpserver") bakeng sa elem ho dconfig: gconfig["broadcast"]=elem.getElementsByTagName("phatlalatso")[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 skp_configdefault[" =elem.getElementsByTagName("defaultMask")[0].firstChild.data gconfig["dhcp_defaultRouter"]=elem.getElementsByTagName("defaultRouter")[0].firstChild.data gconfig["dhcp_defaultDNS"]=elem. defaultDNS")[0].firstChild.data qconfig=tree.getElementsByTagName("potso") bakeng sa elem ho qconfig: gconfig["offer_count"]=elem.getElementsByTagName("offer_count")[0].firstChild.data bakeng sa palo ho range(int(gconfig["offer_count"])): gconfig["offer_"+str(num+1)]=elem.getElementsByTagName("offer_"+str(palo+1))[0].firstChild.data gconfig ["history_sql"]=elem.getElementsByTagName("history_sql")[0].firstChild.data options=tree.getElementsByTagName("options") bakeng sa elem in options: node=elem.getElementsByTagName("khetho") bakeng sa likhetho tse ho node : dikgethoMod.append(options.firstChild.data)

Multithreading

Ka mokhoa o makatsang, multithreading ho Python e kengoa ts'ebetsong ka mokhoa o hlakileng le o bonolo.

def PacketWork(data, addr): ... # ts'ebetsong ea ho arola pakete e kenang le ho e arabela ... ha 'Nete: data, addr = udp_socket.recvfrom(1024) # e emetse khoele ea pakete ea UDP = threading.Thread( target=PacketWork , args=(data,addr,)).start() # ha e ntse e fihla - re qala mosebetsi o hlalositsoeng pele oa PacketWork ka morao ka li-parameter ha threading.active_count() >gconfig["dhcp_ThreadLimit"]: nako. robala(1) # haeba palo Ho na le likhoele tse ngata tse seng li ntse li sebetsa ho feta litlhophisong, re ema ho fihlela ho na le tse fokolang tsa tsona.

Amohela / romela pakete ea DHCP

Bakeng sa ho thibela lipakete tsa UDP tse tlang ka karete ea marang-rang, o hloka ho "phahamisa" sokete:

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

, moo lifolakha li leng teng:

  • AF_INET - e bolela hore mokhoa oa aterese e tla ba IP: port. Hape ho ka ba le AF_UNIX - moo aterese e fanoeng ka lebitso la faele.
  • SOCK_DGRAM - e bolela hore ha re amohele "pakete e tala", empa e seng e fetile ka har'a firewall, 'me e na le pakete e entsoeng ka mokhoa o fokolang. Tseo. re amohela feela pakete ea UDP ntle le karolo ea "'mele" ea sephutheloana sa pakete ea UDP. Haeba u sebelisa folakha ea SOCK_RAW, u tla hloka hape ho hlalosa "wrapper" ena.

Ho romela pakete ho ka tšoana le khaso:

                    udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) #switjha sokete hore e be mokhoa oa khaso rz=udp_socket.sendto(packetack, (gconfig["broadcast"],68))

, le atereseng “moo sephutheloana se tsoang teng”:

                        udp_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # fetola sokete hore e be mokhoa oa bamameli ba bangata rz=udp_socket.sendto(packetack, addr)

, moo SOL_SOCKET e bolelang "boemo ba protocol" bakeng sa ho seta likhetho,

, SO_BROADCAST khetho ea hore sephutheloana sa helmete se "khasoa"

  ,SO_REUSEADDR khetho e fetola sokete ho "bamameli ba bangata". Ka khopolo, ha ho hlokahale tabeng ena, empa ho e 'ngoe ea li-server tsa FreeBSD tseo ke lekileng ho tsona, khoutu ha ea ka ea sebetsa ntle le khetho ena.

Ho kopanya pakete ea DHCP

Mona ke moo ke neng ke rata Python haholo. Hoa fumaneha hore ka ntle ho lebokose e u lumella ho fetoha habonolo le bytecode. Ho e lumella hore e fetoleloe habonolo ho litekanyetso tsa decimal, likhoele le hex - i.e. sena ke seo re hlileng re se hlokang ho utloisisa sebopeho sa sephutheloana. Kahoo, ho etsa mohlala, o ka fumana mefuta e mengata ea li-byte ho HEX le li-byte feela:

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

, paka li-byte ka sebopeho:

res["lifolakha"]=pack('BB',data[10],data[11])

Fumana IP ho tsoa ho sebopeho:

res["ciaddr"]=socket.inet_ntoa(pack('BBBB',data[12],data[13],data[14],data[15]));

Mme ka tsela e fapaneng:

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

Ke tsohle hajoale 😉

Source: www.habr.com

Eketsa ka tlhaloso