hann-blume
Linux - DNS (Domain Name Server) 본문
DNS (Domain Name Server)
- 인터넷 통신 시 사용되는 Domain Name주소를 IP주소로 변환해주는 서버를 말한다.
- Domain Name을 query > IP 주소로 변환 (정 방향 조회) 실제 통신 시 사용.
- IP주소를 query > Domain name 으로 변환 (역 방향 조회) 특별한 경우에만 사용.
- TCP/53(영역전송), UDP/53(Query) 사용.
www.google.com
www-> Host Name
google.com>Domain.Name
' . ' ->Root Domain, 평소에는 생략하고 사용하지만 실제로는 붙어있는 것이라 생각하면 된다.
1. Host Name
Host Name의 경우는 실질적으로 해당 도메인에 있는 서비스를 구분하는 이름 값이다.
예를 들어 대부분의 회사는 Web Server의 Host Name을 "www"를 사용하고,
FTP Server의 Host Name은 "ftp"로 사용한다.
이처럼 각 회사내의 서비스를 구분하는 이름이며,
모든 사람이 다같이 사용할 수 있는 이름이 된다.
2. Domain Name
Domain Name의 경우에는 우리 회사자체를 나타내는 이름으로써,
전세계에서 유일한 이름으로 사용된다.
naver 회사의 경우 인터넷 상에서 사용하는 Domain Name은
naver.com(대부분 회사자체 이름)
Domain Name을 전세계에서 유일하게 사용하기 위해서는
반드시 일정 비용을 지불해야 사용할 수 있다.
3. Root Domain
Root Domain이란 모든 Domain Name의 시작점이다.
기본적으로 전세계의 모든 Domain Name은 Tree구조 형식으로 생성이 되는데
이때 시작점이 "." 이라는 이름으로 시작된다.
실질적으로 "."sms Client에서는 사용하지 않는 이름이지만,
DNS서버를 구축 및 관리하는데 있어서는 반드시 "."의 존재를 생각해야 한다.
[Record의 종류]
SOA Record (Start Of Authority)
필수적인 Record로 Domain을 관리할 수 있는 권한을 정의하고,
Slave DNS서버(보조네임서버)와의 연결에 관한 값을 정의하며,
모든 DNS의 첫 번째 레코드로 설정한다.
여기서 권한이란, 내가 관리하는 Domain Name에 대한 모든 권한은
SOA Record에서 정의한 DNS Server가 갖고 있다는 말이 된다.
NS Record (Name Server)
해당 Domain에 대한 영역파일을 보유하고 있는 Server를 지칭하는 Record, SOA와 마찬가지로
필수적인 Record가 된다.
(영역 파일이란 Domain을 실질적으로 정의하는 File을 말한다.
추후 생성할 /var/named/ 하위의 파일이 영역파일이 된다.)
A(AAAA) Record
실질적으로 가장 많이 사용되는 Record로써,
Host Name에 대한 IP 주소를 Mapping 하는 Record이다.
(AAAA Record는 IPv6용 A Record)
Host Name은 각 Service를 구분하는 이름이므로 A Record를 이용하여
각 Service가 실행되고 있는 Server의 IP 주소와 Host Name을 Mapping 한다.
A Record - www.192.168.131.129 (Web Server IP)
www(Host Name)+naver.com(Domain Name) = FQDN : www.naver.com
A Record - ftp 192.167.1.130 (FTP Server IP) ftp(Host Name)+naver.com(Domain Name)= FQDN : ftp.naver.com
FQDN = 실제 Client가 사용하는 Domain Name 형태의 주소를 말한다.
CNAME Record
A Record에서 Mapping 된 Host Name의 별칭을 지칭하는 Record
대표적으로 www.daum.net 접속을 하게되면, Daum 회사의 Web Server로 접속,
wwww.daum.net을 입력하여도 Daum회사의 Web Server로 접속이 된다.
"w"를 4개 입력해도 접속이 되는 이유는 Daum 관계자가 Host Name "www"의 별칭을
"wwww"로 CNAME Record로 정의해 놓았기 때문이다
MX Record
MX Record는 메일 서버를 지칭하는 Record로써 메일서버의 IP주소를 Mapping하는 용도로 사용된다
SPF Record
메일서버 정보를 사전에 DNS에 공개 등록함으로써 수신자로 하여금
E-Mail에 표시된 발신지 정보가 실제 메일서버의 정보와
일치하는지를 확인할 수 있도록 하는 인증기술이다.
대다수 스팸 발송자가 자신의 신원을 감추기 위하여 발신지 주소나 전송경로를
허위로 표기하거나 변경하는 경우가 많다는데서 착안되었다.
발신자 : 자신의 메일서버 정보와 정책을 나타내는 SPF 레코드를 해당 DNS에 등록.
수신자 : E-Mail 수신 시 발송자의 DNS에 등록된 SPF 레코드를 확인하여
해당 E-Mail에 표시된 발송 IP와 대조하고, 그 결과값에 따라 수신여부를 결정 .
DNS 설치
# yum -y install bind-*
# systemctl start named
# systemctl enable named
# firewall-cmd --permanent --add-service=dns
# firewall-cmd --reload
# vi /etc/resolv.conf
내 기본 DNS 서버를 지정할 수 있다.
nameserver 192.168.131.100 -> 추가
# vi /etc/named.conf
13 llisten-on port 53 { 127.0.0.1; }; -> { any; }; 로 변경
53번 포트에 대해 어디서든지 쿼리 질의를 받을 수 있도록 any로 변경.
21 aallow-query { localhost; }; -> { any; }; 로 변경
내가 쿼리를 허용할 ip주소를 명시해준다.
33 recursion yes; -> no; 로 변경
# vi /etc/named.rfc1912.zones -> 내가 사온 도메인 네임과 영역파일을 정의하는 파일이다.
13~17번째줄
37~41번째줄
복사해서 맨 아래 줄에 붙여넣고 수정.
zone "hann.com" IN {
type master;
file "hann.zone";
allow-update { 192.168.131.100; };
allow-transfer { 192.168.131.100; };
};
zone "131.168.192.in-addr.arpa" IN {
type master;
file "hann.rev";
allow-update { 192.168.131.100; };
allow-transfer { 192.168.131.100; };
};
위쪽은 정방향 영역에 관한 정의이며
해석은
hann.com 이라는 도메인 네임을 정의하겠다는 의미이며,
file은 영역파일의 이름을 명시해준다.
allow update는 내가 영역파일에 대한 변화가 생겼을 때 업데이트 허용할 ip를 적어주는곳
allow transfer은 영역파일을 전송할 곳을 지정하는 옵션으로
무조건 slave서버로만 영역파일을 전송하도록 만들어야한다.
Any로 설정되어있으면 어디서든 영역전송을 요청하면 주겠다는 의미로
(보안취약) dns보조서버를 구축할 곳에 정의
아래쪽은 역방향 영역에 관한 정의이다.
영역파일 만들기
# cd /var/named/
# cp named.localhost hann.zone 위에서 정의한 영역파일의 이름
# cp named.localhost hann.rev 위에서 정의한 역방향 조회 파일 이름
영역파일은 기본적으로 named가 소유하므로 소유권을 변경해준다
# chown .named hann.*
영역파일 생성/레코드 정의
# vi hann.zone
$TTL 1D
@ IN SOA ns1.hann.com. root(
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.hann.com.
ns1 IN A 192.168.131.100
www IN A 192.168.131.100
$TTL 1D - 영역파일의 유효기간, 1일로 설정되어있다.
호스트네임 정의 ( ns1 , www ) A레코드로 정의 / IN은 사용형식 / 호스트네임과 매칭시킬 주소
ns1.hann.com = 192.168.131.100
www.hann.com = 192.168.131.100
CNAME레코드는 내가 미리 만들어놓은 호스트값에 대한 별칭. ( test )
test.hann.com =www.hann.com 에 매핑된 ip주소를 한번더 검색 , A레코드 구성이 선행이 되어야 실행된다.
단독으로 사용 불가능하다.
CNAME 레코드는 없어도 상관없다.
Serial – 영역파일의 수정 넘버값으로 영역파일에 변동사항이 있을 때 수동으로 고쳐야한다.
년도 포함해서 날짜를 써준다.
Retry - 주서버와 보조서버가 연결이 안됬을 때 새로고침할 시간.
Expire - 연결이 안되면 1달 뒤에 해제하겠다는 의미, 영역파일을 없애겠다는 의미와 같다.
Minimum – 캐시 기간, 일반 클라이언트가 레코드에대한 ip주소를 알아갔을 때 알아간 레코드에 대한 캐시의 유효기간
----------------------------------------------------------------
역방향 파일 생성
# vi hann.rev
$TTL 1D
@ IN SOA ns1.hann.com. root(
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.hann.com.
100 IN PTR ns1.hann.com.
100 IN PTR www.hann.com.
PTR – 영방향에 관련된 레코드 , A레코드의 반대 개념
앞쪽에는 아이피 주소 매핑시켜줄 도메인 네임을 PTR 오른쪽에 정의
# systemctl restart named
----------------------------------------------------------------
#nslookup
정방향조회 테스트
www.hann.com
역방향조회 테스트
192.168.131.100
만약 여기서 192.168.131.100 이 나오지않거나
# systemctl restart naemd
에서 오류메세지가 나온다면
설정파일에서 오타가 발생한 것이다.
여기까지 DNS 에 대한 설명이 끝났다.
'Linux' 카테고리의 다른 글
Linux - SSL/암호화 (0) | 2020.03.22 |
---|---|
Linux - Apache / Web Server (0) | 2020.03.22 |
Linux - ShellScript (0) | 2020.03.22 |
Linux - Cron / CronTab (0) | 2020.03.22 |
Linux - Backup (0) | 2020.03.22 |