DHCP로 hostname 설정하기

DHCP로 client의 hostname을 설정할수 있는 팁이다. dhclient의 hook을 이용하면 된다.

isc-dhcp-server 설정

option host-name으로 설정할 hostname을 지정한다.

# vi /etc/dhcp/dhcpd.conf
...
...
...
host test {
   hardware ethernet 00:16:3E:CF:E6:3A;
   fixed-address 192.168.24.151;
   option host-name webserver01;
}

Linux Client(dhclient)에서 설정

dhcp request시 host-name을 요청하게 설정해야한다. debian wheezy, jessie는 default로 설정되어 있어 수정할 필요가 없었다. 아마 대부분의 linux에서는 기본으로 설정되어 있지 않을까 싶다. request의 설정부분에 host-name을 추가하도록 하자.

# vi /etc/dhcp/dhclient.conf
request ..., ..., host-name, ...

이제 ip를 할당받고 난뒤 dhcp 과정을 종료할때 수행되는 dhclient-exit-hooks에 hostname을 설정하는 스크립트를 넣으면 된다.

# vi /etc/dhcp/dhclient-exit-hooks.d/set_hostname
hostname $new_host_name

new_host_name이라는 변수에 dhcp-server에서 할당받은 hostname이 기록된다. 이를 hostname command로 처리한것이다.

이제 dhcp request를 날려 정상적으로 hostname이 변경되는지 확인해본다.

# dhclient -v eth0
# hostname
webserver01

정상적으로 변경되었음을 확인할수 있다. 그러나 더 처리할 사항은 남아있다. /etc/hosts, /etc/hostname등도 같이 수정해야 할것이다. sed등을 이용하여 스크립트를 작성하면 된다. 배포판마다 hostname 설정 파일이 다르니 조심하자. (centos/rhel의 경우 /etc/sysconfig/networks 파일의hostname을 변경해야한다.)

Windows에서의 설정

안타깝게도 windows에서는 host-name을 설정할 수 없다. dhcp client가 request시 host-name을 요청하게 해야하는데 windows는 아예 이 관련 옵션이 없다고 한다. 따라서 dhcp server에서 hostname을 설정한들 아무 의미가 없다.