서버 구축 자동화에도 도움이 되는 DHCP

예를들어 다수의 서버에 고정 IP 주소를 설정할 때 DHCP를 사용할 수 있다고 설명했다. 이 밖에 KickStart로 OS 설치를 자동화할 때에도 DHCP가 활약한다.

KickStart는 RHEL과 Fdora의 인스톨러인 아나콘다(Anaconda)가 제공하는 기능이다. GUI(Graphic User Interface) 설치 화면에서 설정 화면에서 설정 항목을 입력하는 대신에 텍스트 파일(KickStart 파일)에 설정 항목을 기술해 두어 설치 과정을 자동화할 수 있다. 또한, PXE 부팅과 조합해서 새로 산 서버를 네트워크에 연결하고 전원만 넣으면 OS 설치가 시작되게 할 수 있다.

PXE 부팅은 NIC(네트워크 카드) 자체의 기능으로 인스톨러와 연계한다. ‘네트워크 부팅’ 모드로 서버를 시작하면 DHCP 서버로부터 IP 주소를 가져옴과 동시에 ‘next-server’와 ‘filename’이라는 추가 정보를 추출한다. DHCP 서버 쪽에서는 설정 파일에 다음 코드의 항목을 추가해 둔다.

next-server  192.168.1.10;
filename     "pxelinux.0";

그리고 ‘next-server’로 지정된 서버로부터 ‘filename’으로 지정된 프로그램(부트스트랩 이미지)을 TFTP 프로토콜로 다운로드하여 실행한다. 이 프로그램은 인스톨할 OS를 선택하는 메뉴를 표시한 후, 선택한 OS의 설치 과정을 KickStart로 실시한다.

서버 가상화 환경의 DHCP

실험용으로 리눅스 KVM 가상 머신을 DHCP 서버로 구성했다. 리눅스 KVM의 가상 네트워크상에서는 독자적인 DHCP 기능도 제공된다. 기본으로 준비되는 가상 네트워크 ‘default’에 접속한 가상 머신은 DHCP로 IP 주소를 가져올 수 있다. 이 DHCP 서버 기능은 호스트 리눅스에서 동작하는 ‘dnsmasq’가 제공한다.

dnsmasq는 간단한 DHCP 서버 기능을 제공하는 명령어로 시작 시 각종 옵션을 설정한다. 구축한 호스트 리눅스에서 다음 명령어를 실행하면 실제 시작 옵션을 확인할 수 있다.

# ps -ef | grep dnsmasq

dnsmasq에는 또한 DNS 기능도 있다. 정확히는 외부 DNS 서버에 대해 캐시 서버로 동작하는 기능으로 클라이언트에서 이름 해석 요청을 받으면, 외부 DNS 서버에 요청을 전송해서 얻어진 결과를 메모리상에 기록해 두고, 다음번부터 같은 요청에 대해서는 dnsmasq에서 직접 결과를 반환한다.

클라우드 기반 DHCP

dnsmasq는 클라우드 기반에서도 이용되고 있다. 여기서는 Amazon EC2 등과 같은, IaaS(Infrastructure as a Service) 타입 클라우드 기반을 구축하는 소프트웨어인 ‘OpenStack’을 예로 설명한다.

OpenStack에서는 전형적으로 가상 네트워크를 제공한다. OpenStack은 멀티테넌트(Multi-Tenant) 클라우드 환경을 준비할 수 있고, 테넌트별로 전용 가상 라우터를 할당한다. 각 테넌트의 유저는 자신의 가상 라우터 배후로 자유롭게 가상 스위치를 추가헤 간다. 마치 테넌트별 ‘가정용 LAN’이 준비되어 있고, 각각 브로드밴드 라우터를 거쳐 인터넷에 접속하는 상황이다.

각각의 가상 스위치는 하나의 서브넷에 대응하며, 클라우드상에 가상 머신을 시작하여 가상 스위치에 접속하면, DHCP가 해당 서브넷의 IP 주소를 할당한다. OpenStack을 구성하는 서버군 중에서 가상 네트워크를 구성하는 ‘네트워크 노드’상에서는 가상 스위치마다 대응하는 dnsmasq 프로세스가 실행되어 DHCP 역할을 한다.