반응형

DHCP 깊게 알아보기

 

 

1. 원하는 IP주소 할당받기

DHCP Request Message를 자세히 보게되면 아래와 같은 [Requested IP Address]라는 항목이 존재합니다.

 

DHCP Request Option

 

DHCP Server가 할당하기를 원하는 IP주소가 아닌 다른 IP주소를 요청할 경우 어떤 응답이 올지 궁금하지 않습니까?

(크흠... 저는 궁금했습니다.)

 

 

확인해보기

위의 상황을 만들어보기 위해서 먼저 Jupyter notebook을 열었습니다.

IP주소를 일단 할당받을 이후에 새로운 IP주소를 요청하는 형태로 진행해보았습니다.

 

 

 

먼저 기존의 DHCP PACKET을 그대로 복제해서 전송해보았습니다.

 

DHCP PACKET

 

Wire Shark를 이용하여 Packet Data를 Hex Stream으로 복사한 후 해당 데이터중 dhcp의 데이터 부분만 뽑아내어 그대로 전송하였습니다.

 

여기서 특이한 부분은 UDP부분에 들어가는 CheckSum값이 틀리게 전송되고 있다는 것이었습니다.(복제되기전 패킷부터)

 

덕분에 Checksum값을 계산해주지 않고 그냥 전송할 수 있었습니다. ㅎㅎ

 

socket은 UDP이기 때문에 DGRAM으로 열어주시고, 68번 port를 Source로 67을 Destination으로 설정해주었습니다.

 

< 68번 Port로 Socket을 Bind를 해준 상태로 와이파이를 연결하면 IP주소를 받아오지 못할 수 있습니다. >

< 중간에 와이파이를 다시 잡아야할 필요가 있다면, socket close 후 진행해주세요 >

 

 

어찌되었든 패킷을 복제해서 전송해봤는데, ACK가 정상적으로 수신되는 것을 볼 수 있었습니다.

 

이제 DHCP의 메시지 중 Request IP 부분을 수정해서 다시 전송해보겠습니다.

 

IP Address 영역
Hex Data 중 IP 영역

ac(16) : 172

1e(16) : 30

01(16) : 01

23(16) : 35

 

위의 데이터의 마지막 23(16)을 64(16)으로 변경해서 전송해보겠습니다.

(64(16)은 10진수로 100입니다. 즉, 172.30.1.100 으로 요청)

 

실행결과

 

실행결과 위와같이 NAK 메시지를 수신하였습니다.

 

NAK는 'Negative ACK'를 의미합니다. 즉, 싫다는 뜻입니다. 힝...

 

NAK...

그 이후로 IP주소를 변경해가며 요청해보았지만, 전부 거절당했습니다.

 

서버측에서 DHCP Discover 단계에서 허가해준 IP주소에 한정해서 할당이 가능한듯합니다.

 

 

 

2. DHCP Discover 요청

위에서의 실패를 발판삼아 이번에는 Discover 요청부터 수행해보겠습니다.

 

마찬가지로 Discover 패킷을 복제해보았습니다. (역시나 Checksum은 맞지 않습니다.)

 

DHCP Discover

 

DHCP Discover에 대한 응답도 잘 왔습니다. (DHCP Offer)

 

다만, Discover의 경우 IP주소를 요청할 뿐 원하는 IP주소를 선택할 수 없으며, 동시에 이미 IP주소를 할당받은 상태로는 아무리해도 결과가 동일합니다.

 

고민이군요...

 

테스트하는 공간에 카페이다보니 공유기 설정창에 접속해서 만져보기가 힘드네요.

 

추후에 다른 환경에서 확인 후 이어서 포스팅 하겠습니다 ㅎㅎ

반응형

+ Recent posts