3. 14 (수) 정리 Linux Server 이론 - DNS 서버 구축

Linux Server - 01 DNS 서버

DNS? 개요

Sender
Receiver

App이 상대 App에게 Message를 보내기 위해 TCP로 세그먼트 생성
IP는 데이터그램 헤더 붙임
이더넷은 프레임 헤더 붙임 -> 전송

-> 도메인은 패킷에 포함되지 않는다
-> 실제 사용은 IP 주소를 사용한다.
-> www.naver.com 의 IP 주소를 알고싶다.
-> 네트워크 세팅의 3요소 (ip, mask, gate) + DNS 주소가 있어야 한다.

DNS 서버를 어떻게 만드는가
- 도메인은 수없이 많다, 고로 한 곳에 몰아넣을 수 없기에 체제가 필요하다.
1) 우리는 이미 주소를 사용하고 있다.
  -> 주소라는 것은 범위를 포함한다. (큰 범위 ---->> 작은범위) -> 빠른 검색이 가능
  -> DNS도 같은 구조로 구축되었다.

2) 한국과 외국의 주소체계는 다르다 = 거꾸로
  -> 외국은 .com부터 시작해서 www로 끝난다 (www.naver.com)

3) 단계가 있고 시스템마다 길이도 다르다 = 도메인은 자기 정보를 마음대로 설정할 수 있다.
ex) 국내에서 사용하는 kr이라는 도메이는 우리 마음대로 설정한다.

4) 또한 DNS의 정보는 공개정보이기 때문에 보안의 3요소(무결,가용,기밀) 중 무결성이 필요없다.


◎ 분산 database

  -> 수많은 name server가 계층형 구조로 되어있다. (Tree구조)

모든 DN 중 첫번째 (보통 www) 가 컴퓨터 이름이다.
나머지는 도메인 주소

◎ Application layer Protocol

◎ 다른 app layer protocol들(HTTP, FTP, SMTP)의 사용자가 제공한 호스트네임을 ip로 변환하는데 이용
 - 인터넷의 가장 중요한 기능 중 하나
 - Network edge에 구현

◎ IP와 이름간의 mapping.
반대의 경우) ip로 DNS 알아내는 것은 (리버스 존) 수요도 없을 뿐더러 추가로 자원을 쓰기
때문에 사용하지 않음.

트리는 위에서 아래로 탐색 (하향식 결정방식)

◎ 호스트명을 IP 주소로 변환한다.
◎ 호스트에얼리아싱 (host aliasing)
• 정식 (canonical) 호스트명
• 별칭(aliasing) 호스트명
• DNS는 IP뿐아니라 정식 호스트명을 얻기 위해 이용되기도 한다.
◎ DNS 를 중앙집중식으로 하지 않는 이유???
• 서버 장애 (인터넷 다운…)
• Traffic의 집중
• 중앙 서버까지의 거리
• 관리

◎ Top-Level domain(TLD) server
• com, org, net등과 같은 상위 레벨 도메인과 모든 국가의 상위 레벨 도메인에 대한 책임이 있다.
• net TLD : Network solutions maintains servers
• edu TLD : 교육

◎ Authoritative DNS server (1차, 2차) - 책임 DNS 서버 (관리하는 도메인이 있는 서버)
• 인터넷에 접근하기 쉬운 host를 가진 기관은 호스트 명을 IP로 매핑하기 위한 DNS
레코드를 제공하는데 책임 DNS서버가 레코드를 갖는다.
• 일부 서비스 제공자의 책임 DNS서버에 이 레코드를 저장하도록 비용을 지불 할 수
도 있다.

◎ Cache DNS server
• 엄격한 계층 구조에 포함되어 있지 않다.
• IP 매핑을 위한 도메인 정보를 갖지 않는다.
• 호스트의 질의에 대답만을 제공한다.
• Local DNS 서버로 authoritative DNS보다 많이 쓰인다.
• 시리얼 넘버를 갖는다. (책임 DNS 서버의 변경 시 동기화가 안될 경우)

◎ DNS - caching
  - 질의 사슬에서 DNS서버가 DNS 요청에 대한 응답을 받을 때 그 응답을 local memory에  저장한다.
• DNS 서버는 일정 기간이 지나면 저장된 정보를 삭제한다.
• Local name server는 TLD 서버의 IP 주소를 저장 할 수 있다.
• 이러한 caching는 local DNS server가 root server를 우회 할 수 있도록 한다.

◎ 내용은 IEFT에서 제공
• RFC 2136
• http://www.ietf.org/html.charters/dnsind-charter.html



◎ DNS 질의 과정 설명
  - 나의 로컬네임서버(LNS)가 www.poly.edu. 도메인의 ip 주소를 찾아달라는 질의를 받음.

  1. LNS는 www.poly.edu.의 캐시정보가 없다.
  2. 그러므로 자신이 가진 Root DNS Server를 참조하여 RDNS Server로 질의한다.
     " '.', edu 의 ip 주소를 알려줘. "
  3. 루트는 자신의 하위 도메인서버인 edu의 ip주소를 알려준다.
  4. 다시 LNS는 edu에게 poly의 ip주소를 묻는다.
  5. edu 역시 poly의 ip 주소를 알려준다.
  6. 마지막으로 poly에게 www.의 주소를 물어보고, 결과를 종합하여 질의자에게 최종 주소를 알려주는 것으로 질의 역할을 마무리 짓는다.


* Name Server의 응답 두 가지

1. 내가 관리하는 Domain에 관한 질의
2. 내가 관리하지 않는 Domain에 관한 질의

캐시 네임 서버 / 책임 네임 서버


* DNS서버의 이름은 bind (바인드)

◎ 책임 DNS 서버 구축

1. DNS 서버 설치 -> 바인드 설치
2. 환경 설정
• /etc/resolv.conf
• /etc/hosts -> 절대 건드리지 말것
3. /etc/named.conf 파일 생성
4. Zone 파일 및 cache 파일 생성
• named.ca -> 루트 DNS 서버의 IP 저장 (배포 파일)
• 도메인 zone 파일 (내가 관리하는 도메인 정보 포함 파일)
-> 실제 서비스는 위의 두 파일로..
• localhost zone 파일
• rev zone 파일
5. /var/named에 저장된 파일의 소유자를 named.named 로 변경한다.
6. name 서버 시작
# /etc/rc.d/init.d/named start

◎Bind 서버 설치 확인
# yum list bind
또는
# rpm -qa | grep bind (아래 순서가 설치 순서이다)
bind-libs-9.3.4-6.P1.el5
bind-utils-9.3.4-6.P1.el5
bind-9.3.4-6.P1.el5
*bind-chroot가 있으면 경로 전부 변경하여야 하므로, 삭제

◎ 관련 파일
• 데몬 : /usr/sbin/named
• 관리 스크립트 : /etc/rc.d/init.d/named
• 환경 설정 파일 : /etc/named.conf -> 없으면 만들자
• 설정 파일 경로 : /var/named/
- named.ca와 여러 zone 파일들
- named.ca 없으면 배포 받을 것
• 이외 관련 파일 : /etc/resolv.conf, /etc/host.conf

◎ /etc/resolv.conf

nameserver [Local DNS 서버 IP]
- 질의할 local DNS 서버의 IP를 지정한다.
- 최대한 가까운 DNS서버를 지정한다.
* 물어보는 것 = 클라이언트
search [default 도메인]
- 호스트명만을 입력하는 경우 자동으로 추가할 도메인(itclass.co.kr)

◎ /etc/host.conf

order hosts,bind
- 호스트명을 IP로 변환하기 위해 질의하는 순서
- hosts 파일을 먼저 참조하고 다음에 local DNS 서버에 질의한다.

◎ named.conf 내용

options {
directory "/var/named"; -> 고정 (바뀌면 따로 경로 변경 필요)
};

zone "." {
type hint;
file "named.ca";
};

zone “itclass.co.kr" {
type master;
file “itclass.zone";
};

→ 다음은 서식과도 같다.
zone "0.0.127.in-addr.arpa" {
type master;
file "local.zone";
}; -> local.zone을 만들어주어야 의미가 있는 부분
누군가가 나에게 도메인네임을 물었다.
-> 127.0.0 에 있는 유일한 ip주소 127.0.0.1 localhost. -> 나의 주소

→ c언어의 if문 형태

DNS 서버 구축 – Zone 파일 (itclass 예제)
서식 시작 (간격이 매우 중요하다, 미리 만들어 둔 틀이 있으면 좋다)
$TTL 86400
@ IN SOA ns.itclass.co.kr. root.ns.itclass.co.kr. (
* @ : 내가 관리하는 도메인 (itclass.co.kr)
* ns : 컴퓨터 이름
* root : 계정명
1997022700 ; Serial
* 길게쓰면 안 좋음. 날짜들어가는게 아님.
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
; Name Server
IN NS ns.itclass.co.kr.
; Mail Exchange (지금 안할것, 지워라)
IN MX 10 mail.itclass.co.kr.
; Host address
IN A 192.168.3.91
mail IN A 192.168.3.91
;
www IN CNAME mail
ns IN CNAME mail

댓글

이 블로그의 인기 게시물

Linux Server - FTP 실습 (2 / 2) : 사용자 제한 ( ftpuser / user_list )

전자서명 개념

3.27 (화) - Network (패킷 통신 - 4가지 지연)