DNS 도메인 네임 시스템 (Domain Name System, DNS)
호스트의 도메인 이름을 IP주소로 바꾸거나, 그 반대의 변환
IP 주속 기반의 인터넷 체계에서 도메인명을 기반으로 이용하려면 필수적으로 구성해야 하는 것
보유한 도메인을 관리해주는 역할 수행
클라이언트에서 도메인명에 대한 IP주소의 조회를 요청했을 때, 반환해주는 역할
정방향 -> Domain - IP
도메인을 물었을 때 IP로 안내
역방향 -> IP - Domain
IP를 물었을 때 도메인으로 안내
naver.com 앞에 www는 Host name, Host ID
naver.com 은 Domain name, Network Id를 의미
종류
| 종류 | 설명 |
| Primary Name Server | 사용하는 도메인을 관리하기 위해 필수적으로 구성하는 서버 보통 Master DNS라고도 부른다 도메인이 등록될 때 이 서버의 IP 주소를 등록하고, 자체 도메인이 대한 정보를 관리하게 된다. |
| Secondary Name Server | Primary Name Server와 zone 파일을 백업하는 역할을 수행한다. Slave DNS라고도 부른다 외부 클라이언트에서 이 서버를 2차 DNS 서버로 설정한 경우 Master DNS가 다운된 상태라도 정상적으로 해당 도메인에 대해 리졸빙 정보를 제공 |
| Caching Name Server | 관리하는 도메인 없이 리졸빙만을 제공하기 위해 구성된 서버 도메인에 대한 리졸빙 결과를 저장한다. 서버에 기록된 정보에 대한 요청이 들어온 경우 직접 조회하지 않고 바로 응답해주는 역할을 수행한다. 인터넷 사용 속도를 높이기 위해 사용되기도 한다. |
DNS 서버 프로그램 : BIND (Berkeley Internet Name Domain)
| 종류 | 설명 |
| bind | 가장 널리 쓰이는 DNS 서버 프로그램 ISC(Internet System Consortium)에서 DHCP 서버 프로그램과 함께 공개 소프트웨어로 배포되고 있다. named라는 이름의 데몬 사용 http://www.isc.org |
| 레드햇 계열 리눅스 | bind, bind-utils, bind-libs |
| CentOS 7 | yum install bind |
bind 관련 디렉토리 및 파일
| 파일 | 설명 |
| /etc/named.conf | DNS 서버의 전반적인 환경 설정을 담당하는 파일 서버에서 사용하는 zone 파일을 지정한다. |
| /var/named | 다음의 파일들이 위치하는 디렉토리 named.ca - 루트 도메인 서버에 대한 정보를 담고 있는 파일 사용자가 선언하는 zone 파일 |
문제 새결 전략
DNS 서버는 bind라는 이름으로 설치
rpm -ql bind
주요 환경 설정 파일 위치 찾는 방법
rpm -qc bind
/etc/named.conf (NS 환경설정 파일)
| 옵션 | 설명 |
| directory "/var/named" | 이 부분은 DNS 서버에 있는 zone 파일들의 위치, 즉 네임서버 DB파일들이 존재하는 위치를 지정해주는 부분 /var/named 디렉토리에 가보면 zone 파일들이 있을 것 |
| allow-query { any; } | 질의할 수 있는 호스트 지정 네임 서버는 하나의 네임 서버만 있는 것이 아니고 하나의 DNS 서버에는 여러 개의 네임서버를 가져올 수 있다. 이 항목을 허용하겠냐 -> 즉 추가되는 네임서버를 허용하겠냐 |
| allow-transfer { } | 영역 전송 허용, 파일 변경 허가 요청 |
| forward only | 응답이 없을 때 처리하지 않음 |
| forwarders { } | 도메인에 대한 질의 위임 |
forward 방식에는 only와 first가 있으며, default 값은 first
only의 경우에는 지정한 네임서버가 응답을 하지 못하는 경우도 무조건적으로 해당 네임서버로 질의를 하게되어 SERVER FAIL을 반환
하지만 first로 설정된 경우에는 해당 네임서버가 응답하지 않는 경우에는 일반적인 레졸루션을 거쳐서 결과값을 전달
특정도메인을 임의적으로 특정 네임서버에게만 질의해야 한다면 only 옵션을 이용하고, 일반적인 레졸루션을 효과적으로 운영하기 위해서 설정된 forward 설정이라면 first로 설정하는 것이 좋은 설정
2102

- forward only;
- forwarders { 168.126.63.1; }; (1번과 2번은 순서 무관)
- allow-transfer { 192.168.5/24; };
- allow-query { 192.168.12/24; 192.168.3.13; }; (사용 가능한 네트워크 표기법: 192.168.5/24, 192.168.5.0/24)
Master / Slave Server
Master DNS 서버는 Zone 파일을 관리
Slave DNS 서버는 Master로부터 최신 Zone 파일을 받아온다.
DNS zone
내부 네트워크에서 작동하는 DNS 서버를 만들기 위해서는
네트워크 내의 영역에 대한 "IP: 사이트 주소" 가 매칭된 정보를 DNS 서버에 저장해놓아야 한다.
이 정보를 zone 파일 (named.conf)
zone 파일 포맷
ORIGIN [ 영역명 ].
TTL [ TTL 시간 ]
[ 리소스 레코드 영역 ]
[ 영역명. IN SOA [ DNS 서버 주소 ]. [ DNS 관리자 메일 주소 ]. (
[ ZONE 파일 개정파일 입력 ]
[ 보조 DNS 서버 사용 시, refresh 타임 입력 ]
[ 보조 DNS 서버 사용 시, Retry 타임 입력 ]
[ 보조 DNS 서버 사용 시, Zone 타임 입력 ]
[ 네거티브 캐시 유효기간 설정 ] )
[ 영역명 ]. IN NS [ DNS 서버 도메인 주소 ]
[ 영역명 ]. IN MX [ 우선 순위 번호 입력 ] [ 메일 서버 도메인 주소 입력 ]
[ 서버1 HOST ] IN A [ 서버 1 IP 주소 입력 ]
[ 서버2 HOST ] IN A [ 서버 2 IP 주소 입력 ]
[ 리소스 레코드 영역 끝 ]
| 영역 | 설명 |
| ORIGIN TTL |
이 ZONE 파일이 어떤 영역의 도메인에서 사용할 DNS 답변서인지를 명시 질의에 대한 내용을 얼마나 오랫동안 보관하고 있을지를 작성하는 부분 ORIGIN 이름 뒤에 (.) 를 찍어줘야 함 (온점은 최상위 루트 도메인을 의미) 사실 사이트를 들어갈 때 www.naver.com. 을 을 치고 들어가야 하지만, 이를 생략해도 무방하게 되어있다. ( ORIGIN test.kim. 으로 지정한다고 가정) 루트 도메인(.) 아래 .kim 영역 아래, test에 대한 영역에 대해 DNS ZONE 파일을 만들겠다고 선언 당연히 이 .test 영역은 루트 도메인에 등록된 정식 도메인이 아니기 때문에, 공인 DNS 서버로 문의하더라도 제대로된 답변은 돌아오지X TTL은 다른 DNS서버와 연동 시 사용하는 개념 DNS 서버를 naver.com DNS 서버 밑에 등록하여 사용한다고 가정 www.naver.com 이나 mail.naver.com 등에 접속하려면 사용자의 DNS서버가 naver.com DNS 서버에게 해당 주소에 대한 IP 주소를 질의하고 답변을 받아와야 한다. 하지만 이 사이트를 접속한 후 브라우저를 끄고, 다시 접속하는 과정을 반복적으로 벌인다면, naver.com의 DNS 서버는 질의온 내용을 답변하기 위해 계속 ZONE 파일을 뒤적거러야 한다. 그렇다면 질의 응답하는 과정에 불필요한 시간을 소모하고 다른 사람들의 질의에 대한 응답을 지연되게 한다. 따라서 naver.com의 DNS 서버는 사용자의 DNS서버가 첫 질문을 던진 시점에 자신의 ZONE 데이터를 일정 시간 보존할 수 있도록 함으로써 반복되는 질문이 들어오는 것을 차단. 즉 TTL은 타 서버에서 내 DNS 내에 존재하는 ZONE 파일을 얼마동안 보관할 수 있을지 설정하는 것이라고 보면 된다. 값은 초 단위로 입력하거나 1H, 1D 등 포맷을 사용할 수 있다. |
| SOA 레코드 (Start of Authority) |
생성한 ZONE 에 대해 기본적인 정보를 입력하는 부분 첫 줄은 영역명, DNS 서버의 주소, 그리고 관리자 메일 주소 관리자 메일 작성시 ZONE 영역에는 @는 ORIGIN의 값과 동일한 의미를 가진다. root@sss.test.kim. 라고 작성하면 named는 이 내용을 root.test.kim.sss.test.kim 으로 인식 아랫줄은 ZONE 파일의 개정 번호를 작성 개정 번호는 해당 ZONE 파일이 수정되었을 때마다 1씩 올려 수정하게 되는데, 이는 DNS 서버를 이중화 할 경우 보조 DNS 서버에서 주 DNS 서버의 ZONE 파일 내용이 변화되었는지 확인이 필요하기 때문이다. Refresh, Retry, expire 역시 DNS 서버 이중화 구축 시 사용되는 내용. Refresh는 보조 DNS 서버가 주 DNS 서버의 ZONE 정보 변경 체크 시간 간격을 Retry는 보조 DNS 서버가 네트워크 상의 문제나 주 DNS 서버의 이상으로 주 DNS 서버로 접근할 수 없을 때, 얼마의 시간 뒤에 다시 접속을 시도할지 Expire는 보조 DNS 서버가 주 DNS 서버로 접근이 불가할 때, 이전에 받아놓은 주 DNS 서버의 ZONE 정보를 얼마 뒤에 파기할 지 설정하는 부분 |
| DNS 서버 및 메일 서버에 대한 내용을 작성하는 부분 | 특이하게도 ZONE 파일 작성시 DNS 서버와 메일 서버는 지금과 같이 별도의 정보를 따로 작성해주어야 한다. 해당 부분은 DNS 서버와 메일 서버의 사이트 주소에 대해 명시하는 부분으로 보면 되는데, 이 때 사용하는 리소스 레코드는 NS(Name Server)와 MX(Mail Exchanger)이다. test.kim IN NS [ DNS 서버 사이트 주소 ] test.kim IN MX [ 우선 순위 ] [ 메일 서버 사이트 주소 ] 메일 서버에 대한 레코드 입력시, 우선순위가 반드시 들어가야 한다. 이 우선순위는 정수값을 입력 만약 메일 서버가 여러 개 존재하는 경우, 어떤 서버의 IP를 최우선으로 알려줄 것인지 우선 순위를 정한다고 보면 된다. 만약 1순위 서버가 부하가 있거나 작동 이상으로 접근이 불가능하다면 DNS 서버는 다음 순위의 메일 서버 IP 주소를 사용자에게 전달하게 된다. 참고로 MX 레코드는 우선 순위가 빠지면 ZONE 파일 무결성 검사시 오류가 발생 |
| 마지막 부분 - 서버에 대한 실제 IP 주소를 입력하는 부분 |
리소스 레코드가 A로 되어있는데 이 의미는 사이트 주소를 뒤에 명시할 IPv4 주소로 매칭시키라는 의미 www.test.kim IN A 172.30.1.52 는 www.test.kim 주소에 대한 IP질의 시 172.30.1.52를 응답값으로 돌리라는 이야기 참고로 AAAA 레코드는 IPv6에 대한 내용을 입력하라는 의미인데, IPv6를 사용하는 곳이 많지 않아 잘 사용하지 않는다. |
레코드 종류 정리
| 옵션 | 설명 |
| SOA (Start Of Authority) | 도메인의 시작점, 도메인에 대한 선언 네임서버, 관리자의 메일, 타이머 설정 DNS 영역의 주 DNS 서버를 정의하고 일련번호를 통해 영역의 변경사항을 기록 보조영역의 새로고침 및 다시시도 간격을 정의하고 영역의 기본 TTL 값을 정의 |
| A(Host) : 주소/호스트 레코드; | 정규화된 도메인 이름/호스트명을 ipv4에 연결 가장 기본이 되는 레코드, 대부분의 서버는 Host Record랑 연동이 되어 있다 |
| AAAA : 주소레코드; | 호스트를 ipv6에 연결 |
| CNAME(Canonical NAME): 별칭 레코드; |
실제 호스트명(A레코드)과 연결되는 별칭, 별명을 정의 A레코드가 있어야 생성 가능, A레코드에 별명을 달아 주는 것 A레코드와 비슷한 성격을 띄고 있으나, CNAME의 경우, 도메인에 대한 IP를 넣어주는 것이 아닌 도메인에 대한 다른 도메인의 IP 값을 받아 오도록 함 abc.abc 라는 도메인의 IP가 123일 때 a.abc.abc라는 도메인을 cname으로 abc.abc.라는 값을 줄 경우 abc.abc의 IP로 가도록하는 차이. 하지만 두 도메인은 엄연히 다른 도메인 즉, apache의 vhost 설정 시 cname으로 등록된 도메인과 a레코드로 등록된 도메인이 다른 페이지를 띄울 수 있도록 설정이 가능 |
| MX(Mail Exchange) : 메일 교환 레코드; |
메일 서버(사서함)에 도달할 수 있는 라이팅정보 (메일 서버)를 제공 Email 서버에서 이용 |
| TXT (TeXT) |
도메인 이름을 텍스트 문자열에 매치하는데 사용하는 레코드 위의 레코드들과 다르게 ""로 내부에 텍스트 열을 넣는 형태의 레코드 보통 SPF(Sender Policy Framework) 레코드를 등록하거나 그 외 메일 관련 설정을 위해 많이 사용 |
| SRV(SeRVice) : 서버 위치 레코드; |
서비스와 연결되어 있는 레코드 특정 서비스에 대한 특정 도메인을 연결해주기 위한 레코드 레코드 앞에 서비스와 프로토콜을 밑줄(_)과 함께 명시 이를 통해 해당 서비스의 경우 지정된 레코드의 값으로 보내게 됨 |
| PTR(PoinTeR) : 포인터 리소스 레코드; |
역방향 질의 (ip -> domain)를 위한 레코드 다른 DNS 레코드를 가리킴, 역방향 조회에서 A레코드를 가리킬 때 사용 보통 메일 서비스 이용시 혹은 다른 서비스들에서 해당 IP가 사용중인 도메인이 맞는 지 확인하기 위해 이용되며, 호스팅을 받는 입장이라면, 해당 IP를 소유하고 있는 호스팅 업체 측에 등록을 요청해야 한다. 역방향 질의의 경우 일반 도메인과 다른 IP대역에 대한 다른 zone 파일에 등록이 필요 |
| NS(Name Server) : 네임 서버레코드; |
영역을 풀이할 수 있는 DNS서버의 목록을 가지고 있다. |
1401
다음은 DNS zone 파일에 대한 내용이다. ( 괄호 )안에 알맞은 내용을 적으시오.(12점)
$TTL 86400
@ IN SOA ns.linux.co.kr. root.linux.co.kr. (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS ns.linux.co.kr.
IN ( ① ) 10 mail.linux.co.kr.
IN A 192.168.10.11
( ② ) IN A 192.168.10.12
mail IN A 192.168.10.( ③ )
조 건
- 메일 서버의 주소는 192.168.10.13 이다.
- 192.168.10.12 는 www 도메인 IP 이다.
답 :
MX
www
13
2201

1. ihd.or.kr
2. master
3. ihd.zone
4. 13.5.168.192.in-addr.arpa
5. master
6. ihd.rev
2101

1. ns.ihd.or.kr.
2. kait.ihd.or.kr.
3. IN NS ns.ihd.or.kr
4. 15 IN PTR ihd.or.kr
2002

1. acl "ihd" { 192.168.5.13; 192.168.12.22; 192.168.6/24; }
2. forward first;
3. forwarders { 168.126.63.1; }
4. allow-query { 192.168.28/24; 192.168.12.17; ihd; };
2001

ns.ihd.or.kr.
kait.ihd.or.kr.
IN MX 10 ihd.or.kr.
www IN A 192.168.5.13
1902

"22.12.168.192.in-addr.arpa"
master
file "ihd.rev"
forward first
forwarders { 168.126.63.1; }
1802

1. IN MX 10 ihd.or.kr.
2. www IN A 192.168.12.22
3. www1 IN CNAME www
참고
레코드 종류 https://0433.tistory.com/13
https://dev.dwer.kr/2020/03/dns-master-slave.html
https://whitewing4139.tistory.com/123
https://nalt-it.tistory.com/49
https://starrykss.tistory.com/1813
'리눅스' 카테고리의 다른 글
| [리눅스] 디스크 쿼터 Disk Quota, fstab, quotacheck... (0) | 2022.11.03 |
|---|---|
| [리눅스] iptables (0) | 2022.11.02 |
| [리눅스] 아파치(apache) 웹 설정, httpd.conf (0) | 2022.11.01 |
| [리눅스] sendmail (0) | 2022.10.30 |
| [리눅스] 삼바 (SAMBA) (1) | 2022.10.30 |