서버 구성 · 4 min read · Oct 09, 2025

완벽한 로드 밸런스 및 고가용성 웹 클러스터: 2대의 서버에서 Xen을 Ubuntu 8.04 하디 헤론으로 실행 - 페이지 3

8. DNS 서버 (web1, web2)

8.1 DNS 서버 설치

실행:

apt-get install bind9

보안상의 이유로 BIND를 chrooted로 실행하고 싶으므로 다음 단계를 수행해야 합니다:

/etc/init.d/bind9 stop

파일 /etc/default/bind9를 편집하여 데몬이 비특권 사용자 bind로 실행되고 /var/lib/named로 chroot되도록 합니다. 다음 줄을 수정합니다: OPTIONS=”-u bind”를 OPTIONS=”-u bind -t /var/lib/named”로 변경:

vi /etc/default/bind9

OPTIONS="-u bind -t /var/lib/named"
# Set RESOLVCONF=no to not run resolvconf
RESOLVCONF=yes

/var/lib 아래에 필요한 디렉토리를 생성합니다:

mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run

그런 다음 /etc에서 /var/lib/named/etc로 구성 디렉토리를 이동합니다:

mv /etc/bind /var/lib/named/etc

구성 디렉토리의 이전 위치에서 새 구성 디렉토리로 심볼릭 링크를 생성합니다(향후 bind가 업데이트될 때 문제를 피하기 위해):

ln -s /var/lib/named/etc/bind /etc/bind

null 및 random 장치를 만들고 디렉토리의 권한을 수정합니다:

mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind

중요한 메시지가 시스템 로그에 기록될 수 있도록 /etc/default/syslogd를 수정해야 합니다. 다음 줄을 수정합니다: SYSLOGD=””를 SYSLOGD=”-a /var/lib/named/dev/log”로 변경:

vi /etc/default/syslogd

#
# syslogd의 상위 구성 파일
#
# 가능한 인수에 대한 전체 문서는 manpage syslogd(8)에 있습니다.
#
# 원격 UDP 로깅을 사용하려면 SYSLOGD="-r"
#
SYSLOGD="-a /var/lib/named/dev/log"

로깅 데몬을 재시작합니다:

/etc/init.d/sysklogd restart

BIND를 시작하고 /var/log/syslog에서 오류를 확인합니다:

/etc/init.d/bind9 start

8.2 bind 구성

우리는 두 개의 도메인으로 bind를 구성할 것입니다. example.com은 네임서버가 되고, yoursite.com도 구성할 것입니다.

이제 BIND의 주요 구성 파일은 named.conf입니다. 그러나 named.conf.local은 이미 named.conf에 포함되어 있으며 사용자 정의 구성을 위해 존재하므로 named.conf.local을 편집하고 우리의 존을 추가할 것입니다. 여기서는 tm.local이라는 존과 192.168.1.0에 대한 역방향 존을 추가했습니다:

vi /etc/bind/named.conf.local

#EXAMPLE.COM
zone "example.com" {
        type master;
        file "/etc/bind/zones/example.com.db";
        };
#YOURSITE.COM
zone "yoursite.com" {
        type master;
        file "/etc/bind/zones/yoursite.com.db";
        };
# 역방향 DNS에 대한 존 정의입니다. 1.168.192를 역방향 표기법으로 귀하의 네트워크 주소로 교체하십시오 - 예: 내 네트워크 주소는 192.168.1.X입니다.
zone "1.168.192.in-addr.arpa." {
     type master;
     file "/etc/bind/zones/rev.1.168.192.in-addr.arpa";
};

참고: ISP가 서브넷 맵을 위임하는 경우(예: ip 192.168.1.100에서 192.168.1.112까지) 역방향 존에 대해 읽어보십시오(고객/사용자 존 파일 참조):

http://www.zytrax.com/books/dns/ch9/reverse.html

8.3 존 구성

mkdir /etc/bind/zones
vi /etc/bind/zones/example.com.db

그리고 다음과 같이 만듭니다:

$TTL        86400
@       IN      SOA     ns1.example.com. admin.example.com. (
                        2008060902       ; serial, todays date + todays serial #
                        28800              ; refresh, seconds
                        7200              ; retry, seconds
                        604800              ; expire, seconds
                        86400 )            ; minimum, seconds
;
                NS      ns1.example.com.              ; 네임 서버 1의 Inet 주소
                NS      ns2.example.com.              ; 네임 서버 2의 Inet 주소
;
  MX      10 example.com.
example.com.      A        192.168.1.106
www                   A        192.168.1.106
ns1                      A        192.168.1.106
ns2                      A        192.168.1.106
dom01                 A        192.168.1.100
dom02                 A        192.168.1.101
lb1                       A        192.168.1.102
lb2                       A        192.168.1.103
web1                   A        192.168.1.104
web2                   A        192.168.1.105

example.com.       TXT  "v=spf1 ip4:192.168.1.104 ip4:192.168.1.105 a ptr a:web1.example.com a:web2.example.com ~all"

이제 yoursite.com에 대한 존을 생성하겠습니다:

vi /etc/bind/zones/yoursite.com.db

다음과 같이 만듭니다:

$TTL        86400
@       IN      SOA     ns1.example.com. admin.yoursite.com. (
                        2008060902       ; serial, todays date + todays serial #
                        28800              ; refresh, seconds
                        7200              ; retry, seconds
                        604800              ; expire, seconds
                        86400 )            ; minimum, seconds
;
                NS      ns1.example.com.              ; 네임 서버 1의 Inet 주소
                NS      ns2.example.com.              ; 네임 서버 2의 Inet 주소
;
  MX      10 yoursite.com.
yoursite.com.      A        192.168.1.107
www                   A        192.168.1.107

yoursite.com.       TXT  "v=spf1 ip4:192.168.1.104 ip4:192.168.1.105 a ptr a:web1.example.com a:web2.example.com ~all"

이제 역방향 존으로 진행하겠습니다.

vi /etc/bind/zones/rev.1.168.192.in-addr.arpa

$TTL        86400
@               IN      SOA     ns1.example.com. hostmaster.example.com. (
                                2008060901       ; serial, todays date + todays serial #
                                28800   ; Refresh
                                7200    ; Retry
                                604800  ; Expire
                                86400)  ; Minimum TTL
                        NS      ns1.example.com.
                        NS      ns2.example.com.
100       PTR     dom01.example.com.
101       PTR     dom02.example.com.
102       PTR     lb1.example.com.
103       PTR     lb2.example.com.
104       PTR     web1.example.com.
105       PTR     web2.example.com.
106       PTR     example.com.
107       PTR     yoursite.com.

이제 서버가 ISP 서버에 요청을 전달하여 외부 IP를 확인할 수 있도록 구성합니다.

vi /etc/bind/named.conf.options

forwarder 섹션의 주석을 제거하여 다음과 같이 만듭니다:

[...]
forwarders {
      # 아래 주소를 귀하의 ISP DNS 서버 주소로 교체하십시오
      123.123.123.123;
};
[...]

8.4 서버가 DNS로 자신을 사용하도록 구성

vi /etc/resolv.conf

search example.com
nameserver localhost

BIND를 재시작해야 합니다:

/etc/init.d/bind9 restart

8.5 DNS 서버 테스트

먼저 dnsutils 패키지에 포함된 dig를 설치합니다:

apt-get install dnsutils

이제 우리의 DNS 서버가 올바른 답변을 제공하는지 확인해 보겠습니다:

web1에서

dig yoursite.com @192.168.1.105

web2에서

dig yoursite.com @192.168.1.104

두 경우 모두 다음과 같은 출력이 표시되어야 합니다:

;  DiG 9.4.2-P1  yoursite.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4547
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;yoursite.com.                 IN      A
;; ANSWER SECTION:
 yorsite.com.          86400   IN      A       192.168.1.107
;; AUTHORITY SECTION:
 yorsite.com.          15090   IN      NS      ns2.example.com.
 yorsite.com.          15090   IN      NS      ns1.example.com.
;; ADDITIONAL SECTION:
 ns2.example.com.       162439  IN      A       192.168.1.106
 ns1.example.com.       162439  IN      A       192.168.1.106
;; Query time: 27 msec
;; WHEN: Sun Sep 21 19:07:17 2008
;; MSG SIZE  rcvd: 124

이제 역방향 조회를 테스트하겠습니다:

web1에서

dig -x 192.168.1.107 @192.168.1.105

web2에서

dig -x 192.168.1.107 @192.168.1.104

출력은 다음과 유사해야 합니다:

;  DiG 9.4.2-P1  -x 192.168.1.107
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22614
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;107.1.168.192.in-addr.arpa.     IN      PTR
;; ANSWER SECTION:
;107.1.168.192.in-addr.arpa. 86400 IN PTR  yoursite.com.
;; AUTHORITY SECTION:
;1.168.192.in-addr.arpa. 86400 IN  NS      ns2.example.com.
;1.168.192.in-addr.arpa. 86400 IN  NS      ns1.example.com.
;; ADDITIONAL SECTION:
ns1.example.com.       162147  IN      A       192.168.1.106
ns2.example.com.       162147  IN      A       192.168.1.106
;; Query time: 88 msec
;; WHEN: Sun Sep 21 19:12:09 2008
;; MSG SIZE  rcvd: 172

dig 사용법에 대한 더 많은 정보:

http://www.madboa.com/geek/dig/

9. Proftpd (web1, web2)

9.1 Proftpd 설치

Proftpd를 설치하려면 다음을 실행합니다:

apt-get install proftpd ucf

질문이 표시됩니다:

Run proftpd: <– standalone

9.2 Proftpd 구성

vi /etc/proftpd/proftpd.conf

보안상의 이유로 /etc/proftpd/proftpd.conf에 다음 줄을 추가합니다:

DefaultRoot ~
IdentLookups off
ServerIdent on "FTP Server ready."

그런 다음 Proftpd를 재시작합니다:

/etc/init.d/proftpd restart

Share: X/Twitter LinkedIn

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

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