[알고리즘] 유동ip 를 고정ip 로 변환하는 프로그램 구현
로빈아빠
본문
또 심심해서 짬을 내서 간단하게 구현해 보았습니다. 고정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 에서 다운받을수 있습니다 |
관련링크
댓글목록
등록된 댓글이 없습니다.