네트워크 엔지니어를 하다보니까 그런지 모르겠지만,
문득 너무 당연하게 누리고 있는 편의나 기능이 어떻게, 어떤 원리로 동작하고 있는지 궁금하진 않으신가요?
저는 밥을 먹을때나, 혼자 명상을 하거나, 누군가와 대화를 하고있을때도 문득 생각이 들더라구요,
그 중에 어떻게 보면 통신의 시작이라고 할 수 있는, DHCP에 대한 이야기를 해보려 합니다.
우리가 학교, 카페 혹은 직장에서 Wi-Fi에 접속할 떄,
아래처럼 어떤 네트워크에 연결할 지 선택을 하고, 필요하면 암호를 입력하곤 하죠.
그럼 인증의 단계는 생략하고, 어찌저찌 무선에 연결이 되었다고 가정해봅시다 !
왠만한분들께서 다 아시다시피, End-to-End 통신에는 반드시 IP Address가 필요하죠.
수동으로 IP 주소나 서브넷, Gateway 주소와 DNS 서버 주소를 적는 경우도 있겠지만,
대부분의 상황에선 '자동으로 받아오기'를 하여 사용하곤 합니다.
오늘은 이 자동으로 'IP 주소 받아오기(DHCP)'의 작동방식을 실제 패킷을 보면서 살펴보고자 합니다.
시작하기에 앞서..
거의 모든 환경에서 위의 구성과 비슷하게 구성이 되어있으리라 생각합니다.
중간 경로상 더 많은 장비가 있을 수도 있지만,
사용자는 AP 혹은 스위치에 연결되며, 라우터에 도달하고 인터넷 세상으로 나가는 구조일겁니다.
보안 요구사항이 많거나 사용자 컨트롤이 필요한 환경에서는 별도의 인증서버와 DHCP서버를 두지만,
소규모 오피스나 일반 가정환경에선 보통 무선 AP에서 인증과 DHCP 과정을 겸한다고 보시면 됩니다.
*인증 : 인가된 사용자만 무선 네트워크에 연결될 수 있도록 확인하는 절차 (802.1x 인증방식이나 PSK 방식이 일반적)
*DHCP : PC에 IP를 자동으로 셋팅하기위하여, 네트워크에 존재하는 DHCP 서버에게 IP 주소를 요청하는 일련의 과정을 진행하기 위한 프로토콜
그럼 바로 시작해보도록 하겠습니다.
DHCP의 단계
1. Discover
(Client -> Broadcasting)
인증이 완료된 이후에도 Client PC에 IP주소가 셋팅되어있지않으며, DHCP server가 누군지도 알지 못합니다.
그렇기에 네트워크에 Broadcasting을 해버리는거죠 아무나 받아라~ 하고.
OSI 7 Layer기준으로 아래 Discover 패킷을 분석해보죠.
2계층을 보시면 Src MAC 은 제 NIC 이겠죠? (혹시 몰라서 가렸습니다 ㅎㅎ;) Dst MAC은 ff:ff:ff:ff:ff:ff로 Broadcasting의 MAC 주소 입니다.
3계층을 보시면 Src IP는 아직 할당전이여서 0.0.0.0이고, Dst IP는 255.255.255.255로 Broadcasting을 의미합니다.
4계층에서는 UDP를 사용하고, Src port는 68, Dst port는 67로 보입니다. 보통 Src port는 unknown포트중 무작위로 사용하지만, 1000번대 이내 포트를 사용한것으로 보아하니, DHCP에서는 Dst port뿐만 아니라, Src port도 지정해서 보내나봅니다.
그리고 그 상단에서 DHCP가 동작하고 있는데, 대부분의 값들이 입력되어있지않고, Layer 2 Src MAC이 다시한번 써있네요 !
정리해보자면, 제 PC입장에서 브로드캐스팅을 보내는데, UDP를 써서 송부하고, DHCP관련 내용을 대부분 비워둔채로 송부합니다.
Discover단계는 일단 '아무나 내 DHCP 요청을 받아봐라!' 하는것으로 보입니다.
2. Offer
(DHCP server -> Client)
누군가가 저한테 답신을 줬습니다 ! 누굴까요
큰 네트워크라면 별도의 DHCP서버가, 오피스나 무선 환경에서라면 아마도 무선 AP가 응답을 해줬을것 같습니다 !
브로드캐스팅으로 패킷을 잘 포장해서 발신했으므로, 동일한 브로드캐스팅 도메인의 모든 NW 장비 및 노드에게 전송되었을텐데,
어쨰서인가 하나의 장치에서만 회신을 보냈네요?!
추측하기로는 Discover단계에서 UDP 67 port로 패킷을 보냈으니, 네트워크에 있는 장치중에서 UDP 67번 포트를 서비스 중인 어느 장치에서 제 패킷에 대한 리턴을 한것으로 보여요!
패킷 내용을 한번 볼까요?
2계층을 보시면, Src MAC은 리턴한 장치의 MAC일거고, Dst MAC은 제 PC NIC의 MAC주소네요. 이번엔 Unicast입니다.
3계층을 보시면, 엥? Src IP가 있는것은 그렇다치더라도, Dst IP가 있습니다 ?! 나도 모르게 IP를 벌써 할당받은것인가 ..
4계층을 보시면, Discover와 반대의 Port 정보가 쓰여져있네요. 특이사항 없습니다
그 상단에 DHCP를 보시면, Offer라고 명시가 되어있고, 일부 정보가 기입이 되어있네요!
이중에 노란색 박스쳐져있는 정보들이 핵심으로 보입니다.!
제가 승낙은 하지않았지만, 제 IP로 172.30.5.237을 사용하라고 하며, Dst IP로도 이미 사용했어요..
DHCP Server IP 는 172.30.1.254이며,
IP Address Lease Time(임대 시간)은 2400s로 40분이며,
할당받은 네트웍의 서브넷 마스크는 12bit(255.240.0.0)이고,
Gateway로 사용할 Router의 IP는 172.30.1.254이고,
DNS Server는 211.252.120.62와 168.126.63.1 이라고 합니다.
여기서 알 수 있는 정보는 DHCP Server와 Router의 IP가 같으며, 아마도 AP가 라우터 겸 DHCP Server역할도 하고 있는것으로 보여요.
그리고, 뭔가 IP를 수동으로 입력해야했을때랑 비슷한 정보들이 있습니다.
정리해보면 '나는 1.254라는 애인데, DHCP 서버야. 너가 IP가 필요해보이길래 사용할 IP 정보를 이렇게 줄게, 쓸래 ?' 하고 있는 상황이죠.
저도 이렇게까지 패킷을 까본적은 없는데, 아주 친절하네요.
3. Request
(Client -> Broadcasting)
제안(Offer)을 받았으니, 응답하는게 인지상정이겠죠?
근데 저는 지금 동일 네트워크에 1개의 DHCP서버가 있어서 Offer가 한개가 들어왔는데, , 여러대가 있다면 어떻게 되는지 궁금하네요.
어떤 메트릭을 가지고 어떤 DHCP서버가 보낸 제안을 승낙할지, 아시는 분이있다면 댓글로 부탁드립니다.
자 각설하고, 다시한번 패킷을 봐보시죠.
2,3계층을 보시면, 처음 Discover를 보낼때와 마찬가지로 Broadcasting으로 패킷을 전송하고 있네요
Offer단계에서 DHCP 서버가 응답을 줄때는 분명 Unicast로 줬었는데, 아직 그 IP의 소유자가 아니라 판단되었는지,
예의바르게 ' 나 그 IP써도 될까' 하는것으로 보입니다.
4계층은 동일하고, 바로 DHCP로 넘어가겠습니다.
Option 53을 보면 해당 메세지는 'Request'라는 것을 알 수 있고,
Option 55을 보면 어떤 값들을 달라고 요청하고 있고, '
Option 57을 보면 자신의 Maximum DHCP Message size는 1500Bytes라고 명시하며,
Option 50을 보면 사용하겠다고 요청하는 IP가 어떤건지,
Option 54를 보면 내가 누구한테 보내는 메세지인지 알 수 있게, DHCP Server의 IP가 명시 되어있습니다.(Broadcasting으로 보낸거라 꼭 필요한 절차죠)
정리하자면, 제안 받은 내용을 수락한다고 하면서, 추가적으로 필요한 정보를 DHCP서버에게 요청하고 있습니다.
4 .ACK
(DHCP Server -> Client)
DHCP 프로세스의 마지막 단계인 ACK까지 왔습니다
바로 한번 패킷을 보시죠
DHCP server가 PC로 보내는 메세지이며, 2단계 Offer와 같이 Unicast로 패킷을 보낸것을 알 수 있습니다.
2,3,4 Layer는 Offer단계와 흡사하여 건너 뛰고,
바로 DHCP 메세지 쪽을 보겠습니다.
직관적이게 Client가 사용할 IP, DHCP server 정보, Lease Time, 서브넷 마스크, Gateway 주소와 DNS 서버 주소를 주는데,
중간에 보이는 Magic cookie 부분은 1~4 단계에 걸쳐 모두 보이는데 무엇을 의미하는건지 궁금하네요..(이것도 혹시 아시면,,)
그리고 Request에서 요청한 정보들중 일부만 회신이 왔는데,
이것은 아마 DHCP server에 설정이 되어있지않거나, 미응답하도록 설정된것이지않을까 싶습니다.
끝으로.
정말 기본적이고, 사용자 관점에서 문제가 되면 전체 서비스가 죽는것과 동일한 DHCP를 너무 늦게 공부했다 생각했습니다.
무선 인증과 WLC 설정과 연관되어 기업 네트워크에 정말 중요한 내용인데, 트러블 슈팅에도 무선 네트워크 엔지니어한테만 너무 의지했나 싶습니다.
시작하면서 ARP랑 같이 하려고 했는데 내용이 생각보다 많고,
처음 알게되는것이 많다보니 너무 오래걸려, ARP는 다음 편에서 다루도록 하겠습니다.
궁금하거나 대신 확인해줬으면 하는 일들은 언제든지 댓글로 알려주세요.
EVE이건, GNS3 혹은 다른 시뮬레이터 환경에서라도 구성해서 궁금하신것을 풀어드리도록 하겠습니다.
그렇다면 모두 장애없는 네트워크 환경 되세요 !!
'Network 모험기' 카테고리의 다른 글
[#3-1]BGP Path best selection에 대한 간단한 설명 (0) | 2024.03.01 |
---|---|
[#2] L2는 어떻게 동작할까 (심화편) (1) | 2023.12.30 |
[#2]L2는 어떻게 동작할까(기초편) (1) | 2023.12.30 |
[#1]나는 누구,, 여긴 어디,, (DHCP) 2탄 (2) | 2023.12.02 |
[#0] 네트워크를 시작하며.. (0) | 2023.04.24 |