/*  
======================================================  

   본 문서의 저작권자 : 조성준  
   저작권자 홈펭지 : http://www.openphp.com  
   연락처 : eggtech@orgio.net / openphp@openphp.com  
   라이센스 : GPL ( GNU Public License)  
   작성일 : 2001년 06월 08일  

======================================================  
*/  

안녕 하세요 주인장 조성준입니다 ^^

이번 광자는 요청에 의한것입니다.
별다른건 아니지만 서브 도메인 실시간 방법입니다
저도 저혼자 개발해 본거라 다른 더 획기적인 방법이 있겠디만서도.
저로써는 이 방법으로 하였습니다.

* 먼저 공부하셔야 하는것들 *

http://kldp.org/KoreanDoc/html/PoweredByDNS-KLDP/PoweredByDNS-3.4.html

김승연님의 DNS 셋팅 방법에 대해 필히 읽으셔야만 합니다


1. DNS 셋팅.

DNS 서버인 Bind를 기준한다.
Bind는 RPM으로 까는 것도 편하지만 소스로 깔기를 밯한다
설치 방법은 위 DNS 설명서에도 있느니 참고 바란다.

./confgure ; make ; make install

2. DNS 전용 계정 추가

DNS는 기본 RPM등이나 예전 버전의 경우 ROOT 계정으로  
데몬을 운영하게 된디. 하지만 엄청난 보안 버그를 일으켜서
왠만한 크래커는 손쉽게 된다 …그렇다면 방법은
Bind 전용 계정과 Chroot로 운영 하는 방법이 있지만
이 장에서 Chroot에 대한 것은 설명치 않겠다.

자 이제 계정 추가를 하자
계정은 따로 로그인 필요가 없다

adduser -c "Name Server Mainterner" -M -s /bin/false named

password named

그다음은 계정 암호 2번 넣으면 계정이 추가 된가.

3. DNS 뒤우장.그리고 시스템 리부팅 되더라도 다시 뛰우장.

데몬 듸우기 : named -u named
데몬 계속 띄우기 : /etc/rc.d/rc.local에 맨 마지막 줄에 위 부분을 추가한다. 절대 주소와 함께
ex) /usr/sbin/name -u named

4. 우리의 PHP가 이 데몬에 접근 할수 있도록 만들자

apache의 서버에 계정과 그룹을 바꾼다.

- 기존 셋팅 -

User nobody
Group nobody

- 고친후 -

User named
Group named

그다음 아파치를 다시 듸운다..

그리고 pa aux 명령으로 apache 데몬이 named 계정으로 되었는지 보시고
되었다면 정상 OK.~~

5. 자 기본작업은 되었으니 DNS 설정 파일 변경

DNS의 경우 ZOne파일들이 /var/named 안에 모든 파일이 존재하게 된다.

만약에 openphp.com으로 서브 도에민을 만들기 위해
named.conf에 openphp.com에 대한 zone파일을  
/var/named/openphp.db 로 지장한경우로 이제 설명 하겠다.

기본적으로 아래의 파일에 넣어 두면 좋겠지만
관리자 사실 귀찮아 진다.
그러므로 서브 도메인 솬리 파일을 따로 만들게 된다.

DNS 서버세팅을 위해 $INCLUDE 라는 지시가가 있다 프로그램밍 한다면

다알것이다. 읽어 들이는 명령어 있다
이것은 openphp.db 파일에 추가 한다.

- 예제 -

$TTL    86400
@       IN      SOA     ns1.*****.com. root.*****.com.  (
                                      2001051010 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS        ns1.*****.com.
              IN      MX 10     @

@               IN      A       ***.***.***.***
www             IN      A       ***.***.***.***

$INCLUDE subdomain.db

보이는가 subdomain.db가 음하하
이제 subdomain.db를 만들어야 한다

echo "" > /var/named/subdomain.db
chown named:named /var/named/subdomain.db

자 이제 셋팅은 완료 되었다..


6. 프로그램밍

자 이제 프로그램밍이다.이건 100%알려 줄수없다. 만약에 내가 알려주고 모든걸 답해 준다면.
쉽게 얻은 지식은 금방 잊어 버리게 되고 나만의 로직이 될수 없다.
그러 므로 힌트만 줄것이다. 너무 실망하지 마라 이건 여러분의 일이다.
지금 까지의 부분 만으로도 프로그램밍 공부를 했다면 다 가능 하다.
자 힌트를 이제 주도록 하겠당.

자 이제 사용자에게 여러가지 데이타를 받을 것이다

1.원하는 서브 도메인
2.포워딩해줄 웹 사이트 주소나 IP

자 에지 이 두 정보를 이용해서. BIND관리용 파일인 subdomain.db에 추가 하고 하면된다.

간단한 예제는 다음과 같다.

서브 도메인 : 1004
포워딩 주소 : www.yahoo.co.kr


$sub = "1004";
$for = "www.yahoo.co.kr";

$subdns = "$subtINtA$forn";

$ft = fopen("/var/named/subdomain.db","a");
fwrite($ft,"$subdns");
fclose($ft)

자 이제는 간단히 해본다면 파일에 정상적으로 추가가된것을 볼수 있다
이제는 DNS서버에서 변경된 부분은 읽어 들여야 한다.
설치시 ndc 또는 rnbc 라는 프로그램이 들어 있을 것이다
ndc는 버전 8일때 rnbc일경우 9일때이다.


명령은 다음과 같다.

exec("ndc reload");

이제 끝이다. ndc도 없고 rnbc도 없다면

exec("killall named ; named -u named");

자 이제 정리 하다 전체 프로그램을 만든어 보자.

$name = "기압자 : 조성준 /openphp.com";
$sub = "1004";
$for = "www.yahoo.co.kr";

$subdns = "; $namen$subtINtA$forn";

$ft = fopen("/var/named/subdomain.db","a");
fwrite($ft,"$subdns");
fclose($ft);
@exec("ndc reload",$output,$error);

if($output or $error)
{
        echo "::: Message : $output , Error Repoer : $error :::";
}

자 이제 나머지는 본인의 몪이다.
내가 직접 다 짜준다면 자신만의 실력을 키울수 없다.
나머지는 여러분의 공부로 여러분의 지식과 노력에 의해 쌓여 진다.
나는 보안 문제등을 생각하면서 하느라고 다른 방법을 사용하기도한다.
하지만 위 방법도 문제시 되고 있지는 않다.
다른 사이트 해주었으니가 거기에는 기능이 엄청 들어가 있기는 하지만서도

이제 여러분의 응용만 남았다. 자 힘내라.
더 좋은 힌트는 DNS 자료는 DB를 이용할수도 있다.
아직 테스트는 못해 보았지만 계속 문서 탐닉 중이다.

서버도메인 자동발급을 위한 네임서버구현방법

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다