ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DNS 서버 설치와 운영하는 방법 (2) - 로컬 네임 서버
    리눅스 2024. 5. 2. 00:11

    직접 네임 서버를 구축해서 운영하는 방법을 알아보겠다. 그 전에 먼저 도메인 이름 체계를 알아본다. 

     

    위 사진은 트리구조 형태의 도메인 이름 체계이다. 위에서 www, ftp, fred를 제외한 나머지들은 다 네임서버이다. Root(.)네임 서버는 1단계 네임서버인 com, edu, org, net와 국가 도메인인 kr, fr, sp 등을 관리한다. 또 1단계 네임서버는 자신 하위에 이쓴 2단계 네임 서버를 관리한다. 여기서 com 네임서버는 cisco 네임서버를 관리한다. 그리고 com 네임서버는 자신의 하위에 있는 2단계 도메인을 관리하는 네임서버들만 관리한다. 그리고 www, ftp, fred는 네임서버가 아니다. 보편적으로 www는 웹서버이다. 따라서 정확한 cisco의 domain은 www.cisco.com이 아니라 cisco.com이다.  

     

     

     

    로컬 네임 서버가 작동하는 순서를 알아보겠다. 리눅스 기준으로 각자 사용하는 네임 서버가 /etc/resolv.conf에 설정되어 있다. 이 네임 서버를 '로컬 네임 서버'라고 부른다. 그래서 특정 url의 ip 주소를 요구하면 이 로컬 네임 서버에 질문하는 것이다. 하지만 이 로컬 네임 서버는 아는 것이 별로 없다. 자신의 캐시 db를 확인하고 없으면 다른 네임서버에게 요구해서 ip를 획득한다.

     

    순서를 통해 알아보겠다. 여기서는 웹브라우저의 주소창에 www.nate.com  을 입력할 때 일어나는 과정을 정리한 것이다.

     

    1. pc가 리눅스인 경우 /etc/resolv.conf 파일을 열어 로컬네임서버 컴퓨터를 알아낸다.

    2. 로컬 네임 서버에 www.nate.com의 ip주소를 물어본다. 

    3. 로컬 네임 서버는 자신의 캐시 db를 검색해서 www.nate.com의 정보가 있는지 확인하고 있다면 응답하지만 대개는 정보가 없다. 

    4. 로컬 네임 서버가 'ROOT 네임 서버'에 www.nate.com의 주소를 물어본다. 

    5. 'ROOT 네임 서버'도 모르므로 'com 네임 서버'의 주소를 알려주며 이곳으로 요청을 하라고 알려준다.

    6. 로컬네임서버가 'com 네임 서버'에게  www.nate.com의 주소를 물어본다.

    7. 'com 네임 서버'도 마찬가지로 모르므로 'nate.com'을 관리하는 네임 서버 주소를 알려주며 'nate.com 네임서버'에 물어보라고 한다.

    8. 로컬 네임 서버가 'nate.com 네임 서버'에 www.nate.com의 주소를 물어본다. 

    9. 'nate.com 네임 서버'는 네이트에서 구축한 네임서버이므로 XXX.nate.com이라는 이름을 가진 컴퓨터의 목록을 모두 갖고 있다. 따라서 www.nate.com의 ip 주소도 알기 때문에 알려준다.

    10. 로컬 네임 서버는 www.nate.com의 ip주소를 요구한 pc에 해당 ip주소를 알려준다. 

    11. ip를 획득한 pc는 해당 주소로 접속을 시도한다.

     

     

    캐싱 전용 네임 서버(Caching-only Nameserver)란 pc에서 url로 ip 주소를 얻으려고 할 때, 해당 url의 ip주소를 알려주는 네임서버를 말한다. 위에서 언급한 로컬 네임서버가 캐신 전용 네임 서버의 역할을 수행한다.


    실습: Server(컴퓨터 이름)을 캐싱 전용 네임 서버로 구축하기. 그리고 Server(B)(다른 컴퓨터)에서 내가 직접 구축한 Server 컴퓨터를 네임 서버로 사용하기.

     

    apt -y install bind9 bind9utils 명령으로 네임서버와 관련된 패키지를 설치한다.

    bind9은 DNS 서버 프로그램이고 bind9utils는 관련된 패키지이다.

     

     

    그리고 캐싱 전용 네임 서버와 관련된 설정파일을 수정한다. 관련 설정 파일은 /etc/bind/named.conf.options 이다.

    21행쯤 dnssec-validation auto; 로 되어 있는 것을 auto에서 no로 변경해준다. dnssec-validation은 디지털 서명 기술을 이용해서 네임서버에서 클라이언트로 보내진 응답의 신뢰성을 확인해주는 역할을 하는데 그것을 no로 한다. 우리는 간이로 설정하는 것이기 때문에 이렇게 한다.

    그리고 22행에 recursion yes;를 추가해준다. 이 설정은 루트네임서버 없으면 다시 로컬 네임서버로 돌아오지 않고 바로 최상위 네임서버와 책임서버에게 질의한 다음 답을 얻고 다시 순서대로 돌아오는 것을 설정하는 옵션이다.

    23행에 allow-query { any; };도 추가해준다. 이건 네임서버에 누가 쿼리를 보낼 수 있는지 설정하는 것인데, 아무나 보낼 수 있게 설정했다.

    결국 방금 변경한 내용들은, VMware가 사용하는 가상머신 네트워크 주소에 있는 모든 컴퓨터가 네임서버를 사용할 수 있게 설정하는 것이다.

     

    이제 다음의 명령어들로 named라는 네임서버의 서비스(데몬)을 작동하자.

    systemctl restart named

    systemctl enable named

    systemctl status named

     

    서비스(데몬)과 관련된 스크립트 파일은 /lib/systemd/system/ 디렉터리에 있다. 파일 이름은 대부분 '서비스이름.service'이고 방금 사용한 네임서버는 named.service 파일이다.

     

    그리고 ufw allow 53 명령으로 네임 서버 포트인 53을 허용하고 ufw status 명령어로 확인한다.

     

    네임서버가 잘 동작하는지 확인하기 위해서 "div @네임서버ip 조회할URL" 형식으로 확인할 수 있다. 물론 nslookup으로 server 네임서버ip 로 설정해서 확인하는 방법도 있다.

     


    이제 다른 컴퓨터에서도 테스트를 해보자. 나는 Server(B) 컴퓨터를 이용할 것이다. 다른 컴퓨터에서 nslookup으로 server를 네임서버ip로 설정을 하고 www.nate.com을  검색해보면 동일한 ip주소를 얻을 수 있다. 그렇기 때문에 /etc/resolv.conf 파일의 nameserver도 내가 만든 네임서버ip로 변경하겠다.

     

    그러나 Server(B)컴퓨터는 지금 서버전용 ubuntu이기 때문에 일반적인 웹브라우저로 접속할 수가 없다. 그래서 텍스트 기반의 웹브라우저인 elinks를 사용해서 접속해보겠다.

    apt -y install elinks를 통해 설치하고 elinks 명령어를 실행해 www.kernel.org를 입력해서 접속하면 정상적으로 웹사이트에 접속이 되는 것을 확인할 수 있다.

Designed by Tistory.