티스토리 뷰

DNS : Domain Name Server

 

=> DNS 는 도메인 네임 서버이다. 도메인이 뭔지 네임이 뭔지 곧 설명하겠지만.

DNS 는 나무에 가지가 있는 구조와 우체국과114같은 기능이다.

다른점이 있다면. 우리집 주소는 충청북도-제천시-신월동- **아파트- *동- *호 식으로 도, 시, 동, 아파트 이름 등으로

나열 되어있지만. 

 

도메인 네임은 체계는 3단계로 순차적인 구조로 나열이 된다.

1.ROOT(.) 도메인 (최상위 도메인네임 서버)

2.COM, NET, ORG, EDU, KR, FR, SP 등 ( 2단계 도메인 네임 서버)

3. PARAN GOOGLE NAVER CO OR 등 (3단계 도메인네임 서버)

그리고 그 앞에 붙는 WWW 나 FTP 는 그 서버에서 관리하는 컴퓨터 이름이다.

 

예를 들어 WWW.GOOGLE.COM 이라는 주소로 가고 싶으면.

먼저 ROOT DNS에게 물어본다. 그러면 COM이라는 2단계 DNS로 가게된다.

COM DNS는 GOOGLE이라는 DNS로 보내준다. 그러면 구글회사 안에 있는

WWW 라는 컴퓨터에 접속이 되는것인데.

 

우리는 WWW.GOOGLE.COM 을 통틀어서 URL 주소라고 한다.

URL 주소로 찾아가면 순차적으로 DNS를 거쳐서 가야한다.

그렇지만 우리가 가고싶은 컴퓨터의 IP주소를 알면 더 빨리 갈수 있다. 그렇지만 편의상 URL을 이용하는것이다.

 

이렇게 외부에 공식 DNS서버가 잘 구축이 되어있는데...

우리는 왜 내부에 DNS서버를 리눅스 페도라에 구축을 하는것일까?

 

DNS Server 구축 왜할까? (어디까지나 다 정확하지는 않다. 여기저기 읽어보고 내가 이해한데로 쓴 글이다.)

 

만약에 회사를 차리려고 한다. 회사주소는 사람들이 찾아올수 있게 우체국에 등록을 해야되고 전화할수 있게 114에 등록해야한다. www.seungjun.com 이라고 했을때 나는 도메인에  내 DNS서버명 URL을 등록하고 IP주소를 사서 하면 된다.

하지만 우리는 실습용이니까 실제로 돈주고 등록을 하지않고. 이미 등록이 되어있는 도메인을 이용해서

내가 원하는 url을 만들어서 그리고 IP는 내 컴퓨터로 설정해놓고 여러가지 서버를 만드는것이다.

그러니까 vmware 에 있는 페도라 리눅스로 만든 서버는 사설네트워크이므로 실제 외부에서 접속할수없다.  

이미 등록이 되어있는 naver.com 도메인과 IP에 www.naver.com 이라는 www라는 내 회사이름과 내컴퓨터 IP를 설정해주고, ftp라는 파일올리고 내리는 부서나 의견접수해주는 sendmail부서 주소를 만들고 싶으면 ftp.naver.com 이나 sendmail.naver.com이라고 설정하면된다. 사설 네트워크인 내부에서 내가 설정해놓은 url을 입력하면 내부 DNS 서버에게 물어봐서 가게 된다.

 

회사 안에 있는 부서 주소를 만드는것을 우리는 이름영역을 만든다고 한다.

그 영역을 zone 이라고 한다. zone 안에 만들수 있는 영역 그러니까 서버는 여러가지가 있다. DNS서버안에 ZONE 이름영역을 만든다는 것을 쉽게 말해 주소를 만드는것이다.

ZONE 안에 있는 정보가 URL이고, URL이 곧 IP이고 , URL이 DNS 이름이고, DNS이름이 서버명이고, 서버명이 서버컴퓨터 호스트네임이 될수있다.

 

우리가 쉽게 구축할수있는 서버에는 종류도 다양하고 기능도 다양하다.

네임서버, 데이터베이스 서버, NFS서버 , 메일서버, 웹서버, FTP서버 Samba서버, 프록시 서버, DHCP서버

그러나 zone 영역을 만들어 주는것은 어디까지나 우리가 접속할수있게 주소만 만들뿐이다. 주소만 만든다고 해서 그안에 있는 기능들이 저절로 작동 하는것은아니다. 그 기능은 데몬과 서비스패키지가 제공해주는것이다.

 

다른 종류의 서버라고 해서 무조건 물리적으로 다른 IP를가진 컴퓨터일 필요가없다. www.seungjun.com이라는 dns를 가진 컴퓨터IP가 다른서버도 가질수있고 접속할수있는것이다.

 

내 생각에는 DNS개념으로 서버는 두 종류로 나눌수 있을것 같다.

인터넷서버 : 우리 회사가 서비스를 외부에 제공해야 되므로. 외부에서 쉽게 접속할수있게 zone영역에 이름은 설정해줘야하는 서버

인트라넷서버 : 회사 내부용으로 권한이 허용된 관리자만 접속가능하므로. 따로 dns없이 터미널에서 명령어로 접속하는 서버.

 

네임서버 : 는 말그대로 내 회사주소이다. vmware상에서는 페도라 서버이다. www.seungjun.com이 되겠다. sengjun.com이라는 DNS를 거쳐서 www라는 네임서버에 접속 하게 된다. 그리고 이 네임서버의 기능은 dns이름과 ip정보를 저장하여 사용자가 url을 입력하면 해당ip를 알려준다.

 

데이터베이스 서버 : 는 zone영역 그러니까 주소가 따로 없다. 이것은 회사에 있는 그 관리자 권한으로 서버에 접속한다. 왜냐하면 보안상 데이터베이스 서버는 외부에서 올일이 없기 때문.(내 추측이다 어디까지나). 데이터 베이스 서버는 보통 고객정보등 정보들을 관리하는 곳이다. mysql이라는 데이터베이스서버 시스템 중의 가장한 유명한 툴을 설치해서 root계정 컴퓨터 IP로 접속하기 때문에 따로 URL을 이용한 DNS ZONE설정이 없다. 그대신 MYSQL 클라이언트 서비스를 페도라에 설치해서 서버에 접속한다. 그리고 사용자이름@호스트이름 (ip) 를 이용해서 터미널에서 접속하게된다. 사용자는 권한을 줘서 추가 할수있다. 결국에는 이 서버는 디렉토리 안에 있는 데이터 파일이다.

그렇지만 페도라서버외에 오라클이나 VISUAL WEB DEVELOPER같은것으로 웹에서도 데이터관리가되는 서버도 구현가능하다.

 

NFS 서버 : 는 보통 dns url을 zone 영역에 만들어주지 않아도. 마운트방식으로 디렉토리를 원하는 컴퓨터IP에게 공유해서 접근하는 서버이다. 이서버는 저장공간이 부족할때 공통적으로 쓰는 파일을 NFS서버에 공유시켜주는 시스템으로서, 모든컴퓨터가 똑같은 파일을 각자 저장할 필요가 없게 된다.

 

메일 서버 : 메일을 송수신하는데 필요한 세가지 프로토콜(smtp, pop3, imap)을 이용해 다른 계정에게 메일을 보내는것인데. 만약에 우리회사에 이씨가 다른회사 박씨에게 메일을 보내는 과정은. lee@seungjun.com 이 네임서버에 park@company.com ip를 문의하면 네임서버가 알려준다.

vmware상에서는 fedoraserver1 ip가 우리회사이다 즉 네임서버인 동시에 메일서버가 될수있고. 다른회사 박씨 메일서버는 fedoraserver2 그러니까 뒷자리만 다른 ip가 될것이다.

윈도우에서 dns 설정이 fedoraserver1 ip로 되어있다면 우리가 구축해놓은 네임서버와 메일서버에 접속이되지만, 진짜 외부 사이트에 접속이 안된다.

 

웹서버 : 웹서버는 센드메일서버에 httpd와 php 패키지가 설치된 웹메일 프로그램이다. 프로그램 서버세팅에서 도메인 설정을 네임서버와 동일하게 해주고 IMAP서버설정을 센드메일서버명으로 해주고, 네임서버 zone영역에 www식으로 센드메일과 동일하게 ip를 주면. www.seungjun.com/webmail/ 으로 웹브라우저 형식으로 메일을 운영할수있다.

 

FTP 서버 : 호스트간의 그리고 호스트와 서버간의 파일전송용 서버이다. FTP 역시 웹브라우저 형식이 제공된다.

ftp://seungjun.com/21  라는 url을 갖는다.

ftp://계정명@서버명:포트번호 계정명이 anonymous이거나 port번호가 21번일 경우에는 생략이 가능하다.

 

 

 

SAMBA 서버 : 리눅스와 윈도우간의 다른 OS간의 공유를 가능하게 하는 네크워크이다. SWAT 프로그램을 통해

리눅스 폴더를 웹에 공유할수 있다.

 

PROXY 서버 :

  Wikipedia에서는

"프록시 서버(영어: proxy server)는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터나 응용 프로그램을 가리킨다. 서버와 클라이언트 사이에서 중계기로서 대리로 통신을 수행하는 기능을 가리켜 '프록시', 그 중계 기능을 하는 것을 프록시 서버라고 부른다.

프록시 서버는 프록시 서버에 요청된 내용들을 캐시를 이용하여 저장해 둔다. 이렇게 캐시를 해 두고 난 후에, 캐시 안에 있는 정보를 요구하는 요청에 대해서는 원격 서버에 접속하여 데이터를 가져올 필요가 없게 됨으로써 전송 시간을 절약할 수 있게 됨과 동시에 불필요하게 외부와의 연결을 하지 않아도 된다는 장점을 갖게 된다. 또한 외부와의 트래픽을 줄이게 됨으로써 네트워크 병목 현상을 방지하는 효과도 얻을 수 있게 된다.

라고 존나 어렵게 번역해놓앗다.

 

내가 보는 '뇌를 자극하는 RED HAT....'에서 설명이 잘 나와있는데

프록시라는 '대리인'이 PC1에서 웹서핑 요청이 오면, 프록시 서버 대리인이 대신 웹서버에 접근해서 데이터를 가져온다. 가져온 데이터를 우선 캐시에 저장 시켜놓고, PC1에게 데이터 전송한다. PC2가 웹서핑(PC1과 같은 웹사이트요청) 요청하면  프록시 서버는 외부로 나가지 않고 자신의 캐시에 있던 데이터를 가져워서 PC2에게 준다.

이러므로 웹클라이언트와 웹서버 사이에서 데이터 전달을 해주고 캐시에 저장된 데이터를 이용해서 웹서핑 속도를 향상 시킨다.

 

DHCP 서버 : 네트워크 안에 있는 클라이언트에게 네트워크주소를 자동 할당해주는 서버

 

 

결론은 DNS 서버를 리눅스에서 내부용으로 구축해주는 이유는..

연습삼아 하는것도 있지만. 내 회사에 각기능에 맞는 부서 주소를 ZONE 영역에 만들어줘야 하기때문이다.

결국에는 URL주소 만들기다.

 

DNS SERVER 구축 방법 이해

 

DNS SERVER가 고장나거나 없을때

#/etc/host.conf 파일에 원하는 url주소와 ip를 설정해줄수도 있다.

예를 들면 vi 편집기로 /etc/host.conf파일에 접속해야되는 사이트와 ip주소를 입력해주면된다.

자신이 100개의 사이트에 들어가고싶으면 100개의 정보를 다 입력해주면된다.

아니면 www.google.com 이라는 주소가 싫고 www.gg.com이 더 좋다면

/etc/host.conf 파일에

구글IP www.gg.com 이라고 추가해주면 서버가 www.gg.com은 구글로 가라는정보를 받고 구글을 띄어준다.

 

DNS SERVER 구축 순서

1. DNS SERVER구축에는 데몬 프로그램 BIND를 /usr 디렉토리에 설치해야한다.

=>BIND는 무엇이며 왜 /usr 디렉토리에 설치해야만 하나?

Bind(berkeley internet name domain)는 버클리대학교에서 만든 인터넷 도메인네임 서버라는 이름을 가지고 있다.

이것은 리눅스용으로 만들어진 DNS 소프트웨어이다. 초기 버전에는 zone데이터를 텍스트형식으로만 저장이 가능했지만

현재는 mysql부터 odbc등 다양한 db형식으로 저장기능이 있다.

dns서버에도 종류가 세가지가있다. primaray ns 서버. secondary 그리고 caching 서버.

나는 실습용으로 아주 소량의 도메인을 사용하기 때문에 primary 네임서버만 사용햇다. primary와 secondary는 기능은 비슷하지만 목적은다르다. 첫번쨰는 master식으로 두번쨰는 slave식으로 primary가 이상이 있을때 백업용에 목적이있다. caching 네임서버는 아까 나왔던 proxy서버와 같이 chache를 저장하는 방식이다. 목적은 원활한 traffic 제어에 있다.  bind소프트웨어의 기능은 우리가 익숙한 도메인으로 ip로 변환해주는 네임서버 와 반대로 ip를 도메인으로 변환해주는 resolver 기능이 있다. 소프트웨어 안에 중요한 파일로서는 named.conf, zone, named, cache파일이 있따. named 데몬이 실행이 되면 제일먼저 named.conf에 저장된 정보를 참고하게 된다.

 

그럼 홈디렉토리를 /usr/local 로 하는 특별한 이유는 있을까?

리눅스의 디렉토리 종류는 다양하다. /usr 디렉토리는 응용 프로그램에서 필요한 파일이 저장되는 디렉토리라고 한다. 그러니까 음... 윈도우에서 프로그램 파일이라고 생각하면 되겠다. 그럼 디렉토리를 다른곳으로 주면 어떻게 될까?

안해봐서 모르겠지만. 내생각에는 congifure할때 경로를 다른곳으로 주면 파일이 저장되는 디렉토리에 대한 디폴트값이 다 같이 바뀌기 때문에 무관할것 같다. 그리고 우리가 실행해야할 시스템관리 명령들은 /sbin 디렉토리에 들어가기때문에도 상관없을 것 같다. 응용 소프트웨어나 패키지는 /usr디렉토리에 간다는것은 알고 가야한다.

 

2. BIND패키지 안에는 named.conf파일이 있는데 이것이 바로 URL정보가 있는 설정파일이다. 이것을 /etc디렉토리에 복사해준다.

=> 왜 /etc디렉토리에 복사를 해주는것인가? 그리고 .conf는 무엇인가?

/etc디렉토리는 시스템 설정 파일들이 들어있다고 한다. 우리가 부팅했을 때 실행되는 시스템 파일들이 /etc/init.d에 들어있듯이. 그런점에서 named데몬이 돌아갈때 제일먼저 확인하는named.conf라는 시스템설정파일이 /etc에 디렉토리에 있어야 한다는것은 앞뒤가 맞다. 음.../etc디렉토리는 그러니까 윈도우에서

 

3. named.conf 에 원하는 도메인이름( 뭐뭐뭐.뭐뭐뭐 ex)naver.com ) 으로 zone파일을 만든다. 파일 저장장소는

   디렉토리 설정에서 /var/named 하위로 한다. 파일명은 알기쉽게 "도메인이름.zone ex) naver.com.zone " 식으로 한다.

=> /var 디렉토리는 시스템 운영중 생기는 임시 데이터저장 공간이다

 

3. named.conf에서 설정된 zone 파일명과 동일하게 /var 디렉토리에 만든다.

4. /var 디렉토리에 만든 zone파일에 캐시에 저장되는 기간, 권한 기간, named.conf에 정의된 도메인이름,

페도라서버 IP주소를 입력하거나, 자신이 정해놓은 URL주소에 변환되는 ip주소를 입력하면된다.( 구글로 하고싶으면

구글 ip를 입력하면된다.)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함