TIL 2021-10-07 DHCP2
DHCP 메세지 전송
DHCP는 전송 프로토콜로 UDP를 사용
클라이언트 -> 서버 DHCP 메세지는 'DHCP server' port(67)
서버 -> 클라이언트 DHCP 메세지는 'DHCP client' port(68)
작동 과정
1. DHCP DISCOVER는 DHCP Client가 서버측으로 보냄
이떄 자신의 IP는 0.0.0.0 그리고 broadcast니 자신의 local physical subnet, 255.255.255.255로 보냄
네트워크 주소와 임대 기간을 제안하는 옵션을 포함할수도 있음
BOOTP relay agents는 동일하지 않은 physical subnet에 있는 DHCP 서버에 보낼수도 있음
Clarifications and Extensions for BOOTP (RFC1542)
3.4 'giaddr' field의 해석
이것은 BOOTP relay agents을 통해 클라이언트가 아닌 다른 네트워크에 있는 서버로 BOOTREQUEST 메세지를 전송하는 것을 가능하게 함
서버의 BOOTREPLY 메세지를 반대로 BOOTP relay agents를 통해 다시 클라이언트로 돌려보내는 역할도함
만약 relay agent가 요청을 relay하는 것을 결정한다면
만약 이 필드가 0이면 relay agent는 요청이 수신된 인터페이스의 IP주소를 적어줘야함
agent는 절대 giaddr에 broadcast 주소를 넣으면 안됨
Martian address Filtering
호스트와 라우터는 불법적인 IP 소스를 가진 데이터그램은 조용히 버릴필요가 있다.
대표적인것이 0.0.0.0
BOOT relay agent를 지원하는 호스트나 라우터는 반드시 IP source 주소가 0.0.0.0인 BOOTREQUEST의 배송을 허용해야한다.
DHCP Protocol 2
각 서버는 'yiaddr' 필드 안에 가능한 네트워크 주소를 포함한 DHCPOFFER 메세지에 응답해야함
서버는 제공된 네트워크 주소를 예약할 필요 없음
새 주소를 할당할때, 서버는 제공된 네트워크 주소가 이미 사용되고 있지 않은지 확인해야함
클라이언트 서버 상호작용 - 네트워크 주소 할당
새 주소는 이렇게 선택되어야함
1. 클라이언트의 현재 바인딩에 기록된 현재 클라이언트 주소
2. 주소가 서버의 가능한 주소 풀 목록 안에 있고 할당되지 않은 경우 바인딩에 기록된 클라이언트의 이전 주소
3. 주소가 가능하고 아직 할당되지 않은 경우 Requested IP Address 옵션에 요쳥된 주소
4. 서버의 가능한 주소풀에서 할당된 새 주소
주소는 이러한 것들 기반으로 선택됨
메세지가 전송된 서브넷 (만약 giaddr가 0인 경우)
메세지를 전달한 relay agent의 주소 (giaddr가 0이 아닌경우)
서버는 필요하다면 BOOTP relay agent를 사용해 클라이언트 측에게 DHCPOFFER 메세지를 전송한다
대체로 DHCP 서버와 BOOT relay agent는 DHCPOFFER, DHCPACK, DHCPNAK 메세지를 unicast delivery로 클라이언트측에 바로 보내려고 시도한다.
프로토콜 소프트웨어가 IP 주소로 설정되어 있지 않은한 unicast IP datagram을 받을수 없는 클라이언트 측은 클라이언트가 보내는 DHCPDISCOVER나 DHCPREQUEST 메세지의 flag 필드의 BROADCAST bit를 1로 설정해야한다.
3. DHCP Request
클라이언트는 서버측에
한 서버에서 제공된 파라미터를 요청하고 암묵적으로 다른곳에서 온 것들을 거절하거나,
이전 할당된 주소가 맞는지 확인하거나
특정 네트워크 주고의 임대를 연장하거나
4. DHCPACK
서버->클라이언트
커밋된 네트워크 주소를 포함한 configuration parameters를 보낸다.
서버는 클라이언트로부터 DHCPREQUEST 브로드캐스트를 받는다.
DHCPREQUEST 메세지에 의해 선택받지 못한 서버들은 이 메세지를 거절 알림으로 사용함.
선택된 서버는 클라이언트의 바인딩을 persistent storage로 커밋하고 요청한 클라이언트의 configuration parameter가 포함된 DHCPACK 메세지로 응답
서버가 DHCPREQUEST 메세지를 만족시키지 못한다면(요청한 네트워크 주소가 이미 할당됨) DHCPNACK 을 응답
클라이언트 측에서 configuration parameters가 담긴 DHCPACK를 받으면
클라이언트 측은 할당된 네트워크 주소에 ARP 하는 등의 final check을 실행하고,
DHCPACK에 적힌 임대 기간을 적는다.
DHCP Release
클라이언트가 받은 네트워크를 포기하거나, 남은 임대를 취소할떄
DHCP 클라이언트는 IP 주소를 풀어준다.
DHCP Inform
클라이언트-> 서버
local configuration parameter만을 요청함
이 경우 이미 설정된 네트워크 주소가 잇음
과정 정리
1. 클라이언트 DHCPDISCOVER 브로드캐스트
2. 서버가 DHCPOFFER로 응답
3. 서버 주소체크
4. 클라이언트 DHCPREQUEST 브로드캐스트
5.서버는 바인딩을 커밋하고 DHCPACK을 보냄
DHCP의 장점
1. IP 설정의 중앙관리
2. 동적 호스트 설정
3. 이음새 없는 IP 호스트 설정
4.유연하고 확장성이 좋음
단점
1. DHCP 서버가 안되면 클라이언트는 기업 네트워크 접극ㄴ 불가
2. 머신 이름은 새 IP 주소를 받을떄 변하지 않음 ?
3. 보안과 unreliable한 UDP 사용
보안 문제
DHCP는 unauthenticated protocol임
네트워크에 연결할떄 임대를 얻기 위해 유저는 인증을 제공해줄 필요가 없음
어떤 사람이던 DHCP 서버로 활동 가능 -> Spoofing
질문
만약 고정 아이피 사용하는 네트워크가 있다면
예) 게이트웨이 IP 주소는 192.168.0.1이고, 192.168.0.2~192.168.0.10이 정적 ip 주소라면