우분투 네임서버 구축하기 (Install Ubuntu bind9 nameserver)
반드시 네임서버를 구축해야 할 경우가 아니라면, 직접 구축하지 말고 다음의 글로 이동하여 무료 서비스를 이용해 보세요.
도메인 네임서버란?
Domain Name Server 는 “네임서버” 또는 “DNS” 라고 부릅니다.
도메인 네임서버는 사람이 읽을 수 있는 도메인 이름을 기계가 읽을 수 있는 IP 주소로 변환하는 일을 합니다.
도메인 네임서버는 보통 계층형으로 이루어지고 결과를 캐쉬합니다.
<그림 : 계층형 DNS. 속도 개선 효과가 있다.>
구축 방법
Ubuntu Linux 에서 zone 파일을 구성하여 네임서버를 구축하는 예제를 설명합니다.
1. 운영체제의 apt 패키지 목록 갱신
# apt-get update
2. 네임서버 소프트웨어 Bind9 설치
# apt-get install bind9
3. 네임서버 서비스 상태 보기
# service bind9 status
서비스가 실행되고 있지 않다.(inactive)
4. 네임서버 서비스 켜기
# service bind9 start
# service bind9 status
5. 네임서버 서비스 테스트
설치한 네임서버 서비스에게 naver.com 의 아이피가 어떤 것인지 물어보는 명령어를 실행해보도록 하자.
# host naver.com 127.0.0.1
결과가 위와 같을 수도, 다를 수도 있다.
네임서버 환경설정을 하면서 위의 결과를 바꿀 것이다.
6. 네임서버 환경설정
# vi /etc/bind/named.conf.options
파일의 기본 값은 다음과 같다.
options { directory "/var/cache/bind"; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. // forwarders { // 0.0.0.0; // }; //======================================================================== // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //======================================================================== dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; };
필요 없는 주석 설명글을 제거하면 다음과 같은 모습이 된다.
options { directory "/var/cache/bind"; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; };
다음 내용과 같이 몇줄을 더 추가합니다.
options { directory "/var/cache/bind"; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; recursion yes; allow-transfer { none; }; forwarders { 8.8.8.8; 8.8.4.4; }; forward only; allow-query { any; }; };
recursion no; 라고 설정하면 이 서버에서 정의되지 않은 도메인 요청은 거부(REFUSE)합니다. 이 경우 forward 관련 구문은 무시됩니다.
recursion yes; 라고 설정하면 이 서버에서 정의되지 않은 도메인 요청을 forwarders 서버에 전달하고 결과를 알려줍니다.
일반적으로는 recursion yes 를 많이 사용합니다.
위 예제의 forwarders 는 구글의 공개 DNS 인 8.8.8.8, 8.8.4.4 이며 실제 서비스 환경에서도 사용할 수 있는 값입니다.
forwarders 를 더 나은 곳으로 최적화 하고 싶다면 https://blog.lael.be/post/154 글로 이동하여 가장 적합한 통신사 네임서버를 찾아보세요. 그 값으로 변경하면 됩니다.
allow-query 는 DNS 요청을 허용할 IP 주소입니다. any 는 모든 IP 에 대하여 호출 허용한다는 뜻입니다.
접근 허용 IP 제한은 네트워크 방화벽 또는 클라우드 방화벽 또는 iptables 방화벽 등에서 적절히 설정하세요. (udp 53번 포트)
6. 도메인 네임 zone 파일 추가.
# vi /etc/bind/named.conf.local
zone "naver.com" { type master; file "/etc/bind/db.naver.com"; };
1차 도메인 주소를 적습니다. 이 도메인 주소의 모든 서브도메인을 관리합니다.
7. 도메인 네임 세부 값 설정
# vi /etc/bind/db.naver.com
$TTL 86400 @ IN SOA localhost. root.localhost. ( 1 ; Serial 14400 ; Refresh 14400 ; Retry 1209600 ; Expire 86400 ) ; Negative Cache TTL @ IN NS localhost. @ IN A 52.78.137.201 blog IN A 52.78.137.201
8. 구문 오류 테스트
# named-checkconf # named-checkzone naver.com /etc/bind/db.naver.com
OK 또는 아무 메세지가 출력되지 않으면 정상이다.
9. 변경사항 적용
# service bind9 reload
10. 방화벽 설정
네임서버 표준 포트는 UDP 53 포트입니다. 적절한 접근 제어 권한을 설정하세요.
11. 사용하기
이 네임서버를 사용할 PC 로 이동한 후 네트워크 설정을 합니다.
저는 Apple Mac 을 사용중이며, 맥 컴퓨터의 경우 다음의 위치에서 네임서버를 설정할 수 있습니다.
위의 예제를 실행한 서버의 IP는 175.119.156.148 입니다.
12. 사용 예제
네임서버를 위와 같이 변경한 컴퓨터에서,
naver.com 및 blog.naver.com 이동시 다음과 같은 페이지가 나타나면 성공입니다.
13. 응용
개인정보를 가로채는 피싱(phishing) 사이트 만들때 위와 같이 작업합니다.
공유기 내부의 사내 서버에 접속하게 할 때 사용합니다.
회사 구성원끼리 개발 사이트를 정의할 때 사용됩니다. (각 PC의 host 파일을 변경할 필요가 없어집니다.)
끝~
제가 처음으로 댓글 달았네요
늘 도움 받고 있습니다. 감사합니다.
dnszi.com 사용하고 있는데
이것을 설치하면 ddns도 가능한가요?
네임서버 구축은 어쩔 수 없을 경우에만 하는 것이고, 왠만하면 잘 되어있는 외부 서비스 쓰는게 나아요.
dnszi 가 ddns 를 지원하니 그것을 쓰는것을 추천합니다.
형환찡 꾸준하네
잘 사냐~
ㅋㅋㅋㅋ 김박사님 아니십니까?
연구는 잘 되십니까
어쩌다보니 꾸준히 운영중입니다.
감사합니다 ㅜㅅㅜ …