커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
*
HanIRC의 #coffeenix 방
[
장비 및 회선 후원
]
> Forum <
IT 일정
N
e
w
!
자동화 프로젝트
HOME
>
네트워크(network)
>
네임서버(name server, dns, bind)
도움말
검색 :
사이트
WHOIS
웹서버 종류
BIND와 rndc를 이용한 유동IP에 동적도메인 설정하기
작성일 : 2005/09/04 20:51
글쓴이 : 박명우 (
http://www.ziwoo.net/zb/view.php?uid=71&startPage=1&boardid=zb_ziwoo_pds
)
조회수 : 16301
[
이전화면
/
수정
] 비밀번호 :
제목 : rndc 를 이용한 유동IP에 동적도메인 설정하기 - 클라이언트, 호스트
<img src='
http://www.ziwoo.net/zb/upload/zb_ziwoo_pds_71_3.jpg
'>
[개요]
개인적으로 필요해서 만들었는데 나름대로 유용할 것 같아서 올려봅니다.
잘 하시는분들은 한두시간이면 만들 수 있는 스크립트들이지만,
아직 개념이 부족한 분이나 공부하시는 분들께는 참고가 될 듯 싶네요..
파일 업로드가 안되므로 관련파일은 제 홈페이지 자료실에 올려 놓겠습니다.
조금전 완성해서 10여분간만 테스트 해보았으므로 사소한 스크립트의 오류등이 있을지도 모르겠네요..
혹시 발견되면 리플 달아주시고요.. 아는게 php와 javascript 뿐이라 이렇게 만들었구요.
트레이빠에 쏙~ 들어가게 만들면 좋으련만..
[설정]
nsupdate.hta 파일에 호스트명과 서버의 도메인을 알맞게 변경하세요.
호스트명은 이미 네임서버의 zone파일에 등록이 되어 있어야만 합니다.
즉 IP를 갱신만 하지.. 신규로 등록하진 못합니다.
nsupdate.php 의 암호키부분을 서버의 /etc/rndc.key 파일의 안에 있는 인코딩된 암호키넘버와
같게 변경하세요.
rndc 키 생성방법등은 설명하지 않습니다.
검색엔진 등을 이용해서 별도의 문서를 참조하세요.
[테스트환경]
서버 OS : Redhat Linux 7.2
서버 네임데몬 : BIND 9.x
클라이언트 OS : windows XP
[파일설명]
nsupdate.hta
- 클라이언트 파일
- htm 파일을 확장자만 hta 로 변경하여 윈도우즈 HTML 어플리케이션으로 변경.
- 자바스크립트 <dynamic src>를 이용하여 일정한 시간 간격으로 클라이언트의 IP를 서버에 전송.
nsupdate.php
- 호스트 파일
- 클라이언트가 보낸 호스트.도메인명의 IP를 갱신하도록 BIND에 전달.
기타 아이콘 및 이미지 파일 등
[nsupdate.hta 파일 내용]
<html>
<head>
<title>NS UPDATE</title>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
<style>body,table,button,textarea{font-size:9pt}</style>
<HTA:APPLICATION
applicationName="NS UPDATE"
id="nsupdate_client"
border="dialog"
maximizeButton="no"
scroll="no"
version="0.1"
singleInstance="no"
innerBorder="no"
contextMenu="no"
icon="nsupdate.ico"
/>
<script id="dynamic"></script>
<script language="javascript">
<!--
// Domain Name
var myHost = "woorizip.ziwoo.net";
var myDomain = "www.ziwoo.net";
window.resizeTo(250,230);
dynamic.src="http://"+myDomain+"/nsupdate.php?mode=get_my_ip&my_host="+myHost;
function start_ip(){
dynamic.src="http://"+myDomain+"/nsupdate.php?mode=start_ip&my_host="+myHost;
document.all.nsicon.src="nsupdate2.gif";
document.all.status.innerHTML="Connecting..";
timmer();
}
function timmer(){
var int_time = parseInt(document.F.int_time.value) * 1000 * 60;
var_loop = setTimeout("start_ip()",int_time);
}
function stop_ip(){
if(confirm("Are you sure disconnect?")){
clearTimeout(var_loop);
document.all.button_start.style.display = 'inline';
document.all.button_stop.style.display = 'none';
document.all.nsicon.src="nsupdate1.gif";
document.all.status.innerHTML="Disonnect";
}
}
//-->
</script>
</head>
<body bgcolor="#cccccc" text="#000000" topmargin="0" leftmargin="0" onLOad="start_ip()">
<table width="250" height="50" bgcolor="FFFFFF">
<form name="F">
<tr><td align="center"><img id="nsicon" src="nsupdate1.gif"></td></tr>
</table>
<table align="center" bgcolor="CCCCCC">
<tr><td height="5"></td></tr>
<tr><td>Status: <span id="status">Disconnect</span></td></tr>
<tr><td>Host: <span id="my_host"></span></td></tr>
<tr><td>IP Address: <span id="my_ip"></span></td></tr>
<tr><td>Count: <span id="int_count">0</span></td></tr>
<tr><td>Interval: <input type="text" name="int_time" value="10" size="2"> min</td></tr>
<tr><td height="5"></td></tr>
<tr>
<td align="center">
<input id="button_start" type="button" value="Connect" onClick="start_ip();" style="display:inline">
<input id="button_stop" type="button" value="Disconnect" onClick="stop_ip();" style="display:none">
</td>
</tr>
</form>
</table>
</html>
[nsupdate.php 파일 내용]
<?
$my_host = $_GET["my_host"];
if($mode=="get_my_ip"){
?>
document.all.my_host.innerHTML = "<?=$my_host?>";
document.all.my_ip.innerHTML = "<?=$REMOTE_ADDR?>";
<?
}elseif($mode=="start_ip"){
$fh=popen("/usr/bin/nsupdate -d -y rndc-key:CdBg+0jQPycv2ejgGAy/d4==","w");
$foo=fread($fh,2);
fwrite($fh,"prereq yxdomain ".$my_host." \r\n");
$foo=fread($fh,2);
fwrite($fh,"update delete ".$my_host." \r\n");
$foo=fread($fh,2);
fwrite($fh,"update add ".$my_host." 0 A ".$REMOTE_ADDR."\r\n");
$foo=fread($fh,2);
fwrite($fh,"send \r\n");
$foo=fread($fh,2);
fwrite($fh,"quit \r\n");
$foo=fread($fh,8096);
unset($fh);
?>
document.all.my_ip.innerHTML = "<?=$REMOTE_ADDR?>";
document.all.button_start.style.display = 'none';
document.all.button_stop.style.display = 'inline';
document.all.int_count.innerHTML = parseInt(document.all.int_count.innerHTML)+1;
document.all.nsicon.src="nsupdate3.gif";
document.all.status.innerHTML="Connected";
<?
}
?>
커피닉스 카페 최근 글
[11/06]
World News Digest:
[06/16]
[질문]SAN 스위치 브로드케이드 dcx8510-4 장비관련입니다.
[04/22]
Re: 영화속에 컴퓨터 이야기 ~스워드피쉬(2001)
[10/20]
Cross Compiler 깔
[07/14]
SSL АО
[04/26]
Re: 도스화면 원격조종 여부
[04/25]
도스화면 원격조종 여부
[10/30]
Cshell에서 난수 설정
[10/23]
공항철도주식회사 SE 구인 件
[01/26]
Re: wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
[01/25]
wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
[01/11]
특정 안드로이드 WebView 버전에서 SSL 문제 (WebView 버그)
[08/01]
DNS forwarder (전달자) 서버를 통해서 쿼리하면 역방향을 받아오질 못합니다.
[05/16]
(주)후이즈 시스템엔지니어 (경력자) 모집
[02/15]
[AWS] Cloudfront edge 확인하기
N
e
w
! 최근에 등록한 페이지
KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
오픈캐스케이드 캐드 (OpenCASCADE CAD)
QCad for Windows --- GNU GPL (Free Software)
The Hello World Collection
IPMI를 활용한 리눅스 서버관리
DNS 설정 검사
nagiosgraph 설치 방법
Slony-I 설치 방법 (postgresql replication tool)
Qmail기반의 Anti spam 시스템 구축하기
clusterssh
[ 함께하는 사이트 ]
운영진 :
좋은진호(truefeel)
, 야수(yasu), 범냉이, sCag
2003년 8월 4일~