[Linux] DNS

728x90

DNS 란?

Ip 주소를 도메인 형식(문자열 형식) 으로 변환해주는 서비스이다.

Domain Name 이란?

  1. 네트워크에 연결되어 있는 모든 시스템에는 숫자의 조합으로 구성되는 주소를 가지고 있다. 하지만 이런 주소를 모두 다 외우기는 불가능 하므로 알파벳으로 이루어지는 도메인 이름을 사용한다.
  2. 도메인 이름은 영문자 (a-z), 숫자 (0-9), 특수기호 ( - ) 를 합쳐 총 37개의 글자 조합으로 나타낼 수 있다.

DNS 구조

  1. 클라이언트에서 어떤 IP 주소에 대해 질문을 날렸으면 /etc/resolv.conf 에 저장된 로컬 도메인 서버에서 먼저 검색을 한다.
  2. 로컬 도메인 서버가 주소를 알지 못한다면 .(루트) 도메인 서버에 질문 날린다. 루트 도메인 서버는 www.naver.com 에 대한 주소를 갖는 com 도메인 서버 주소를 알려준다.
  3. com 도메인 서버가 naver 를 담당하는 서버의 주소를 알려준다.
  4. naver 도메인 서버가 www.naver.com 의 주소를 로컬 도메인 서버에 알려준다.
  5. 로컬 도메인 서버는 해당 주소를 클라이언트에게 전달해준다.

정방향 DNS 구성 과정

  1. $ yum install -y bind bind-utils
  2. $ ip route 명령어를 사용하여 enp0s3 에 연결된 default via 를 통해 enp0s3 의 게이트웨이를 확인할 수 있다. 여기선 enp0s3 의 게이트웨이가 10.0.2.2 로 세팅되어 있다고 가정한다.
  3. $ nmcli con add con-name static3 ifname enp0s3 type ethernet ip4 10.0.2.10/24 gw4 10.0.2.2 => enp0s3 는 내부용 인터페이스이고 고정 IP 로 세팅한다.
  4. $ nmcli con mod static3 ivp4.dns 10.0.2.10 => static3 의 dns 를 10.0.2.10 으로 세팅한다.
  5. $ nmcli con up static3
  6. $ ip addr show enp0s3 => inet 이 10.0.2.10/24 로 설정됐는지 확인한다.
  7. $ vi /etc/named.conf
    • options 에서 listen-on port 53 { any; }; 로 listen-on v6 port 53 { none; }; 으로 allow-query-cache { any; }; 로 수정
    • 맨 아래에 zone 을 추가해준다.
      zone "도메인 이름" IN {
          type master;
          file “도메인 이름.zone"; 
      };
  8. $ cp named.empty 호스트 이름.zone
    • $ vi 호스트 이름.zone 아래처럼 수정한다. test.example.com.zone 과 test.example.com 은 호스트 이름으로 치환해주면 된다. 그리고 아래에 dns, www, ftp, mail, blog 로 시작하는 XXX.test.example.com 에 대한 ip 주소들을 세팅해준 것이다. (dns.test.example.com, www.test.example.com, ftp.test.example.com, mail.test.example.com, blog.test.example.com)
    • $ chmod 660 호스트 이름.zone, $ chown :named 호스트 이름.zone 으로 파일의 권한과 소유권을 변경
    • $ systemctl start named
    • $ firewall-cmd --add-service=dns --permanent
    • $ firewall-cmd --reload
  9. $ host www.test.example.com 을 치면 named.conf 에 입력해놓은 ip 주소인 10.0.2.20 을 리턴받는다.

역방향 DNS 구성 과정

  1. $ yum install -y bind bind-utils
  2. $ nmcli con add con-name static3 ifname enp0s3 type ethernet
  3. $ nmcli con mod static3 ipv4.method manual ipv4.address 10.0.2.10/24 ivp4.dns 10.0.2.10 ipv4.gateway 10.0.2.2
  4. $ nmcli con up static3
  5. $ ip addr show enp0s3 => inet 이 10.0.2.10/24 로 설정됐는지 확인한다.
  6. $ vi /etc/named.conf
    • options 에서 listen-on port 53 { any; }; 로 listen-on v6 port 53 { none; }; 으로 allow-query-cache { any; }; 로 수정
    • 맨 아래에 zone 을 추가해준다.
    • # dns ip주소 3번째 자리까지 역순.in-addr.arpa # 10.0.2 의 역순.in-addr.arpa zone "2.0.10.in-addr.arpa" IN { type master; # 파일명은 보기 쉽게 정하면 된다. file “10.0.2.0.zone"; };
  7. $ cp named.empty 10.0.2.0.zone
    • $ vi 10.0.2.0.zone 아래처럼 수정한다. test.example.com 은 호스트 이름으로 치환해주면 된다. 그리고 아래에 dns, www, ftp, mail, blog 로 시작하는 test.example.com 에 대한 ip 주소들을 세팅해준 것이다. (dns.test.example.com, www.test.example.com, ftp.test.example.com, mail.test.example.com, blog.test.example.com)
    • $ chmod 660 10.0.2.0.zone, $ chown :named 10.0.2.0.zone 으로 권한과 소유권을 변경
    • $ systemctl start named
    • $ firewall-cmd --add-service=dns --permanent
    • $ firewall-cmd --reload
  8. $ host -t PTR 10.0.2.20 을 치면 named.conf 에 입력해놓은 도메인 주소인 www.test.example.com 을 리턴받는다.

새로운 가상 머신에서 DNS 서버를 통해 test.exampl.com 의 IP 주소 받기

새로운 가상 머신을 하나 만들고 네트워크 설정을 해준다.

$ nmcli con add con-name static3 ifname enp0s3 type ethernet

$ nmcli con mod static3 ipv4.method manual ipv4.address 10.0.2.200/24 ipv4.gateway 10.0.2.2 ipv4.dns 10.0.2.10

$ nmcli con up static3

$ host dns.test.example.com

$ cat /etc/resolv.conf 로 dns 서버가 10.0.2.10 으로 변경됐는지 확인한다.

$ hostnamectl set-hostname blog.test.example.com

$ ping dns.test.example.com 해당 명령어를 실행했을 때 핑이 제대로 나간다면 dns 서버에 연결이 잘 된 것이다.

$ host dns.test.example.com host 명령어를 사용하여 해당 도메인이 dns 서버의 .zone 파일에 입력됐다면 IP 주소를 반환해준다.

728x90