#cat /etc/host.conf
multi on (기본값)
#cat /etc/nsswitch.conf | grep hosts
#hosts: db files nisplus nis dns
hosts: files(/etc/hosts) dns(/etc/resolv.conf)
#vi /etc/host.conf
order hosts, bind
multi on
#vim /etc/named.conf
option{
listen-on port 53{any;}; // 외부에서 53번 포트 접속에 대한 IP설정
listen-on-v6 port {none;}; // IPv6 연결은 허용하지 않음
// { any } 모든 IP에 응답하겠다는 설정
allow-query{any;}; // 외부에서의 DNS 질의에 응답 여부 설정, 기본값은 localhost.
// any는 모든 클라이언트들이 이 네임 서버에게 질의를 할 경우 도메인에 대한 정보를 제공한다는 의미
recursion yes; // 네임 서버 유형을 Authoritative로 할지 Recursive로 설정할지 결정한다.
}; yes는 다른 도메인에 대한 정보도 클라이언트에게 제공한다는 의미이며
no는 오직 현재 설정파일에 정의된 도메인 정보만 클라이언트에게 제공한다는 의미이다.
도메인 추가
#vim /etc/named.rfc1912.zones // 도메인 추가를 위해 사용되는 기본 파일로서 이 파일은 /etc/named.conf의 지시어 include를 통해 사용된다.
도메인 추가는 /etc/named.conf에 직접 설정해도 동일한 결과를 얻을 수 있다.
zone "taehoon.com" IN { // 도메인 taehoon.com을 이용해 새로운 존 생성한다
type master;
file "taehoon.zone"; // 해당 존의 정보를 포함하는 데이터 베이스 파일의 이름. chroot를 사용할 경우 /var/named에 저장되어야 한다.
allow-update { none; }; // 특정 호스트가 해당 도메인에 대한 정보를 동적으로 업데이트 여부 지정
};
zone "100.100.100.in-addr.arpa" IN {
type master; // 도메인 taehoon.com에 해당하는 IP주소의 네트워크 부분을 이용해 Reverse Lookup 정보를 제공하는데
in-addr.arpa는 역주소 (Inverse Address)를 의미하는 키워드 이다.
file "taehoon.rev.zone"; // 도메인 taehoon.com에 대한 Reverse Lookup 정보를 제공하는 데이터 베이스 파일
allow-update { none; };
};
// type의 종류
// master - 해당 존에 대한 정보를 제공하기 위해 지정되었음을 의미
// slave - 해당 존에 정보를 마스터 서버로 부터 받아 제공하는 슬레이브 네임서버로 지정되었음을 의미
// forward - 해당 존에 대한 요청을 모두 다른 네임 서버에게 전달하기 위해 지정되었음을 의미
// hint - 질의에 대한응답을 직접 제공하지 않고 루트 네임서버로부터 응답을 받기 위해 서버들을 가리키는 특별한 형식 존을 의미
인버스 도메인
IP주소를 도메인이름으로 변환하기 위해 네임서버에 설정하는 특수 도메인이다.
인버스 도메인을 네임서버에 등록해 놓으면 IP주소에 대응하는 도메인 이름 (Reverse Lookup)을 조회할 수 있다.
데이터 베이스 파일 생성
(1)cd /var/named
데이터 베이스 파일을 생성하기 위해 디렉토리를 변경한다.
(2)cp named.empty taehoon.zone
cp명령어를 이용하여 기본 양식 파일 (named.empty)을 이용하여 도메인 taehoon.com에 대한 정보를
저장하는 Forward 존 데이터 베이스 파일을 생성한다.
(3)vim taehoon.zone
기존 양식을 참고하여 데이터 베이스 파일을 수정한다.
(2) <-> (3) 선택 사항
#vim taehoon.zone
'@'은 /etc/named.rfc1912.zone 파일에 설정된 존 이름을 의미한다.
IN은 Internet. SOA는 Start of Authority의 약어
해당 존에 대한 정보를 제공할 권한을 가진 서버 이름을 지정한다.
admin.taehoon.com은 해당 도메인에 대한 이메일 이름을 지정하는데 주의할 점은 이메일 표시하는 '@' 대신에
점(.)이 해당 존을 의미하는 '@'와 혼란을 피하기 위해 사용되었다.
ex) admin@taehoon.com X
admin.taehoon.com O
NS ns.taehoon.com. // NS는 Name Server의 약어로서 해당 존에 대한 정보를 제공하는 네임서버의 이름을 지정
MX 10 ms.taehoon.com. // MX는 Mail Exchange의 약어로서 메일 서버를 지정하는 리소스 레코드(Resource Record)며,
// 숫자 10은 메일 서버 간 우선순위를 지정할 때 사용하고 보통 5 또는 10단위로 숫자를 증가 시킨다.
IN A 100.100.100.110 // 맨 앞의 공간은 비어 있는데, 여기엔 암묵적으로 존을 상징하는 '@' 생략
// 해당 도메인이 나타내는 주소가 100.100.100.110이라는 의미
ns IN A 100.100.100.110 // ns는 현재 네임서버의 이름인데, 완전한 도메인 표기법(FQDN)은 ns.taehoon.com.으로서 ns 뒤에 @이
// 생략되어 있고 해당 네임서버가 사용하는 IP주소를 가리킨다
ms IN A 100.100.100.110 // ms는 메일서버의 이름으로서 FQDN표기법으로 ms.taehoon.com. 이며, 사용하는 IP주소를 가리킴
www IN A 100.100.100.110 // www는 웹 서버의 이름으로 FQDN표기법으로는 www.taehoon.com. 이며 사용하는 IP주소를 가리킨다.
ftp IN A 100.100.100.110 // ftp는 FTP서버의 이름으로 FQDN표기법으로는 ftp.taehoon.com. 사용하는 IP주소를 가리킨다.
web IN CNAME www // CNAME은 Canonical Name의 약어로서 보통 별칭 (Alias Name)이라고 한다.
// 즉 사용 중인 다른 호스트의 또 다른이름이라는 의미이다.
FQDN (Fully Qualified Domain Name) - 전체 주소 도메인 네임 네트워크 상에서 컴퓨터 시스템을 지칭하는 유일한 이름이다.
FQDN은 도메인 네임 시스템 (DNS) 트리 구조상에서의 호스트 네임과 도메인 네임을 모두 포함하는 전체 이름이다.
EX) www.taehoon.com
호스트 명 : www
하위 도메인 : taehoon
상위 도메인 : com
FQDN = Host Name + Domain Name
주의 사항 - 데이터 베이스 생성시에는 항상 도메인 뒤에 루트 도메인을 뜻하는 점(.)을 붙여 FQDN 형태로 작성해야 한다.
추가적으로 PQDN이라는 것도 있다.
PQDN (Partially Qualified Domain Name) - 부분 주소 도메인 네임
리소스 레코드 종류
리소스 레코드(RR, Resource Record)란?
존이나 도메인의 특성을 나타내기 위해 사용된 특별한 용어들을 의미한다.
TTL
Time To Live의 약어로서 네임 서버가 설정한 도메인에 대한 정보를 제공받은 클라이언트 들이
얼마 동안 이정보를 캐시에 저장 할지 결정하는 시간이다.
serial
존 정보가 업데이트 되었는지를 슬레이브 네임 서버에 전달하기 위해 사용하는 숫자로서
보통 YYYYMMDD 같은 날짜를 이용해 생성한다. 마스터 서버는 존 정보가 변경될 때마다
이 번호를 증가 시킴으로써 슬레이브는 이정보를 받아올지 아닐지를 결정하게 된다.
refresh
슬레이브 네임 서버가 얼마의 주기로 마스터 서버에 접속해 정보가 변경되었는지를 점검하기 위해
사용되는 시간을 의미한다.
retry
슬레이브 네임 서버가 마스터 서버로의 refresh 접근이 실패 할 경우 얼마 후에 다시 접근할지를
결정하는 시간 단위이다.
expire
슬레이브 네임 서버가 retry를 얼마 동안 허용할지 결정하는 시간이며, 이 시간 이후 슬레이브
네임서버는 마스터 서버로의 접근을 더 이상 시도하지 않고 현재의 정보도 클라이언트에게 제공하지 않는다.
minimum
Negative Caching이라고 하며, NODATA, NXDOMAIN같은 존재하지 않거나 잘못된 호스트에
대한 정보를 저장하기 위한 TTL을 의미한다.
NS
해당 도메인의 네임 서버를 지정하기 위해 사용한다.
MX
해당 도메인의 메일 서버 (Mail Exchange)를 지정하기 위해 사용한다.
A
도메인의 IP주소(IPv4-32bit)를 지정하기 위해 사용한다.
AAAA
도메인의 IP주소(IPv6-128bit)를 지정하기 위해 사용한다.
PTR
Pointer의 약어로서 IP주소에 일치하는 도메인을 가리키기 위해 사용한다.
CNAME
Canonical Name의 약어로서 기존 호스트의 다른 이름을 지정 하기 위해 사용한다.
TXT
해당 도메인의 Text정보를 설정하기 위해 사용한다.
데이터베이스 파일 생성
(1) cp taehoon.zone taehoon.rev.zone
(2) vim taehoon.rev.zone
PTR taehoon.com. // PTR은 Pointer의 의미로서 곧 /etc/named.rfc1912.zones 파일의 존
// "100.100.100.in-addr.arpa"이 도메인 taehoon.com (@)를 가리킨다는 의미이다.
110 PTR ms.taehoon.com. // 숫자 110은 뒤에 '@' 생략되어 곧 100.100.100.110이 ns.taehoon.com을 가리킨다.
110 PTR www.taehoon.com.
110 PTR ftp.taehoon.com.
데이터베이스 파일 확인
(1)chown root:named taehoon.zone
named 데몬이 접근이 가능 하도록 Forward 존 파일에 소유권을 변경한다.
(2)chown root:named taehoon.rev.zone
named 데몬이 접근이 가능하도록 Reverse 존 파일에 소유권을 변경한다.
(3) vi /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=100.100.100.110
(4)service named restart
설정을 모두 마친 후 네임 서버를 다시 시작해 변경 사항을 적용해야 한다.
(5)named-checkconf /etc/named.rfc1912.zones
설정판 파일의 문법을 검사하는 명령어인데, 이상이 없을경우 출력되는 메시지도 없다.
(6)named-checkzone taehoon.zone taehoon.rev.zone
존 설정을 검사할 경우 사용하는 명령어로 생성한 존 파일 검사한 후 이상이 없는 경우 ok가 출력
방화벽 설정
(1) #iptables -A INPUT -i eth0 -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables 방화벽에서 포트 53과 프로토콜 UDP/TCP로의 새로운 접속을 허용한다.
(2) #iptables -A OUTPUT -o eth0 -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
외부로 나가는 패킷도 허용하도록 설정
(3) #iptables -L
설정확인
도메인 추가
(1)vim /etc/named.rfc1912.zones // linux.com 도메인 추가
(2) cd /var/named/
(3) cp -p taehoon.zone linux.zone
(4) vim linux.zone
동작확인
(1) service named restart
(2) nslookup
(3) >server 100.100.100.110
(4) >www.taehoon.com
(5) >ftp.taehoon.com
(6) >web.taehoon.com
(7) >ns.taehoon.com
service network restart
ping www.taehoon.com
ping ftp.taehoon.com
동작확인
nslookup
(1) >www.linux.com //추가한 도메인 동작 확인
(2) >100.100.100.110 //100.100.100.110 역방향 조회 확인
라운드로빈 부하 분산
동일한 서버를 여러 대 운영하는 경우에 DNS서버를 통해 클라이언트로 부터 요청이 한 서버에 집중되지 않도록 적절하게
분산하는 DNS서버의 기능을 Round Robin 방식의 Load Balancing 이라고 한다.
라운드 로빈
(1) vim /var/named/taehoon.zone
Forward 존 데이터 베이스 파일에 아래와 같이 추가
www IN A 100.100.100.120
www IN A 100.100.100.130
(2) vim /var/named/taehoon.rev.zone
Reverse 존 데이터 베이스 파일에 아래와 같이 추가
120 PTR www.taehoon.com.
130 PTR www.taehoon.com.
(3)service named restart
설정 적용을 위해 named 데몬 재시작
(4)ping -c3 www.taehoon.com
명령어 ping을 이용해 동일한 웹 호스트로 연결을 테스트 하면 다른 IP주소가 조회가 되는지 확인
(5)ping -c3 www.taehoon.com
명령어 ping을 이용해 동일한 웹 호스트로 연결을 테스트 하면 다른 IP주소가 조회가 되는지 확인
(6)ping -c3 www.taehoon.com
명령어 ping을 이용해 동일한 웹 호스트로 연결을 테스트 하면 다른 IP주소가 조회가 되는지 확인
(7)dig @ns.taehoon.com www.taehoon.com +noall +answer
dig를 이용해서 웹 서버의 정보 조회, 다른 정보는 생략하고 해당하는 도메인에 IP주소만 출력하는 의미이다.
'Linux' 카테고리의 다른 글
Day-34 FTP (0) | 2017.01.27 |
---|---|
Day-33 DNS (0) | 2017.01.26 |
Day-31 DNS (0) | 2017.01.24 |
Day-30 DHCP (0) | 2017.01.23 |
Day-29 DHCP (0) | 2017.01.22 |