본문 바로가기
Linux & UNIX

DNS 서버 구축(수정중)

by fabxoe 2019. 9. 20.

hosts 파일의 위치

리눅스 /etc/hosts

윈도우 C:\Windows\System32\drivers\etc/hosts

 

웹사이트들에는 모두 IP주소로 접속한다.

웹사이트들의 주소와 IP를 함께 짝지어놓은 데이터가 필요하다.

hosts파일이 바로 그 데이터였다.

 

오늘날 전세계의 사이트들은 너무 많고 실시간으로 생겼다가 사라졌다 관리가 필요하다. 

따라서 전문적인 DNS서버의 IP만 알고있고

hosts파일 안에는 한두개의 아주 간단한 IP만 적혀있게 되었다.


nslookup

nslookup은 내 컴퓨터에 설정된 네임서버를 검색하는 중요한 명령어이다.

특정 모드로 진입하게 된다.

 

 

이 모드 안에서 server라고 치면 내가 사용하고 있는 DNS서버의 IP주소가 나온다.

내가 브라우저에 웹주소를 치면 이 주소에 항상 IP를 물어 보고 있던 것이다.

 

 

반환받는 IP주소의 실체를 확인할 수 있다.

평소에 크롬브라우저에 웹주소를 입력했을 때와 똑같이 nslookup명령모드에서 웹주소를 타이핑해보자.

DNS서버를 거쳐서 반환된 해당 웹사이트의 IP주소를 확인할 수 있다.

 


그러면 내가 사용중인 DNS서버의 주소는 어디에 등록 되어있는걸까?

 /etc/resolv.conf

 

/etc/resolv.conf에 저장되어 있다.

 

 

이 IP주소의 DNS서버가 고장나면 어떻게 처리될까?

resolv.conf의  IP주소를 주석처리하면 그같은 상황을 얻을 수 있다.

 

브라우저에 특정 사이트 주소를 타이핑하면 서버를 찾을 수 없다는 에러가 발생한다.

인터넷은 정상이지만, 웹 주소를 번역시킬 수 없어서 인터넷을 이용할 수 없는 상황이 된다.

위에서 nslookup으로 알아낸 네이버 IP를 브라우저에 타이핑 하면 여전히 정상적으로 네이버 사이트에 접속할 수 있다.

 

 

 

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
125.209.222.141 www.naver.com            

맨 위에서 언급했던 hosts파일!

참고로 DNS서버 대신에 hosts파일에 IP주소와 웹주소를 작성하여 사용해도 접속이 가능하다.

실제로 /etc/hosts파일을 먼저 대조하고 /etc/resolv.conf에 작성한 DNS서버주소를 통해 IP를 얻는 순서로 작동하기 때문에 가능하다.

 

 

 

 

확인을 했으면

다음 실습을 위해서

hosts에 네이버 주소를 지우자.

또 DNS서버 IP의 주석을 풀어주어 다시 원상복구 시키자.

service network restart

네트워크를 재시작 시키자.

 


폭발적인 인터넷 사용자의 증가로 인해서 한대의 DNS서버가 모든 요청을 저리해 줄 수 없는 트래픽 수준이 되었다.

또 한대의 DNS서버가 이유없이 멈추더라도 대안이 필요했다.

 

 

www.naver.com.

그 대안으로 오늘날에는 주소 체계를 분리시켰다.

여러 DNS서버를 관리하기 위한 서버라는 개념으로,

ROOT DNS서버, 1차 DNS서버, 2차 DNS서버, 3차 DNS서버 ... 로 계층을 나누는 것을 고안하게 되었다.


엄밀히 말해 /etc/resolv.conf에 작성되어있는 IP는

[로컬 네임 서버]의 IP 이다

 

 

 

이 로컬 네임서버는 전세계의 모든 웹주소에 대한 IP주소를 알고 있는게 아니다.

아는게 거의 없다.

 

아는 것이라곤 ROOT 네임서버밖에 없다.

루트에게 물어봐서 com 네임서버의 IP주소를 받고

 

com 네임서버의 IP을 알게되어

com 네임서버에게 물어봐서 naver 네임서버의 IP주소를 받고

 

naver 네임서버의 IP를 알게되어

naver 네임서버에게 물어봐서,

naver 네임서버속 캐시DB에 저장되어 있는 www서버의 IP주소를 받는 방식으로 동작한다.

 

그런 다음에야 PC에 IP주소를 반환한다.


외부에 있는 로컬 네임서버를 사용하지 말고 직접 구축해보자

참고로 로컬 네임서버가 하는 역할을 캐쉬전용네임서버라고 한다.

Server pc를 캐싱전용 네임서버로 구축해보자.

 

yum -y install bin bind-chroot

필요한 패키지는 bind와 bind-chroot 두가지 이다.

 

named.conf

캐쉬전용서버의 설정파일의 위치

 

options {
	listen-on port 53 { any; };
	listen-on-v6 port 53 { none; };
	directory 	"/var/named";
	dump-file 	"/var/named/data/cache_dump.db";
	statistics-file "/var/named/data/named_stats.txt";
	memstatistics-file "/var/named/data/named_mem_stats.txt";
	recursing-file  "/var/named/data/named.recursing";
	secroots-file   "/var/named/data/named.secroots";
	allow-query     { any; };

listen-on port 53 { any; } ;로 바꾸어서 자기자신에게만 서비스 하는 것을 모두에게 서비스 하겠다는 설정으로 변경한다.

listen-on-v6 port 53 { none; };

allow-query { any; };

이렇게 세군데를 바꾼다.

 

systemctl restart named
systemctl enable named
systemctl status named
firewall-config

이렇게 설정해주면 로컬 네임서버의 구축이 간단이 완료되었다.

 

 

 

잘 되는지 확인해보자.

혹시라도 외부에서 먼저 에러를 발견하기보다는

로컬네임서버 자기자신에서 먼저 테스트를 하자

nslookup

nslookup모드에서 server를 타이핑하면

현재 로컬네임서버의 아이피를 보여준다.

우리는 더 이상 VMware에서 제공해주는 로컬네임서버를 사용하지 않을 것이라고 했다.

 

server 192.168.111.100

server명령어에 현재 Server pc의 주소를 타이핑하면 로컬네임서버가 변경된다.

/etc/resolv.conf를 변경해도 된다. 같은효과.

 

 

 

Client pc에서도 로컬네임서버를 Server pc로 변경하여 테스트 해보자.

 

Server(B) pc에서도 nslookup으로 로컬네임서버를 Server pc로 변경하고 테스트 하였다.

또 텍스트기반의 브라우저 elinks도 사용해 보았다!

 

WinClien pc에서도 로컬네임서버를 Server pc로 변경하여 테스트 해보자.

 

확인해본바 똑같이 잘된다!

 


위에서 만든 캐싱전용네임서버말고 마스터 네임서버라는 것도 있다.

이전에 사용된 그림에서 nate네임서버가 바로 마스터 네임서버이다. 

 

마스터 네임서버 웹서버나 FTP같은 서버를 구축한 뒤 다른 외부사용자가 웹주소를 통해 내 하위서버를 이용할 수 있게 하는데 사용된다. 캐시전용 네임서버에 대치 된다거나 별도로 구축하는 서버가 아니다.

단지 캐시전용 네임서버의 기능에 하위서버를 관리하는 기능이 추가된 형태의 하나의 서버를 마스터 네임서버라고한다.

하위 기능을 관리하는 기능만 없으면 그냥 캐시전용 네임서버라고 부르는 셈이다.

하위의 웹서버나 ftp서버 관리 기능을 위해서 마스터 네임서버는 도메인이 필요하다.

도메인은 유료로 구매를 하는 것이 일반적이다.

도메인을 구매하고 마스터 네임서버 밑에 www서버와 ftp서버를 구축할 것이다.

도메인을 구매하면 주소체계에 따라 com 네임서버에 도메인 주소와 마스터 네임서버의 IP가 등록이 된다.

rpm -qa httpd
systemctl restart httpd
firewall-config 

vi /var/www/html/index.html
yum -y install vsftpd
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload

vi /etc/named.conf
zone "centos.com" IN{
        type master;
        file "centos.com.db";
        allow-update{ none; };
};

 

 

 vi centos.com.db
$TTL    3H
@       SOA     @       root. ( 2 1D 1H 1W 1H )
        IN      NS      @
        IN      A       192.168.111.100

WWW     IN      A       192.168.111.100
ftp     IN      A       192.168.111.200

centos.com.db파일을 /var/named/폴더에 만들자

$TTL    3H
@       SOA     @       root. ( 2 1D 1H 1W 1H )
        IN      NS      @ 

이 부분은  네임서버와 유효기간에 대한 내용이며 항상 이렇게 작성한다고 보면된다.

 


        IN      A       192.168.111.100
이 부분은 네임서버 자기자신의 IP를 작성.


WWW     IN      A       192.168.111.100
ftp     IN      A       192.168.111.200

이 부분은 네임서버 하위의 서버의 IP들을 작성한다.

 

 

systemctl restart named

마스터 네임서버를 재시작하고 포트도 열어주자.

https://youtu.be/iwFIPMzbEM0

수정중... 16분

출처: 이것이 리눅스다

 

 

 

 

 


루트 네임서버는 전세계에 단 13대만 존재하며, 일본에 1대, 네덜란드에 1대, 노르웨이에 1대 존재한다.

 

미러서버로는 전세계에 63대가 존재한다.

한국에는 미러서버를 3대 가지고 있다.

 

KRNIC(한국인터넷진흥원), KT

KINX(한국인터넷연동센터)

 

에서 각각 운영, 관리하고 있다.

 

 

추가정보로 1차 상위 DNS서버인 COM 네임서버와 NET 네임서버는 KT 분당 인터넷데이터센터에서 운영중이다.

 

 

 

 

'Linux & UNIX' 카테고리의 다른 글

서브넷 마스크 정리잘 되어 있는 곳  (0) 2019.09.22
FTP 서버 구축  (0) 2019.09.22
DHCP 서버 구축  (0) 2019.09.20
Samba 서버 구축  (0) 2019.09.20
NFS 서버 구축  (0) 2019.09.19

댓글