Python์˜ DHCP+Mysql ์„œ๋ฒ„

Python์˜ DHCP+Mysql ์„œ๋ฒ„

์ด ํ”„๋กœ์ ํŠธ์˜ ๋ชฉ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • IPv4 ๋„คํŠธ์›Œํฌ์˜ DHCP์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ
  • Python ๋ฐฐ์šฐ๊ธฐ (์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์กฐ๊ธˆ ๋” ๐Ÿ˜‰)
  • ์„œ๋ฒ„ ๊ต์ฒด DB2DHCP (๋‚ด ํฌํฌ), ์›๋ณธ ์—ฌ๊ธฐ์—, ์ƒˆ๋กœ์šด OS์šฉ์œผ๋กœ ์กฐ๋ฆฝํ•˜๊ธฐ๊ฐ€ ์ ์  ๋” ์–ด๋ ค์›Œ์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  "์ง€๊ธˆ ๋‹น์žฅ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋Š”" ๋ฐ”์ด๋„ˆ๋ฆฌ๋ผ๋Š” ์ ์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๊ฐ€์ž…์ž์˜ mac ๋˜๋Š” ์Šค์œ„์น˜ mac+ํฌํŠธ ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ž…์ž์˜ IP ์ฃผ์†Œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ์ž‘๋™ ์ค‘์ธ DHCP ์„œ๋ฒ„ ํ™•๋ณด(์˜ต์…˜ 82)
  • ๋‹ค๋ฅธ ์ž์ „๊ฑฐ ์“ฐ๊ธฐ(์•„! ์ด๊ฑด ๋‚ด๊ฐ€ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ํ™œ๋™์ด์•ผ)
  • Habrahabr์—์„œ ๊ท€ํ•˜์˜ ํด๋Ÿฝ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ์˜๊ฒฌ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค(๋˜๋Š” ์ดˆ๋Œ€๋ฅผ ๋ฐ›๋Š” ๊ฒƒ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค) ๐Ÿ˜‰

๊ฒฐ๊ณผ: ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค ๐Ÿ˜‰ FreeBSD ๋ฐ Ubuntu OS์—์„œ ํ…Œ์ŠคํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ก ์ ์œผ๋กœ ์ฝ”๋“œ๋Š” ๋ชจ๋“  OS์—์„œ ์ž‘๋™ํ•˜๋„๋ก ์š”์ฒญ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ์—๋Š” ํŠน์ • ๋ฐ”์ธ๋”ฉ์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ฃผ์˜ํ•˜์—ฌ! ์•ž์œผ๋กœ ๋” ๋งŽ์€ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋งˆ์ถ”์–ด๋ฅผ ์œ„ํ•œ ์ €์žฅ์†Œ ๋งํฌ "ํ„ฐ์น˜์–ผ๋ผ์ด๋ธŒ".

"ํ•˜๋“œ์›จ์–ด ์—ฐ๊ตฌ"์˜ ๊ฒฐ๊ณผ๋ฅผ ์„ค์น˜, ๊ตฌ์„ฑ ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ณผ์ •์€ ํ›จ์”ฌ ๋‚ฎ๊ณ  DHCP ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•œ ์•ฝ๊ฐ„์˜ ์ด๋ก ์ž…๋‹ˆ๋‹ค. ๋‚˜ ์ž์‹ ์„ ์œ„ํ•ด. ๊ทธ๋ฆฌ๊ณ  ์—ญ์‚ฌ๋ฅผ ์œ„ํ•ด ๐Ÿ˜‰

์•ฝ๊ฐ„์˜ ์ด๋ก 

DHCP ๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด๋Š” ์žฅ์น˜๊ฐ€ DHCP ์„œ๋ฒ„์—์„œ IP ์ฃผ์†Œ(๋ฐ ๊ฒŒ์ดํŠธ์›จ์ด, DNS ๋“ฑ๊ณผ ๊ฐ™์€ ๊ธฐํƒ€ ๋งค๊ฐœ๋ณ€์ˆ˜)๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ํŒจํ‚ท์€ UDP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตํ™˜๋ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์š”์ฒญํ•  ๋•Œ ์žฅ์น˜์˜ ์ผ๋ฐ˜์ ์ธ ์ž‘๋™ ์›๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์žฅ์น˜(ํด๋ผ์ด์–ธํŠธ)๋Š” "๋ˆ„๊ตฐ๊ฐ€ IP ์ฃผ์†Œ๋ฅผ ์•Œ๋ ค์ฃผ์„ธ์š”."๋ผ๋Š” ์š”์ฒญ๊ณผ ํ•จ๊ป˜ ๋„คํŠธ์›Œํฌ ์ „์ฒด์— UDP ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์š”์ฒญ(DHCPDISCOVER)์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•ญ์ƒ ๊ทธ๋Ÿฐ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์š”์ฒญ์€ ํฌํŠธ 68(์†Œ์Šค)์—์„œ ๋ฐœ์ƒํ•˜๋ฉฐ ๋Œ€์ƒ์€ ํฌํŠธ 67(๋Œ€์ƒ)์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€ ์žฅ์น˜๋Š” ํฌํŠธ 67์—์„œ๋„ ํŒจํ‚ท์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์žฅ์น˜์˜ MAC ์ฃผ์†Œ๋Š” DHCPDISCOVER ํŒจํ‚ค์ง€ ๋‚ด์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” ๋ชจ๋“  DHCP ์„œ๋ฒ„(์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ)๋Š” DHCPDISCOVER๋ฅผ ๋ณด๋‚ธ ์žฅ์น˜์— ๋Œ€ํ•œ ๋„คํŠธ์›Œํฌ ์„ค์ •์œผ๋กœ DHCPOFFER ์ œ์•ˆ์„ ํ˜•์„ฑํ•˜๊ณ  ์ด๋ฅผ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒจํ‚ท์˜ ๋Œ€์ƒ์ด ๋ˆ„๊ตฌ์ธ์ง€ ์‹๋ณ„ํ•˜๋Š” ๊ฒƒ์€ ์•ž์„œ DHCPDISCOVER ์š”์ฒญ์—์„œ ์ œ๊ณต๋œ ํด๋ผ์ด์–ธํŠธ์˜ MAC ์ฃผ์†Œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
  3. ํด๋ผ์ด์–ธํŠธ๋Š” ๋„คํŠธ์›Œํฌ ์„ค์ •์— ๋Œ€ํ•œ ์ œ์•ˆ์ด ํฌํ•จ๋œ ํŒจํ‚ท์„ ์ˆ˜๋ฝํ•˜๊ณ  ๊ฐ€์žฅ ๋งค๋ ฅ์ ์ธ ํŒจํ‚ท์„ ์„ ํƒํ•˜๊ณ (์˜ˆ: ํŒจํ‚ท ์ „๋‹ฌ ์‹œ๊ฐ„, ์ค‘๊ฐ„ ๊ฒฝ๋กœ ์ˆ˜ ๋“ฑ ๊ธฐ์ค€์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ) ๋„คํŠธ์›Œํฌ ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ "๊ณต์‹ ์š”์ฒญ" DHCPREQUEST๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ข‹์•„ํ•˜๋Š” DHCP ์„œ๋ฒ„์—์„œ. ์ด ๊ฒฝ์šฐ ํŒจํ‚ท์€ ํŠน์ • DHCP ์„œ๋ฒ„๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  4. DHCPREQUEST๋ฅผ ์ˆ˜์‹ ํ•œ ์„œ๋ฒ„๋Š” DHCPACK ํ˜•์‹ ํŒจํ‚ท์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ด ํŒจํ‚ท์—๋Š” ์ด ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ๋„คํŠธ์›Œํฌ ์„ค์ •์ด ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

Python์˜ DHCP+Mysql ์„œ๋ฒ„

๋˜ํ•œ ํด๋ผ์ด์–ธํŠธ์—์„œ ์˜ค๋Š” DHCPINFORM ํŒจํ‚ท๋„ ์žˆ๋Š”๋ฐ, ๊ทธ ๋ชฉ์ ์€ DHCP ์„œ๋ฒ„์— "ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ด์•„์žˆ๋‹ค"๋Š” ์‚ฌ์‹ค์„ ์•Œ๋ฆฌ๊ณ  ๋ฐœ๊ธ‰๋œ ๋„คํŠธ์›Œํฌ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์„œ๋ฒ„ ๊ตฌํ˜„์—์„œ๋Š” ์ด๋Ÿฌํ•œ ํŒจํ‚ท์ด ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€ ํ˜•์‹

์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋”๋„ท ํŒจํ‚ท ํ”„๋ ˆ์ž„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Python์˜ DHCP+Mysql ์„œ๋ฒ„

์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ์—๋Š” OSI ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ ํ—ค๋”, ์ฆ‰ DHCP ๊ตฌ์กฐ ์—†์ด UDP ํŒจํ‚ท์˜ ๋‚ด์šฉ์—์„œ ์ง์ ‘ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋งŒ ๊ณ ๋ คํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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
๊ฑฐ๋ž˜ ID
23:cf:de:1d
๋งˆ๋…€
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
์˜ˆ์•ฝ์„. ์ผ๋ฐ˜์ ์œผ๋กœ XNUMX์œผ๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค.

41
์„œ๋ฒ„ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„
 
์„ 
64
DHCP ์„œ๋ฒ„ ์ด๋ฆ„. ์ผ๋ฐ˜์ ์œผ๋กœ ์ „์†ก๋˜์ง€ ์•Š์Œ

105
๋ถ€ํŒ… ํŒŒ์ผ ์ด๋ฆ„
 
์„ 
128
๋ถ€ํŒ… ์‹œ ๋””์Šคํฌ ์—†๋Š” ์Šคํ…Œ์ด์…˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ฒ„์˜ ํŒŒ์ผ ์ด๋ฆ„

235
๋งค์ง ์ฟ ํ‚ค
63 : 82 : 53 : 63
๋งˆ๋…€
4
"๋งค์ง"๋ฒˆํ˜ธ์— ๋”ฐ๋ผ ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ํŒจํ‚ท์ด DHCP ํ”„๋กœํ† ์ฝœ์— ์†ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

DHCP ์˜ต์…˜. ์ˆœ์„œ ์ƒ๊ด€์—†์ด ๊ฐˆ ์ˆ˜ ์žˆ์Œ

236
์˜ต์…˜ ๋ฒˆํ˜ธ
53
12์›”
1
DHCP ํŒจํ‚ท ์œ ํ˜•์„ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜ 53

1 - DHCP ๊ฒ€์ƒ‰
3 - DHCP์š”์ฒญ
2 - DHCP ์ œ์•ˆ
5 - DHCPACK
8 - DHCPINFORM

 
์˜ต์…˜ ๊ธธ์ด
1
12์›”
1

 
์˜ต์…˜๊ฐ’
1
12์›”
1

 
์˜ต์…˜ ๋ฒˆํ˜ธ
50
12์›”
1
ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ˆ˜์‹ ํ•˜๋ ค๋Š” IP ์ฃผ์†Œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

 
์˜ต์…˜ ๊ธธ์ด
4
12์›”
1

 
์˜ต์…˜๊ฐ’
172.16.134.61
์„ 
4

 
์˜ต์…˜ ๋ฒˆํ˜ธ
55
 
1
ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ๋„คํŠธ์›Œํฌ ๋งค๊ฐœ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์€ ๋‹ค์–‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

01 - ๋„คํŠธ์›Œํฌ ๋งˆ์Šคํฌ
03 - ๊ฒŒ์ดํŠธ์›จ์ด
06 - DNS
oc โ€” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„
0f - ๋„คํŠธ์›Œํฌ ๋„๋ฉ”์ธ ์ด๋ฆ„
1c - ๋ฐฉ์†ก ์š”์ฒญ ์ฃผ์†Œ(๋ฐฉ์†ก)
42 - TFTP ์„œ๋ฒ„ ์ด๋ฆ„
79 - ํด๋ž˜์Šค ์—†๋Š” ์ •์  ๊ฒฝ๋กœ

 
์˜ต์…˜ ๊ธธ์ด
8
 
1

 
์˜ต์…˜๊ฐ’
01:03:06:0c:0f:1c:42:79
 
8

 
์˜ต์…˜ ๋ฒˆํ˜ธ
82
12์›”
 
์˜ต์…˜ 82๋Š” ์ค‘๊ณ„๊ธฐ ์žฅ์น˜์˜ MAC ์ฃผ์†Œ์™€ ์ผ๋ถ€ ์ถ”๊ฐ€ ๊ฐ’์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๊ฐœ ์ด๋Š” ์ตœ์ข… DHCP ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์Šค์œ„์น˜์˜ ํฌํŠธ์ž…๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์—๋Š” ์ถ”๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๋Š” "ํ•˜์œ„ ์˜ต์…˜"์˜ ๋ฒˆํ˜ธ์ด๊ณ , ๋‘ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๋Š” ํ•ด๋‹น ๊ธธ์ด, ๊ทธ ๋‹ค์Œ ๊ฐ’์ž…๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ ์˜ต์…˜ 82์—๋Š” ํ•˜์œ„ ์˜ต์…˜์ด ์ค‘์ฒฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
์—์ด์ „ํŠธ ํšŒ๋กœ ID = 00:04:00:01:00:04, ์—ฌ๊ธฐ์„œ ๋งˆ์ง€๋ง‰ XNUMX๋ฐ”์ดํŠธ๋Š” ์š”์ฒญ์ด ๋ฐœ์ƒํ•œ DHCP ํด๋ผ์ด์–ธํŠธ ํฌํŠธ์ž…๋‹ˆ๋‹ค.

์—์ด์ „ํŠธ ์›๊ฒฉ ID = 00:06:c8:be:19:93:11:48 - DHCP ๋ฆฌํ”ผํ„ฐ ์žฅ์น˜์˜ MAC ์ฃผ์†Œ

 
์˜ต์…˜ ๊ธธ์ด
18
12์›”
 

 
์˜ต์…˜๊ฐ’
01:06
00:04:00:01:00:04
02:08
00:06:c8:be:19:93:11:48
๋งˆ๋…€
 

 
ํŒจํ‚ค์ง€ ๋
255
12์›”
1
255๋Š” ํŒจํ‚ท์˜ ๋์„ ์ƒ์ง•ํ•ฉ๋‹ˆ๋‹ค.

DHCP ์ œ์•ˆ

์„œ๋ฒ„๊ฐ€ DHCPDISCOVER ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์š”์ฒญํ•œ ๊ฒƒ ์ค‘ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Œ์„ ํ™•์ธํ•˜๋ฉด ์ด์— ๋Œ€ํ•œ ์‘๋‹ต(DHCPDISCOVER)์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์‘๋‹ต์€ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋ฅผ ํ†ตํ•ด "์›๋ž˜์˜" ํฌํŠธ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ํด๋ผ์ด์–ธํŠธ์—๋Š” ์•„์ง IP ์ฃผ์†Œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋กœ ์ „์†ก๋œ ํŒจํ‚ท๋งŒ ์ˆ˜๋ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ํŒจํ‚ค์ง€ ๋‚ด๋ถ€์˜ MAC ์ฃผ์†Œ์™€ ์ฒซ ๋ฒˆ์งธ ํŒจํ‚ค์ง€ ์ƒ์„ฑ ์‹œ ์ƒ์„ฑํ•œ ํŠธ๋žœ์žญ์…˜ ๋ฒˆํ˜ธ๋ฅผ ํ†ตํ•ด ์ด๊ฒƒ์ด ์ž์‹ ์„ ์œ„ํ•œ ํŒจํ‚ค์ง€์ž„์„ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.

DHCPOFFER ํŒจํ‚ท ๊ตฌ์กฐ ํ…Œ์ด๋ธ”

ํŒจํ‚ค์ง€ ๋‚ด ์œ„์น˜
๊ฐ’ ์ด๋ฆ„(๊ณตํ†ต)
์˜ˆ
์†Œ๊ฐœ
๋ฐ”์ดํŠธ
์„ค๋ช…

1
๋ถ€ํŒ… ์š”์ฒญ
1
๋งˆ๋…€
1
๋ฉ”์‹œ์ง€ ์œ ํ˜•. 1 - ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ์˜ ์š”์ฒญ, 2 - ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ์˜ ์‘๋‹ต

2
ํ•˜๋“œ์›จ์–ด ์œ ํ˜•
1
๋งˆ๋…€
1
์ด ํ”„๋กœํ† ์ฝœ์˜ ํ•˜๋“œ์›จ์–ด ์ฃผ์†Œ ์œ ํ˜• 1 - MAC

3
ํ•˜๋“œ์›จ์–ด ์ฃผ์†Œ ๊ธธ์ด
6
๋งˆ๋…€
1
์žฅ์น˜ MAC ์ฃผ์†Œ ๊ธธ์ด

4
์˜ฌ๋ฆฌ์ฃ 
1
๋งˆ๋…€
1
์ค‘๊ฐ„ ๊ฒฝ๋กœ ์ˆ˜

5
๊ฑฐ๋ž˜ ID
23:cf:de:1d
๋งˆ๋…€
4
๊ณ ์œ ํ•œ ๊ฑฐ๋ž˜ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค. ์š”์ฒญ ์ž‘์—… ์‹œ์ž‘ ์‹œ ํด๋ผ์ด์–ธํŠธ์— ์˜ํ•ด ์ƒ์„ฑ๋จ

7
๋‘ ๋ฒˆ์งธ ๊ฒฝ๊ณผ
0
๋งˆ๋…€
4
์ฃผ์†Œ ํš๋“ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋œ ํ›„์˜ ์‹œ๊ฐ„(์ดˆ)

9
๋ถ€ํŒ… ํ”Œ๋ž˜๊ทธ
0
๋งˆ๋…€
2
ํ”„๋กœํ† ์ฝœ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ • ํ”Œ๋ž˜๊ทธ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ 0์€ ์œ ๋‹ˆ์บ์ŠคํŠธ ์š”์ฒญ ์œ ํ˜•์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

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
์˜ˆ์•ฝ์„. ์ผ๋ฐ˜์ ์œผ๋กœ XNUMX์œผ๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค.

41
์„œ๋ฒ„ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„
 
์„ 
64
DHCP ์„œ๋ฒ„ ์ด๋ฆ„. ์ผ๋ฐ˜์ ์œผ๋กœ ์ „์†ก๋˜์ง€ ์•Š์Œ

105
๋ถ€ํŒ… ํŒŒ์ผ ์ด๋ฆ„
 
์„ 
128
๋ถ€ํŒ… ์‹œ ๋””์Šคํฌ ์—†๋Š” ์Šคํ…Œ์ด์…˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ฒ„์˜ ํŒŒ์ผ ์ด๋ฆ„

235
๋งค์ง ์ฟ ํ‚ค
63 : 82 : 53 : 63
๋งˆ๋…€
4
"๋งค์ง"๋ฒˆํ˜ธ์— ๋”ฐ๋ผ ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ํŒจํ‚ท์ด DHCP ํ”„๋กœํ† ์ฝœ์— ์†ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

DHCP ์˜ต์…˜. ์ˆœ์„œ ์ƒ๊ด€์—†์ด ๊ฐˆ ์ˆ˜ ์žˆ์Œ

236
์˜ต์…˜ ๋ฒˆํ˜ธ
53
12์›”
1
DHCP 53 ํŒจํ‚ท ์œ ํ˜•์„ ์ •์˜ํ•˜๋Š” ์˜ต์…˜ 2 - DHCPOFFER

 
์˜ต์…˜ ๊ธธ์ด
1
12์›”
1

 
์˜ต์…˜๊ฐ’
2
12์›”
1

 
์˜ต์…˜ ๋ฒˆํ˜ธ
1
12์›”
1
DHCP ํด๋ผ์ด์–ธํŠธ์— ๋„คํŠธ์›Œํฌ ๋งˆ์Šคํฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์˜ต์…˜

 
์˜ต์…˜ ๊ธธ์ด
4
12์›”
1

 
์˜ต์…˜๊ฐ’
255.255.224.0
์„ 
4

 
์˜ต์…˜ ๋ฒˆํ˜ธ
3
12์›”
1
DHCP ํด๋ผ์ด์–ธํŠธ์— ๊ธฐ๋ณธ ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์˜ต์…˜

 
์˜ต์…˜ ๊ธธ์ด
4
12์›”
1

 
์˜ต์…˜๊ฐ’
172.16.12.1
์„ 
4

 
์˜ต์…˜ ๋ฒˆํ˜ธ
6
12์›”
1
DNS ํด๋ผ์ด์–ธํŠธ์— DHCP๋ฅผ ์ œ๊ณตํ•˜๋Š” ์˜ต์…˜

 
์˜ต์…˜ ๊ธธ์ด
4
12์›”
1

 
์˜ต์…˜๊ฐ’
8.8.8.8
์„ 
4

 
์˜ต์…˜ ๋ฒˆํ˜ธ
51
12์›”
1
๋ฐœํ–‰๋œ ๋„คํŠธ์›Œํฌ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ˆ˜๋ช…(์ดˆ). ๊ทธ ์ดํ›„์—๋Š” DHCP ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•ด๋‹น ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋‹ค์‹œ ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 
์˜ต์…˜ ๊ธธ์ด
4
12์›”
1

 
์˜ต์…˜๊ฐ’
86400
12์›”
4

 
์˜ต์…˜ ๋ฒˆํ˜ธ
82
12์›”
1
์˜ต์…˜ 82, DHCPDISCOVER์— ์ œ๊ณต๋œ ๋‚ด์šฉ์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

 
์˜ต์…˜ ๊ธธ์ด
18
12์›”
1

 
์˜ต์…˜๊ฐ’
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d:ec
12์›”
18

 
ํŒจํ‚ค์ง€ ๋
255
12์›”
1
255๋Š” ํŒจํ‚ท์˜ ๋์„ ์ƒ์ง•ํ•ฉ๋‹ˆ๋‹ค.

DHCP์š”์ฒญ

ํด๋ผ์ด์–ธํŠธ๋Š” DHCPOFFER๋ฅผ ์ˆ˜์‹ ํ•œ ํ›„ ๋„คํŠธ์›Œํฌ์˜ ๋ชจ๋“  DHCP ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ DHCPOFFER ์ œ์•ˆ์ด ๊ฐ€์žฅ "์ข‹์•„์š”"์ธ ํŠน์ • ์„œ๋ฒ„์—๋งŒ ๋„คํŠธ์›Œํฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์š”์ฒญํ•˜๋Š” ํŒจํ‚ท์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. "์ข‹์•„์š”" ๊ธฐ์ค€์€ ํด๋ผ์ด์–ธํŠธ์˜ DHCP ๊ตฌํ˜„์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์ฒญ ์ˆ˜์‹ ์ž๋Š” DHCP ์„œ๋ฒ„์˜ MAC ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์„œ๋ฒ„์˜ IP ์ฃผ์†Œ๊ฐ€ ์ด์ „์— ์ด๋ฏธ ํš๋“๋œ ๊ฒฝ์šฐ DHCPDISCOVER๋ฅผ ๋จผ์ € ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ํด๋ผ์ด์–ธํŠธ์—์„œ DHCPREQUEST ํŒจํ‚ท์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

DHCPREQUEST ํŒจํ‚ท ๊ตฌ์กฐ ํ…Œ์ด๋ธ”

ํŒจํ‚ค์ง€ ๋‚ด ์œ„์น˜
๊ฐ’ ์ด๋ฆ„(๊ณตํ†ต)
์˜ˆ
์†Œ๊ฐœ
๋ฐ”์ดํŠธ
์„ค๋ช…

1
๋ถ€ํŒ… ์š”์ฒญ
1
๋งˆ๋…€
1
๋ฉ”์‹œ์ง€ ์œ ํ˜•. 1 - ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ์˜ ์š”์ฒญ, 2 - ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ์˜ ์‘๋‹ต

2
ํ•˜๋“œ์›จ์–ด ์œ ํ˜•
1
๋งˆ๋…€
1
์ด ํ”„๋กœํ† ์ฝœ์˜ ํ•˜๋“œ์›จ์–ด ์ฃผ์†Œ ์œ ํ˜• 1 - MAC

3
ํ•˜๋“œ์›จ์–ด ์ฃผ์†Œ ๊ธธ์ด
6
๋งˆ๋…€
1
์žฅ์น˜ MAC ์ฃผ์†Œ ๊ธธ์ด

4
์˜ฌ๋ฆฌ์ฃ 
1
๋งˆ๋…€
1
์ค‘๊ฐ„ ๊ฒฝ๋กœ ์ˆ˜

5
๊ฑฐ๋ž˜ ID
23:cf:de:1d
๋งˆ๋…€
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
์˜ˆ์•ฝ์„. ์ผ๋ฐ˜์ ์œผ๋กœ XNUMX์œผ๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค.

41
์„œ๋ฒ„ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„
 
์„ 
64
DHCP ์„œ๋ฒ„ ์ด๋ฆ„. ์ผ๋ฐ˜์ ์œผ๋กœ ์ „์†ก๋˜์ง€ ์•Š์Œ

105
๋ถ€ํŒ… ํŒŒ์ผ ์ด๋ฆ„
 
์„ 
128
๋ถ€ํŒ… ์‹œ ๋””์Šคํฌ ์—†๋Š” ์Šคํ…Œ์ด์…˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ฒ„์˜ ํŒŒ์ผ ์ด๋ฆ„

235
๋งค์ง ์ฟ ํ‚ค
63 : 82 : 53 : 63
๋งˆ๋…€
4
"๋งค์ง"๋ฒˆํ˜ธ์— ๋”ฐ๋ผ ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ํŒจํ‚ท์ด DHCP ํ”„๋กœํ† ์ฝœ์— ์†ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

DHCP ์˜ต์…˜. ์ˆœ์„œ ์ƒ๊ด€์—†์ด ๊ฐˆ ์ˆ˜ ์žˆ์Œ

236
์˜ต์…˜ ๋ฒˆํ˜ธ
53
12์›”
3
DHCP ํŒจํ‚ท ์œ ํ˜• 53 - DHCPREQUEST๋ฅผ ์ •์˜ํ•˜๋Š” ์˜ต์…˜ 3

 
์˜ต์…˜ ๊ธธ์ด
1
12์›”
1

 
์˜ต์…˜๊ฐ’
3
12์›”
1

 
์˜ต์…˜ ๋ฒˆํ˜ธ
61
12์›”
1
ํด๋ผ์ด์–ธํŠธ ID: 01(Ehernet์šฉ) + ํด๋ผ์ด์–ธํŠธ MAC ์ฃผ์†Œ

 
์˜ต์…˜ ๊ธธ์ด
7
12์›”
1

 
์˜ต์…˜๊ฐ’
01:2c:ab:25:ff:72:a6
๋งˆ๋…€
7

 
์˜ต์…˜ ๋ฒˆํ˜ธ
60
12์›”
 
"๊ณต๊ธ‰์—…์ฒด ํด๋ž˜์Šค ์‹๋ณ„์ž". ์ œ ๊ฒฝ์šฐ์—๋Š” DHCP ํด๋ผ์ด์–ธํŠธ ๋ฒ„์ „์„ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋‹ค๋ฅธ ์žฅ์น˜๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Windows์—์„œ๋Š” MSFT 5.0์„ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

 
์˜ต์…˜ ๊ธธ์ด
11
12์›”
 

 
์˜ต์…˜๊ฐ’
UDP 0.9.8
์„ 
 

 
์˜ต์…˜ ๋ฒˆํ˜ธ
55
 
1
ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ๋„คํŠธ์›Œํฌ ๋งค๊ฐœ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์€ ๋‹ค์–‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

01 - ๋„คํŠธ์›Œํฌ ๋งˆ์Šคํฌ
03 - ๊ฒŒ์ดํŠธ์›จ์ด
06 - DNS
oc โ€” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„
0f - ๋„คํŠธ์›Œํฌ ๋„๋ฉ”์ธ ์ด๋ฆ„
1c - ๋ฐฉ์†ก ์š”์ฒญ ์ฃผ์†Œ(๋ฐฉ์†ก)
42 - TFTP ์„œ๋ฒ„ ์ด๋ฆ„
79 - ํด๋ž˜์Šค ์—†๋Š” ์ •์  ๊ฒฝ๋กœ

 
์˜ต์…˜ ๊ธธ์ด
8
 
1

 
์˜ต์…˜๊ฐ’
01:03:06:0c:0f:1c:42:79
 
8

 
์˜ต์…˜ ๋ฒˆํ˜ธ
82
12์›”
1
์˜ต์…˜ 82, DHCPDISCOVER์— ์ œ๊ณต๋œ ๋‚ด์šฉ์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

 
์˜ต์…˜ ๊ธธ์ด
18
12์›”
1

 
์˜ต์…˜๊ฐ’
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d:ec
12์›”
18

 
ํŒจํ‚ค์ง€ ๋
255
12์›”
1
255๋Š” ํŒจํ‚ท์˜ ๋์„ ์ƒ์ง•ํ•ฉ๋‹ˆ๋‹ค.

DHCPACK

DHCP ์„œ๋ฒ„์—์„œ "์˜ˆ, ๋งž์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ท€ํ•˜์˜ IP ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ˆ„๊ตฌ์—๊ฒŒ๋„ ์•Œ๋ ค์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค."๋ผ๋Š” ํ™•์ธ์œผ๋กœ ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ DHCPACK ํ˜•์‹์˜ ํŒจํ‚ท์ด ์„œ๋น„์Šค๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํŒจํ‚ท๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Python์œผ๋กœ ๊ตฌํ˜„๋œ 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
๊ฑฐ๋ž˜ ID
23:cf:de:1d
๋งˆ๋…€
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
์˜ˆ์•ฝ์„. ์ผ๋ฐ˜์ ์œผ๋กœ XNUMX์œผ๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค.

41
์„œ๋ฒ„ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„
 
์„ 
64
DHCP ์„œ๋ฒ„ ์ด๋ฆ„. ์ผ๋ฐ˜์ ์œผ๋กœ ์ „์†ก๋˜์ง€ ์•Š์Œ

105
๋ถ€ํŒ… ํŒŒ์ผ ์ด๋ฆ„
 
์„ 
128
๋ถ€ํŒ… ์‹œ ๋””์Šคํฌ ์—†๋Š” ์Šคํ…Œ์ด์…˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ฒ„์˜ ํŒŒ์ผ ์ด๋ฆ„

235
๋งค์ง ์ฟ ํ‚ค
63 : 82 : 53 : 63
๋งˆ๋…€
4
"๋งค์ง"๋ฒˆํ˜ธ์— ๋”ฐ๋ผ ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ํŒจํ‚ท์ด DHCP ํ”„๋กœํ† ์ฝœ์— ์†ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

DHCP ์˜ต์…˜. ์ˆœ์„œ ์ƒ๊ด€์—†์ด ๊ฐˆ ์ˆ˜ ์žˆ์Œ

236
์˜ต์…˜ ๋ฒˆํ˜ธ
53
12์›”
3
DHCP ํŒจํ‚ท ์œ ํ˜• 53 - DHCPACK๋ฅผ ์ •์˜ํ•˜๋Š” ์˜ต์…˜ 5

 
์˜ต์…˜ ๊ธธ์ด
1
12์›”
1

 
์˜ต์…˜๊ฐ’
5
12์›”
1

 
์˜ต์…˜ ๋ฒˆํ˜ธ
1
12์›”
1
DHCP ํด๋ผ์ด์–ธํŠธ์— ๋„คํŠธ์›Œํฌ ๋งˆ์Šคํฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์˜ต์…˜

 
์˜ต์…˜ ๊ธธ์ด
4
12์›”
1

 
์˜ต์…˜๊ฐ’
255.255.224.0
์„ 
4

 
์˜ต์…˜ ๋ฒˆํ˜ธ
3
12์›”
1
DHCP ํด๋ผ์ด์–ธํŠธ์— ๊ธฐ๋ณธ ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์˜ต์…˜

 
์˜ต์…˜ ๊ธธ์ด
4
12์›”
1

 
์˜ต์…˜๊ฐ’
172.16.12.1
์„ 
4

 
์˜ต์…˜ ๋ฒˆํ˜ธ
6
12์›”
1
DNS ํด๋ผ์ด์–ธํŠธ์— DHCP๋ฅผ ์ œ๊ณตํ•˜๋Š” ์˜ต์…˜

 
์˜ต์…˜ ๊ธธ์ด
4
12์›”
1

 
์˜ต์…˜๊ฐ’
8.8.8.8
์„ 
4

 
์˜ต์…˜ ๋ฒˆํ˜ธ
51
12์›”
1
๋ฐœํ–‰๋œ ๋„คํŠธ์›Œํฌ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ˆ˜๋ช…(์ดˆ). ๊ทธ ์ดํ›„์—๋Š” DHCP ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•ด๋‹น ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋‹ค์‹œ ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 
์˜ต์…˜ ๊ธธ์ด
4
12์›”
1

 
์˜ต์…˜๊ฐ’
86400
12์›”
4

 
์˜ต์…˜ ๋ฒˆํ˜ธ
82
12์›”
1
์˜ต์…˜ 82, DHCPDISCOVER์— ์ œ๊ณต๋œ ๋‚ด์šฉ์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

 
์˜ต์…˜ ๊ธธ์ด
18
12์›”
1

 
์˜ต์…˜๊ฐ’
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d:ec
12์›”
18

 
ํŒจํ‚ค์ง€ ๋
255
12์›”
1
255๋Š” ํŒจํ‚ท์˜ ๋์„ ์ƒ์ง•ํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜

์„ค์น˜๋Š” ์‹ค์ œ๋กœ ์ž‘์—…์— ํ•„์š”ํ•œ Python ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. MySQL์ด ์ด๋ฏธ ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

FreeBSD์˜

pkg install python3 python3 -m verifypip pip3 mysql-connector ์„ค์น˜

Ubuntu

sudo apt-get ์„ค์น˜ python3 sudo apt-get ์„ค์น˜ pip3 sudo pip3 ์„ค์น˜ mysql-connector

MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์—ฌ๊ธฐ์— pydhcp.sql ๋คํ”„๋ฅผ ์—…๋กœ๋“œํ•˜๊ณ , ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ

๋ชจ๋“  ์„œ๋ฒ„ ์„ค์ •์€ xml ํŒŒ์ผ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐธ์กฐ ํŒŒ์ผ:

1.0 0.0.0.0 255.255.255.255 192.168.0.71 8600 1 255.255.255.0 192.168.0.1 ๋กœ์ปฌํ˜ธ์ŠคํŠธ ์‹œํ—˜ ์‹œํ—˜ 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 ์‚ผ upper(mac)=upper('{option_40_AgentRemoteId_hex}') ๋ฐ upper(port)=upper('{option_3_AgentCircuitId_port_hex}')์ธ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ip,mask,router,dns๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. upper(mac)=upper('{sw_mac}') ๋ฐ upper(port)=upper('{sw_port1}')์ธ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ip,mask,router,dns๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. upper(mac)=upper('{ClientMacAddress}')์ธ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ip,mask,router,dns๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ก(id,dt,mac,ip,comment) ๊ฐ’์— ์‚ฝ์ž… โ€‹โ€‹(null,now(),'{ClientMacAddress}','{RequestedIpAddress}','DHCPACK/INFORM')

์ด์ œ ํƒœ๊ทธ์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

dhcpserver ์„น์…˜์—์„œ๋Š” ์„œ๋ฒ„ ์‹œ์ž‘์„ ์œ„ํ•œ ๊ธฐ๋ณธ ์„ค์ •์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • ํ˜ธ์ŠคํŠธ - ์„œ๋ฒ„๊ฐ€ ํฌํŠธ 67์—์„œ ์ˆ˜์‹ ํ•˜๋Š” IP ์ฃผ์†Œ
  • ๋ฐฉ์†ก - DHCPOFFER ๋ฐ DHCPACK์— ๋Œ€ํ•œ ๋ฐฉ์†ก IP๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • DHCPServer - DHCP ์„œ๋ฒ„์˜ IP๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ
  • LeaseTime ๋ฐœ๊ธ‰๋œ IP ์ฃผ์†Œ์˜ ์ž„๋Œ€ ์‹œ๊ฐ„
  • ThreadLimit - ํฌํŠธ 67์—์„œ ๋“ค์–ด์˜ค๋Š” UDP ํŒจํ‚ท์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ์Šค๋ ˆ๋“œ ์ˆ˜. ๋กœ๋“œ๊ฐ€ ๋งŽ์€ ํ”„๋กœ์ ํŠธ์— ๋„์›€์ด ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค ๐Ÿ˜‰
  • defaultMask,defaultRouter,defaultDNS - IP๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐœ๊ฒฌ๋˜์—ˆ์ง€๋งŒ ์ถ”๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ตฌ๋…์ž์—๊ฒŒ ์ œ๊ณต๋˜๋Š” ๊ฒƒ

mysql ์„น์…˜:

ํ˜ธ์ŠคํŠธ, ์‚ฌ์šฉ์ž ์ด๋ฆ„, ๋น„๋ฐ€๋ฒˆํ˜ธ, ๊ธฐ๋ณธ ์ด๋ฆ„ - ๋ชจ๋“  ๊ฒƒ์ด ๊ทธ ์ž์ฒด๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๋Œ€๋žต์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋Š” ๋‹ค์Œ ์‚ฌ์ดํŠธ์— ๊ฒŒ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. GitHub์˜

์ฟผ๋ฆฌ ์„น์…˜: OFFER/ACK ์ˆ˜์‹  ์š”์ฒญ์€ ์—ฌ๊ธฐ์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • Offer_count โ€” ip,mask,router,dns์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์š”์ฒญ์ด ์žˆ๋Š” ์ค„ ์ˆ˜
  • Offer_n โ€” ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด. return์ด ๋น„์–ด ์žˆ์œผ๋ฉด ๋‹ค์Œ ์ œ์•ˆ ์š”์ฒญ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • History_sql - ์˜ˆ๋ฅผ ๋“ค์–ด ๊ตฌ๋…์ž์˜ "์ธ์ฆ ๋‚ด์—ญ"์— ์“ฐ๋Š” ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค.

์š”์ฒญ์—๋Š” ์˜ต์…˜ ์„น์…˜์˜ ๋ณ€์ˆ˜๋‚˜ DHCP ํ”„๋กœํ† ์ฝœ์˜ ์˜ต์…˜์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ต์…˜ ์„น์…˜. ์ด๊ฒƒ์ด ๋” ํฅ๋ฏธ๋กœ์›Œ์ง€๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๋‚˜์ค‘์— ์ฟผ๋ฆฌ ์„น์…˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค

option_82_hex:sw_port1:20:22

, ์ด ๋ช…๋ น์ค„์€ 82~20๋ฐ”์ดํŠธ ๋ฒ”์œ„์˜ 22์ง„์ˆ˜ ํ˜•์‹์œผ๋กœ DHCP ์š”์ฒญ ์˜ต์…˜ 1์— ํฌํ•จ๋œ ์ „์ฒด ์ค„์„ ๊ฐ€์ ธ์™€ ์ƒˆ ๋ณ€์ˆ˜ sw_portXNUMX(์š”์ฒญ์ด ๋ฐœ์ƒํ•œ ์Šค์œ„์น˜ ํฌํŠธ)์— ๋„ฃ์Šต๋‹ˆ๋‹ค.

option_82_hex:sw_mac:26:40

, 26:40 ๋ฒ”์œ„์—์„œ XNUMX์ง„์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ sw_mac ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

-d ์Šค์œ„์น˜๋กœ ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ์ฟผ๋ฆฌ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์˜ต์…˜์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋กœ๊ทธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

--a DHCPINFORM ํŒจํ‚ท์ด 67ad0025224 , b'x764xa91xe5xa0xa3xa5-x9fx8a' , ('8', 172.30.114.25) {'ClientMacAddress': '68ad0025224', 'ClientMacAddressByte': b'x764 00%"Jxd7d์—์„œ ํฌํŠธ 91์— ๋„์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค. ' , ' HType': 'Ethernet', 'HostName': b'x5xa0xe3xa5xa9xa8-x8fx43a', 'ReqListDNS': True, 'ReqListDomainName': True, 'ReqListPerfowmRouterDiscover': True, 'ReqListRouter': True, 'ReqListStaticRoute': True, 'ReqListSubnetM ์งˆ๋ฌธ': True, 'ReqListVendorSpecInfo': 0.0.0.0, 'RequestedIpAddress': '5.0', 'Vendor': b'MSFT 0025224', 'chaddr': '764ad172.30.128.13', 'ciaddr': '00' , 'ํ”Œ๋ž˜๊ทธ': 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, ' option_12_byte': b'x01x06x00x04x00x01x00x06x02x08x00x06' b'x00x1x9eXx2exb82xad', 'option_12010600040001000602080006001_hex': '589e2eb82ad', 'option_ 18_len': 82 12, 'option_01_str': "b'x06x00x04x00x01x00x06x02x08x00x06x00x1x9x2eXx768exb0.0.0.0xad'", '๊ฒฐ๊ณผ': ๊ฑฐ์ง“, '์ดˆ': 001, 'siaddr': '589', 'sw_mac': '2e1eb06ad', 'sw_port89': '8', 'xidbyte': b'

๋”ฐ๋ผ์„œ ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ {}๋กœ ๋ž˜ํ•‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋Š” SQL ์ฟผ๋ฆฌ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ IP ์ฃผ์†Œ๋ฅผ ์ˆ˜์‹ ํ•œ ๊ธฐ๋ก์„ ๊ธฐ๋กํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Python์˜ DHCP+Mysql ์„œ๋ฒ„

Python์˜ DHCP+Mysql ์„œ๋ฒ„

์„œ๋ฒ„ ์‹œ์ž‘

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

โ€” d ์ฝ˜์†” ์ถœ๋ ฅ ๋ชจ๋“œ DEBUG
- c <ํŒŒ์ผ ์ด๋ฆ„> ๊ตฌ์„ฑ ํŒŒ์ผ

๋ฐ ๋ธŒ๋ฆฌํ•‘

์ด์ œ Python์—์„œ ์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ณ ํ†ต์ด๋‹ค. Python์€ ์ฆ‰์„์—์„œ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์ˆœ๊ฐ„๋“ค์ด โ€œ์™€, ์–ด๋–ป๊ฒŒ๋“  ํ•ด๋ƒˆ๊ตฌ๋‚˜โ€๋ผ๋Š” ์Šคํƒ€์ผ๋กœ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค. ์ „ํ˜€ ์ตœ์ ํ™”๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์ฃผ๋กœ Python ๊ฐœ๋ฐœ ๊ฒฝํ—˜์ด ๊ฑฐ์˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด ํ˜•์‹์œผ๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” "์ฝ”๋“œ"์—์„œ ์„œ๋ฒ„ ๊ตฌํ˜„์˜ ๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด ์ธก๋ฉด์„ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.

XML ๊ตฌ์„ฑ ํŒŒ์ผ ํŒŒ์„œ

ํ‘œ์ค€ Python ๋ชจ๋“ˆ xml.dom์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•ด ๋ณด์ด์ง€๋งŒ ๊ตฌํ˜„ ์ค‘์— ์ด ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ๋ฌธ์„œ์™€ ์˜ˆ์ œ๊ฐ€ ๋ˆˆ์— ๋„๊ฒŒ ๋ถ€์กฑํ–ˆ์Šต๋‹ˆ๋‹ค.

    mconfig์˜ ์š”์†Œ์— ๋Œ€ํ•œ tree = minidom.parse(gconfig["config_file"]) mconfig=tree.getElementsByTagName("mysql"): 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_basename"] =elem.getElementsByTagName("basename")[0].firstChild.data dconfig=tree.getElementsByTagName("dhcpserver") for dconfig์˜ ์š”์†Œ: gconfig["broadcast"]=elem.getElementsByTagName("broadcast")[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["dhcp_defaultMask"] =elem.getElementsByTagName("defaultMask")[0].firstChild.data gconfig["dhcp_defaultRouter"]=elem.getElementsByTagName("defaultRouter")[0].firstChild.data gconfig["dhcp_defaultDNS"]=elem.getElementsByTagName(" defaultDNS")[0].firstChild.data qconfig=tree.getElementsByTagName("query") for elem in qconfig: gconfig["offer_count"]=elem.getElementsByTagName("offer_count")[0].firstChild.data for num in range(int(gconfig["offer_count"])): gconfig["offer_"+str(num+1)]=elem.getElementsByTagName("offer_"+str(num+1))[0].firstChild.data gconfig ์˜ต์…˜์˜ ์š”์†Œ์— ๋Œ€ํ•œ ["history_sql"]=elem.getElementsByTagName("history_sql")[0].firstChild.data options=tree.getElementsByTagName("options"): ๋…ธ๋“œ์˜ ์˜ต์…˜์— ๋Œ€ํ•œ node=elem.getElementsByTagName("option") : optionsMod.append(options.firstChild.data)

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ

์ด์ƒํ•˜๊ฒŒ๋„ Python์˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์€ ๋งค์šฐ ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

def PacketWork(data,addr): ... # ๋“ค์–ด์˜ค๋Š” ํŒจํ‚ท์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ  ์ด์— ์‘๋‹ตํ•˜๋Š” ๊ตฌํ˜„ ... while True: data, addr = udp_socket.recvfrom(1024) # UDP ํŒจํ‚ท์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ค‘ thread = threading.Thread( target=PacketWork , args=(data,addr,)).start() # ๊ทธ๋Œ€๋กœ - ์ด์ „์— ์ •์˜ํ•œ PacketWork ํ•จ์ˆ˜๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค while threading.active_count() >gconfig["dhcp_ThreadLimit"]: time. sleep(1) # ์„ค์ •๋ณด๋‹ค ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋” ๋งŽ์€ ๊ฒฝ์šฐ ์Šค๋ ˆ๋“œ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

DHCP ํŒจํ‚ท ์ˆ˜์‹ /์ „์†ก

๋„คํŠธ์›Œํฌ ์นด๋“œ๋ฅผ ํ†ตํ•ด ๋“ค์–ด์˜ค๋Š” UDP ํŒจํ‚ท์„ ๊ฐ€๋กœ์ฑ„๋ ค๋ฉด ์†Œ์ผ“์„ "์˜ฌ๋ ค์•ผ" ํ•ฉ๋‹ˆ๋‹ค.

udp_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, ์†Œ์ผ“.SO_BROADCAST, 1) # ์†Œ์ผ“์„ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋ชจ๋“œ๋กœ ์ „ํ™˜ rz=udp_socket.sendto(packetack, (gconfig["broadcast"],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 ํŒจํ‚ท ๊ตฌ๋ฌธ ๋ถ„์„

์ œ๊ฐ€ ํŒŒ์ด์ฌ์„ ์ •๋ง ์ข‹์•„ํ–ˆ๋˜ ๊ณณ์ด ๋ฐ”๋กœ ์ด๊ณณ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งค์šฐ ์œ ์—ฐํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ XNUMX์ง„์ˆ˜ ๊ฐ’, ๋ฌธ์ž์—ด ๋ฐ XNUMX์ง„์ˆ˜๋กœ ๋งค์šฐ ์‰ฝ๊ฒŒ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ํŒจํ‚ค์ง€์˜ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, HEX ํ˜•์‹์˜ ๋ฐ”์ดํŠธ ๋ฒ”์œ„์™€ ๋ฐ”์ดํŠธ๋งŒ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

, ๋ฐ”์ดํŠธ๋ฅผ ๊ตฌ์กฐ๋กœ ์••์ถ•ํ•ฉ๋‹ˆ๋‹ค.

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

๊ตฌ์กฐ์—์„œ IP๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

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

๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

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

์ง€๊ธˆ์€ ๊ทธ๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค ๐Ÿ˜‰

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€