본문 바로가기

[Linux]

[Linux] 리눅스 DNS

반응형

DNS (Domain Name Service)

 

Domain Name을 IP주소로 변환 (정방향 조회)

일반적인 클라이언트가 조회하는 방식

internet 통신은 (TCP/IP) 프로토콜을 이용하여 통신을 진행

3계층 header에 IP 주소가 들어간다.

클라이언트에게 IP주소 체계를 쉽게 사용할 수 있도록 도움을 주기위해 반드시 필요

 

IP주소를 Domain Name으로 변환 (역방향 조회)

특수한 상황에서만 사용

대표적으로 mail server > spam mail 필터링

 

DNS 사용 Port : TCP/53(영역전송), UDP/53(영역전송, DNS Query 전송)

 

dns도 이중화가 가능

master가 죽으면 slave가 대체 

master와 slave는 동일한 내용을 가지도있어야되고

영역파일( zone file )을 만들어서 사용 - master에서 구성

slave에서는 master에서 전송받아서 사용

slave에서 다시 만드는게 아니다 > 영역전송(server to server 통신 구조)

 

Domain Name 구조

www.google.com.(마지막 "." 오타 아님 - root domain)

www(Hostname) . google.com(Domain Name) . (Root Domain) 

<출처> - https://www.researchgate.net/figure/Domain-Name-Structure_fig1_315516458

. (root domain)

모든 Domain Name에는 마지막에 .(root domain) 이 붙는다.

전세계에 13대의 root domain server가 존재

없는 나라에는 mirror server를 두고 사용

 

root domain server가 모든 관리 리소스를 감당할 수 없다

 

TOP-Level Domains

하위 domain server를 두고 하청을 주는 개념

ex) 모든 edu로 끝나는 domain name를 가지고 접속하는 트래픽은 edu domain server가 관리

 

Second-Level Domains / Sub Domain

보통 회사 기업명 사용

엔지니어가 관리해야하는 domain server 영역

돈을 내고 domain을 사고 영역위임을 받아야만 사용할 수 있다.

 

Hostname Domain

WEB > www

FTP > ftp

DNS > ns

Mail > mail 등등

 

 

각 서비스(호스트 이름)에 대응하는 서버의 IP주소를 지정을 해 놓아야 한다.

FQDN (Full Qualified Domain Name) 

 

DNS Record 종류

SOA Record (start of Authority)

Domain을 관리할 수 있는 권한을 정의, slave DNS서버(보조네임서버)와의 연결에 관한 값을 정의

모든 DNS의 첫번째 레코드로 설정

필수적인 Record

 

NS Record (Name Server)

해당 Domain에 대한 영역파일을 보유하고 있는 Server를 지칭하는 Record

SOA와 마찬가지로 필수적인 Record

 

A(AAAA) Record

가장 많이 사용되는 Record

Hostname에 대한 IP주소를 mapping하는 Record

Hostname은 각 서비스를 구분하는 이름으로 A Record를 이용하여 각 서비스가 실행되고있는 서버의 IP주소와 Hostname을 mapping 한다.

ex) A Record - www 192.168.1.129 (web server Ip) www + itsy.com = FQDN : www.itsy.com 

ex) A Record - ftp 192.168.1.130 (ftp server Ip) ftp + itsy.com = FQDN : ftp.itsy.com  

 

CNAME Record

A Record에서 mapping된 Hostname의 별칭을 지칭하는 Record

동일한 IP주소로 mapping이 가능 / A Record를 하나더 만들어도 되지만 CNAME Record를 자주 사용

ex) google.com > 8.8.8.8

      gooogle.com > 8.8.8.8

 

MX Record

ID@[domain Name] 메일서버를 운영하기 위해서는 DNS가 필수 

MX Record는 메일 서버를 지칭하는 Record로써 메일서버의 IP주소를 mapping하는 용도로 사용

 

SPF Record (Sender Policy Framework) : 메일서버등록제 Record

메일서버 정보를 사전에 DNS에 공개 등록함으로써 수신자로 하여금 E-mail에 표신된 발신지 정보가 실제 메일서버의 정보와 일치하는지를 확인할 수 있도록 하는 인증기술

 

수신자의 Domain을 확인하고 역방향으로 조회

인증기관에 등록된 IP인지 확인

수신 허용되어 있는 곳 이외에서는 mail을 차단

 

발신자 : 자신의 메일서버 정보와 정책을 나타내는 SPF 레코드를 해당 DNS에 등록

수신자 : E-mail 수신 시 발송자의 DNS에 등록된  SPF 레코드를 확인하여 해당 E-mail에 표신된 발송 IP와 대조하고 그 결과값에 따라 수신여부를 결정

 

zone file 

수동으로 만들어주어야 한다.

Record들이 들어간다.

client 요청(www)이 들어오면 서버는 zone file에 들어있는 내용을 토대로 IP(web server)를 반환해준다.

client는 받은 IP주소로 다시 web서버에 접속을 한다.

 

DNS 서비스 동작 순서


Linux DNS

Linux DNS "Client"가 사용하는 파일들

# vi /etc/resolv.conf

 

# vi /etc/hosts

 

# vi /etc/host.conf

cache 먼저 찾고 bind

 


bind 패키지 설치하면 named 계정과 그룹에 자동으로 생성된다.

Linux-01 (MASTER)

# firewall-cmd --permanent --add-port=53/tcp

# firewall-cmd --permanent --add-port=53/udp

# firewall-cmd --reload 

 

# yum -y install bind-*

# vi /etc/named.conf

# vi /etc/named.rfc1912.zones << 여기서 설정한 zone file 이름으로

# vi /var/named/ysy.com.zone << 생성

# vi /var/named/ysy.com.rev << 생성

 

# systemctl restart named

 

Linux-02 (SLAVE)

# firewall-cmd --permanent --add-port=53/tcp

# firewall-cmd --permanent --add-port=53/udp

# firewall-cmd --reload 

 

# yum -y install bind-*

# vi /etc/named.conf

# vi /etc/named.rfc1912.zones 

 

# systemctl restart named

 


Linux-01 (MASTER)

# firewall-cmd --permanent --add-port=53/tcp

# firewall-cmd --permanent --add-port=53/udp

# firewall-cmd --reload 

 

# yum -y install bind-*

 

# vi /etc/named.conf

line 13 : DNS port 53에 어떤 IP가 접근할 수 있는지 설정

line 21 : 재귀 질의가 올 때 응답할지에 대한 설정

line 22, 23, 24 : hostname에 "_"가 있으면 오류가 뜨는데 무시하는 옵션

line 33 :  root domain - cache server 역할을 수행하겠다. (모르는 domain을 검색하겠다.) 꺼놓는게 좋다

만약 recursion이 필요하다면 dns 서버를 하나 더 만들면 되지만 너무 비효율적이므로 acl을 활용

options { } 위에 작성하고

line 34 : 추가

 

# vi /etc/named.rfc1912.zones << 여기서 설정한 zone file 이름으로

 

기존에 작성된 내용은 localhost에 대한 영역 정의

운영하는데 필요한 내용은 아님

 

돈을 주고 domain name을 사오면 해당 domain name에 대한 정의 작업을 수행

line 43 : 구매한 Domian Name (정방향 조회 영역)

line 45 : 사용할 zone file 이름

line 46 : slave DNS Server 에게 zone 파일을 전송하겠다. { any; }; 절대 사용하면 안됨

 

line 49 : (역방향 조회 영역) 앞에 옥텟값 3개를 뒤집어서 작성

 

# vi /var/named/ysy.com.zone << 생성

chown root:named /var/named/ysy.com.zone

cp /var/named/named.localhost /var/named/ysy.com.zone으로 복사하고 편집

SOA record (필수)

NS record (필수)

A record

  client에게 알려줘야할 서비스들마다 hostname을 하나씩 정해서 정의

CNAME record

 

 

# vi /var/named/ysy.com.rev << 생성

SOA record (필수)

NS record (필수)

PTR (point to record)

마지막 네번째 옥탯값을 지정해준다

 

# systemctl restart named

 

Linux-02 (SLAVE)

# firewall-cmd --permanent --add-port=53/tcp

# firewall-cmd --permanent --add-port=53/udp

# firewall-cmd --reload 

 

# yum -y install bind-*

 

# vi /etc/named.conf

 

# vi /etc/named.rfc1912.zones

 

# systemctl restart named

 

자동으로 master의 zone파일을 받아오는걸 확인

 


서비스 확인

윈도우에서 (192.168.1.200)

리눅스에서 (192.168.1.150)

 

 

 

 

recursion은 acl로 192.168.1.150만 가능하게 해놨기 때문에 

www.google.com를 요청했을때 윈도우 (.200)에서는 안되고 리눅스 (.150)에서는 가능한걸 확인 할 수 있다.

반응형

'[Linux]' 카테고리의 다른 글

[Linux] 리눅스 ssl / web server  (0) 2022.07.12
[Linux] 리눅스 Web Server  (0) 2022.07.07
[Linux] 리눅스 Ansible/Playbook 실습  (0) 2022.07.02
[Linux] 리눅스 Ansible 실습  (0) 2022.07.02
[Linux] 리눅스 Ansible  (0) 2022.06.30