네트워크 설정 · 7 min read · Nov 12, 2025

Centos 5.1에서 DHCP Failover 설정하는 방법

Centos 5.1에서 DHCP Failover 설정하는 방법

버전 1.0.0
저자: Andrew Colin Kissa

소개

이 튜토리얼은 기본 ISC DHCP 서버를 사용하여 CentOS 5.1에서 DHCP failover를 설정하는 방법을 안내합니다. 이는 다른 리눅스 배포판에도 쉽게 적용할 수 있습니다. 네트워크 다운타임을 허용할 수 없는 환경에서는 Failover가 필요할 것입니다. 제 집은 DLNA 설정을 운영하고 있으므로, 제 장치가 항상 네트워크 매개변수를 얻을 수 있어야 합니다.

DHCP와 DNS는 종종 함께 사용되므로, 클라이언트에게 임대가 부여될 때마다 호스트 이름이 DNS에 자동으로 업데이트되도록 동적 업데이트를 허용하는 로컬 DNS 서버를 구성할 것입니다.

제 구성은 다음과 같습니다. 자신의 네트워크에 맞게 변경해 주세요.

  • 도메인 이름 - home.topdog-software.com
  • 네트워크 - 192.168.1.0/24
  • DHCP 서버 - 192.168.1.2,192.168.1.3
  • 게이트웨이 - 192.168.1.254
  • DNS 서버 - 192.168.1.2,192.168.1.3

필요한 패키지 설치

  • DHCP # yum install dhcp -y
  • DNS # yum install bind bind-chroot caching-nameserver -y
  • NTP # yum install ntp -y

구성

DHCP

마스터 192.168.1.2에서 원본 구성을 백업합니다:

마스터 192.168.1.2에서 DHCP 구성 /etc/dhcpd.conf를 편집하고 다음을 추가합니다. 옵션을 이해하기 위해 주석을 읽어보세요:

authoritative;                                             # 서버는 권위적입니다
option domain-name "home.topdog-software.com";             # 발급된 도메인 이름
option domain-name-servers 192.168.1.2,192.168.1.3;        # 발급된 이름 서버
option netbios-name-servers 192.168.1.2;                   # netbios 서버
allow booting;                                             # 네트워크를 통한 부팅 허용
allow bootp;                                               # 부팅 허용
next-server 192.168.1.2;                                   # 부팅을 위한 TFTP 서버
filename "pxelinux.0";                                     # 네트워크 부팅을 위한 커널
ddns-update-style interim;                                 # 동적 DNS 업데이트 설정
ddns-updates on;
ddns-domainname "home.topdog-software.com";                # DDNS 업데이트를 위한 도메인 이름
key rndckey {
        algorithm       hmac-md5;
        secret          "xxxxxxxxxx";                      # /etc/rndc.key 파일에서 가져오기
}
zone home.topdog-software.com                              # 업데이트할 포워드 존
{
        primary 127.0.0.1;                                 # 로컬 머신에서 업데이트
        key rndckey;                                       # 업데이트에 사용할 키
}
zone 1.168.192.in-addr.arpa                                # 업데이트할 리버스 존
{
        primary 127.0.0.1;                                 # 로컬 머신에서 업데이트
        key rndckey;                                       # 업데이트에 사용할 키
}
failover peer "home-net" {                                 # failover 구성
         primary;                                          # 이것은 기본입니다
         address 192.168.1.2;                              # 기본 IP 주소
         port 647;
         peer address 192.168.1.3;                         # 피어의 IP 주소
         peer port 647;
         max-response-delay 60;
         max-unacked-updates 10;
         mclt 3600;
         split 128;
         load balance max seconds 3;
}
subnet 192.168.1.0 netmask 255.255.255.0                   # 주소를 발급할 존
{
        pool {
                failover peer "home-net";                  # failover bootp가 허용되지 않는 DHCP 임대 풀
                deny dynamic bootp clients;         
                option routers 192.168.1.254;
                range 192.168.1.25 192.168.1.50;
        }
        pool {                                             # 부팅 클라이언트를 위한 공간, 복제 및 failover 없음
                option routers 192.168.1.254;
                range 192.168.1.51 192.168.1.55;
        }
        allow unknown-clients;
        ignore client-updates;
}

슬레이브 192.168.1.3에서 원본 구성을 백업합니다:

슬레이브 192.168.1.3에서 DHCP 구성 /etc/dhcpd.conf를 편집하고 다음을 추가합니다. 옵션을 이해하기 위해 주석을 읽어보세요:

authoritative;                                             # 서버는 권위적입니다
option domain-name "home.topdog-software.com";             # 발급된 도메인 이름
option domain-name-servers 192.168.1.2,192.168.1.3;        # 발급된 이름 서버
option netbios-name-servers 192.168.1.2;                   # netbios 서버
allow booting;                                             # 네트워크를 통한 부팅 허용
allow bootp;                                               # 부팅 허용
next-server 192.168.1.2;                                   # 부팅을 위한 TFTP 서버
filename "pxelinux.0";                                     # 네트워크 부팅을 위한 커널
ddns-update-style interim;                                 # 동적 DNS 업데이트 설정
ddns-updates on;
ddns-domainname "home.topdog-software.com";                # DDNS 업데이트를 위한 도메인 이름
key rndckey {
        algorithm       hmac-md5;
        secret          "xxxxxxxxxx";                      # 마스터의 /etc/rndc.key 파일에서 가져오기
}
zone home.topdog-software.com                              # 업데이트할 포워드 존
{
        primary 192.168.1.2;                               # 로컬 머신에서 업데이트
        key rndckey;                                       # 업데이트에 사용할 키
}
zone 1.168.192.in-addr.arpa                                # 업데이트할 리버스 존
{
        primary 192.168.1.2;                               # 로컬 머신에서 업데이트
        key rndckey;                                       # 업데이트에 사용할 키
}
failover peer "home-net" {                                 # fail over 구성
         secondary;                                        # 이것은 보조입니다
         address 192.168.1.3;                              # 우리의 IP 주소
         port 647;
         peer address 192.168.1.2;                         # 기본의 IP 주소
         peer port 647;
         max-response-delay 60;
         max-unacked-updates 10;
         mclt 3600;
         load balance max seconds 3;
}
subnet 192.168.1.0 netmask 255.255.255.0                   # 주소를 발급할 존
{
        pool {
                failover peer "home-net";                  # failover bootp가 허용되지 않는 DHCP 임대 풀
                deny dynamic bootp clients;         
                option routers 192.168.1.254;
                range 192.168.1.25 192.168.1.50;
        }
        pool {                                             # 부팅 클라이언트를 위한 공간, 복제 및 failover 없음
                option routers 192.168.1.254;
                range 192.168.1.51 192.168.1.55;
        }
        allow unknown-clients;
        ignore client-updates;
}

DNS

마스터에서 Bind 구성을 백업합니다:

 # cp /var/named/chroot/etc/named.caching-nameserver.conf /var/named/chroot/etc/named.caching-nameserver.conf.orig

구성을 아래와 같이 반영하도록 편집합니다.

options {
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        query-source    port 53;
        query-source-v6 port 53;
        allow-query     { localhost; localnets; };
};
include "/etc/rndc.key";
include "/etc/named.rfc1912.zones";
zone "home.topdog-software.com" {
        type master;
        file "data/home.topdog-software.com.hosts";
        allow-transfer { 192.168.1.3; };
        allow-update { key "rndckey"; };
        allow-query { any; };
};
zone "1.168.192.in-addr.arpa" {
        type master;
        file "data/1.168.192.in-addr.arpa.hosts";
        allow-transfer { 192.168.1.3; };
        allow-update { key "rndckey"; };
        allow-query { any; };
};

슬레이브에서 Bind 구성을 백업합니다:

 # cp /var/named/chroot/etc/named.caching-nameserver.conf /var/named/chroot/etc/named.caching-nameserver.conf.orig

구성을 아래와 같이 반영하도록 편집합니다.

options {
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        query-source    port 53;
        query-source-v6 port 53;
        allow-query     { localhost; localnets; };
};
include "/etc/rndc.key";
include "/etc/named.rfc1912.zones";
zone "home.topdog-software.com" {
        type slave;
        masters { 192.168.1.2; };
        file "data/home.topdog-software.com.hosts";
};
zone "1.168.192.in-addr.arpa" {
        type slave;
        masters { 192.168.1.2; };
        file "data/1.168.192.in-addr.arpa.hosts";
};

마스터에서 존 파일 생성

  • /var/named/chroot/var/named/data/home.topdog-software.com.hosts $ORIGIN . $TTL 38400 home.topdog-software.com IN SOA ns1.home.topdog-software.com. andrew.topdog.za.net. ( 2008061629 ; 시리얼 10800 ; 새로 고침 (3시간) 3600 ; 재시도 (1시간) 604800 ; 만료 (1주) 38400 ; 최소 (10시간 40분) ) NS ns1.home.topdog-software.com. NS ns2.home.topdog-software.com. ns1 IN A 192.168.1.2 ns2 IN A 192.168.1.3
  • /var/named/chroot/var/named/data/1.168.192.in-addr.arpa.hosts $ORIGIN . $TTL 38400 ; 10시간 40분 1.168.192.in-addr.arpa IN SOA ns1.home.topdog-software.com. andrew.topdog.za.net. ( 2008061644 ; 시리얼 10800 ; 새로 고침 (3시간) 3600 ; 재시도 (1시간) 604800 ; 만료 (1주) 38400 ; 최소 (10시간 40분) ) NS ns1.home.topdog-software.com. NS ns2.home.topdog-software.com. 2 IN PTR ns1.home.topdog-software.com. 3 IN PTR ns2.home.topdog-software.com.

NTP

NTP는 두 DHCP 서버가 failover 및 DDNS가 발생하기 위해 동기화되어야 하므로 필요합니다. 원하신다면 완전한 NTP 서버를 운영할 수 있지만, 저는 외부 NTP 서버에 매시간 NTP를 동기화하는 방법에 대한 지침만 제공하겠습니다. 두 서버 모두에서 이 작업을 수행해야 합니다.

  • /etc/cron.hourly/timesync 파일을 생성하고 다음을 추가합니다: #!/bin/bash # tpdate -s 0.rhel.pool.ntp.org
  • 파일을 실행 가능하게 만들고 처음으로 실행합니다: # /etc/cron.hourly/timesync

마지막으로

이제 완료되었습니다. 서비스를 시작하고 테스트를 시작합시다.

  • 마스터에서: # service named start
  • 슬레이브에서: # service named start

마스터의 로그에서 다음을 확인할 수 있어야 합니다:

Jun 16 13:58:56 kudusoft dhcpd: failover peer home-net: I move from recover to startup
Jun 16 13:58:56 kudusoft dhcpd: dhcpd startup succeeded
Jun 16 13:58:56 kudusoft dhcpd: failover peer home-net: I move from startup to recover
Jun 16 13:59:12 kudusoft dhcpd: failover peer home-net: peer moves from unknown-state to recover
Jun 16 13:59:12 kudusoft dhcpd: failover peer home-net: requesting full update from peer
Jun 16 13:59:12 kudusoft dhcpd: Sent update request all message to home-net
Jun 16 13:59:12 kudusoft dhcpd: failover peer home-net: peer moves from recover to recover
Jun 16 13:59:12 kudusoft dhcpd: failover peer home-net: requesting full update from peer
Jun 16 13:59:12 kudusoft dhcpd: Update request all from home-net: sending update
Jun 16 13:59:12 kudusoft dhcpd: failover peer home-net: peer update completed.
Jun 16 13:59:12 kudusoft dhcpd: failover peer home-net: I move from recover to recover-done
Jun 16 13:59:13 kudusoft dhcpd: Sent update done message to home-net
Jun 16 13:59:13 kudusoft dhcpd: failover peer home-net: peer moves from recover to recover-done
Jun 16 13:59:13 kudusoft dhcpd: failover peer home-net: I move from recover-done to normal
Jun 16 13:59:13 kudusoft dhcpd: failover peer home-net: peer moves from recover-done to normal
Jun 16 13:59:14 kudusoft dhcpd: pool 914eb10 192.168.1/24 total 26  free 25  backup 0  lts -12
Jun 16 13:59:14 kudusoft dhcpd: pool 914eb10 192.168.1/24  total 26  free 25  backup 0  lts 12

슬레이브에서:

Jun 16 13:59:12 shaka dhcpd: Sending on   Socket/fallback/fallback-net
Jun 16 13:59:12 shaka dhcpd: failover peer home-net: I move from recover to startup
Jun 16 13:59:12 shaka dhcpd: failover peer home-net: peer moves from unknown-state to recover
Jun 16 13:59:12 shaka dhcpd: dhcpd startup succeeded
Jun 16 13:59:12 shaka dhcpd: failover peer home-net: requesting full update from peer
Jun 16 13:59:12 shaka dhcpd: failover peer home-net: I move from startup to recover
Jun 16 13:59:12 shaka dhcpd: Sent update request all message to home-net
Jun 16 13:59:12 shaka dhcpd: Sent update done message to home-net
Jun 16 13:59:12 shaka dhcpd: Update request all from home-net: nothing pending
Jun 16 13:59:12 shaka dhcpd: failover peer home-net: peer moves from recover to recover-done
Jun 16 13:59:14 shaka dhcpd: failover peer home-net: peer update completed.
Jun 16 13:59:14 shaka dhcpd: failover peer home-net: I move from recover to recover-done
Jun 16 13:59:14 shaka dhcpd: failover peer home-net: peer moves from recover-done to normal
Jun 16 13:59:14 shaka dhcpd: failover peer home-net: I move from recover-done to normal
Jun 16 13:59:14 shaka dhcpd: pool 9d78ad8 192.168.1/24 total 26  free 25  backup 0  lts 12
Jun 16 13:59:14 shaka dhcpd: pool response: 12 leases
Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.