태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

①lilo 부트로더를 사용한다면
아마도 부트로더 그림이 뜰겁니다.. 뭔가를 입력하려면
Ctrl + x 를 눌러서 프롬프트가 나옵니다.
linux 1
또는
linux single
쳐서 들어가면 됩니다.
(linux 부팅 할 때 redhat 이렇게 다른 이름으로 들어가면 그걸 쳐서 옵션 붙이면 됩니다. redhat 1 또는 redhat single)

②grub 를 사용한다면
부팅시 grub화면이 뜨면 부팅하고자 하는 곳에 커서를 놓고 e를 입력(에디트 모드죠..)

kernel로 시작하는 부분에 커서를 놓고 또 e를 선택합니다.

맨 뒤에 single이라고 입력합니다.

이때 그 앞의 글자와는 떨어 뜨려서 작성합니다.

예를들어 kernel ...... =LABEL=/ single 이런식으로 작성합니다.

다 작성된 후 엔터를 누르고 그 상태에서 나온후

b를 눌러 부팅한다.

부팅한 후 passwd 을 쉘에 입력하여

비밀번호를 새로이 입력한다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 때찌1

rdate -s time.kriss.re.kr

-123번 포트가 사용되어야 함

 

위의 사용이 잘 안될때

ntpdate time.kriss.re.kr

이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 때찌1
Why can't you list the second DNS server in /etc/resolv.conf?  Also you
can specify multiple domains to search for base names in.  EG:

/etc/resolv.conf:
search hq.pogolinux.com ks.pogolinux.com
nameserver 192.168.1.2
nameserver 192.168.2.2

On this system, one nic is .1 subnet, while the other nic is .2 subnet. 
One subnet is hq, the other is ks.  Given that I listed both search
domains, I can do things like "ping fred" and "ping barney"  given that
fred is on HQ and barney is on KS.  Name lookups will work and things
will be happy.

As someone else pointed out, you should be install two default gateway routes.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 때찌1

#################################################
# #
# DNS Primary Server Configurations Files #
# #
#################################################
#
# Primary server's default Domain
#
# /etc/defaultdomain file
#
aaa.com


#
# Primary Server's hosts file
#
# /etc/hosts file
#
127.0.0.1 localhost
192.9.100.1 dns loghost nameserver # DNS Primary System
192.9.100.3 second # DNS Secondary System
192.9.200.2 client # DNS local client
#
192.9.150.2 DS1 # DNS Primary First Router
192.9.200.2 DS2 # DNS Primary Second Router
#
#
192.9.150.1 Sale1 # DNS remote Client
192.9.200.1 Sale2 # DNS remote Client


;
; Primary Server's named.boot file
;
; /etc/named.boot file
;
; bbb.com, ccc.com is a additional domain
; which will be managed by this Primary Server
;
directory /var/domain
;
cache . root.cache
primary aaa.com aaa.hosts
primary bbb.com bbb.hosts
primary ccc.com ccc.hosts
;
primary 0.0.127.IN-ADDR.ARPA local.rev
primary localhost local.hosts
;
primary 100.9.192.IN-ADDR.ARPA aaa.rev
primary 150.9.192.IN-ADDR.ARPA bbb.rev
primary 200.9.192.IN-ADDR.ARPA ccc.rev


#
# Primary Server's resolv.conf file
#
# /etc/resolv.conf ile
#
# search directive is used to search multi-domain
#
search aaa.com. bbb.com. ccc.com.
nameserver 192.9.100.1


;
; Forward mapping of Primary Server
;
; /var/domain/aaa.hosts file
;
@ IN SOA dns.aaa.com. root.dns.aaa.com. (
970117
3600
1800
3600000
7200 )
;
IN NS dns.aaa.com.
IN A 192.9.100.1
;
$ORIGIN aaa.com.
dns IN A 192.9.100.1
client IN A 192.9.100.2
second IN A 192.9.100.3
localhost IN A 127.0.0.1


;
; Reverse mapping of Primary Server
;
; /var/domain/aaa.rev file
;
@ IN SOA dns.aaa.com. root.dns.aaa.com. (
970117
3600
1800
3600000
7200)
;
IN NS dns.aaa.com.
;
$ORIGIN 100.9.192.IN-ADDR.ARPA.
1 IN PTR dns.aaa.com.
2 IN PTR client.aaa.com.
3 IN PTR second.aaa.com.


;
; Forward mapping of multidomain which managed by Primary Server
;
; /var/domain/bbb.hosts file
;
@ IN SOA dns.aaa.com. root.dns.aaa.com. (
970117
3600
1800
3600000
7200 )
;
IN NS dns.aaa.com.
IN A 192.9.100.1
;
$ORIGIN bbb.com.
sale1 IN A 192.9.150.1


;
; Reverse mapping of multidomain which managed by Primary Server
;
; /var/doamin/bbb.rev file
;
@ IN SOA dns.aaa.com. root.dns.aaa.com. (
970117
3600
1800
3600000
7200)
;
IN NS dns.aaa.com.
;
$ORIGIN 150.9.192.IN-ADDR.ARPA.
1 IN PTR sale1.bbb.com.


;
; Forward mapping of multidomain which managed by Primary Server
;
; /var/domain/ccc.hosts file
;
@ IN SOA dns.aaa.com. root.dns.aaa.com. (
970117
3600
1800
3600000
7200 )
;
IN NS dns.aaa.com.
IN A 192.9.100.1
;
$ORIGIN ccc.com.
sale2 IN A 192.9.200.1


;
; Reverse mapping of multidomain which managed by Primary Server
;
; /var/doamin/ccc.rev file
;
@ IN SOA dns.aaa.com. root.dns.aaa.com. (
970117
3600
1800
3600000
7200)
;
IN NS dns.aaa.com.
;
$ORIGIN 200.9.192.IN-ADDR.ARPA.
1 IN PTR sale2.ccc.com.


;
; localhost zone database for Primary Server
:
; /var/domain/local.hosts file
;
@ IN SOA dns.aaa.com. root.dns.aaa.com. (
970117
3600
1800
3600000
7200 )
;
IN NS dns.aaa.com.
localhost IN A 127.0.0.1


;
; reverse localhost for Primary Server
;
; /var/domain/local.rev file
;
@ IN SOA dns.aaa.com. root.dns.aaa.com. (
970117
3600
1800
3600000
7200 )
;
IN NS dns.aaa.com.
1 IN PTR localhost.

 

 


#################################################
# #
# DNS Secondary Server Configurations Files #
# #
#################################################
#
# Secondary server's default Domain
#
# /etc/defaultdomain file
#
aaa.com


#
#
# Secondary Server's hosts file
#
# /etc/hosts file
#
127.0.0.1 localhost
192.9.100.3 Second loghost


;
; Secondary Server's named.boot file
;
; /etc/named.boot file
;
; All file which mapped secondary does't exist !!!
; They are transfered from Primary server.
; Only local information is exist.
;
directory /var/domain
;
cache . root.cache
secondary aaa.com 192.9.100.1 aaa.hosts
secondary bbb.com 192.9.100.1 bbb.hosts
secondary ccc.com 192.9.100.1 ccc.hosts
primary 0.0.127.IN-ADDR.ARPA local.rev
primary localhost local.hosts
secondary 100.9.192.IN-ADDR.ARPA 192.9.100.1 aaa.rev
secondary 150.9.192.IN-ADDR.ARPA 192.9.100.1 bbb.rev
secondary 200.9.192.IN-ADDR.ARPA 192.9.100.1 ccc.rev


#
# Secondary Server's resolv.conf file
#
# /etc/named.boot file
#
# search directive is used to search multi-domain
#
search aaa.com bbb.com ccc.com
nameserver 192.9.100.3
nameserver 192.9.100.1


;
; localhost zone database for Secondary Server
:
; /var/domain/local.hosts file
;
@ IN SOA second.aaa.com. root.second.aaa.com. (
970117
3600
1800
3600000
7200 )
;
IN NS second.aaa.com.
localhost IN A 127.0.0.1


;
; reverse localhost for Secondary Server
;
; /var/domain/local.rev file
;
@ IN SOA second.aaa.com. root.second.aaa.com. (
970117
3600
1800
3600000
7200 )
;
IN NS second.aaa.com.
1 IN PTR localhost.

 

 

 

#################################################
# #
# DNS First Client Configurations Files #
# #
#################################################
#
# Dns client's default Domain
#
# /etc/defaultdomain file
#
bbb.com


#
# This adress used to indicate defaultrouter
# which will route our ip address to other network .
#
192.9.150.2


#
# Dns Client's hosts file
#
# /etc/hosts file
#
127.0.0.1 localhost
192.9.100.1 DNS
192.9.150.2 DS1
192.9.200.2 DS2
192.9.150.1 Sale1 loghost
192.9.200.1 Sale2


#
# Dns Client's resolv.conf file
#
# /etc/resolv.conf file
#
# search directive is used to search multi-domain
#
search aaa.com. ccc.com. bbb.com.
nameserver 192.9.100.1

 

 


#################################################
# #
# DNS Second Client Configurations Files #
# #
#################################################
#
# Dns client's default Domain
#
# /etc/defaultdomain file
#
ccc.com


#
# This adress used to indicate defaultrouter
# which will route our ip address to other network .
#
192.9.200.2


#
# Dns Client's hosts file
#
# /etc/hosts file
#
127.0.0.1 localhost
192.9.200.1 Sale2 loghost
192.9.200.2 DS2


#
# Dns Client's resolv.conf file
#
# /etc/resolv.conf file
#
# search directive is used to search multi-domain
#
search aaa.com. bbb.com. ccc.com.
nameserver 192.9.100.1

 

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 때찌1

DNS 서버를 만지던 도중 1번의 잘못된 설정으로 Client 상에 캐쉬가 남아 Client 가 정상적인 페이지 이동을 하지 못하는 경우에는 command 창에서 다음 명령어를 수행해 주기를 바랍니다.

 

           ipconfig /flushdns

 

 

 

 

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 때찌1

2.1. Name Server 유형
2.2. BIND(Berkeley Internet Name Daemon) 설치
2.3. 퍼블릭 도메인(Public Domain) 신청
2.4. 인버스 도메인(Inverse Domain) 신청

2.5. Name Server 설정

2.5.1. BIND-4 부트 파일 named.boot
2.5.2. BIND-8 부트 파일 named.conf
2.5.3. 리소스 레코드(Resource Record)
2.5.4. Zone 데이터베이스 예제

2.6. Name Server 구동
2.7. Name Server 동작 확인

 

2.1. Name Server 유형


네임서버는 Primary, Secondary, Cache only server로 구분된다.

Primary server는 해당 도메인을 관리하는 주 네임서버이고, Secondary server는 특정 도메인에 대한 back-up copy를 유지하는 서버이다. Secondary는 Primary가 비정상 운행될 때와 부하를 분산시키기 위해 운용하며, 다수가 존재할 수 있다.

보통 도메인을 관리하기 위해서는 Primary, Secondary 서버가 필요하게 되며, Secondary는 원칙적으론 외부 네트웍에 위치시켜 정전 등의 사태로 Primary가 다운되었을 때를 대비한다. 따라서, 도메인을 운영하기 위해서는 최소 2대(Primary * 1, Secondary * n) 이상의 네임서버가 요구된다.(기술적으로 Resolver의 입장에서는 Primary와 Secondary가 구분되지 않기에 Primary 만으로도 운영은 가능하나 권고되진 않는다)

Cache only server는 도메인에 대한 데이터를 관리하지는 않고, resolving만을 처리해 준다. 만약, 본사와 지사가 있고 이 회사의 Primary, Secondary Name server가 모두 본사에 위치한다고 할 때, 지사에 위치한 네트워크 유저들은 Local DNS server가 없게 된다. 이럴 경우 도메인 resolving이 요구될 때마다 다른 네트워크(본사)로 접속을 시도하게 되므로 약간의 딜레이가 생기게 되며, 본사 네트워크가 단절 되었을시 지사도 실질적으로 인터넷 사용이 불가능한 단점이 있다. 이럴 때 지사에 Cache only server를 운용하면 효과적으로 문제를 해결할 수 있다.

2.2. BIND(Berkeley Internet Name Daemon) 설치


Name server를 운용하기 위해서는 서버측 데몬 프로그램이 필요하게 되는데, 이중 BIND는 db 파일의 구성이 손쉽고 표준을 충실히 따른 검증된 도구로서 인터넷에서 가장 널리 사용된다. 대부분의 Unix 시스템에서는 BIND가 이미 설치되어 있다. /usr/sbin 디렉토리에 in.named 혹은 named가 존재함을 확인하고, BIND가 이미 설치되어 있을 경우에는 다음과 같이 설치된 BIND의 버전을 확인한다. (BIND가 동작중이여야 함)

$ dig @ns.nobreak.com txt chaos version.bind. | grep VERSION
VERSION.BIND. 0S CHAOS TXT "8.2"

배포처인 ISC(Internet Software Consortium) 에서 BIND의 최신버젼을 확인하고, 버전차이가 많거나 현재 버전에 심각한 문제가 보고되었다면, 업그레이드를 고려하고, BIND-4가 설치되어 있다면, BIND-8로 마이그레이션하여 새로운 흐름에 조인하는것도 나쁘지 않겠다.

BIND의 설치는 매우 간단하다. ISC FTP사이트에서 최신 버전의 소스를 내려받아, 압축을 푼후 다음과 같은 명령을 입력하는 것이 설치에 필요한 전부이다.

# make clean depend all install

그리고, 시스템 rc 스크립트를 적절히 수정하여 시스템 부팅시 BIND가 자동으로 구동될 수 있도록 한다. (FreeBSD: /etc/rc.conf, /etc/rc.network, Solaris: /etc/init.d/inetsvc, Linux: /etc/rc.d/init.d/named)

Windows NT, OS/2, MacOS 등에서 BIND를 운용하고자 한다면, 다음 페이지를 참고하자.

http://www.dns.net/dnsrd/docs/exotic.html

2.3. 퍼블릭 도메인(Public Domain) 신청

Primary, Secondary 네임서버가 준비되었고 신청할 도메인이 결정되었다면, 상위 도메인 관리 기관(kr 도메인의 경우 KRNIC, com/net/org 등의 도메인은 Network Solutions을 대표로 ICANN의 심사를 획득한 등록 대행 업체들)에 도메인을 신청하여 발급(네임스페이스상에 링크) 받게 된다. 도메인 신청양식은 기관마다 조금씩 상이하지만 일반적으로 사용기관, 책임자, 관리자, 결제자 , 네임서버 정보가 요구된다. 이중 신청 도메인을 네임스페이스에 링크하기 위한 네임서버 정보는 다음과 같이 작성한다.

 2. Complete Domain Name.......: NOBREAK.COM 7a. Primary Server Hostname....: NS.NOBREAK.COM 7b. Primary Server Netaddress..: 210.105.79.2 8a. Secondary Server Hostname..: NS2.NOBREAK.COM 8b. Secondary Server Netaddress: 210.105.79.3 

"NOBREAK.COM"이 등록되었다는 메시지를 받았다면, 다음과 같이 해당 도메인의 등록 여부를 확인한다.

 $ nslookup -type=ns nobreak.com Server: ns.nobreak.com Address: 0.0.0.0 nobreak.com nameserver = ns.nobreak.com nobreak.com nameserver = ns2.nobreak.com ns.nobreak.com internet address = 210.105.79.2 ns2.nobreak.com internet address = 210.105.79.3 

해당 도메인에 대한 네임서버가 신청한 것과 같이 표시된다면, 등록이 바르게 진행된 것이다. 아직 등록이 안되었다면, 다음과 같은 메시지를 볼 수 있다.

 *** local.name.server can't find nobreak.com.: Non-existent host/domain 

"도메인 NOBREAK.COM을 신청하는데 어떻게 그 하부에 있는 NS.NOBREAK.COM, NS2.NOBREAK.COM을 사용할수 있습니까?" "NS.NOBREAK.COM은 NOBREAK.COM 도메인 신청이 완료된 후 네임서버에서 설정 해주어야 사용할 수 있지 않습니까?"라는 의문이 들 수 있는데, 어떤 도메인을 하위 도메인으로 위임하기 위한 네임서버 정보는 상위 도메인에서 관리되기 때문에 가능하다. (참고: "글루 레코드")

 

2.4. 인버스 도메인(Inverse Domain) 신청

인버스 도메인은 IP에 대해 해당 도메인을 역으로 찾을 수 있도록 하는 서비스이다. 보통 ISP(Internet Service Provider)에서 IP를 할당받을 때 같이 신청한다. 다음과 같이 인버스 도메인에 대한 네임서버가 in-addr.arpa 네임스페이스에 등록되어 있는지 확인한다.

$ nslookup -type=ns 79.105.210.in-addr.arpa (C Class 210.105.79.x를 할당 받았을 경우)
Server: ns.nobreak.com
Address: 0.0.0.0

79.105.210.in-addr.arpa nameserver = ns.nobreak.com
79.105.210.in-addr.arpa nameserver = ns2.nobreak.com
ns.nobreak.com internet address = 210.105.79.2
ns2.nobreak.com internet address = 210.105.79.3

만약 다음과 같은 메시지가 나온다면, 인버스 도메인 등록이 안되어 있는 것이므로, 해당 ISP에 신청하여야 한다.

*** ns.nobreak.com can't find 79.105.210.in-addr.arpa.: Non-existent host/domain

2.5. Name Server 설정

다음은 nobreak.com 도메인에 대한 가상 네트워크 구성도 이다.

Figure 2-1. 네트워크 구성도

네트워크 구성도

네트워크엔 서버가 3대 연결되어 있다. DNS를 구축하기 전에, 그림과 같이 미리 각 서버에 호스트명과 IP를 부여하자. 보통 네임서버는 ns(primary), ns2(secondary)를 호스트명으로 사용하고, IP 1(할프로 받았을 경우엔 129)을 라우터 혹은 스위치, 2를 NS, 3을 NS2에 할당한다. 도메인 NOBREAK.COM은 앞서 등록기관에 신청하였으니, NS.NOBREAK.COM, NS2.NOBREAK.COM에 네임서버 설정을 하면 된다.


 

2.5.1. BIND-4 부트 파일 named.boot

BIND-4 부트 파일 named.boot는 BIND 시동시 참조되며, 네임 데몬이 필요로 하는 환경정보와 운영할 도메인에 대한 Primary/Secondary 설정이 기술된다. 일반적으로 시스템의 /etc/named.boot에 위치하며, 대부분의 유닉스 스타트업 스크립트는 부트 파일이 존재하면 시동시 BIND를 자동으로 구동한다. 부트 파일상의 모든 엔트리는 반드시 1열 에서 시작하여야 하며 ';'은 주석을 의미한다.


    directory  /var/named

directory 엔트리는 관련 파일들이 위치한 경로를 나타낸다. 이 경로는 부트 파일에 나타나는 파일들의 베이스 경로로 작용한다. 따라서 파일들은 본 경로를 기준으로 상대경로 표기해야 하며 여기서는 /var/named 디렉토리를 베이스 디렉토리로 한다. (대부분의 시스템 기본 베이스 경로는 /var/named, /etc/named 혹은 /etc/namedb이다)


    cache  . named.root

cache 레코드는 말 그대로의 캐쉬가 아니라 루트 네임서버 정보가 들어있는 데이터베이스 파일을 나타낸다. BIND는 타 도메인 정보를 루트 네임서버에서부터 추적하는데, 이 루트 네임서버에 대한 정보를 본 파일에서 참조하게 된다. /var/named/named.root와 같이 베이스 디렉토리에 위치시키면 된다.

캐쉬 파일은 Internic(현재는 존재하지 않고 일부 서비스만이 남아있다)에서 배포하며 ftp://ftp.rs.internic.net/domain/named.root 에서 구할 수 있다. 루트 네임서버 목록이 자주 수정되진 않지만 조금씩 바뀌기 때문에, 한달 걸러 한번씩은 업데이트 해줄 필요가 있다. 스크립트를 Cron으로 정기적으로 수행해 캐쉬 파일을 업데이트하는 것도 좋은 방법이다.


    primary  nobreak.com  zone-nobreak.com

해당 도메인에 대해 Primary 네임서버로 동작함을 말한다. 예는 nobreak.com 도메인에 대해 본 서버가 Primary 이며, 데이터베이스 파일은 /var/named/zone-nobreak.com 임을 나타낸다.


    secondary  nobreak.com  210.105.79.2  sec-nobreak.com

도메인에 대해 Secondary 네임서버로 동작한다. 세 번째 필드는 Primary 네임서버의 IP 주소이고, 네 번째 필드는 Primary에서 전송 받은 zone 파일이 저장될 파일명이다. 210.105.79.2로부터 nobreak.com 도메인의 데이터베이스를 전송(Zone Transfer)받아 /var/named/sec-nobreak.com로 관리함을 뜻한다.

Figure 2-1의 네트워크에 대한 부트 파일은 다음과 같이 작성될 수 있다.

    * NS.NOBREAK.COM(Primary NS)의 /etc/named.boot 파일
    directory                           /var/named
    cache      .                        named.root
    primary    0.0.127.in-addr.arpa     zone-0.0.127.in-addr.arpa    ; loopback
    primary    79.105.210.in-addr.arpa  zone-79.105.210.in-addr.arpa ; Reverse ZONE
    primary    nobreak.com              zone-nobreak.com             ; Forward ZONE

0.0.127.in-addr.arpa는 loopback 주소 127.0.0.1를 위한 것이다. loopback 주소가 사용되지 않는 시스템은 없기 때문에, 'primary 0.0.127.in-addr.arpa ...'와 같은 라인은 네임서버마다 갖고 있다. 그 다음 두 라인이 할당받은 C Class IP 블락 210.105.79와 도메인 nobreak.com 을 위한 설정이다.

    * NS2.NOBREAK.COM(Secondary NS)의 /etc/named.boot 파일
    directory                           /var/named
    cache      .                        named.root
    primary    0.0.127.in-addr.arpa     zone-0.0.127.in-addr.arpa
    secondary  79.105.210.in-addr.arpa  210.105.79.2  sec-79.105.210.in-addr.arpa
    secondary  nobreak.com              210.105.79.2  sec-nobreak.com

Secondary 네임서버 설정이다. loopback은 Primary로 놓아둔다. Secondary의 설정은 이것이 전부이다. (/var/named/zone-0.0.127.in-addr.arpa는 있어야 함)

Secondary는 해당 도메인의 Primary에 접속하여 데이터 베이스를 전송받아, sec-79.105.210.in-addr.arpa, sec-nobreak.com으로 저장, 관리한다.

2.5.2. BIND-8 부트 파일 named.conf

BIND-4와 BIND-8의 관련 파일 작성법중 유일하게 차이가 나는 부분이 바로 이 부트 파일이다. BIND-8 부트 파일의 기본적인 구성은 BIND-4와 비슷하지만, 많은 부분 추가 확장되었기 때문에, 이를 수용하고 앞으로의 추가사항을 손쉽게 적용할 수 있도록 파일 포맷이 변경되었다. 그리고 구버젼 부트 파일과의 혼동을 막기위해 named.conf로 리네임 되었다. 어떻게 보면 C 언어의 문법과 매우 흡사한 것을 알 수 있다. 설정을 좀더 세밀하게 할 수 있도록 작성법이 바뀌었을 뿐, BIND-4의 부트 파일과 크게 다를 것은 없다. 다음은 앞서 작성한 BIND-4 기반 부트 파일을 BIND-8에 맞게 변환한 예이다. 일반적으로 BIND-8 기반의 부트 파일은 다음에 나열된 레코드정도만이 활용되지만, 재미난 부분이 많으므로 좀더 깊숙히 알고 싶다면 http://www.isc.org/products/BIND/docs/ 를 참고하기 바란다.

다음은 Primary 네임서버를 위한 부트 파일이다.

    * NS.NOBREAK.COM(Primary NS)의 /etc/named.conf 파일
    // 이것은 주석이다. BIND-8에서 ';'은 주석이 아니라, 라인의 끝을 의미한다.
    options {
            directory "/var/named";             // Zone 파일의 베이스 디렉토리
            dump-file "/var/tmp/named_dump.db"; // Dump 파일이 생성되는 경로
            statistics-file "/var/tmp/named.stats"; // 통계 파일이 생성되는 경로
            pid-file  "/var/run/named.pid";     // 프로세스 ID가 담긴 파일 생성 경로
    };
    logging {   // 불필요한 정보를 로그파일에 남기지 않는다.
            category lame-servers { null; };
            category cname { null; };
            category response-checks { null; };
            category notify { null; };
    };
    
    zone "." IN {                       // 캐쉬 파일
            type hint;
            file "named.root";
    };
    zone "0.0.127.in-addr.arpa" IN {    // localhost를 위한 Primary 도메인 설정
            type master;
            file "zone-0.0.127.in-addr.arpa";
    };
    zone "79.105.210.in-addr.arpa" IN { // 할당 IP 블락에 대한 Reverse Zone
            type master;
            file "zone-79.105.210.in-addr.arpa";
    };
    zone "nobreak.com" IN {             // 도메인 nobreak.com 에 대한 Forward Zone
            type master;
            file "zone-nobreak.com";
    };

Secondary 네임서버를 위한 부트 파일은 다음과 같이 작성된다.

    * NS2.NOBREAK.COM(Secondary NS)의 /etc/named.conf 파일
    options {
            directory "/var/named";
    };
    logging {
            category lame-servers { null; };
            category cname { null; };
    };
    
    zone "." IN {
            type hint;
            file "named.root";
    };
    zone "0.0.127.in-addr.arpa" IN {    // localhost를 위한 Primary 도메인 설정
            type master;
            file "zone-0.0.127.in-addr.arpa";
    };
    zone "79.105.210.in-addr.arpa" IN { // Reverse Zone에대한 Secondary 설정
            type slave;
            file "sec-79.105.210.in-addr.arpa";
            masters { 210.105.79.2; };  // Primary NS의 IP 주소
    };
    zone "nobreak.com" IN {             // nobreak.com 의 Secondary 설정
            type slave;
            file "sec-nobreak.com";
            masters { 210.105.79.2; };
    };

2.5.3. 리소스 레코드(Resource Record)

Zone 파일은 Forward, Reverse 두 가지로 구분된다. Forward Zone은 도메인에 대한 IP 정보를 갖고 있는 데이터베이스이고, Reverse Zone은 IP에 대한 도메인정보를 갖는 데이터베이스이다. 앞서 named.boot 파일에 네임서버가 loopback, 79.105.210.in-addr.arpa, nobreak.com 도메인에 대해 Primary로 동작하도록 설정하였다. 이중 zone-0.0.127.in-addr.arpazone-79.105.210.in-addr.arpa가 Reverse Zone 파일이고, zone-nobreak.com이 Forward Zone 파일이다. Zone 파일은 BIND-4와 BIND-8에서 작성법이 동일하다.

먼저 Figure 2-1의 네트워크 구성에 따라 Forward Zone 파일 zone-nobreak.com을 작성하여 보자.

2.5.3.1. SOA 레코드 (Start Of Authority)

Zone 파일은 항상 SOA 레코드로 시작한다. SOA 레코드는 해당 도메인, nobreak.com에 대해 네임서버가 인증(authoritative)된 자료를 갖고 있음을 의미하며, 자료가 최적의 상태로 유지, 관리될 수 있도록 한다.


    nobreak.com. IN  SOA  ns.nobreak.com. hostmaster.nobreak.com. (
                          1998122800  ;Serial
                          21600       ;Refresh ( 6 hours)
                          1800        ;Retry   (30 minutes)
                          1209600     ;Expire  (14 days)
                          86400)      ;Minimum ( 1 day)

1열에는 해당 Zone 파일에 대한 도메인명이 들어간다. 도메인명 끝의 도트를 잊지 말자. 다음과 같이 도메인명 대신 '@' 표시를 사용하여도 된다.


    @            IN  SOA  ns.nobreak.com. hostmaster.nobreak.com. (

IN(Internet)은 클래스명이다. HS, HESIOD, CHAOS와 같은 클래스도 존재하지만, 일반적으로 사용되지 않으므로 항상 IN이 사용된다고 생각하자.

SOA 다음엔 Primary 네임서버와 관리자 Email 주소가 들어간다. hostmaster.nobreak.com. 이 Email 주소인데, 일반적 Email 표기법에서 '@'를 도트로 바꾸어 쓰면 된다. 본 Email은 해당 도메인의 콘택 포인트(Responsible Person)로서 도메인에 문제가 발생할 경우 이를 리포팅하는 용도로 사용된다. Namespace를 쫓으며 도메인 오류를 점검하는 lamers 와 같은 도구들은 문제가 검출되었을 때 본 Email로 통지하여 준다.

다음 괄호로 둘러싸인 부분엔 Serial, Refresh, Retry, Expire, Minimum 5개의 시간(초) 필드가 놓인다. Minimum을 제외한 4개 필드는 Secondary 네임서버를 제어하기 위한 값이다. 기본 단위는 '초'이고, 단위기호 M(Minute), H(Hour), D(Day), W(Week)를 붙여 30M, 8H, 2D, 1W와 같이 사용할 수도 있다.

  • Serial: Serial은 Secondary가 Zone 파일의 수정여부를 알 수 있도록 하기 위함이다. Secondary는 백업본의 Serial이 Primary의 Serial보다 작을 경우 Zone 파일을 재전송 받는다. 따라서 Zone 파일이 수정된 후 Serial이 변경되지 않는다면, Secondary는 백업카피를 업데이트하지 않음을 유의하자. Secondary가 없다면 Serial은 의미가 없지만 그렇다 할지라도 Zone 파일이 수정되었을 때 Serial을 증가하는 것은 좋은 습관이다.

  • Serial의 표기는 증가하는 임의 숫자보단 일반적으로 최종 수정일을 YYYYMMDDNN의 형식으로 표기한다. YYYYMMDDNN 연도 표기법은 4294년까지 표기 가능하다.

  • Refresh: Primary측의 Zone 데이터베이스 수정여부를 Secondary가 검사하는 주기이다. 네트워크의 변경이 잦아 Zone파일이 자주 수정된다면, 3H(10800) 정도로 설정한다. Zone이 안정되는 시점에서는 일반적으로 6H(21600) - 12H로 설정한다.

  • Retry: Secondary측에서, Primary와 연결이 안될 경우, 재 시도 시간 주기이다. Refresh 기간 보다 적을때 의미가 있으며, 대부분의 경우 30M(1800) - 1H로 설정한다.

  • Expire: Secondary가 Expire로 지정된 시간동안 Primary에 연결하지 못할 경우, 오래된 백업카피의 자료가 더 이상 유효하지 않다고 보고, 해당 도메인에 대한 답변을 하지 않는다. 이 값을 너무 낮게 책정하는 것은 좋지 않다. 보통 1W - 2W(1209600)로 설정한다.

  • Minimum: 타 네임서버가 본 Zone에 기술된 자료를 갖고 갔을 경우, 그 자료에 대한 유효기간(캐쉬에 살아있는 시간)을 설정한다. TTL(Time To Live)값이 명시되지 않은 레코드는 본 값을 기본으로 갖게 된다. 특정 레코드가 변경되었을 때, 이것이 인터넷에 전파되어 업데이트되는 주기는 전적으로 이 Minimum 값에 의존한다. 일반적으로 SOA에서는 1D(86400)를 설정하여 전체 레코드에 적용하고, 잦은 변경이 예상되는 레코드만 명시적으로 1H - 3H 정도로 낮추는 방법을 사용한다. 0은 캐싱을 하지 말라는 의미이다.

2.5.3.2. NS(Name Server) 레코드

NS 레코드로 해당 도메인에 대한 네임서버를 다음과 같이 나타낸다.


    nobreak.com.   IN  NS      ns.nobreak.com.
                   IN  NS      ns2.nobreak.com.

또 다른 NS의 활용으로는, 거대 도메인에서 서브 도메인을 다른 네임서버로 위임할 때이다. Namespace상의 가지연결은 이 NS 레코드로 이루어 지는데, 거대 도메인일 경우 해당하는 부분이므로, 여기서는 해당 도메인에 대한 위임 정보만을 나타낸다고 알아두자. 도메인 위임에서 자세히 다룬다.

2.5.3.3. A(Address) & CNAME(Canonical Name) 레코드

A 레코드는 도메인에 IP를 부여한다. 다음 설정을 보자. mail과 power에 A 레코드로 IP를 매핑 하였다. (mail과 mail.nobreak.com. 은 동일하게 해석된다.)


    ; Host addresses
    mail.nobreak.com.   IN  A      210.105.79.2
    power               IN  A      210.105.79.103
    ; Aliases
    www                 IN  CNAME  power.nobreak.com.
    ftp                 IN  CNAME  www

CNAME 레코드는 도메인에 대한 또 다른 이름이 가능하도록 한다. 예에서는 power.nobreak.com, www.nobreak.com, ftp.nobreak.com은 모두 같은 IP 210.105.79.103을 갖게 된다. ftp와 같이 CNAME이 CNAME을 포인팅 하는 경우는, 여러 DNS 관련 자료에서 다르게 얘기되고 있지만, 이것은 가능하다. CNAME은 포인팅하는 오리지널 도메인의 레코드를 모두 상속받기 때문에, CNAME으로 설정된 도메인은 추가 레코드를 갖을 수 없음을 유의한다. 또한, MX, NS 등의 레코드에도 CNAME으로 설정된 도메인을 넣어서는 안된다. 반드시 주의하여야 한다. CNAME의 잘못된 사용은 BIND 로그를 유심히 관찰하지 않으면 찾기 어려우므로, 확실히 할 수 없다면 CNAME으로 설정된 레코드를 아예 다른 레코드의 인자로 놓지 않는 것이 좋다. 숙련된 도메인 메니저 중에서도 트래픽과, 퍼포먼스라는 측면에서 CNAME을 전혀 사용하지 않는 경우도 있다. (참고: CNAME의 사용에 관해)


    ftp                 IN  CNAME  www  ; (X) CNAME엔 추가레코드를 갖을 수
                        IN  MX     mail ;     없다.
    
    power               IN  MX 10  mail ; (X) MX에 CNAME으로 설정된
    mail                IN  CNAME  ns   ;     레코드가 올 수 없다.

2.5.3.4. MX(Mail eXchanger) 레코드

MX 레코드는 해당 호스트의 메일 라우팅 경로를 조정한다. 다음과 같이 설정되어 있을 경우, account@nobreak.com 으로 보내어 지는 편지는 실제 mail.nobreak.com. 으로 전송된다. 만약 mail.nobreak.com. 에 연결할 수 없다면, 다음 우선순위인 power.nobreak.com 으로 편지를 배송하게 된다. MX Priority_Number 와 같이 사용하며, Priority_Number의 숫자는 적을수록 우선순위가 높다. MX 알고리즘에서 자세히 다룬다.


    nobreak.com.        IN  MX  10  mail.nobreak.com.
                        IN  MX  20  power.nobreak.com.
    mail.nobreak.com.   IN  A       210.105.79.2
    power.nobreak.com.  IN  A       210.105.79.103

다음과 같이 MX 레코드에 CNAME으로 설정된 도메인을 넣으면 안된다. 이럴 경우 몇몇 MTA(Mail Transfer Agent: sendmail)는 메일 라우팅 경로를 찾지 못하여, 메일을 주고받을 수 없다. 이는 송신인이 사용하는 MTA의 종류와 버전에 의존적이므로, 경험 많은 도메인 메니저가 아니면 문제의 원인을 진단하기도 어렵다. 반드시 주의하자.


    nobreak.com.        IN  MX  10  mail.nobreak.com.  ; (X) 잘못된 사용
    mail.nobreak.com.   IN  CNAME   power.nobreak.com.
    power.nobreak.com.  IN  A       210.105.79.103

2.5.3.5. PTR(Pointer) 레코드

PTR 레코드는 IP 주소에 대해 도메인명을 매핑하여 주며, Reverse Zone 파일에서 사용된다. 다음은 IP 210.105.79.2에 대한 설정 예이다.


    2.79.105.210.in-addr.arpa.  IN  PTR  ns.nobreak.com.

Forward Zone에서는 다수의 도메인이 A(혹은 CNAME) 레코드를 통해 같은 IP를 갖을 수 있지만, PTR 레코드는 중복이 허용되지 않기 때문에, 해당 IP에 대한 대표 도메인명 하나만을 설정하여야 한다.

2.5.3.6. 기타 레코드들

Zone 데이터베이스에 필요한 레코드들은 위에 나열한 것만으로도 충분하지만, 더 많은 레코드들이 존재한다. 다음에 반드시 필요하지는 않으나, 종종 사용되는 레코드를 소개한다. 더 자세한 정보가 필요하다면 RFC1035, RFC1183, RFC2163을 참고하자.


    power           IN  A      210.105.79.103
                    IN  HINFO  "Sun Sparc Ultra 5"  "Solaris 2.6"
                    IN  TXT    "Nobreak's Primary Server"
                    IN  TXT    "WWW, FTP is now available"
                    IN  RP     hostmaster.nobreak.com.  hostinfo.nobreak.com.
    hostinfo        IN  TXT    "Seung-young Kim, +82-42-864-4440/1"

HINFO(Host INFOrmation) 레코드는 두 개의 문자열(CPU 정보, OS 정보)을 갖으며 시스템 정보를 나타낸다. 문자열에 공백이 포함되어 있을 경우에는 반드시 큰따옴표를 사용하여야 한다.

TXT(TeXT) 레코드는 텍스트 정보를 갖으며 중첩되어 사용될 수 있다. RP(Responsible Person)는 담당자의 정보를 표시하는데, Email 주소(@를 도트로 치환한)와, 담당자 정보(TXT 레코드를 갖는 도메인을 포인팅함)를 갖는다. HINFO를 포함한 몇몇 레코드는 보안을 이유로 사용치 말아야 한다는 의견도 있다.

2.5.4. Zone 데이터베이스 예제

Figure 2-1의 네트워크 구성에 대한 Forward Zone 파일 zone-nobreak.com은 다음과 같이 작성될 수 있다.

    * nobreak.com 도메인에 대한 Forward Zone 파일 /var/named/zone-nobreak.com
    @               IN      SOA     ns.nobreak.com. hostmaster.nobreak.com. (
                                    1998122801  ;Serial
                                    21600       ;Refresh ( 6 hours)
                                    1800        ;Retry   (30 minutes)
                                    1209600     ;Expire  (14 days)
                                    86400)      ;Minimum ( 1 day)
                    IN      NS      ns.nobreak.com.
                    IN      NS      ns2.nobreak.com.
                    IN      MX 10   mail           ; 메일 라우팅 호스트
    
    mail            IN      A       210.105.79.2
    
    ; Hosts Here - This is comments
    router          IN      A       210.105.79.1
    ns              IN      A       210.105.79.2
    ns2             IN      A       210.105.79.3
    power           IN      A       210.105.79.103
                    IN      HINFO   "Sun Sparc Ultra 5"         "Solaris 2.6"
                    IN      TXT     "Nobreak Technologies, Inc."
    www             IN      CNAME   power

인버스 도메인을 위한 Reverse Zone 파일 zone-79.105.210.in-addr.arpa은 다음과 같이 작성된다.

    * Reverse Zone 파일 /var/named/zone-79.105.210.in-addr.arpa
    @               IN      SOA     ns.nobreak.com. hostmaster.nobreak.com. (
                                    1998122801  ;Serial
                                    21600       ;Refresh ( 6 hours)
                                    1800        ;Retry   (30 minutes)
                                    1209600     ;Expire  (14 days)
                                    86400)      ;Minimum ( 1 day)
                    IN      NS      ns.nobreak.com.
                    IN      NS      ns2.nobreak.com.
    ; IP-Domain mapping here
    1               IN      PTR     router.nobreak.com.
    2               IN      PTR     ns.nobreak.com.
    3               IN      PTR     ns2.nobreak.com.
    103             IN      PTR     power.nobreak.com.

loopback 주소를 위한 Reverse Zone 파일 또한 다음과 같이 작성된다. IP 127.0.0.1을 localhost. 로 매핑하는 것이 전부이므로, 본 파일은 어느 네트워크에서나 비슷하게 작성될 것이다.

    * loopback을 위한 Reverse Zone 파일 /var/named/zone-0.0.127.in-addr.arpa
    
    @               IN      SOA     ns.nobreak.com. hostmaster.nobreak.com. (
                                    1998122801  ;Serial
                                    21600       ;Refresh ( 6 hours)
                                    1800        ;Retry   (30 minutes)
                                    1209600     ;Expire  (14 days)
                                    86400)      ;Minimum ( 1 day)
                    IN      NS      ns.nobreak.com.
                    IN      NS      ns2.nobreak.com.
    ; IP-Domain mapping here
    1               IN      PTR     localhost.

Zone 파일에서의 도메인 표기는 반드시 FQDN 표기법을 따라야 한다. BIND는 도트로 끝나지 않는 문자열은 호스트명으로 처리하므로, ns.nobreak.com 을 ns.nobreak.com.nobreak.com. 으로 해석한다. 따라서 ns.nobreak.com. 과 같이 도트를 붙인 FQDN으로 표기하거나, ns 와 같이 호스트명만 사용하여야 한다. 도트를 빼먹는 실수는 매우 빈번히 발생하므로, 주의하자.

2.5.4.1. 호스팅 업체를 위한 Zone 데이터베이스 예제

호스팅업체의 경우 다음과 같이 다수의 도메인을 하나의 Zone 데이터베이스로 관리할 수가 있다. 만약, 호스팅 도메인별로 별도의 Zone을 유지한다면, 호스팅 서버의 IP 변화와 같이 관련된 모든 Zone이 수정되어야 하는 상황이 오지 않기를 기도하거나, 반나절을 편집기와 씨름할수 있는 끈기를 배워야할 것이다. 여기서 소개하는 팁은 사용자가 많은 호스팅 업체일수록 유용하게 활용될 수 있으며, 도메인 추가/수정/삭제에 드는 시간과 노력을 절약할 수 있을 것이다.

    * named.boot (BIND-4)
    primary         netbsd.org                      zone-default
    primary         openbsd.org                     zone-default
    ...
    primary         freebsd.org                     zone-freebsd.org ; 별도의 추가 도메인이 필요한 경우
    ...
    * named.conf (BIND-8)
    zone "netbsd.org"       IN { type master; file "zone-default"; };
    zone "openbsd.org"      IN { type master; file "zone-default"; };
    ...
    zone "freebsd.org"      IN { type master; file "zone-freebsd.org"; };
    ...
    * zone-default
    @               IN      SOA     ns.nobreak.com. hostmaster.nobreak.com. (
                                    1999030601  ;serial
                                    21600       ;Refresh ( 6 hours)
                                    1800        ;Retry   (30 minutes)
                                    1209600     ;Expire  (14 days)
                                    86400)      ;Minimum ( 1 day)
                    IN      NS      ns.nobreak.com.
                    IN      NS      ns2.nobreak.com.
                    IN      A       210.105.79.39
                    IN      MX 10   @
                    IN      MX 20   mqueue.nobreak.com.
    
    www             IN      CNAME   @
    telnet          IN      CNAME   @
    ftp             IN      CNAME   @
    mail            IN      CNAME   @
    pop             IN      CNAME   @
    news            IN      CNAME   news.nobreak.com.
    * zone-freebsd.org
    $INCLUDE zone-default
    
    ftp.kr          IN      A       147.46.102.39
    www.kr          IN      CNAME   @

2.6. Name Server 구동

네임서버를 구동하기 위한 설정이 마무리되었다. 관련 파일들이 준비되었음을 확인한 후, 네임서버를 구동하자. 일련의 과정은 다음과 같다.

    * NS.NOBREAK.COM (BIND-8)
    # ls /etc/named.conf     # BIND-8 부트 파일
    /etc/named.conf
    # ls /var/named/         # Zone 데이터베이스 파일 확인
    named.root
    zone-0.0.127.in-addr.arpa
    zone-79.105.210.in-addr.arpa
    zone-nobreak.com
    # /usr/sbin/named        # 네임 데몬 구동 (Solaris: /usr/sbin/in.named)
    # ps ax | grep named     # 프로세스 동작 확인 (Solaris: ps -e | grep in.named)
      254  ?  S    0:00 named
    * NS2.NOBREAK.COM (BIND-4)
    # ls /etc/named.boot      # BIND-4 부트 파일
    /etc/named.boot
    # ls /var/named/          # Zone 데이터베이스 파일 확인
    named.root
    zone-0.0.127.in-addr.arpa
    # ndc start               # ndc(Name Daemon Control)가 설치되어 있을 경우
    Name Server Started
    # ndc status
      254  ?  S    0:00 named
    # ls /var/named/          # Primary의 Zone 전송여부 확인
    named.root
    sec-79.105.210.in-addr.arpa
    sec-nobreak.com
    zone-0.0.127.in-addr.arpa

2.7. Name Server 동작 확인

여기에선 [그림 3]의 가상 네트워크 구성도에 따른 설정을 다루었지만, 기본적으로 필요한 부분은 모두 적용되어 있으므로 실제 네트워크에 적용할 때에도 같은 느낌으로 설정하면 된다. 다음과 같이 타 네임서버를 통해 질의를 던져봄으로써, Namespace 가지상에 잘 연결되어 있음을 확인하자.


    $ nslookup power.nobreak.com ns.nobreak.com   # Primary 동작 확인
    Server:  ns.nobreak.com
    Address:  0.0.0.0
    
    Name:    power.nobreak.com
    Address:  210.105.79.103
    
    $ nslookup power.nobreak.com ns2.nobreak.com  # Secondary 동작 확인
    Server:  ns2.nobreak.com
    Address:  210.105.79.3
    
    Name:    power.nobreak.com
    Address:  210.105.79.103
    
    $ nslookup power.nobreak.com ns.kornet.ne.kr  # Namespace 링크 확인
    Server:  ns.kornet.nm.kr
    Address:  168.126.63.1
    
    Name:    power.nobreak.com
    Address:  210.105.79.103

위의 3가지 질의가 성공적으로 수행되었다면, 일단 네임서버가 정상적으로 운용된다고 생각해도 좋다. 확실히 하기 위해선, 로그파일 분석을 통해 Zone 데이터베이스 구성상의 오류와 BIND의 동작 상태를 살펴보아야 한다.


 

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 때찌1
현재 BIND DNS는 크게 2가지 버전 군으로 제공되고 있습니다.
버전 군 IPv6 지원 버전 비고
BIND 8 BIND 8.4.0 이상 최근 버전 : BIND 8.4.4
BIND 9 BIND 9.0.0 이상 최근 버전 : BIND 9.2.3
※ BIND 4 버전은 현재 개발과 공식적 배포가 중단된 상태
이 중에서 BIND 9는 새로운 아키텍쳐로 설계된 BIND DNS SW로써, 초기 버전부터 IPv6를 
지원하고 있습니다.

향후 BIND DNS의 지속적인 배포 버전으로, ISC에서는 가능한 한 BIND 9 버전으로의
업그레이드를 권고하고 있습니다. BIND 8은 가장 널리 적용, 사용하고 있는 BIND DNS 버전입니다.
현재의 IPv4 인터넷 환경에서 널리 적용되어 있는 버전이라고 볼 수 있습니다.

현재 .KR 도메인 네임서버와 같은 기간 인프라 성격의 DNS 네임서버들의 대부분이 BIND 8을
사용하여 운영되고 있습니다.

그러나 향후에는 점차 BIND 9버전으로 전환될 것으로 예상되고 있습니다.

새로이 IPv6 DNS 네임서버를 구축하는 경우, BIND 8 또는 BIND 9 버전 중 최신 버전을 사용하는
것이 바람직합니다.
BIND 8 버전과 BIND 9 버전을 비교할 때, IPv6 지원 기능에는 커다란 차이점은 없습니다.
다만 DNS 기능이 지속적으로 확장되고 있어서, 이 확장 기능을 구현한 정도에 따른 차이점들이
존재합니다.

그리고 중요한 차이점으로는 BIND 9 버전이 새로운 아키텍쳐 모델로 설계, 개발됨으로써
BIND 8에 비해 보다 향상된 시스템 구조를 지니고 있다는 점을 지적할 수 있습니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 때찌1

▒ DNS 설치 및 운영 (bind9)

 

    RedHat Linux 9 기반의 강좌를 쓰기 시작한지두 오래 된 것 같은데. ^^ 많은 사람들의 요청으로 DNS 강좌 까지 쓰게 되었습니다.  커다란 흐름은 DNS 강좌 까지이며, 필요한 강좌의 요청이 많거나 꼭 필요하다고 생각 드는 강좌를  올리도록 하겠습니다.
  DNS 서버를 직접 운영한다는 것은 조금 위험부담과 서버 이전에 있어 문제가 가장 크기 때문에 같은 서버에 DNS를 같이 운영하는 것은 별로 좋은 방법은 아닙니다. 하지만, 본 강좌를 보시구 계시는 분들 대부분은 한 대의 서버에 DNS 까지 운영하시려고 할 것입니다. 물론 커다란 전문 지식 보단 간단하고 빨리 설치 해서 운영하는 것이 목적일 것입니다.  설치에서 운영까지 또 몇가지 팁에 대해서 써 내려 가도록 하겠습니다.
   DNS 는 도메인을 --> ip로 , ip를 도메인으로 바꾸는 역할을 합니다. 대부분 도메인을 ip로 바꾸려고 사용합니다. 하나의 도메인은 여러 ip를 가질 수 있고, 여러 도메인은 하나의 ip를 가질 수 있습니다. (본 강좌는 ip==> 도메인 으로 바뀌는 부분에 대해서는 언급하지 않겠습니다.)
  사용자의 pc에서 www.superuser.co.kr 이라고 입력하면, PC에 설정된 대표 DNS에 접속해서 도메인에 대한 ip를 찾으려고 할 것입니다. DNS 는 superuser.co.kr의 서브 도메인인 www.superuser.co.kr 의 ip를 찾아서 알려주게 됩니다.

** 참고. 국내 대표 DNS입니다. (다른 것이 있으면 본 강좌의 마지막 부분에 나오는 주소로 메일 한 통 부탁합니다.^^)
한국통신 도메인  kornet.net  : DNS 서버 168.126.63.1, 168.126.63.2  
천리안/보라홈넷 도메인  chollian.net  : DNS 서버 164.124.101.2
두루넷 도메인  thrunet.com : DNS 서버 210.117.65.1, 210.117.65.2
하나로통신 도메인  hanafos.net  : DNS 서버 131.107.1.7
드림라인 도메인  dream.net  : DNS 서버 210.181.4.25

1. 설치
 설치는 간단하게 rpm 설치 하는 법만 설명하도록 하겠습니다.
RH9에서 DNS와 관련된 패키지는 다음과 같습니다. (bind9)
bind-9.2.1-16 DNS (도메인 이름 시스템) 서버.
bind-devel-9.2.1-16 bind DNS 개발을 위해 필요한 파일들과 라이브러리들이 포함되어 있습니다.
bind-utils-9.2.1-16 DNS 네임 서버들을 질의(query)하는 유틸리티.
caching-nameserver-7.2-7 캐싱 네임 서버를 설정하는데 필요한 설정 파일들.
redhat-config-bind-1.9.0-13 Red Hat DNS 설정 도구.

위 패키지들 중에 bind-devel-9.2.1-16 는 설치하지 않도록 하겠습니다. ^^; 개발에 필요한 것이기 때문이죠.
위 패키지들을 rpm -qa | grep bind 해서 확인하시고 없으면 . 다음과 같이 설치하세요

[root@test root]# rpm -Uvh http://ftp.superuser.co.kr/pub/redhat/9/RPMS/bind-utils-9.2.1-16.i386.rpm
http://ftp.superuser.co.kr/pub/redhat/9/RPMS/bind-utils-9.2.1-16.i386.rpm(을)를 설치합니다.
경고: /var/tmp/rpm-xfer.alMSwn: V3 DSA signature: NOKEY, key ID db42a60e
준비 중...                  ########################################### [100%]
   1:bind-utils             ########################################### [100%]

[root@test root]# rpm -Uvh http://ftp.superuser.co.kr/pub/redhat/9/RPMS/bind-9.2.1-16.i386.rpm
http://ftp.superuser.co.kr/pub/redhat/9/RPMS/bind-9.2.1-16.i386.rpm(을)를 설치합니다.
경고: /var/tmp/rpm-xfer.nQzU46: V3 DSA signature: NOKEY, key ID db42a60e
준비 중...                  ########################################### [100%]
   1:bind                   ########################################### [100%]

[root@test root]# rpm -Uvh \
 http://ftp.superuser.co.kr/pub/redhat/9/RPMS/redhat-config-bind-1.9.0-13.noarch.rpm

http://ftp.superuser.co.kr/pub/redhat/9/RPMS/redhat-config-bind-1.9.0-13.noarch.rpm(을)를 설치합니다.
경고: /var/tmp/rpm-xfer.zzLRVz: V3 DSA signature: NOKEY, key ID db42a60e
준비 중...                  ########################################### [100%]
   1:redhat-config-bind     ########################################### [100%]

[root@test root]# rpm -Uvh \
http://ftp.superuser.co.kr/pub/redhat/9/RPMS/caching-nameserver-7.2-7.noarch.rpm

http://ftp.superuser.co.kr/pub/redhat/9/RPMS/caching-nameserver-7.2-7.noarch.rpm(을)를 설치합니다.
경고: /var/tmp/rpm-xfer.uVhcKH: V3 DSA signature: NOKEY, key ID db42a60e
준비 중...                  ########################################### [100%]
   1:caching-nameserver     ########################################### [100%]

이렇게 설치가 끝났다면, dns 실행 준비가 된 것 입니다.

2. 초기 셋팅
 설치는 간단했지만, 이제부터 조금 길어질 것입니다. 최대한 간단히 설명하도록 하겠습니다.
 (1)  /etc/hosts 파일 (서버에서 도메인을 제일 먼저 찾는 곳)
 형식 :   아이피  도메인  알리아스
127.0.0.1  localhost localhost.localdomain
이렇게 되어있기 때문에 localhost 라고 입력하면 127.0.0.1을 찾는 것입니다.

(2) /etc/resolv.conf (서버에서 쓸 dns)
search 도메인  : 여기에는 보통 자기 도메인 또는 localhost를 적습니다.(3개까지 가능)
nameserver 아이피 : 서버에서 사용할 dns를 적습니다. 주로 위에서 설명들인 대표 dns를 적습니다.(3개까지)
예)
search localhost
nameserver 168.126.63.1
nameserver 168.126.63.2


(3) /etc/host.conf (도메인에 대하 ip를 찾을 때 참조할 순서)
order hosts,bind ==> 초기 설치시 이렇게 되어 있으며, 의미는 /etc/hosts파일부터 찾고, bind에서 찾는다는의미

(4) /etc/named.conf
options {
        directory "/var/named";        // zone 파일을 저장할 디렉토리
        // query-source address * port 53;  // DNS 서버의 ip와 포트 설정 (기본)
controls { //==> 127.0.0.1 에서 rndc로 접속시 컨트롤 가능하다는 의미
        inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
// 캐시 네임 서버 설정
zone "." IN {
        type hint;
        file "named.ca";
};
// localhost 에 대한 설정
zone "localhost" IN {
        type master;
        file "localhost.zone";
        allow-update { none; };  //다이나믹 하게 업데이트를 허용할것인지 설정한다. 대부분 none
};
// 127.0.0.X 에 대한 역 도메인
zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.local";
        allow-update { none; };
};
include "/etc/rndc.key";


위 파일 내용들은 caching-nameserver-7.2-7, redhat-config-bind-1.9.0-13   패키지를 깔면 생성되는 것들입니다. 대부분의 서버에서 별다른 설정하지 않고 사용 하시면 됩니다.

중요한 것은 다음 줄부터입니다. 0link.co.kr 이라는 도메인을 셋팅해 보도록 하겠습니다.

zone "0link.co.kr" IN { type master; file "0link.co.kr.zone"; allow-update { none; }; };
위와같이 추가 합니다.
zone 파일명은 0link.co.kr.zone으로 하였습니다.

(5) /var/named/*
이 디렉토리는 존 파일 및 케시DNS서버에 대한 파일... 등등등 이 들어가지만, 손대지 않도록합니다.
위에서 추가한 도메인에 대한 zone 파일을 만들어 보도록 하겠습니다.
/var/named/0link.co.kr.zone
$TTL 86400
@       IN      SOA     ns.0link.co.kr. root.0link.co.kr. (
                        2004062300              ; 시리얼값 (년월일시간)으로 대부분 설정합니다.
                        3H              ; 2차 네임서버가 1차 네임서버에 접속하는 시간
                        15M             ; 접속 실패시 다시 시작할 시간 간격
                        1W              ; 1차 네임서버에 데이터가 없다면 1주 이후에 지워진다.
                        1D )            ; 위에서 설정한 TTL값과 같은 의미
;
        IN      NS      ns.0link.co.kr. ; 도메인을 소유한 DNS의 도메인
        IN      MX      10 mail.0link.co.kr. ; 메일을 보낼 도메인 또는 주소
        IN      A       210.114.223.194 ; 도메인이 찾아갈 IP주소
www     IN      A       210.114.223.194 ; www.0link.co.kr 도메인이 찾아갈 IP주소
mail    IN      A       210.114.223.194
*       IN      A       210.114.223.194 ; 모든 서브 도메인이 찾아갈 서버 IP

처음 줄의 $TTL(Time To Live)은 아주 중요합니다.  다른 DNS 서버에서 이 도메인에 대한 조회를 한 다음 , 그 데이터를 보관할 시간입니다. 86400은 86400초를 의미하고 계산해 보시면 하루 정도가 됩니다. 기본으로 이 값을 많이 사용합니다. 하지만 서버이전을 계획하고 계시다면, 2~3일 전에 400 정도로 바꾸어 두고 시작하시기 바랍니다.
 그리고 모든 값들을 수정후에는 꼭 시리얼 값을 바꾸어 설정된 값보다 큰값으로 설정해 주시기 바랍니다.

3. DNS 운영
 설치와 설정이 끝났다면, DNS 서버를시작해야 합니다.
(1) 시작
[root@test root]# /etc/rc.d/init.d/named start
named 를 시작 합니다:                                   [  확인  ]

(2) 재시작
[root@test root]# /etc/rc.d/init.d/named reload
named를 재시작 하고 있습니다: [  확인  ]

(3) 정지
[root@test root]# /etc/rc.d/init.d/named stop
named 를 정지함:
이렇게 되면서 정지가 되지 않았습니다.
[root@test root]# ps -ef | grep named
named    17585     1  0 22:39 ?        00:00:00 [named]
root     17728 17314  0 22:42 pts/2    00:00:00 grep named

bind 는 아래 명령어를 사용해서 정지 시킬 수 있으나 먹지 않더군요(권장사항인데...)
[root@test root]# rndc stop
그래서 할 수 없이 깔끔하게 프로세스를 죽였입니다.
[root@test root]# killall named
[root@test root]# ps -ef | grep named        
root     17757 17314  0 22:43 pts/2    00:00:00 grep named 


(4) 서버 부팅시 자동 실행
아래와같이 ntsysv 명령어로 설정합니다.


 
(5) 설정한 도메인 확인하기 (Windows XP의 NSLOOKUP 이용)
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\doly>nslookup
Default Server:  kns.kornet.net
Address:  168.126.63.1
> server ns.superuser.co.kr
Default Server:  ns.superuser.co.kr
Address:  211.220.193.181
> set debug    <== 디버그 모드로 설정
> 0link.co.kr
Server:  ns.superuser.co.kr
Address:  211.220.193.181
------------
Got answer:
    HEADER:
        opcode = QUERY, id = 3, rcode = NOERROR
        header flags:  response, auth. answer, want recursion, recursion avail.
        questions = 1,  answers = 1,  authority records = 1,  additional = 1
    QUESTIONS:
        0link.co.kr, type = A, class = IN
    ANSWERS:
    ->  0link.co.kr
        internet address = 210.114.223.149
        ttl = 400 (6 mins 40 secs)
    AUTHORITY RECORDS:
    ->  0link.co.kr
        nameserver = ns.kebia.net
        ttl = 400 (6 mins 40 secs)
    ADDITIONAL RECORDS:
    ->  ns.kebia.net
        internet address = 211.220.193.181
        ttl = 64800 (18 hours)
------------
Name:    0link.co.kr
Address:  210.114.223.149
> ls -t MX 0link.co.kr  < == 메일 레코드인 MX 레코드 조회
[ns.superuser.co.kr]
Received AXFR message:  questions=1, answers=14
 0link.co.kr.                   400 IN    MX     0    mail.0link.co.kr


이렇게 운영중인 도메인에 대한 값을 조회 해 볼 수 있습니다.
 

4. 마치며..
 DNS 서버는 다른 서버들과 마찬가지로 어려운 부분입니다. 본강좌는 단순히 설치 강좌이며, 한 없이 부족함을 느낄 것입니다. 수퍼유저코리아 사이트에 좋은 자료들이 많으니 이것 저것 많이 보시고 응용해 보시기 바랍니다.
 혹시 본 강좌에 대한  오타 및 건의 사항이 있으면, 메일 한통 보내주기 바란다. 메일주소는 doly 골뱅이superuser.co.kr 이다. 메일 주소를 무단 수집해서 스팸메일을 보내는 이를 막기 위해서 위와 같이 표기했으며, 골뱅이 부분은 @ 치환하면 된다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 때찌1

[root@linuxclub etc]# vi named.conf
controls {
inet 127.0.0.1 allow { localhost; } keys { rndc-key; };
};
zone "linuxclub.pe.kr" IN {
type master;
file "server-teyong.zone";
allow-update { none; };
};
zone "14.251.61.in-addr.arpa" IN {
type master;
file "server-teyong.rev";
allow-update { none; };
};
key "rndc-key" {
algorithm hmac-md5;
secret "Zm9vYmFy" ;
};
:wq

[root@linuxclub etc]# vi rndc.conf
server localhost {
key "rndckey";
};
include "/etc/rndc.key";
key "rndckey" {
algorithm hmac-md5;
secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
};

[root@linuxclub etc]# vi rndc.key
key "rndckey" {
algorithm hmac-md5;
secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
};

[root@linuxclub named]# vi server-teyong.zone
$TTL 86400
@ IN SOA ns.linuxclub.pe.kr. admin.linuxclub.pe.kr. (
IN NS ns.linuxclub.pe.kr.
IN MX 10 linuxclub.pe.kr.
IN MX 10 mail
; my hostname server list
; * IN A 61.251.14.17
linuxclub.pe.kr. IN A 61.251.14.17
*.linuxclub.pe.kr. IN A 61.251.14.17
ns.linuxclub.pe.kr. IN A 61.251.14.17
www.linuxclub.pe.kr. IN A 61.251.14.17
ftp.linuxclub.pe.kr. IN A 61.251.14.17
telnet.linuxclub.pe.kr. IN A 61.251.14.17
pop.linuxclub.pe.kr. IN A 61.251.14.17
linuxclub.pe.kr. IN MX 10 pop.linuxclub.pe.kr

;VirtualHost
taeyong IN CNAME 61.251.14.17
Sunny IN CNAME 61.251.14.17
club IN CNAME 61.251.14.17
study IN CNAME 61.251.14.17
logs IN CNAME 61.251.14.17

[root@linuxclub named]# vi server-teyong.rev
$TTL 86400
@ IN SOA linuxclub.pe.kr. root.linuxclub.pe.kr. (
IN NS linuxclub.pe.kr.
17 IN PTR linuxclub.pe.kr.

[root@linuxclub named]# service named restart
[root@linuxclub named]# nslookup ftp.linuxclub.pe.kr
Name: ftp.linuxclub.pe.kr
Address: 61.251.14.17
[root@linuxclub named]# nslookup www.linuxclub.pe.kr
Name: www.linuxclub.pe.kr
Address: 61.251.14.17
==> 이렇게 dns가 재대로 돌고 있다면 위와 같이 검색이 나온다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 때찌1
DNS(Domain Name System)

*정의 : Domain Name 을 IP Address로 바꾸어 주거나 또는 그 반대의
작업을 처리해 주는 시스템. 즉 IP Address와 Domain Name 사이의 변환작업 시스템



*Domain Name Server

- Domain Name Server는 자신의 Domain에 속한 IP Address와 Domain Name을 모두 보유

- 클라이언트가 어떤 IP Address에 해당하는 Domain Name을 요청하거나 또는 그 반대의 작업을 요청하면 작업한 결과를 클라이언트에게
알려준다.

- Domain Name Server는 자신의 Domain에서만 작업을 처리한다.

- Domain Name Server가 알지 못하는 Domain Name이나 IP Address를 클라이언트가 요청할 때는 자신의 상위계층에 위치한 Domain Name
Server에게 재요청한다

- 최종 Root Server는 domain에 대한 모든 책임을 진다



*** DNS의 자료에서 생기는 오류


이 절에서는 네임서버가 메모리에 적재하는 ZONE 파일에서 발견되는 네임서버의 DNS 자료의 문제에 대해 논의한다



불일치, 누락 혹은 잘못된 자료



HOST NAME



호스트 이름에 사용이 가능한 글자들은 아스키 문자와 숫자 그리고 '-' 문자이다. 라벨들이 전부 숫자이어서는 안되지만 숫자가 맨 앞에 오는 경우는 괜찮다. (예, 3com.com). 라벨들은 반드시 숫자나 문자로 시작하여야 한다. 어떤 호스트들은 이 인터넷 호스트 이름에 대한 규칙에 위배된다. (예 : 411.com, 1776.com).
밑줄을 사용하는 것은 RFC 1033에서 허용되었지만 RFC 1033은 표준을 정의한 것이 아니며 정보일 뿐이다. 어떤 TCP/IP 구현상에는 호스트 이름에 밑줄을 사용하는 것을 거부하는 것이 있다.



이런 규칙들은 이들은 문제들을 최소화하기 위한 사람들에 의한 자발적인 것이라는 것에 유의하여야 한다. 인터넷의 호스트 이름에 대한 규칙은 SMTP에 사용되는 호스트와 주소에도 같이 적용되는 것에 주의해야 한다.



DOMAIN NAME



DNS의 도메인 이름들은 점으로 분리되는 "label"로 구성되어 있다. DNS의 도메인 이름에 사용 가능한 글자들에 대한 규칙은 매우 자유롭다. 그러나 도메인 이름이 호스트의 이름으로 사용되면 이는 호스트 이름에 대한 제한에 따라야 한다. 또한 도메인 이름이 메일에 사용되면 메일 주소의 이름에 대한 규칙을 따라야 한다.



DOMAIN NAME 과 E-Mail



도메인 이름이 메일에 사용된다면 이는 반드시 메일에 대한 규칙에 따라야 한다. 이것은 HOST 네임 규칙보다 자유롭지만, 메일에 대한 라벨은 특수 문자, 제어문자, 그리고 공백을 제외한 모든 아스키 문자가 될 수 있다.



특수 문자들은 "()@,;:"."로서('!' 문자는 RFC 822에 없으나 이것도 역시 UUCP 메일에 상충되므로 사용되어서는 안된다) 주소의 해석을 위한 특정 문자들이다. 그러나 인터넷 상의 메일에 사용되는 거의 모든 이름들이 호스트 이름으로도 역시 사용되고 있으며 이 표준에 의한 이름은 찾아보기는 어렵지만 메일 소프트웨어는 그들을 받아들일 수 있도록 만들어져야 한다.



A 와 PTR 레코드



인터넷에서 접근 가능한 모든 호스트들의 서비스들은 DNS에 정확히 등록되지 않으면 사용될 수 없다. 그러기 위해서 PTR과 A 레코드를 일치시킨다. 모든 IP 주소에 대해서 in-addr.arpa 도메인에 일치되는 PTR 레코드가 있어야 한다. 만약 호스트가 multi-homed인 경우 (즉 둘 이상의 IP 주소를 가지는 경우) 모든 IP 주소가 대응되는 PTR 레코드를 가져야 한다. PTR 레코드와 A 레코드가 일치하지 않으면 이것은 DNS에 등록되지 않은 것으로 간주된다. 또한 PTR 레코드는 CNAME에 의해 지정된 별명이 아닌 적법한 A 레코드를 가리켜야 한다.



기타



어떤 운영체제는 자신의 이름 길이에 제한을 가지고 있는 것도 있다. DNS에 관한 것은 아니지만 호스트 이름을 정하기 전에 운영체제의 호스트 이름에 대한 제한을 알아야 한다.
많은 자원 레코드 (RR)들은 하나 이상의 변수를 필요로 한다. HINFO는 두개의 변수를 가지며 RP도 마찬가지이다. 충분한 수의 변수를 제공하지 않는다면 서버는 누락된 필드에 대하여 잘못된 정보를 반환할 수 있다. 만일 자료에 공백이 포함되면 그 스트링들은 인용 부호로 둘러 싸여야 한다.

크리에이티브 커먼즈 라이선스
Creative Commons License

'소프트웨어개발 > 리눅스' 카테고리의 다른 글

[펌] ▒ DNS 설치 및 운영 (bind9)  (0) 2006/01/10
[펌] bind DNS 서버 설정  (0) 2006/01/10
[DNS] 정의  (0) 2006/01/10
[DNS] 일반기업에서 dns서버를 설치해야 하는이유  (0) 2006/01/10
[펌] DNS설정  (0) 2006/01/10
SNMP & MRTG 간단 사용법  (0) 2005/12/07
Posted by 때찌1
이전버튼 1 2 이전버튼