(Week 5 - Day 1) - (2/2)
(Week 5 - Day 2) - (1/2)
DNS 서버
도메인 네임을 IP (정방향), IP주소를 도메인 네임으로(역방향) 변환하는 프로토콜
도메인 주소를 root 도메인 부터 계층적으로 구성하고 관리하는 프로토콜
도메인 주소는 계층적으로 구성되어 있음
DNS 동작 방식
DNS 서버는 DNS 서버 한 대에서 모든 DNS 정보를 처리하는 방식이 아닌,
계층적으로 이루어진 구조를 통해 단계별로 정보를 제공하고 있다.
DNS 구조
재귀적 쿼리(Recursive Query)
클라이언트가 DNS 서버에게 요청하는 쿼리
반복적 쿼리(Iterative Query)
재귀적 쿼리를 요청 받은 DNS 서버가 root 도메인 부터 해당 도메인을 관리하는 도메인 네임 서버를 찾아가는 쿼리
정방향 영역(Forward Zone)
도메인 네임에 대한 IP 주소정보를 관리하는 영역
역방향 영역(Inverse Zone)
IP 주소에 대한 도메인 네임 정보를 관리하는 영역
DNS Cache
이전에 질의하여 이미 시스템이 알고 있는 도메인 네임과 IP 주소 정보
DNS 레코드
레코드 종류 | 의미 |
A, AAAA | 특정 호스트의 주소(IPv4, IPv6) |
CHAME | 호스트의 별칭(Alias) 정보(Canonical Name) |
MX | 메일 교환기(Mail Exchanger)에 대한 정보 |
NS | 도메인의 네임 서버 정보(Name Server) |
PTR | 도메인 이름에 대한 포인터(Pointer) |
SOA | 영역의 권한 시작 정보(Start of Autority) |
TXT | 다양한 정보를 포함할 수 있는 텍스트 문자열 |
주요 DNS 레코드 목록 |
DNS 조회 방법
host
host [OPTION] name [SERVER]
# host google.com 8.8.8.8
-v : 상세한 정보를 표시
-t : 조회할 레코드의 타입을 지정
-a : DNS를 조회할 때 모든 타입의 레코드를 조회
-l : 리스트 모드로 결과를 출력
(리스트 모드 : 일반적인 DNS 레코드 조회가 아닌 영역 전송 형태로 서버에서 영역의 정보를 전송 시도)
nslookup
기본적으로 대화형으로 실행된다.
nslookup 만을 사용하여 대화형으로 요청을 전달하거나
이름과 서버를 지정하여 비대화형으로 명령을 실행할 수 있다.
nslookup [OPTION] [NAME] [SERVER]
# nslookup google.com 8.8.8.8
nslookup
> server 8.8.8.8
Default server: 8.8.8.8
Address : 8.8.8.8#53
> set type=ns
> naver.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-autoritiative answer:
naver.com nameserver = ns2.naver.com
naver.com nameserver = ns1.naver.com
dig
다른 명령에 비해 기본 출력 정보가 상세한 특징을 가지고 있다.
하지만 host 명령이 dig 명령처럼 상세한 정보를 표시할 수 있기에 주로 host를 사용한다.
dig [@SERVER] [OPTION] [NAME]
# dig @8.8.8.8 google.com
DNS 서버 설치 및 구성
BIND 설치
yum info bind
DNS 서비스 상태 확인
설치 직후 named 서비스의 상태 확인
systemctl status named.service
재부팅 해도 실행 유지
systemctl status named.service
name파일 설정
vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
directory "/var/named"; // DNS Zone 파일 디렉터리 위치
allow-query { any; }; // DNS 쿼리 허용 대상
recursion yes; // 다른 도메인에 대한 쿼리 허용 여부 지정
}
systemctl start named.service
systemctl enable named.service
DNS 서비스 방화벽 허용
firewall-cmd --add-service=dns
firewall-cmd --add-service=dns --permanent
Zone 구성
DNS 서버를 캐싱 용도로만 사용할 수도 있지만, 특정 도메인에 대하여 직접 DNS 레코드를 관리하면서
DNS 응답을 수행하도록 설정할 수 있다.
이를 위해서는 영역(Zone)을 생성해야 한다.
관리할 Domain Zone 추가
vim /etc/named.rfc1912.zones
zone "DOMAIN" IN {
type master;
file "ZONE_FILE";
allow-update { none; };
// Work Domains
zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
};
관리할 Domain Zone 파일 생성 및 작성
cd /var/named
vim ZONE_FILE
$TTL 1D
@ IN SOA ns1 hostmaster.example.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN A 192.168.56.102
ns1 IN A 192.168.56.102
ns2 IN A 192.168.56.110
www IN A 192.168.56.102
ftp IN A 192.168.56.110
@ IN NS ns1
@ IN NS ns2
test1 IN CNAME www
test2 IN CNAME ftp
DNS BIND 서비스 재시작
systemctl restart named.service
역방향 Zone 설정
vim /etc/named.rfc1912.zones
zone "56.168.192.in-addr.arpa" IN {
type master;
file "192.168.56.rev";
allow-update { none; };
};
cd /var/named/
cp named.localhost 192.168.56.rev
vim 192.168.56.rev
Slave 서버 구성
MASTER 서버
vim /etc/named.rfc1912.zones
zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
allow-transfer { 192.168.56.101; };
};
cd /var/named/
cp namd.localhost example.com.zone
vim example.com.zone
$TTL 1D
@ IN SOA ns1 domainmaster (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN A 192.168.56.102
ns1 IN A 192.168.56.102
ns2 IN A 192.168.56.101
@ IN NS ns1
@ IN NS ns2
www IN A 192.168.56.101
ftp IN A 192.168.56.102
chown :named example.com.zone
systemctl restart named.service
Slave 서버
vim /etc/named.rfc1912.zones
zone "example.com" IN {
type slave;
file "slaves/example.com.zone";
masters { 192.168.56.102; };
};
systemctl restart named.service
'Linux' 카테고리의 다른 글
[Linux] 23. NFS 스토리지 (0) | 2022.08.10 |
---|---|
[Linux] 22. FTP 서버 (0) | 2022.08.09 |
[Linux] 20. SELinux (0) | 2022.08.09 |
[Linux] 19. 소프트웨어 패키지 (0) | 2022.08.03 |
[Linux] 18. 리눅스 부트 프로세스 (0) | 2022.08.03 |