반응형


한 2주동안 네임서버 구축하는데 모든 시간을 다썻네요 ㅜㅜ


저의 네임서버 구축 방법을 자세하게 작성할게요.


우선 저의 환경입니다.


AWS를 이용하여 EC2 서버를 사용

가비아에서 도메인 구입 (대략 테스트용으로 3개를 구입하였습니다)



1) 호스트 등록



도메인 구입한 업체에서 호스트를 변경할 수가 있습니다.


여기서 호스트 변경은 네임서버를 직접 사용하는 도메인에 사용 하시면 된답니다.


다른 도메인 업체에도 이런 기능들이 있습니다.


호스트명에는 ns.domain.com - ip 이런 형태로 등록 하시면 되요.


2) bind 설치


bind 설치는 다른 블로그에서 확인하고 설치해 주세요.


3) bind가 설치된 폴더로 가면


저의 경우에는 named.conf , named.conf.default_zone, named.conf.option, named.conf.local 이렇게 네가지가 있습니다.


모두 따로 쓰지 않고 named.conf에 작성해도 되는데 관리하기 편하게 하기 위해서 사용합니다.


우선 option 파일에 다음을 추가합니다.


listen-on port 53 { any; };

allow-query { localhost; };



다음으로는 local 파일에


zone "{도메인}" {

type master;

file "/etc/bind/db.{도메인}";

allow-query { any; };

}


도메인은 실제 도메인업체에서 구입한 도메인을 입력하세요.


그리고 난후 file의 새파일을 만드세요.


새파일을 만들기 보다는 db.local을 카피해서 사용하시는게 편해요.


cp db.local db.{도메인}


그리고 나서 해당 파일을 열어보면 다음과 같이 되어있을거에요.





SOA, NS, A, AAAA는 모두 네임서버 레코드 타입입니다.


SOA에는 db.{도메인} 파일에 작성된 도메인의 권한을 가지고 있는 네임서버라고 하더군요. 넘어렵....


그래서 (1)번에 ns.domain.com 으로 작성했습니다.


(2)번에는 관리자 메일을 작성하는거래요. root.localhost. 으로 되어있는데 root@localhost. 이라는 뜻이랍니다.


(2)번은 마음대로 작성하셔도 별 문제 없는것 같습니다.


(3)은 @이라는 뜻은 자기 자신이라고합니다. 곧 {도메인} 이라는 뜻이죠.


가장 윗줄인 @ 해당 도메인의 네임서버를 물어보면 localhost. 를 응답해준다는 뜻이겠죠.


그래서 (5)번에 ns.domain.com 을 써주고


추가 NS 레코드가 있으면 ns1.domain.com, ns2.domain.com 을 추가로 작성합니다.


(6)번은 A레코드로 되어 있는데요. 


resolv 프로그램이 해당 도메인의 서버가 어디있는지 A레코드 타입으로 물어보면 (6)번의 값을 응답해주고


resolve는 (6)번 값을 받아서 해당 웹서버에게 요청을 하게되고 사용자는 그 응답을 보는것이죠.


여기서 가장 중요한점은 (1)번과 (6)번이 가장 중요 한것 같네요.


이렇게 작성한 후 꼭 체크해보세요.


 named-checkconf {파일명} 


이 명령어로 응답이 없으면 오류가 없는거에요.


가장 중요한 부분입니다. zone 파일의 문법?이 오류가 없어야 되요.


추가로 rndc.key 라는건 서버 또는 클라이언트에서 동적업데이트 하기 위해서 필요한 것 같습니다.


굳이 네임서버 구축에서는 필요가 없는 것 같아요.





4) 모든 설정이 완료가 되었다면 이제 도메인을의 네임서버를 해당 네임서버로 변경하세요.


네임서버 변경은 도메인 업체 사이트에서 하시면 되요.




5) 이제 테스트를 해봐야겠죠. 


도메인을 직접 브라우저에 입력하여 접속합니다.


처음 하시는 분들이라면 왠만하면 바로바로 안되실 꺼에요 ㅠ


그럼이제 왜 안되는지를 먼저 알아야 하죠


가장먼저 DNS가 정상 작동을 하는지 확인하는 방법은


localhost 해당 도메인을 테스트 해보면 되는데


dig @localhost domain.com


이렇게 입력을 했을때 응답 섹션에 A레코드가 들어가 있어야 해요.


이때 응답이 제대로 되지 않는다면 zone 파일을 제대로 작성하지 않은거에요.


이제 dig 명령어의 localhost가 제대로 작동을 하면


다른 네임서버로 도메인을 조회해 보세요.


예를들어 구글 네임서버로 조회를 한다고 하면


dig @8.8.8.8 domain.com


이렇게 하시면 되요. 


마찬가지로 응답섹션에 같은 응답이 와야 해요.


이때 제대로 응답이 오지 않는다면 DNS와 NAMESERVER간에 문제가 있는거라고 생각이 됩니다.


따라서 두 서버간에 통신이 왜 되지 않는지부터 확인을 했어요.


 http://simpledns.com/lookup-dg.aspx 


위 사이트에서 도메인을 추적할 수가 있는데요.


아무 응답이 없다면 우선 포트를 확인해보세요.


nc -z -v domain.com 53


53번 포트가 클라이언트에서 요청시 정상적으로 작동하는지먼저 확인해줍니다.


또한 netstat -tpnl   명령어로 우분투에 열려 있는 포트를 확인하구요.


우분투에는 열려있는데 nc 명령어에서 오지 않는다면 DNS에 문제가 있는거에요.


DNS의 option에서 listen-on port 53 { any; };를 추가하니까 되더군요..



그럼 다시 nc명령어를 입력하여 success가 나오면 정상적으로 되는거겟죠.


이제 브라우저로 접속하여 봅니다.


저는 이때도 안됬어요 ㅜㅜ


확인해보니 named.conf.local에서 zone파일의 allow-query 옵션을 주니까 정상적으로 작동이 됬어요.


저의 문제는 여기까지 였습니다.


다른 문제가 있으시면 댓글로 달아주세요 :)


아는한 최대한 답변 드릴게요 
































반응형

'NETWORK' 카테고리의 다른 글

IIS 에서 CODEIGNITER index.php 죽이기 !  (0) 2019.03.29

+ Recent posts