[네임 서버]
Linux/Server

[네임 서버]

0. 네임서버란?


  • 네임 서버 = DNS 서버 
  • URL을 IP 주소로 변환하는 것을 담당하는 서버

미리 알아두면 좋은 리눅스 파일, 디렉터리들 

  • /etc/resolve.conf : 네임서버 ( 정확히는 로컬 네임서버 )가 설정된 파일
  • /etc/hosts : IP주소  URL 로 등록된 전화번호부 같은 파일
  • /etc/host.conf : URL 주소를 입력했을 때 먼저 확인해야 할 것들이 기록된 파일

                   * order hosts, bind : 먼저 hosts를 찾고 네임서버에 질의

                   * order bind, hosts : 네임서버에 먼저 질의 후, 없으면 hosts 찾기

                   * multi on : /etc/hosts 파일에 여러 개 URL을 등록 가능

 

1. URL 을 입력 -> 2. (order hosts, bind일 때) /etc/hosts.conf -> 3. /etc/hosts

==> 등록된 내용이 있으면 IP 주소 획득

==> 없으면 네임서버 조회

 

즉 hosts 파일은 내가 등록해서 바로 사용할 수 있는 전화번호부이고

resolv.conf 파일은 114에 전화해서 전화번호(IP 주소)를 찾는 것과 같다. 

당연히 사람들은 IP주소와 URL을 일일이 등록하지 않는다. (hosts는 안 중요하다!)

대부분의 사람들은 당연히 URL을 사용해서만 인터넷을 사용하기 때문이다.

 

로컬 네임 서버, 마스터 네임 서버, 라운드 로빈 방식의 네임 서버 들을 설정해보자  

 

 

 

1. 로컬 네임 서버


resolve.conf 파일 내용 

주석 한 줄이랑 내가 설정한 DNS 서버 주소가 써져있다.

만약 www.google.com을 을 치면 이 친구가 구글의 IP 주소를 찾아 주는 것이다. 

근데 구글은 유명하니까 그렇다 치고 요 한 줄 파일이 모든 IP주소를 알 순 없을 것이다. 

 

도메인 이름 체계, 위키피디아 펌

도메인 이름 체계는 트리구조로 되어있다. 

최상위에는 . (ROOT) 네임 서버가 있고

두 번째 줄에는 익숙한 .com .net .org .kr .cn .us 와 같은 최상위 도메인이 있다.

(co.kr 과 같이 co(회사) 를 뜻하는 차상위 도메인이 있을 수도 있고 없을 수도 있다.)

세 번째 줄은 구체적인 주소인 naver google wikipedia와 같은 도메인 이름이다. 

 

 

내가 만약 URL을 입력하여 IP주소를 얻고자 할 때

가령 www.naver.com을 주소창에 친다면

 

1. 로컬 네임 서버는 (캐시 DB에 등록된 경우를 제외하면) 네이버의 IP 주소를 모른다.

 

2. 그러므로 우선 'ROOT 네임 서버' 에 네이버의 IP주소를 물어본다. 

   하지만 'ROOT 네임 서버'도 네이버의 IP주소를 모른다.

   대신 '.com 네임서버'에 물어보라 한다.

 

3. 그러므로 다음엔 '.com 네임서버'에 네이버의 IP주소를 물어본다.

   하지만 '.com 네임 서버' 도 네이버의 IP주소를 모른다.    

   대신 'naver.com 네임서버'에 물어보라 한다. 

 

4. 그러므로 다음엔 'naver.com 네임서버' 에 네이버의 IP주소를 물어본다.

   당연히 'naver.com 네임서버' 는 네이버에서 구축한 네임 서버이므로 

   네이버의 IP주소를 알고 있다. 

 

5. 로컬 네임서버는 알려준 IP주소를 요구한 PC에 알려준다.

   PC는 획득한 IP 주소로 접속을 시도한다. 

 

네트워크랑 리눅스를 공부하면서 놀라운 것은

내가 평상시 주소창에다 URL을 치는 과정에서 너무 많은 일들이 벌어진다는 거다.

그걸 알아가는 과정이 재밌는 것 같다. 

 

실제로는 이것보다 복잡할 것이다. 

가령 한 번 조회한 IP 주소는 각 단계의 네임 서버들에 저장되어 있어서

다음 요청이 들어올 때 다른 네임서버에 방문할 필요 없이, 저장된 IP주소를 알려준다.

이렇게 한 번 처리한 작업을 보존해서 속도와 비용을 절감하는 것을 캐시라고 한다.

 

캐싱 전용 네임서버 : PC에서 URL로 IP 주소를 얻고자 할 때 IP주소를 알려주는 네임 서버

                           위에 로컬 네임 서버는 캐싱 전용 네임 서버이기도 하다.

 

네임 서버의 주소를 바꿔서 직접 캐싱 전용 네임 서버를 구축해보자 

  • dnf -y install bind bind-chroot 로 네임 서버 관련된 패키지를 설치
  • vi /etc/named.conf로 네임 서버 서비스 설정 파일 수정

수정 전

 

수정 후

이 외에 아래 단 dnssec-validation yes; 에서 yes를 no;로 바꿔주었다. (보안 관련 검증을 비활성화)

 

named.conf 파일의 옵션 항목들

1. listen-on port 53 {127.0.0.1;};  --> listen-on port 53 { any; };

  • 네임 서버에 접속이 허용된 IP주소, 127.0.0.1(localhost, 나 자신)에서 any로 변경

2. directory "디렉터리 이름"; (이 외 dump-file, statistics-file 등등)

  • 네임 서버 DB 파일이 들어있는 디렉터리 

3. allow-query{localhost;}; --> allow-query { any; };

  • 도메인 이름 쿼리가 허용된 컴퓨터, 나 자신에서 any로 변경

 

서비스를 작동하고 방화벽 설정에서 DNS서버를 허용해주자 

  • systemctl restart named
  • systemctl enable named
  • firewall-cmd --permanent --add-service=dns
  • firewall-cmd --reload

 

nslookup

>server 네임서버 IP

> 조회할 URL

> exit

로 작동이 잘되는지 확인할 수 있다. 

 

이제 다른 컴퓨터의 네임 서버 주소를 위에 주소로 바꿔서 사용해보자

리눅스 client 컴퓨터 터미널 열고 su -c 'vi /etc/resolv.conf'

편집기에서 네임서버 IP를 바꿔준다. 

네이버 URL 입력

문제 없음

 

윈도우로도 해보자

검색 창에 [네트워크 상태 및 작업 보기] -> [Ethernet 0] 클릭 -> [속성]

-> [인터넷 프로토콜 버전 4] -> [속성] -> [다음 DNS 서버 주소 사용] 수정

이래도 인터넷 잘됨

원상태로 돌리려면 cmd나 파워셸 열고 netsh interface ip set dns "Ethernet0" dhcp를 입력

(관리자 권한으로 실행)

 

 

 

2. 마스터 네임 서버


마스터 네임 서버 : 같은 도메인에 속한 컴퓨터 이름을 관리, 컴퓨터의 IP주소를 알려주는 서버

위에 로컬 네임 서버가 IP 주소를 찾아가는 웹 사용자 입장이라면, 마스터 네임 서버는 관리자의 입장

 

리눅스 서버 컴퓨터에 웹 서버와 ftp 서버를 설치하고 자신이 관리하는 도메인으로 설정해보자

 

도메인에 관한 설정을 하기 위해서는 named.conf 파일에 존 파일을 설정해줘야 한다.

  • type (master / slave / hint ) : 마스터 네임 서버니까 마스터
  • file "파일 이름" : 위에 option { directory "디렉터리이름"; }; 에 생성될 상세 설정 파일
  • allow-update : 2차 네임 서버의 주소. none으로 생략 

 

gedit /var/named/john.com.db 로 상세 설정 파일 생성

 

모든 문법을 설명할 순 없지만 기억해야할 몇 가지를 적어보면

  • @ : /etc/named.conf 파일에서 설정한 john.com 을 의미한다
  • IN : 클래스 이름으로 인터넷을 의미한다. 
  • NS : 네임 서버를 뜻한다.
  • A : 호스 이름에 상응하는 IP 주소를 지정한다. (www, ftp)

 

Client 리눅스 /etc/resolv.conf 파일의 네임 서버 주소를 바꾼 뒤, john.com (www, ftp)에 접속

잘 됨

윈도우도 netsh interface ip set dns "Ehternet0" static 192.168.111.100 으로 바꾸면 접속 가능

 

 

 

3. 라운드 로빈 방식 네임 서버


라운드 로빈 방식 : 대규모 사이트의 경우 웹 서버를 여러 대로 운영하여 부하를 나누는 방식

/var/named/john.com.db 에서 CNAME webserver.john.com. (뒤에 점 주의)로 작성

클라이언트 pc에서 브라우저에 차례 대로 접속하면 사이트 3개가 돌아가면서 나타남

 

'Linux > Server' 카테고리의 다른 글

[NFS 서버]  (0) 2021.08.04
[FTP 서버]  (0) 2021.08.04
[원격 시스템 관리]  (0) 2021.07.30