본문 바로가기
리눅스

[리눅스] DNS 설정

by 깅민 2022. 11. 2.

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

  1. forward only;
  2. forwarders { 168.126.63.1; }; (1번과 2번은 순서 무관)
  3. allow-transfer { 192.168.5/24; };
  4. 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://bono915.tistory.com/entry/Linux-named-DNS-MasterSlave-%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95-%EB%B0%8F-%EB%8F%99%EA%B8%B0%ED%99%94-%EC%84%A4%EC%A0%95-%EB%B0%A9%EB%B2%95

https://blog.naver.com/PostView.nhn?blogId=okaysungnam&logNo=221270122244&parentCategoryNo=&categoryNo=55&viewDate=&isShowPopularPosts=true&from=search 

 

forward http://brd.netpia.com/board/read.asp?code=dns_trouble&article_no=999987&partition=1&category=0&page=1&order_type=thread&order_asc=&s_subject=1&s_content=&s_name=&s_keyword= 

 

https://zigispace.net/1127

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