[알고리즘] 유동ip 를 고정ip 로 변환하는 프로그램 구현

페이지 정보

profile_image
작성자 로빈아빠
댓글 0건 조회 8,774회 작성일 09-12-24 04:36

본문

또 심심해서 짬을 내서 간단하게 구현해 보았습니다.

고정ip 라 함은 실제 고정ip 가 아니라 유동ip 에 도메인주소를 부여하는것으로

보통 dynamic dns 라고 하는 서비스가 이에 속합니다.

유동IP 에 도메인을 주는 방법은 네임서버를 실시간으로 갱신해야 한다는것을

기본적으로 알고 계실것입니다.

일단 윈도우의 경우 실시간 갱신이 되는 네임서버군이 있는지 모르기 때문에 제외하고

리눅스 APM+BIND8 환경으로 설명하겠습니다.

일단 구현 방법은

1. PHP나 소켓서버 등에서 사용자의 IP(유동IP) 를 받는다.

2. 네임서버를 갱신한다.

입니다.

일단... 1번의 구현은 말 안해도 다 아실것이고 (스쿨분들 똑똑하시니까요)

2번부터 설명에 들어갑니다.

일단 named.conf 파일을 수정해야 합니다. 이 파일은 일반적으로 /etc/named.conf 입니다.

그 파일을 열어서...

zone "testdomain.net" {
type master;
file "testdomain.net.zone";
};
//testdomain.net 은 예를 든것입니다.

이런식으로 되어있을텐데 이것에 allow-update { 123.456.789.012; }; 문장을 추가합니다.

zone "testdomain.net" {
type master;
file "testdomain.net.zone";
allow-update { 123.456.789.012; };
};

123.456.789.012 는 서버의(웹서버 혹은 소켓서버) ip 를 추가하시면 됩니다.

그다음에 네임서버를 재시작 하시면 일단 기본적인 준비는 모두 끝났습니다.

다음 문제는 실시간으로 어떻게 도메인 정보를 업데이트하느냐.. 라는 문제인데..

BIND8 부터는 nsupdate 라는 아주 멋진 프로그램이 포함되어있습니다.

이 nsupdate 를 사용해서 도메인을 실시간으로 업데이트 할수가 있습니다.

자세한 내용은 김승영님께서 작성한 Powered by DNS 라는 문서를 보시면 되겠습니다.

이 문서는 검색엔진에서 쉽게 찾아볼수 있습니다.

제가 사용한 db 구조는 아주 단순합니다.

CREATE TABLE _dynamic_ (
seqcd int(13) NOT NULL auto_increment,
id varchar(20) NOT NULL default '', //유저id
passwd varchar(20) NOT NULL default '', //유저패스워드
ip varchar(20) NOT NULL default '', //가장 최근에 갱신한 ip 주소
PRIMARY KEY (seqcd)
) TYPE=MyISAM;

가 되겠습니다. seqcd 는 일련번호, id 는 2차 도메인의 앞부분을 의미합니다.

즉 xkool.net 이라는 도메인에서 서비스를 한다면 test 라는 id 를 가진 사람은 test.xkool.net 를 사용할수

있게 되는 것입니다.

나머지 소스는 받아서 보고 분석해보시기 바랍니다.

아주 간단한 소스이고, 파일 두개로 이루어진 간단 소스입니다.

http://www.xkool.net/linuxddns.rar 에서 다운받을수 있습니다

댓글목록

등록된 댓글이 없습니다.