통신프로토콜 DHCP(1)
1. DHCP server가 없는 경우 client에서의 동작에 대한 확인
⦁ DHCP servcer가 없는 경우, clent에서는 어떠한 동작을 하는지를 확인하는 실습
⦁ DHCP 관련하여 어떤 메시지를 몇 번, 어떤 시간 간격으로 보내는지, 보내는 메시지 내의 field 중 broadcast flag 값은 0인지 1인지 등을 확인
- DHCP server가 없는 경우 client는 server에게 계속 해서 DHCP Discover Message를 보내게 된다. DHCP server가 구축되어 있을 경우 server는 client에게 DHCP Offer Message를 보내게 되겠지만 그렇지 않은 경우 server로부터 client에게 응답을 하지 않게 되므로 client는 server를 찾기 위해 Broadcast망을 통해서 DHCP server를 찾기 위해 DHCP Discover Message를 계속해서 송신 하게 된다.
-client는 일정한 주기를 가지지 않고 랜덤 시간간격으로 Discover Message를 발생 시키는 것을 알 수 있다. 또, broadcast flag영역은 모두 0의 값이 들어있다.(broadcast flag영역의 값으로 나중에 ip를 할당 받을 때 어떤 망으로 받을지 결정 지어 진다.)
2. Linux 상에 DHCP Server 설치 실습
⦁ Linux가 설치된 컴퓨터에 DHCP Server를 설치(Linux에서의 DHCP server 설치 및 설정 과정 리포트에 작성)
① yum 명령어를 통하여 DHCP를 설치한다.
- yum –y install dhcp
- yum –y install dhcp-devel
- dhcp가 있는지 확인한다.
② dhcpd.conf 만들기
명령어 - rpm -qa I grep dhcp
명령어 -
cp/usr/share/doc/dhcp4.1.1/dhcpd.conf.sample/etc/dhcpd.conf
-> y
- 설치된 dhcp의 버전을 확인(rpm –qa –I grep dhcp) 후 설치 된 dhcp의 폴더안에 있는 dhcpd.conf.sample파일을 복사 한다.
-(cd/usr/share/doc/dhcp4.1.1/dhcpd.conf.sample /etc/dhcpd.conf) : 앞의 디렉토리 안에있는 dhcpd.conf.sample 파일을 etc디렉토리 안의 dhcpd.conf파일로 복사한다는 뜻이다.
- 그 후 vi /etc/dhcpd.conf 명령어를 통해 dhcpd.conf파일을 열어 위와 같이 자신의 ip와 서브넷 마스크 기본게이트웨이 등으로 자신의 환경에 따라 설정한다.
⦁ Wireshark를 이용하여 DHCP관련 Packet 수집 및 분석
- Wireshark으로 capture한 DHCP packet들을 리포트로 작성하고 설명 추가
- DHCP 동작 과정(이론) 정리하고 수집한 패킷들을 통해 동작과정 비교
- DHCP를 통해 ip를 할당 받기 전 ifconfig를 통하여 ip주소를 확인 해본 결과 Ethernet(MAC) 주소에 대한 정보만 나타나고 IPv4에 대한 ip정보는 없는 것을 알 수 있다.
- DHCP를 통해 할당 받은 직후 wireshark를 통하여 패킷을 수집한 결과 Discover, Offer, Request, ACK Message 이렇게 총 4개의 패킷이 수집이 된 것을 확인 할 수 있다.
- DHCP의 기본 이론 적인 동작 과정은 ip주소를 할당 받지 않은 client가 server를 찾기 위하여 broadcast망을 통하여 discover message를 모든 단말에게 송신한다. 네트워크 내에 server가 존재 할 경우 server는 broadcast망을 통해 수신 한 message에 대한 답을 한다. 내가 ip를 할당 해 주겠다고 offer message를 똑같이 broadcast망을 통해서 보낸다.(broadcast로 보내면 누가 받을지 결정하기 어려운데 dhcp packet에는 transaction id 영역이 있다. 이 영역은 random number로 client가 discover packet을 만들 때 넣어서 송신한다. 이것으로 수신자와 송신자가 어디로 보낼지 누구 것인지 구별 할 수 있다.) 그럼 이 offer message를 받은 client는 server에게 offer message를 통하여 받은 정보를 사용해도 되는지 한번 더 물어보기 위해 request message를 보낸다. server는 request message를 받으면 사용해도 되면 ack message를 보내고 네트워크 상에 문제가 생겨 사용하면 안될 경우 nack message를 보낸다. 이때 request message와 ack, nack message 모두 방송망을 통해서 송신하고 port번호와 transaction id로 누구 것인지 판별한다.
- 수집된 packet들을 보면 ip(0.0.0.0)를 모르는 단말이 discover message를 broadcast망(255.255.255.255)을 통해서 discover message를 송신 하는 것을 알 수 있다. 이 message를 받은 server(192.168.52.68)은 broadcast망을 통하여 offer message를 전송하고 이 offer를 받은 ip할당 안된 단말은 broadcast망을 통해서 request message를 전송한다. 마지막으로 server는 broadcast망을 통해서 ACK message를 전송한다. ACK message를 전송 받은 단말(ip할당 받지 않은 단말은) ip를 가지게 된다.
- ACK Packet 안의 정보를 살펴 보면 your client IP address 의 영역에 저장되어 있는 값이 사용하게 될 ip의 주소가 된다.
- ACK message를 수신한 client에서 ifconfig를 통하여 ip를 확인 한 결과 ip주소가 ACK message에 저장되어 있던 ip주소와 같은 것을 확인 할 수 있다.
3. 임대 주소 받기 전과 후를 비교 분석
• Discover Packet
- Message type : Boot request(1)로 client가 server로 전송하는 패킷인 것을 알 수 있으며 이 packet을 보면 source ip : 0. 0. 0. 0 Destination ip : 255. 255. 255. 255(braodcast)가 들어 가있으며 정보들이 아무 것도 저장되어 있지 않다. 아래 Hex 코드를 보면 Source Ethernet address : 자신의 Ethernet address가 들어가 있으며 Destination Ethernet address : FF FF FF FF FF FF 로 broadcast인 것을 알 수 있다. 또 source port : 0x=44(68)DHCP client, Destination port : 0x43(67)DHCP server를 나타내고 있다.
• Offer packet
- Message type : Boot request(2)로 server가 client로 전송하는 패킷인 것을 알 수 있으며 client에게로 정보를 싫어서 전송한다. 아래 Hex 코드를 보면 Source Ethernet address : 자신의 Ethernet address가 들어가 있으며 Destination Ethernet address : FF FF FF FF FF FF 로 broadcast인 것을 알 수 있다. 또 source port : 0x=43(67)DHCP server, Destination port : 0x44(68)DHCP client를 나타내고 있다. 또, ip주소를 나타내는 영역을 보면 source ip영역 (server의 ip)이 c0 a8 34 44(192.168.52.68)인 것을 알 수 있고(위의 패킷수집 되는 부분에서도 알 수 있다.) Destination ip영역은 FF FF FF FF(255.255.255.255)로 방송망을 통해 전송 되는 것을 알 수 있다.
• Request packet
- Message type : Boot request(1)로 client가 server로 전송하는 패킷인 것을 알 수 있으며 이 packet을 보면 source ip : 0. 0. 0. 0 Destination ip : 255. 255. 255. 255(braodcast)가 들어 가있다. 정보들이 아무 것도 저장되어 있지 않다. 아래 Hex 코드를 보면 Source Ethernet address : 자신의 Ethernet address가 들어가 있으며 Destination Ethernet address : FF FF FF FF FF FF 로 broadcast인 것을 알 수 있다. 또 source port : 0x=44(68)DHCP client, Destination port : 0x43(67)DHCP server를 나타내고 있다.(전체 적인 모양은 Discover와 같다.) 하지만 밑에 Option영역이 다른 것을 알 수 있다. Option영역에는 Discover에 포함되어 잇지 않은 50과 55가 들어 가있다. 50은 request ip address영역으로 할당되는 ip를 물어보는 것을 뜻한다.
• ACK packet
- Message type : Boot request(2)로 server가 client로 전송하는 패킷인 것을 알 수 있으며 client에게로 정보를 싫어서 전송한다. 아래 Hex 코드를 보면 Source Ethernet address : 자신의 Ethernet address가 들어가 있으며 Destination Ethernet address : FF FF FF FF FF FF 로 broadcast인 것을 알 수 있다. 또 source port : 0x=43(67)DHCP server, Destination port : 0x44(68)DHCP client를 나타내고 있다. 또, ip주소를 나타내는 영역을 보면 source ip영역 (server의 ip)이 c0 a8 34 44(192.168.52.68)인 것을 알 수 있고(위의 패킷수집 되는 부분에서도 알 수 있다.) Destination ip영역은 FF FF FF FF(255.255.255.255)로 방송망을 통해 전송 되는 것을 알 수 있다. 이 ACK packet도 Request packet과 마찬가지로 위에서 server가 client에게 전송했던 Offer packet과 같은 값이 저장되어 있다. 그리고 Option영역도 Offer packet과 같은 값이 저장되어 있다. 이 것으로 알 수 있는 것은 client에게 offer로 전송한 정보를 client가 사용해도 된다고 알려주는 packet인 것을 알 수 있다,