Dns server 설정 - dns server seoljeong

명령어를 입력하여 확인할 수 있습니다.named-checkconf로 얻은 결과값은 아무것도 나오지 않으면 정상인 것이고 named-checkzone 로 얻은 결과값은 OK가 나타나면 정상입니다.

8. /etc/resolv.conf DNS 127.0.0.1 등록

named 설정이 다 되더라도 서버는 등록된 DNS를 찾지 못하기 때문에 설정된 DNS를 찾을 수 있도록 구축을 해야합니다. 간단하게 하자면 2tsumo.com 이라는 도메인을 zone에 만들고 등록을 했을때 /etc/resolv.conf에 search 2tsumo.com을 입력해야 등록된 DNS를 찾을 수 있습니다.

하지만 DNS가 새로 입력할 때마다 search domain을 입력하는것은 번거로운 일입니다.

그래서 간단한 방법으로 /etc/resolv.conf에 nameserver 127.0.0.1을 추가하면 자기 자신의 서버 zone에 등록되어있는 DNS를 찾아서 search domain과 같은 역할을 하여 DNS를 확인할 수 있습니다.

/etc/resolv.conf에 nameserver 127.0.0.1 값을 입력하고 저장한 후에 네트워크 서비스를 재기동 합니다.

# vi /etc/named.conf 

options {
        //listen-on port 53 { 127.0.0.1; };
        listen-on port 53 { any; }; //53번 포트 외부 접근 허용
        listen-on-v6 port 53 { ::1; };
        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     { localhost; };
        allow-query     { any; }; // 외부에서 오는 query에 대한 IP 대역 모두 허용
        masterfile-format text; slave 에서 zone파일이 동기화 될때 text 형태로 변환
1

9. named 서비스 재기동 및 부팅시 서비스 실행 등록

설정이 완료되었다면 named 서비스를 재기동 하고 기본적으로 service가 disable로 되어있어서 재부팅시에 서비스가 꺼져있기 때문에 재부팅 하더라도 서비스가 바로 실행될 수 있도록 enable로 처리하도록 합니다.

이제 웹 URL을 입력하면 그 정보가 LG u+ DNS서버에 가서 해당 주소의 ip를 물어보게 되고, DNS서버는 해당 URL의 ip주소를 찾아서 다시 나에게 리턴한다. 그러면 내가 이제 그 웹페이지에 접근 할 수 있는 것이다.

Dns server 설정 - dns server seoljeong
Dns server 설정 - dns server seoljeong

DNS의 원리에 대해서는 아래 참고

https://ansan-survivor.tistory.com/879

 

[CentOS 7] 인터넷 URL 웹 도메인 이름 입력시 작동과정

웹브라우저에 네임을 입력하면, URL의 IP주소를 PC가 불러오는 과정이 있다. (자세히는 아래 참고) https://ansan-survivor.tistory.com/435 [CentOS 7] 리눅스 CentOS 7 도메인 주소의 ip주소 찾아오기, 국내 DNS..

ansan-survivor.tistory.com

리눅스로 DNS서버 변경하기 아래 참고

https://ansan-survivor.tistory.com/435

 

[CentOS 7] 리눅스 CentOS 7 도메인 주소의 ip주소 찾아오기, 국내 DNS서버 정보, DNS 서버 바꾸기

DNS서버란? (1번)아래 그림처럼, 유저가 www.naver.com을 을 입력했을 때, ip주소를 모름으로 근처의 DNS 서버로 가서 물어본다. (2번) 그러면 DNS서버가 내 컴퓨터에게 ip주소를 알려준다. 223.130.195.200 를

DNS는 Domain name server의 약자이다. 도메인 네임이란 숫자로 이루어진 IP 주소를 사람이 쉽게 알 수 있도록 문자로 대치하여 표기한 이름을 말한다. 사람은 단순 숫자 보다는 의미있는 문자로 데이터를 더 잘 이해하고, 기억하기 때문에 숫자로 이루어진 IP 주소보다 문자로 만들어진 도메인 네임을 사용하는 것이 더욱 편리하다. 예를들어 네이버를 검색할 경우 브라우저 입력 창에 네이버의 숫자 IP 주소를 입력하기 보다는 naver.com라고 도메인 네임을 입력하는 것이 훨씬 더 직관적이고 편리하다.

이런 도메인 네임과 IP 주소의 동작 원리는 다음과 같다. 브라우저 검색 창에 naver.com이라 입력하면 클라이언트 PC는 DNS 서버에 naver.com에 대한 ip 주소를 요청하게 되고, 해당 통신사의 DNS 서버는 요청한 도메인 네임에 해당하는 IP 주소를 클라이언트 PC에게 제공한다. 그리고 클라이언트 PC는 이 IP 주소를 받아 라우터를 통해 목적지에 접속하게 된다.

지난 포스팅에서는 DNS 서버가 무엇인지, 그리고 이 DNS 서버가 어떤 형태로 동작하는지 알아보았다. 이를 통해서, 우리가 "사이트 주소"라고 불리는 녀석들로 어떻게 사이트를 접속하게 되는지 파악할 수 있었다. 

 

만약 집안에서 사용할 개인 네트워크를 구성하는 경우, 국내 인터넷 제공 업체(K*나 S*T와 같은 업체)의 DNS 서버에 돈을 주고 도메인을 등록하는 것은 매우 비효율적인 일이다. 그렇기 때문에, 개인 네트워크를 구성하려는 목적을 가진 사람들은 별도의 PC가 DNS 서버의 역할을 하도록 만들어, 네트워크 상의 다른 PC에 "사이트 주소"만으로도 접속할 수 있도록 만들어준다. 예를 들면 이런거다.

 

필자가 가족들만 사용하는 홈페이지 사이트를 만든다고 가정하자. 그런데 이 사이트를 브라우저로 접속하려면 항상 IP만 주소창에 입력해야한다고 가정해보자. 네트워크에 대해서 어느정도 알고 있는 사람들이라면, IP 주소 한 개 정도야 쉽게 외워서 접속하겠지만, 일반인들은 이러한 IP 주소를 알려주면 처음보는 숫자들의 나열에 혼란만 느낀다. 따라서 접속을 쉽게 유도하기 위해, 기억할 수 있는 도메인 주소(우리가 흔히 말하는 사이트 주소)를 달아줘야 하는데, 이를 위해서 이 도메인 주소를 IP로 변환할 수 있는(DNS 역할을 하는) PC가 동일 네트워크 내에 존재해야 한다.

 

Dns server 설정 - dns server seoljeong
내부에 DNS 서버가 존재하지 않고, 내 PC의 기본 DNS 서버 주소가 일반 인터넷 제공 업체로 등록된 경우.

 

Dns server 설정 - dns server seoljeong
내부 네트워크에 사설 DNS 서버가 존재하고, 내 PC의 기본 DNS 주소가 사설 DNS 주소로 지정된 경우.

 

Dns server 설정 - dns server seoljeong
내부 DNS서버가 존재하지 않는 상황에서는 IP 주소로만 웹 서버 접속이 가능하다.

 

 

개인 네트워크 구축 시, DNS를 설정해야하는 이유에 대해 대략적으로 알아보았으니, 이제 DNS 서버 설치를 진행해보자.

 

 

 

 

1. DNS 서비스 패키지: bind

 

(1) 패키지 설치 여부 및 최신 버전 설치 여부 확인

 

리눅스에서 DNS 서비스를 동작시키기 위해 필요한 패키지(프로그램)는 bind 라고 불리는 패키지다. 리눅스를 최소 설정으로 설치한 상태라면, 이 bind 패키지는 설치되어 있지 않을 확률이 높다. 다음의 명령어로 bind 패키지의 설치 여부를 확인해보자.

 

#  rpm -qa | grep bind :  bind 패키지가 리눅스에 설치되어 있는지 확인하는 명령어

#  yum list bind        :  현재 설치된 bind 패키지가 최신 버전인지 확인하는 명령어

 

Dns server 설정 - dns server seoljeong

 

rpm 명령어로 아무 결과도 나타나지 않는다면 bind 패키지가 설치되지 않은 것이다. 설치되지 않았더라도 걱정하지 말자. 어차피 yum list bind 명령어의 결과는 동일하게 나타날 것이다.

 

Dns server 설정 - dns server seoljeong
최신 버전이 아닌 경우, Available Package(사용 가능 패키지)에 대한 정보가 표시된다.

 

만약 yum list bind 명령어의 결과가 아래와 같이 Installed Package로 나타난다면, 다음에 설명할 패키지 설치 과정은 건너뛰어도 된다.

 

Dns server 설정 - dns server seoljeong
최신 버전의 bind 패키지가 설치되었는 경우 yum list bind 명령어 결과

 

(2) bind 패키지 설치(또는 업데이트)

 

사용 가능한 최신 버전이 존재한다고 나온다면, 다음의 명령어 중 하나로 최신 bind 패키지를 설치해주자.

 

# yum install bind -y  :   bind 패키지가 설치되지 않았을 때, bind 패키지를 최신 버전으로 설치하는 명령어

# yum update bind    :  구 버전의 bind 패키지를 최신버전으로 설치하는 명령어

 

Dns server 설정 - dns server seoljeong
설치 또는 최신 버전 업데이트가 완료되면 다음과 같이 Complete 문구가 뜨면서 마무리된다.

 

yum install 명령어의 경우, 기존에 bind 패키지가 설치되지 않았거나, 설치되어도 구 버전인 경우 모두 사용이 가능한 명령어다. 반면 yum update 명령어는 기존에 설치된 패키지를 최신버전으로 다시 설치하는 기능이다. bind 패키지가 설치되지 않은 상태에서 yum update 명령어를 써봐야 제대로 된 결과는 나오지 않으니 이 점만 유의하자.

 

해당 패키지가 제대로 설치되었는지 확인하려면, yum list bind 명령어를 입력하고 결과가 Installed Package로 출력되면 된다.

 

 

 

 

2. bind 패키지의 설정 파일: named.conf

 

이전 포스팅에서 ssh와 http 서버스 구축에 대한 내용을 진행하면서, 이러한 서비스는 각자의 설정 파일을 가지고 있음을 확인할 수 있었다. DNS 또한 서비스의 일종이기 때문에, DNS와 관련된 bind 패키지 역시 설정 파일이 존재한다. 

 

늘 그렇듯이 설정파일은 /etc 폴더 내에 존재한다. 앞선 서비스의 설정파일과 조금 다른점이라면, 이 named.conf 설정 파일은 별도의 폴더 내에 따로 저장되지 않는다. sshd나 httpd의 설정파일 각각 /etc/ssh 또는 /etc/httpd/conf 폴더 내에 존재했던 것을 생각하면 굉장히 의외의 위치에 존재하는 설정 파일이다. 

 

Dns server 설정 - dns server seoljeong

 

named.conf 설정 파일의 내용은 크게 3 부분으로 나뉘는데, 첫 번째 부분은 타 서비스의 설정파일에서도 볼 수 있는 Listen Address 나 Allow-IP등 접속 정보에 대한 내용을 설정하는 부분, 두 번째 부분은 DNS 서버의 로그 옵션을 설정하는 부분, 마지막은 PC에서 서비스를 제공하기 위한 서버 타입과 관련 파일에 대한 정보를 작성하는 부분이다. 

 

Dns server 설정 - dns server seoljeong
Dns server 설정 - dns server seoljeong

왼쪽이 접속 정보에 대한 내용이다. 내용이 길긴 한데, 의외로 건드릴 부분은 많지 않다.

 

Dns server 설정 - dns server seoljeong

 

먼저, 접속 정보에 대한 내용을 살펴보자. named.conf 설정 파일의 좌측에 options 라고 작성된 부분이 접속 정보를 설정하는 부분이다. 

 

listen-on port 53 으로 지정된 부분은, DNS 서버로 질의가 들어오는 경우, DNS 서버의 주소를 무엇으로 할 것인지 결정하는 부분이다. 초기 설정은 { 127.0.0.1 }, 즉 자기 자신에게 질의를 하는 것으로 설정되어 있다. 외부에서 이 PC로 IP주소를 문의하기 위해서는 리눅스 서버의 IP를 입력해주어야 한다. 현재 컴퓨터의 ip를 입력해주자. 필자는 DNS로 사용할 리눅스의 주소가 172.30.1.51이다. 

 

listen-on-v6 port 53 부분은 IPv6(버전 6)에 대해 설정하는 부분이다. 아직 IPv6를 사용하는 곳이 많지 않기 떄문에 큰 의미는 없는 설정내용이다. 따라서 필자는 이 내용을 주석처리했다.

 

바로 아래에 보면, directory 설정 부분이 보이는데, 이 부분은 DNS 서비스 구동 시, 내부 네트워크 정보를 저장하는 파일의 경로를 어디에 둘 것인지 설정하는 부분이다. 기본값으로 /var/named 폴더로 설정되어 있으며, 포스팅에서도 기본값을 그대로 사용할 것이다.

 

몇 줄 건너뛰면, allow-query 부분이 보이는데, 이 부분은 어떤 IP에게 DNS 서비스를 제공할 것인지 작성하는 부분이다. 필자는 내부 네트워크에 연결된 기기, 즉, 공유기와 연결된 스마트폰과 노트북만 DNS 질의가 가능하도록 172.30.1.0/24 (172.30.1.1 ~ 172.30.1.254까지)를 설정했다.

 

여기까지 설정하면, DNS 서버로의 접근과 관련된 설정은 모두 끝난다. 이 설정을 통해, DNS의 서버 IP 지정 및 DNS 쿼리를 이용할 수 있는 IP 대역을 지정했다. 

 

 

Dns server 설정 - dns server seoljeong

 

다음으로 수정해야 할 설정파일의 부분은 서두에서 언급했던 세 부분 중, 마지막 부분인 서버 타입 및 정보 제공을 위한 파일을 지정하는 부분이다(zone 으로 시작하는 부분이다).

 

기본값으로는 zone "." IN 값으로 시작하는 값만 있는데, 이는 해당 PC가 DNS 서버로 동작하지 않을 때, 상위의 root DNS 서버로 질의를 하기위해 설정된 값이라고 보면 된다. zone "." 부분의 내용을 보면 type hint; file "named.ca"로 되어 있는데, 해당 PC에 DNS 서버 질의가 들어왔고, 만약 답변할 수 없는 질의가 들어왔을 경우, 루트 DNS 서버로 질의를 하겠다는 의미(type hint), 그리고, 해당 루트 서버에 대한 정보를 저장하는 파일이 "/var/named/named.ca" 파일로 지정되어 있다는 의미다. 

 

 

필자는 내부 네트워크의 주소를 family.lee라는 주소로 지정하려고 한다. 따라서 DNS 서버의 도메인 주소는 ns1.family.lee로, 그리고 웹 사이트 주소는 www.family.lee로  로 지정하기로 했다. 이를 위해 named.conf 파일에는 family.lee와 관련된 주소에 대해 정보를 전달할 수 있는 파일을 만들어야 하고, 현재 리눅스 PC에서 family.lee에 대한 DNS 응답을 직접 할 수 있다는 것을 설정 파일에 지정해야 한다. 

 

이를 위해, named.conf 파일의 기본 zone "." 영역 아래에, family.lee 네트워크에 대한 zone 설정을 추가해주어야 한다. 따라서, zone "family.lee" IN {} 문구를 named.conf 아래에 추가해주었다. 추가한 문구의 중괄호{} 내에는 type master; 를 입력하여 해당 리눅스 PC가 family.lee 주소에 대한 DNS 응답을 진행할 것임을, 그리고 file "family.lee.zone"이라는 파일을 DNS 응답을 위한 정보를 저장할 파일로 지정해주었다. 

 

------------------------------------------------------------------------------------------------------

zone "주소 영역" IN {

    type master | slave | hint;   

    file  "zone 정보를 저장할 파일명"

}

 

<type>

#  master: 해당 PC에서의 직접 질의를 위한 설정값

#  hint    : 루트 또는 상위 DNS로의 질의

#  slave  :  DNS 서버 이중화 시, 해당 PC를 보조 DNS 서버로 지정하기 위한 설정값 

<file>

#  zone 정보를 저장할 파일명 지정. 해당 파일은 option의 directory 경로에 위치해야 한다

-------------------------------------------------------------------------------------------------------

 

**  type slave는 추후 DNS 이중화 구축에 대해 언급할 때, 다시 한 번 포스팅 할 예정이다.

 

여기까지 작성이 되었다면, DNS 서비스 구동을 위한 기본적인 named 설정이 완료된 것이다. 해당 파일을 저장하고 나오자.

 

named 패키지는 설정 파일이 제대로 작성되었는지 확인할 수 있는 명령어를 제공한다. named.conf 파일 작성 / 저장 후, 아래의 명령어를 통해 named.conf 파일 내용의 이상 유무를 확인할 수 있다. 명령어 입력 후, 아래의 화면과 같이 아무 결과가 출력되지 않고 프롬프트가 뚝 떨어지면 정상적으로 설정 파일을 작성한 것이다.

 

# named-checkconf /etc/named.conf

 

Dns server 설정 - dns server seoljeong

 


 

이번 포스팅에서는 DNS 서버 구성을 위한 패키지 설치 및 패키지 설정 파일의 작성 방법에 대해 알아보았다. 다음 포스팅에서는, named.conf 내용으로 작성한 "family.lee"에 대한 zone 정보 저장 파일인 "family.lee.zone" 파일의 작성 방법에 대해 알아보고, 실제 DNS 질의를 통해 도메인 주소만으로 웹 사이트에 접속할 수 있는지 확인해보려 한다.