DHCP란?
DHCP는 Dynamic Host Configuration Protocol이다. 직역하자면 '동적 호스트 설정 프로토콜(통신규약)'이다.
라우터는 인터페이스 및 호스트에 IP 주소를 할당해 줄 수 있다. 예전에는 각 PC마다 고정 IP 설정을 도입하여 사용 하거나, RFC 903에 정의된 것처럼 RARP를 도입하여 동적으로 적절한 IP 주소를 취득할 수 있게 구현하여 사용하였다. 고정 IP 설정의 단점은 무엇보다도 IP 설정에 실수가 있는 경우 인터넷이 안 된다. 예를 들어 실수로 오타가 날 경우도 있고, 실수로 다른 컴퓨터와 동일한 IP를 할당하여 충돌나는 경우도 존재한다. 그외에도 사용하지 않고 꺼놓은 컴퓨터에도 모두 IP를 하나씩 할당해야 하다 보니 IP가 모자라는 문제도 발생한다. 후자로 사용한 RARP의 단점은 데이터 링크계층에서 작동되었어야 했으므로 하드웨어로서 구현이 어려웠으며, 서버가 각각의 네트워크에 존재해야만 한다는 단점이 있어 추후 DHCP가 발표되며 사장되었다.
이런 문제를 해결하기 위해서 IP를 필요로 하는 컴퓨터에게 자동으로 할당해서 사용할 수 있도록 해주고, 사용하지 않으면 반환받아 다른 컴퓨터가 사용할 수 있도록 해주는 것이 DHCP이다.
보통 라우터에 해당 기능이 탑재되지만, 별도의 서버에 DHCP 서비스를 설정하여 사용할 수도 있다. 라우터는 단지 게이트웨이 역할만 하고, DHCP 서버는 별도로 두는 구성도 많이 사용된다.
DHCP Lease
DHCP의 경우 IP를 할당해 주는 것을 임대(Lease)라고 한다. 이 임대에는 임대 기간이 있는데, 말 그대로 해당 IP 주소를 사용할 수 있는 기간을 말한다. 즉, 임대 기간이 끝나면 해당 IP 주소는 DHCP 주소 풀로 반환이 된다는 것이다. 임대 기간은 장소에 따라서 적당한 값을 찾아서 설정하면 된다. 유동인구가 많은 가게 등지에서 임대 기간을 8일로 두게 된다면 순식간에 주소 풀이 동날 것이고, 더 이상 IP 주소를 할당할 수 없게 되어버린다. 이런 유동인구가 많은 지역에서는 임대 기간을 2~3시간 정도로 짧게 설정하는 편이 좋다. 가끔 카페에서 오래 있거나 할 때, 멀쩡히 잘 사용하던 네트워크가 갑자기 네트워크 로그인을 하라고 뜨는 이유가 임대기간이 끝났기 때문이다. 가정이나 기업 등에서는 기본값을 8일~30일 등으로 길게 잡는다. ipTIME 공유기의 경우 기본적으로 임대 기간이 7200초(2시간)이다.
DHCP Lease는 다음과 같은 과정으로 진행된다.
- DHCP DiscoverIP 주소가 할당되지 않은 클라이언트는 MAC 주소를 기반으로 IP 주소를 받아오기 위해 로컬 네트워크에 Discover 패킷을 Broadcast한다. 이때, Broadcast로 뿌려진 패킷은 해당 네트워크 내의 모든 호스트에게 날아가게 된다. 이 Discover 패킷에는 IP 주소가 필요한 호스트의 MAC 주소가 담겨져 있어서 DHCP 서버가 응답할 때 패킷을 수신할 수 있게 된다. 호스트들이 패킷을 받고 나서, DHCP 서버가 Discover 패킷을 받게 되면 2단계로 넘어간다. 물론 이 때, 다른 호스트들은 '어? 내 패킷이 아니네?' 하고 패킷을 폐기한다.
- DHCP OfferDHCP 서버가 Discover 패킷을 받게 되면, DHCP 서버는 Offer 패킷을 Broadcast한다. 이때, MAC 주소에 아까 Discover 패킷을 보낸 호스트의 MAC 주소를 적어서 보낸다. 마찬가지로 Broadcast이기 때문에 해당 네트워크의 호스트 전체에 패킷이 날아가지만 역시 Discover를 보낸 호스트 이외의 다른 호스트는 패킷을 전부 폐기한다. Discover를 보낸 호스트가 Offer 패킷을 받으면 3단계로 넘어간다.
- DHCP Request
해당 호스트는 Offer를 받았으면 해당 네트워크에는 DHCP 서버가 있다고 판단, Request 패킷을 Broadcast한다. Request 패킷은 말 그대로 IP 내놔. 이 역시 Broadcast이기 때문에 해당 네트워크의 호스트 전체에게 날아가고, DHCP 서버 이외의 다른 호스트는 패킷을 폐기한다. DHCP 서버가 Request 패킷을 받으면 4단계로 진행한다.
이 때 Request 패킷을 Broadcast 하는 이유는 DHCP 서버가 1대 이상일 수 있기 때문이다.
- DHCP ACKDHCP 서버는 Request 패킷을 받으면 자신의 IP 임대 풀에서 할당 가능한 IP 주소를 찾는다. 예를 들어 게이트웨이와 DHCP가 모두 192.168.0.1일 경우 192.168.0.1을 제외한 0.2~0.254까지의 임대 풀을 가지고 있다. 이 임대 풀에서 가장 앞에 있는 IP 주소부터 할당하게 되는데, 사용 중이 아닌 경우엔 해당 IP 주소를 할당을 하게 된다. 여기서는 192.168.0.2를 할당한다고 가정 하면, "Your (Client) IP Address: 192.168.0.2 (192.168.0.2)" 이런 패킷을 날리게 된다. 역시 Broadcast로 전송되며, 호스트가 이 패킷을 정상적으로 받았다면 IP 주소가 할당된다.
이 과정을 흔히 DORA라고 부른다.
DHCP Renewal
임대 기간이 끝나면 IP 주소를 반환하게 된다. 만약 임대 기간이 1시간이라면, 1시간마다 IP 주소를 반환하고 다시 임대하면 불필요한 브로드캐스트 트래픽을 발생시키게 된다. 이것이 전혀 효율적이지 않기 때문에 DHCP에는 임대 갱신(Lease Renewal)이라는 것이 있다.
이 임대 갱신은 두 차례 시도를 하게 되는데, 첫 시도는 임대 기간이 50% 남았을 때 시도된다. 이 때, 갱신에 성공하면 갱신된 시간으로 부터 임대 기간이 다시 차게 된다. 하지만 클라이언트의 전원이 꺼져 있다던가, 아니면 모종의 이유(DHCP 서버가 점검 중이었다거나)로 갱신에 실패하게 된다면, 한번의 기회를 더 준다. 87.5%의 시간이 지났을 때 다시 갱신을 시도한다. 이 때, 갱신에 성공한다면 그 시점으로부터 임대 기간이 다시 차게 된다.
간단하계 예시를 들어보자면, 임대 기간이 10시간이라고 가정하고, 00시 00분에 임대가 생성됐다고 하자. 이로부터 50%가 지난 시점인 05시 00분에 1차적으로 갱신을 시도하게 되고, 이때 성공한다면 임대 종료 시각은 15시 00분이다. 1차 갱신에 실패한다면, 임대가 생성된 시간으로 부터 87.5%가 지난 시점인 08시 45분에 2차 갱신을 시도한다. 이때 성공한다면, 18시 45분이 임대 종료 시점이 되는 것이다. 만약 2차마저 실패했다면, 임대 기간이 끝나는 시점에 주소를 반환하고 임대 생성부터 다시 하게 된다. 즉, 클라이언트가 IP 주소를 계속 사용 중이라면, 해당 IP 주소를 계속 사용할 수 있도록 임대 기간을 계속 늘려 주고, 사용하지 않는다면 주소를 반환하여 다른 클라이언트가 사용할 수 있도록 해 주는 것이 바로 임대와 갱신이다.
DHCP Renewal은 다음과 같은 과정으로 진행된다.
- DHCP RequestDHCP 서버에 갱신을 요청하는 Request 패킷을 Unicast로 보낸다. DHCP 서버가 이 패킷을 받으면, 2단계로 넘어간다.
- DHCP ACKDHCP 서버에서 Request를 요청한 클라이언트에게 ACK 패킷을 Unicast로 보낸다. 이 패킷에는 갱신에 대한 정보가 담겨 있다.
갱신 과정은 임대 생성에 비해서 간단하다. 그냥 말 그대로 기간만 좀 늘려달라고 부탁하는 것이기 때문이다.
DHCP Release
임대 기간이 끝났거나, IP 주소를 더 이상 사용하지 않는다면 DHCP 서버에 IP 주소를 반환하게 되는데, 이것을 반환(Release)이라고 한다. DHCP 서버와 클라이언트 모두 임대 기간에 대한 정보를 가지고 있기 때문에, 임대 기간이 끝났는데 클라이언트가 연결되지 않았더라도 해당 주소를 사용 가능하도록 주소 풀로 보낸다. 흔히 인터넷이 안 된다거나, 랜선이랑 다 제대로 꽂혀 있는데 인터넷이 안 된다거나, ipconfig을 쳤는데 IP 주소가 169.254.x.x, 서브넷 마스크가 255.255.0.0으로 나온다면 가장 먼저 해 보라고 하는 것이 명령 프롬프트에 ipconfig /release를 입력하고, ipconfig /renew를 입력하라고 하는 것인데, ipconfig /release는 DHCP 서버에 IP 주소를 반환하는 명령어고, ipconfig /renew는 설정된 IP 주소가 없다면 임대 생성을, 이미 IP 주소가 있다면 임대 갱신을 해 주는 명령어이다. 이렇게 한다면 다 멀쩡하다는 전제 하에 IP 주소를 다시 할당받을 수 있도록 유도해 주는 것이다. 반환 과정이 없다면, 고정 IP를 사용하는 것보다 단점이 더 많은 프로토콜이 되기 때문에 반환 과정은 DHCP에 있어서 임대 생성/갱신보다 중요하다고 볼 수 있겠다.
DHCP Server
IP를 보유하고, 원하는 가입자에게 IP를 분배해주는 역할을 한다. KT나 LG U+ 같은 경우 중앙집중형 관리 정책을 사용하며, 다수의 가입자에 대해서 인증 기능을 처리함과 동시에 IP를 할당하는 크고 아름다운 DHCP Server를 운용하고 있다. KT의 경우 각 지사와 전화국에서 관리하고 있으며, 보통 해당 지사 관할지역이나 읍.면.동 단위로 IP대역 셋팅이 이루어진다. SK와 LG는 아파트의 경우 단지별로 셋팅이 되고, 아파트 단지가 크면 각 아파트 동 단위로 분할 셋팅이 되기도 한다. 대형 쇼핑몰이나 주상복합 단지의 경우에는 같은 건물임에도 층별로 분할 셋팅이 되기도 한다. 인터넷 공유기에도 DHCP 서버가 탑재되어 있으며, 각각의 PC에 사설 IP를 할당한다.일반 기업의 경우 인터넷 회선이 연결된 게이트웨이 장비에 DHCP Server를 활성화 시켜서, 각 업무용 PC에 IP를 받을 수 있도록 세팅하여 사용한다. 만약 해당기업에서 공인 IP를 다수 보유하고 있는 경우라면, 공인 IP만을 이용해서 DHCP 서버를 세팅할 수 있다. 그렇지 않은 경우라면, 인터넷 공유기와 동일하게 사설 IP를 할당하고 NAT 기능을 이용해서 외부로 연결하게 된다. 이런 경우 NAT 내부의 개인 PC는 외부에서 보이지 않지만, 웹 서버나 메일 서버등은 외부에서 접속할 수 있도록 해야 하므로, 회사 네트워크 구성을 신경써서 만들어줘야 한다.
DHCP Client
PC, 스마트폰, 스마트패드 등 각종 최종 단말 장치들은 모두 DHCP Client가 탑재되어 있어서, 서버로부터 IP를 할당받아 사용한다.
인터넷 공유기에도 DHCP Client가 탑재되어 있는데, 자신이 마치 PC인 것처럼 동작하여 공인 IP를 할당받는 용도로 사용한다.
DHCP Relay Agent
DHCP Relay Agent라는 것이 있는데, 브로드캐스트 패킷은 라우터, 즉 게이트웨이를 넘어가지 못한다. 대부분의 가정의 경우 그냥 공유기 아래에 물려 있으니 상관은 없지만, 기업 레벨에서는 DHCP 서버가 라우터 너머에 있는 경우가 종종 있다. 하지만 브로드캐스트 패킷은 라우터를 넘어가지 못하는데 위에서 봤다시피 IP 할당 과정 4단계가 전부 브로드캐스트로 이루어진다. 이런 경우 라우터 단에서 DHCP Relay Agent를 설정해서 DHCP 요청이 라우터로 들어오면, 라우터에서 유니캐스트로 변환하여 DHCP서버로 패킷을 보낸다. DHCP 서버에선 역시 유니캐스트로 라우터에게 보내고 라우터는 브로드캐스트로 뿌린다.대한민국의 ISP인 KT, LG U+, SKB 등은 DHCP 처리를 모두 중앙집중식 DHCP 서버를 사용하는 구조로 되어 있다. Relay Agent에서 정상적인 가입회선이면 IP를 임대해주고 아니라면 임대를 해주지 않거나 일단 IP를 주고 인증페이지로 리다이렉션을 하거나 아예 IP만 주고 binding table에 기입을 안하는 식으로 통신을 막아버리는일도 한다.
DHCP Snooping
DHCP snooping은 네트워크 스위치에 지나다니는 DHCP 패킷을 감시해서, 어느 가입자가 어느 IP를 할당받았는지에 대한 binding table을 관리하는 기능이다. DHCP 서버가 아는 개발 네트워크 장비 입장에서 동작하며, 일반적으로 DHCP relay와 연동되어 동작한다.이렇게 DHCP snooping이 동작하여 binding table이 관리되면, 다음과 같은 동작에 이용될 수 있다.
- 하단에 언급되는 DHCP exhaustion attack를 감지하거나 이를 차단하는 용도로 쓸 수 있다.
- 허용되지 않는 가입자가 DHCP로 IP를 획득하려 하는 시도를 찾아내어 차단할 수 있다.
- 가입자가 DHCP를 쓰지 않고 고정 IP를 사용하여 인터넷을 사용하는 경우를 감지/차단할 수 있다.
DHCP Proxy Agent
실제 IP를 분배하는 DHCP 서버의 앞단에 설치되며, DHCP relay와 유사하게 DHCP packet을 중계한다. 다만, DHCP relay와는 다르게 DHCP proxy는 client가 보기에는 DHCP server인 것처럼 동작한다.DHCP proxy를 설치할 경우 실제 DHCP server는 가입자에게는 숨겨지는 효과가 나타나기 때문에, DHCP server를 대상으로 하는 DDos 공격 등으로 부터 안전해진다는 장점이 있다.
Network Redistribution
네트워크 재배포(Network Redistribution)는 서로 다른 라우팅 프로토콜을 사용하는 두 개 이상의 네트워크가 상호 통신할 수 있도록 라우팅 정보를 공유하는 과정이다. 이는 주로 다양한 라우팅 프로토콜을 사용하는 네트워크 간의 경로 정보를 교환하고 일관된 네트워크 라우팅을 유지하기 위해 사용된다.
재배포의 필요성
상호 운용성을 제공하여 다양한 라우팅 프로토콜을 사용하는 네트워크 간의 일관된 라우팅 정보를 유지할 수 있다. 또한, 기업 인수 합병이나 네트워크 구조 변경 시, 서로 다른 라우팅 프로토콜을 사용하는 네트워크를 통합하는 데 도움이 된다. 각 라우팅 프로토콜의 강점을 활용하여 네트워크 성능을 최적화할 수 있다.
재배포 방법
재배포는 주로 라우터에서 수행된다. 라우터는 하나의 라우팅 프로토콜에서 받은 경로 정보를 다른 라우팅 프로토콜로 변환하고 공유한다. 예를 들어, Cisco 라우터에서는 redistribute 명령어를 사용하여 네트워크 재배포를 구성할 수 있다. 라우팅 프로토콜 간의 경로 정보를 공유할 때, 각 프로토콜의 메트릭(거리, 비용 등)을 변환해야 한다. 이는 네트워크 경로 선택에 영향을 미친다.
RIP에서 OSPF로 경로 정보를 재배포하는 명령어는 다음과 같다.
Router(config)# router ospf 1
Router(config-router)# redistribute rip metric-type 1OSPF에서 EIGRP로 경로 정보를 재배포하는 명령어는 다음과 같다.
Router(config)# router eigrp 1
Router(config-router)# redistribute ospf 1 metric 10000 100 255 1 1500네트워크 재배포(Network Redistribution)는 다양한 라우팅 프로토콜을 사용하는 네트워크 간의 경로 정보를 공유하고 상호 운용성을 제공하는 중요한 과정이다. 이를 통해 네트워크 통합, 최적화, 일관된 라우팅 정보 유지가 가능해진다. 라우터에서 재배포를 구성할 때는 각 라우팅 프로토콜의 메트릭 변환을 고려해야 한다.