본문 바로가기

Study/Ubuntu 공부

DHCP 서버 설정 방법 (ubuntu)

반응형

오늘은 DHCP 서버 설정 방법에 대해서 기록해두고자 합니다. 

 

무엇인가 새로운 것을 새보는 것은 언제나 시행착오를 겪기 마련입니다. 

간단한 것이라도 제대로 기록해두지 않으면 다음번에 동일한 시행착오를 다시 겪게 될 수 있습니다. 

 

이것은 미래의 나를 위한 기록입니다.

하지만 어쩌면 메모 같은 이 기록이, 지금 이 페이지를 보고 계신 당신의 시행착오를 줄이고, 시간을 절약하게 하기를 기대하며 글을 시작합니다. 

 

[DHCP 패키지 설치]

우선 ubuntu에 DHCP 서버를 구성하기 위해서는 isc-dhcp-server 패키지를 설치해야 합니다.

shell에서 관리자 권한으로 아래의 명령을 입력하세요. 

$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt-get install isc-dhcp-server

 

[config 파일 편집]

DHCP 서버 설정을 위한 config 파일 경로는 아래와 같습니다.

  • /etc/dhcp/dhcpd.conf
  • /etc/default/isc-dhcp-server

 

 

[config 파일 편집 - dhcpd.conf]

우선 dhcpd.conf 파일을 먼저 편집하겠습니다.

역시 관리자 권한으로 선호하는 편집기를 이용해서 편집하시면 됩니다. 

$ sudo vi /etc/dhcp/dhcpd.conf

 

아래의 부분만 주석을 해제하고 원하는 IP를 입력하시면 됩니다.

[기존]
default로 생성된 dhcpd.conf 파일은 아래와 같이 IP 설정부분이 주석처리되어 있습니다.
[변경]
Network ID와 원하는 IP 대역을 입력하시면 됩니다.
#subnet XXX.XXX.XXX.0 netmask 255.255.255.0 {
#
subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.2 192.168.0.254;
}

위의 설정의 의미는 DHCP 네트워크 구성을 위한 Network ID는 192.168.0.0으로 하고, 할당 가능한 IP 대역은 256개로 하겠다는 의미입니다. 

위와 같이 설정할 경우 최대 할당 가능한 IP 개수는 253개입니다.

그 이유는 아래와 같습니다.

 

  • 192.168.0.0 : Network를 대표하는 IP
  • 192.168.0.1 : DHCP 서버의 IP
  • 192.168.0.2 ~ 192.168.0.254 : 동적으로 할당할 IP 주소들
  • 192.168.0.255 : broadcast IP

 

[config 파일 편집 - isc-dhcp-server]

두 번째로 /etc/default/isc-dhcp-server 파일을 편집하겠습니다.

$ sudo vi /etc/default/isc-dhcp-server

 

아래를 이용해서 DHCP 서버로 사용할 interface를 지정해주시면 됩니다.

특히 2개 이상의 interface를 이용하고 있을 경우 꼭 지정해주셔야 합니다.

[기존] [변경]
INTERFACES="" INTERFACES="enp4s0f2"

 

제 경우는 eno1 interface는 기존에 쓰던 interface이고, enp4s0f2는 DHCP 용으로 사용할 interface입니다. 

interface 명을 모르시면 ifconfig 명령을 통해서 확인하시면 됩니다. 

 

 

[DHCP 서버의 IP 주소 할당]

$ ifconfig enp4s0f2 192.168.0.1

DHCP 서버로 IP address가 필요합니다.

위의 명령으로 enp4s04f interface의 IP가 192.168.0.1로 설정됩니다. 

이 IP는 subnet에서 gateway로 사용됩니다. 

 

 

 

[DHCP 서비스 restart]

아래 2가지 명령 중에서 편하신 명령으로 dhcp 서비스를 restart 하면 됩니다.

$ sudo /etc/init.d/isc-dhcp-server restart

또는

$ sudo service isc-dhcp-server restart

 

아래의 명령으로 dhcp 서비스가 정상적인지 확인합니다.

$ sudo service isc-dhcp-server status

서비스의 상태가 active(running)이면 정상적으로 DHCP 서비스가 동작하고 있는 것입니다.

만약, failed와 같은 상태가 표시되면 설정이 제대로 되었는지 다시 한번 확인해보시기 바랍니다. 

 

dhcpd 명령을 통해서도 확인하실 수 있습니다.

$ dhcpd -t /etc/dhcp/dhcpd.conf

 

 

[고정 IP 설정하는 방법]

[기존]
Network ID와 원하는 IP 대역을 입력된 상태
[변경]
특정 MAC을 가진 IP를 특정 IP로 고정 할당함.
subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.2 192.168.0.254;
}
subnet 192.168.56.0 netmask 255.255.255.0 {
    range 192.168.56.2 192.168.56.254;
    host raspberry {
        hardware ethernet dc:a6:32:e6:14:f9;
        fixed-address 192.168.56.12;
    }
}

MAC address가 dc:a6:32:e6:14:f9인 client의 IP 주소를 192.168.56.12로 고정 설정한다는 의미입니다. 

 

 

[DHCP 할당 IP 리스트 확인 방법]

아래의 명령으로 dhcp로 잡힌 IP 목록들을 확인하실 수 있습니다. 

$ dhcp-lease-list

 

위와 같이 명령을 입력하면 아래와 같이 dhcp로 할당된 IP들을 확인하실 수 있습니다. 

 

 

 

[Trouble Shooting #1]

만약 dhcpd -t /etc/dhcp/dhcpd.conf 명령으로 아래와 같은 에러 메시지가 나온다면 interface의 IP 주소를 설정하지 않았을 가능성이 있습니다.

 

/etc/dhcp/dhcpd.conf: interface name too long (is 20)

 

위와 같은 에러 메시지가 표시된다면 DHCP 서버로 사용할 interface의 주소가 제대로 설정되었는지 확인하시고 재설정하시면 됩니다. 

 

 

[Trouble Shooting #2]

만약 DHCP 서버가 제대로 동작하지 않는다면 sudo service dhcp status 명령과 dhcpd -t /etc/dhcp/dhcpd.conf 명령을 통해서 좀 더 살펴보시기 바랍니다.

 

 

[끝맺음 말]

이것으로 ubuntu에 DHCP 서버를 설정하는 방법에 대한 설명을 모두 마칩니다. 

감사합니다. 

반응형