본문 바로가기

Linux/CentOS

DNS

DNS
- Domain Name Service or Domain Name Sytem
- Internet에 존재하는 무수히 많은 서버들을 사람이 쉽게 기억하고 접근할 수 있도록 문자 주소(FQDN)를 이용한 접근을 도와주는 서버
> 문자 주소(FQDN)   <-> IP address 상호 변환
 
-FQDN은 일반적으로 말하는 전체 도메인 주소
> host name과 domain name으로 구성
(ex. www.google.com 이라는 주소는 www라는 host name과 google.com 이라는 domain name으로 구분)
 
> 영문자 및 숫자를 사용한 이름으로 자원에 대한 접근이 가능
 
- DNS server가 FQDN을 IP address로 변경할 때 Domain Namespace를 바탕으로 하여 domain name을 사용하는 nameserver에서 FQDN에 대한 IP address를 받아온다.
 
> Domain namespace에 등록된 서버에서 해당 장치의 IP를 알아온다.
 
* 정보
패키지        :    bind-*
데몬            :    named
방화벽        : port=53/tcp, service=dns
설정 파일  :    /etc/name.conf
 

 

 
 
 
Domain Namespace
 
- InterNIC에서 관리, Tree 구조로 구성되어 있다
 
> 효율적인 관리를 위해 최상위에 root domain을 운용하고 root domain에서 top-level domain으로, top-level domain에서 second-level domain으로 각각 위임 처리를 한다.
 
second-level domain에서는 목적지 FQDN의 IP를 확인하여 돌려준다.
 
- 구조 예시
 

 
 
- root domain
 
> InterNIC에서 관리하는 Domain namespace의 최상위 서버
 
> 전 세계에 총 13개가 있으며 a ~ m까지의 이름을 붙여서 식별

 

> top-level domain들의 주소를 갖고 있다
(위임 처리가 되어 있어서 FQDN을 보고 해당 이름의 top-level domain의 주소를 알려준다.)
 
-top-level domain
> FQDN의 마지막 단락
(ex. com, net, org 등)
 
> 해당 이름으로 끝나는 second-level domain들의 주소를 갖고 있다
(위임 처리가 되어 있어서 해당 nameserver의 주소를 알려준다)
 
- second-level domain
> 일반적으로 각 회사에서 운영하는 nameserver
   (ex. google.com, nate.com 등)
 
> FQDN에서의 host name을 record를 이용하여 특정 IP address에 매핑
(host name + domain name이 되면서 만들어지는 FQDN을 문의하면 해당 IP address를 안내)
 

 

DNS server의 역할
 
1. IP address와 FQDN을 상호 변환
 
1) client는 자신의 cache를 확인(hosts 파일 확인 후 DNS cache 확인)
2) 주소가 나오지 않았다면, IP 설정의 DNS server 주소를 확인하여 해당 장치에 FQDN에 대한 IP address 질의
 
3) 질의를 받은 DNS server는 자신의 zone 영역을 확인(= nameserver 확인)
 
4) zone 영역에 해당 주소가 없다면 자신의 cache 확인(hosts 파일 확인 후 DNS cache 확인)
 
5) 찾지 못할 경우, root hint를 확인하여 root domain의 IP address를 확인하고 FQDN을 질의
 
6) root domain은 FQDN 중 top-level domain을 확인하여 해당 nameserver의 주소를 돌려준다.
 
7) DNS server는 top-level domain에 FQDN을 질의
 
8) top-level domain은 FQDN 중 second -level domain을 확인하여 해당 nameserver의 주소를 돌려준다.
 
9) DNS server는 second-level domain에 FQDN을 질의
 
10) second-level domain은 자신의 record를 확인하여 FQDN 중 host name과 일치하는 이름의 record에 저장된 IP address를 DNS server에게 돌려준다.
 
11) DNS server는 5 ~ 10번 과정을 거치면서 알게된 주소들을 자신의 cache에 저장
 
12) client에게 FQDN에 대한 IP address를 돌려준다.
 
13) client는 자신의 cache에 FQDN에 대한 IP address를 저장하고 해당 주소로 연결 시도
 
 
** root hint : root domain들의 주소를 담고 있는 파일
DNS server 설치 시 함께 설치
 
 
2. nameserver 구성

DNS server를 설치하면 nameserver를 구성할 수 있는(= zone 영역을 만들 수 있는) 파일들이 함께 설치

> 파일의 내용을 작성하여 nameserver로 동작이 가능하다
 
root domain, top-level domain, second-level domain은 전부 nameserver
 
3. Linux에 기본적으로 존재하는 DNS 사용에 관련된 파일
 
1) /etc/hosts
 
IP  주소        문자 주소        [문자 주소] ... [문자 주소]
 
-> 컴퓨터에 해당 문자 주소가 입력 되면 같은 줄에 작성된 IP 주소로 연결한다.

 

지금 적혀있는 것들은 형식에 맞춘 loopback 주소만 적혀 있는 상태

-> ipv4 (127.0.0.1 표기) ipv6 (: : 1 표기)

 

가상머신에 접속 firefox 실행

 

네이버 접속해보기

설정 파일에 내 ip 주소 추가

다시 네이버 접속 시도시 실패

 

이유 : hosts 파일 설정 때문에 자신의 ip로 접근(www.naver.com 입력시 192.168.10.128로 접근 시도)

-> 내 ip에 webserver가 따로 설치 되어 있는 것이 아니기 때문에 접속 오류 발생

 

다시 원래대로 변경

 

2) /etc/resolv.conf
            nameserver     <DNS IP>

 

컴퓨터가 입력된 FQDN에 대한 IP 주소를 모른다면 이 파일을 보고 DNS server로 찾아간다.
 
> 가능한 이유 : network 데몬이 실행될 때 마다 IP 설정 중 DNS 주소가 resolv.conf에 작성된다
 

vi로 파일 확인
ip 변경 해보기
nate에 접속 시도 하면 실패

 

- 접속 실패 이유 : DNS가 잘못 설정 되어 있다. 내 ip는 DNS의 역할을 하고 있지 않기 때문에 외부로 찾아갈 수 없다. 

 

 

네임 서버 추가
다시 접속 시도 하면 성공

 

-> 가능한 이유 : dns 설정에서 dns 1번째에서 못찾으면 2번째의 dns로 접속 하는 방식이기 때문에 

 

 

네트워크 데몬 재실행

 

처음에 설정된 DNS 설정 파일 위치

 

 

※ resolv.conf에 설정한 파일은 일시적이라 재부팅하거나 데몬을 재실행 하면 처음 설정된 DNS로 돌아온다. 

 

 

DNS server 구성 

 

DNS 패키지 설치
DNS 설정 파일 위치
DNS 설정 파일의 option 영역
logging 영역
zone 영역 - root hint
include 영역 - 참조 영역

 

-> 총 4가지의 영역으로 구분 되어 있다. 

 

 

- 설정 변경 

 

lookback 주소에서 누구든 사용 가능하게 any로 변경

 

15 directory : 어떤 이름의 디렉토리를 사용할 것인지 설정 -> 설정 파일 안에는 절대 경로로만 되어 있다. 

 

but, 조금만 아래로 내려가면... 

 

위와 같은 경로를 확인

 

-> 위와 같은 형식의 파일들은 directory 설정에 적힌 경로 안쪽에 위치하고 있다. (/var/named/)

 

 

53 port의 질의 응답을 누구든지 허용하겠다는 설정 -> 동일하게 설정해주면 된다.

 

log가 어느 파일에 남을 것인지에 대한 설정 파일
root domain을 찾아가기 위한 zone 영역 설정 -> file에 적힌 named.ca 을 확인하고 찾아간다.
named.ca 확인

 

. 을 a ~ m까지의 정식 주소로 변경
각 a ~ m까지의 정식 주소를 ipv4(A) 와 ipv6(AAAA)로 설정

-> DNS server는 여기 있는 정보를 보고 root domain을 찾아 갈 수 있다. 

 

 

다른 파일을 include

 

-> DNS 설정에는 현재 2개의 파일을 include

 

※ named.rfc1912.zones 파일 

 

-> zone 영역을 모아놓는 파일 , DNS server를 nameserver로서 동작하기 위해서 zone 영역을 만들게 되고 그 때 zone 영역을 만들어서 저장하는 파일

 

-> rfc1912 문서 형식에 맞춰 설정

 

경로 위치 확인
vi 편집기로 열어서 확인

 

-> zone 영역 추가 

 

 

- file "linux.edu.zone" : 해당 파일에 zone에 대한 상세 정보를 저장

-> 현재 경로가 설정 되어 있지 않기 때문에 이 파일의 저장 위치 역시 directory 설정에 적힌 경로 안쪽에 위치하고 있다. (/var/named/)

 

 

경로 안에 파일들 확인

-> /etc/named.rfc1912.zones 설정 파일에 적었던 linux.edu.zone 파일을 vi editior로 만들어준다.  

 

설정 파일에 위와 같이 작성 후 저장 하고 나간다.
/etc/named.rfc1912.zones 파일 설정에 역방향 설정 추가

 

50. zone "10.168.192.in-addr.arpa" -> Network ID : 192.168.10을 역방향으로 작성 + .in-addr.arpa 형식에 맞춘다. 

 

설정된 파일 형식 이름의 파일 똑같이 생성

 

역방향 zone 설정하기

 

11. 128 -> 내 ip 주소 마지막 host id 작성 

 

 

 

※ /var/named 디렉토리 하위에 정방향과 역방향 zone 파일을 만들었다. 

 

데몬 재실행 하여 설정 파일을 적용한다.
/etc/resolv.conf 파일 설정 변경

-> 내 ip를 먼저 dns 참조 할 수 있도록 위에 설정 추가하기 

 

-> dns 설정 확인 후 nslookup 명령을 통해서 정방향 조회(www.linux.edu), 역방향 조회(192.168.10.128) 확인 하기 

 

 

 

※ 각 파일 설정 내용 정리 

 

 

-> 각각 정방향과 역방향 설정 파일 내용 

 

- allow-update : 업데이트한 내용을 누구에게 알릴 것인지 설정 

- aloow-transfer : 영역 전송을 누구에게 해줄 것인지 설정 

 

 

표시해준 해당 영역은 시간 값 설정 파일

-> 위와 아래 형식은 동일한데 아래쪽은 위의 내용을 축약한 것이다. 

 

영역은 왼쪽 위(메인 영역) , 왼쪽 아래(레코드 영역), 오른쪽 위(각 종 설정 값)  4가지로 나눠진다. 

 

1. 왼쪽 위 

 

- TTL : 이 데이터의 생존 시간 (유효 기간)

- @ : 문법 형식에 맞추기 위해 작성

- IN : 인터넷에서 사용되는 설정 -> 왼쪽 아래 레코드 영역으로 계승되서 사용한다.

- SOA : Start Of Authority , 인증과 시작을 담당하는 레코드로 아래 레코드 영역, 시간 값들이 이상 없으면 NS 동작을 시작 시켜준다.

 

2.  왼쪽 아래

 

8.          IN               NS :     어떤 이름의 네임서버가 있는지 식별하는 용도 - SOA 뒤에 이름과 맞춰주는 것이 좋다!

 

9.          IN              A  : 위의 네임 서버의 IP 지정 

 

11. www           IN           A  : 정방향 사용 레코드 -> www + linux.edu   >> www.linux.edu  -> ip가 192.168.10.128이라고 알려준다. 

 

12.128            IN           PTR : A레코드의 대응되는 레코드로 역방향 레코드 설정 -> 128 + 10.168.192.in-addr.arpa  >> 192.168.10.128 -> www.linux.edu

 

 

3. 오른쪽 위

 

- serial : 일련 번호 , 이 파일의 내용이 변경 되었을 때마다 +1, 나중에 보조 영역에 있을 때 내가 가진 serial 보다 master 영역의 serial이 높은 것을 보고 업데이트가 있었는지 여부를 확인 할 수 있다. 

 

- minimum : 정보 최소 생존 시간 , 동일한 네임 서버 정보를 계속 받아가는 것을 방지하기 위해서 사용한다.

 

- refresh , retry, expire :정보를 처음 받아 왔을 때 0초부터 시작하여 가다가 refresh 시간이 되면 retry 시간 이후에 갱신하고 다시 0부터 시작한다. 만약 갱신이 안되고 expire시간까지 갈 경우 이 모든 정보를 버린다. 

 

 

※ systemctl restart named 를 실행 했는데 아래 같은 오류가 발생한다면?

 

 

-> 어딘가 설정 파일에 잘못 작성된 부분이 생긴 것이기 때문에 systemctl status named | journalctl -xe 로 트러블 슈팅을 진행한다.

'Linux > CentOS' 카테고리의 다른 글

WEB  (0) 2022.08.30
DNS 구성  (0) 2022.08.30
samba  (0) 2022.08.29
server와 client의 NFS  (0) 2022.08.28
NFS  (0) 2022.08.28