메가IT아카데미 국기과정/리눅스와 시스템보안
[2-10] DNS 서버
한님폐하
2022. 9. 12. 14:06
1. DNS(Domain Name System)
- 클라이언트는 도메인에 대한 IP 주소 정보를 학습하기 위해서 DNS 요청 메세지를 DNS 서버에게 전송한다.
- DNS 서버는 DNS 요청을 수신한 이후, 도메인에 대한 IP 주소 정보를 DNS 응답 메세지로 응답한다.
- 클라이언트는 도메인에 대한 IP 주소 정보를 학습한 이후 목적지 IP 주소를 설정하여 사이트/시스템/서버로 접속을 실시한다.
① '/etc/host.conf' 파일을 참조한다. 'multi on'으로 되어있으면, '/etc/hosts' 파일을 참조한다.
② '/etc/hosts' 파일에 IP 주소가 없다면, '/etc/resolv.conf' 파일의 168.126.63.1' DNS 서버에게 DNS 요청 메세지를 전송한다.
③ DNS 서버는 자신의 DNS Zone 정보를 참조하여 IP 주소 정보를 클라이언트에게 응답한다.
④ 클라이언트은 DNS 응답을 수신하면 해당 IP 주소를 목적지로 설정하여 사이트/시스템/서버로 접속을 실시한다.
2. 도메인 구조
- 도메인 구조는 계층적 구조로 되어 있으며 우측에서 좌측으로 해석해야 한다.
- 루트 도메인 -> 1단계 도메인 -> 2단계 도메인 -> 3단계 도메인 -> 호스트네임
- 도메인은 기관으로부터 할당받아서 사용해야 한다.
- 호스트 네임은 아무거나 사용해도 무관하다. 대신, 서비스와 관계 있는 이름으로 하는것을 권장한다.
3. DNS 서버 구성
3-1. bind 패키지 설치 및 활성화
yum -y install bind bind-utils
rpm -qa | egrep "^bind|^bind-utils"
rpm -ql bind | egrep -v '/man/|/doc/|/usr/lib'
systemctl enable --now named
systemctl status named
3-2. 환경 설정 파일을 만든다.
3-2-1. 'named.conf' 환경 설정 파일
vi /etc/named.conf
options {
listen-on port 53 { any; };
# listen-on-v6 port 53 { ::1; };
directory "/var/named";
allow-query { any; };
dnssec-enable no;
dnssec-validation no;
# include "/etc/crypto-policies/back-ends/bind.config";
include "/etc/named.rfc1912.zones";
3-2-2. 'named.rfc1912.zones' 환경 설정 파일
vi /etc/named.rfc1912.zones
zone "hannimpeha.com" IN {
type master;
file "hannimpeha.com.zone";
allow-update { none; };
};
zone "2.168.192.in-addr.arpa" IN {
type master;
file "192.168.2.rev";
allow-update { none; };
};
3-2-3. 정방향 Zone 파일을 생성하고, 테스트한다.
cd /var/named
cp -p named.empty megait.com.zone
cp -p named.empty 192.168.2.rev
vi /var/named/megait.com.zone
$TTL 3H # 도메인/IP 주소 정보를 캐시에 저장하는 기간
@ IN SOA ns.megait.com. root.megait.com. ( # @ : /etc/named.rfc1912.zones 파일에 정의한 도메인(hannimpeha.com)을 의미한다.
# In : 클래스 이름, 일반적으로 많이 사용함
# Start of Authority(권한)
# 네임서버 도메인
# 관리자 이메일 정보
0 ; serial # 파일이 변경될 때 마다 카운트를 증가시키는 일련 번호
1D ; refresh # 갱신 주기
1H ; retry # 재시도 주기
1W ; expire # 만료 주기
3H ) ; minimum # 정보가 삭제되는 최소 주기
hannimpeha.com. IN NS ns.hannimpeha.com. # 네임 서버 도메인 지정
ns.hannimpeha.com. IN A 192.168.2.200 # Address, 호스트 이름에 대한 IP 주소를 지정
hannimpeha.com. IN MX 10 mail.hannimpeha.com. # 메일 서버 도메인 지정('10'은 우선 순위값이며 낮을 수록 우선 순위가 높다.)
mail IN A 192.168.2.199
www IN A 192.168.2.200
ftp IN A 192.168.2.200
test IN A 192.168.2.200
blog IN CNAME test # 호스트 이름에 대한 Alias를 지정(호스트 이름이 긴 경우 사용 권장)
named-checkzone hannimpeha.com hannimpeha.com.zone
systemctl restart named
nslookup ns.hannimpeha.com
nslookup www.hannimpeha.com
nslookup ftp.hannimpeha.com
nslookup mail.hannimpeha.com
nslookup blog.hannimpeha.com
3-2-4. 역방향 '192.168.2.rev' 파일을 설정하고 테스트 한다.
vi /var/named192.168.2.rev
$TTL 3H
@ IN SOA ns.hannimpeha.com. root.hannimpeha.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.hannimpeha.com.
IN MX 10 mail.hannimpeha.com.
200 IN PTR ns.hannimpeha.com. # 역방향 지정
199 IN PTR mail.hannimpeha.com.
200 IN PTR www.hannimpeha.com.
200 IN PTR ftp.hannimpeha.com.
named-checkzone 2.168.192.in-addr.arpa 192.168.2.rev
systemctl restart named
nslookup 192.168.2.200
3-3. Master & Slave DNS 서버 구성
3-3-1. Master DNS 서버 구성
vi /etc/named.rfc1912.zones
also-notify { 192.168.2.199; };
3-3-2. Slave DNS 서버 구성
vi /etc/named.rfc1912.zones
zone "hannimpeha.com" IN {
type slave;
masters { 192.168.2.200; };
file "slaves/hannimpeha.com.zone";
};