實現具有動態主機IP的域名解析 (轉)
實現具有動態主機IP的域名解析 (轉)[@more@]
[ 作者: wenhuah 新增時間: 2001-5-2 12:24:33 ]
來源:
目的利用一臺INTE HOST 將域名定向到家中(個人)的主機上.
目前CABLEMODEM已經很快了,而且有動態IP,所以就有了將域名解析到個人機器的上可能.
只要透過很簡單的設定就可以搞定.
例如你有一個域名叫 yourain.,你可以將此域名解析任意的主機.
1. (IP: A.A.A.A) 啟動DNS動態解析的一個小程式.
yourdomain.com的域名為 /var/named/yourdomain.com
再建個/var/named/yourdomain.com.static (模板檔案可以用來生成yourdomain.com的)
(1.3 , ,找個網管幫一下吧:)
=================================================
# 原始碼如下: ThreadDNSReloadServer.
import java.io.*;
import java.net.*;
public class ThreadDNSReloadServer
{ public static void main(String[] args)
{ int i=1;
try
{ ServerSocket s=new ServerSocket(8189);
for (;;)
{ Socket incoming =s.accept();
System.out.println("accept new client: " + i);
new ThreadDNSReloadHandle(incoming,i).start();
i++ ;
}
}
catch (Exception e)
{ System.out.println(e);
}
}
}
class ThreadDNSReloadHandle extends Thread
{ public ThreadDNSReloadHandle(Socket i,int c)
{ incoming= i; counter=c; }
public void run()
{ try
{ BufferedReader in=new BufferedReader(new InputStreamReader(incoming.getInputStream()));
String User="Unkown";
String DNILEPATH="/var/named/";
String DNSFILE="yourdomain.com";
String HOSTIP="127.0.0.1";
boolean USER_VALIDATED=true ;
boolean done=false;
while ( !done )
{ String str=in.readLine();
//validate user;
if ( str ==null ) done=true;
else
{
str=str.trim();
if ( str.substring(0,2).equals("LA") )
{ if (str.length() >2) User=str.substring(2);
}
if ( str.substring(0,2).equals("LB") )
{ if (str.length() >2) DNSFILE=str.substring(2);
}
if ( str.substring(0,2).equals("LC") )
{ if (str.length() >2) HOSTIP=str.substring(2);
}
if ( str.trim().equals("BYE")) done = true;
}
}
incoming.close();
//加入驗證.
//將伺服器中的yourdomain.com.cn.static檔案寫入yourdomain.com.cn中
String DNSTMP =DNSFILEPATH + DNSFILE +".static";
BufferedReader sin=new BufferedReader(new FileReader(DNSTMP));
PrintWriter sout=new PrintWriter(new FileWriter(DNSFILEPATH + DNSFILE) , true);
String s;
while ((s=sin.readLine()) != null)
{
if (s.startsWith("host"))
{ s="host IN A " + HOSTIP;
sout.println(s);
s="@ IN A " + HOSTIP;
}
sout.println(s);
}
//System.out.println("User:" + User );
//System.out.println("DNSFILE:" + DNSFILE );
//System.out.println("HOSTIP:" + HOST);
//ndc reload
String command="ndc reload " + DNSFILE ;
java.lang.Runtime.getRuntime().exec(command);
}
catch ( Exception e)
{ System.out.println(e);
}
}
private Socket incoming;
private int counter;
}
2.客戶機( / linux)
==============================================================
# 客戶端每次啟動時加入到開機啟動(或程式中): SockTest.java
import java.io.*;
import java.net.*;
public class SocketTest
{ public static void main(String[] args)
{ try
{ Socket s=new Socket("A.A.A.A",8189);
BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out=new PrintWriter(s.getOutputStream(),true);
InetAddress localHostAddress =InetAddress.getLocalHost() ; //get LocalHost Ip
out.println("LAguest");
out.println("LByourdomain.com");
out.println("LC" + localHostAddress.getHostAddress() );
out.close();
s.close();
}
catch (IOException e)
{ System.out.println(e);
}
}
}
=========================================================
dns 樣本檔案: ( yourdomain.com.static)
@ ns.dnsserver.com xxxxx
xxxx
......
host IN A 127.0.0.1 // 此處就是要更改的地方
www IN CNAME host
...
[ 作者: wenhuah 新增時間: 2001-5-2 12:24:33 ]
來源:
目的利用一臺INTE HOST 將域名定向到家中(個人)的主機上.
目前CABLEMODEM已經很快了,而且有動態IP,所以就有了將域名解析到個人機器的上可能.
只要透過很簡單的設定就可以搞定.
例如你有一個域名叫 yourain.,你可以將此域名解析任意的主機.
1. (IP: A.A.A.A) 啟動DNS動態解析的一個小程式.
yourdomain.com的域名為 /var/named/yourdomain.com
再建個/var/named/yourdomain.com.static (模板檔案可以用來生成yourdomain.com的)
(1.3 , ,找個網管幫一下吧:)
=================================================
# 原始碼如下: ThreadDNSReloadServer.
import java.io.*;
import java.net.*;
public class ThreadDNSReloadServer
{ public static void main(String[] args)
{ int i=1;
try
{ ServerSocket s=new ServerSocket(8189);
for (;;)
{ Socket incoming =s.accept();
System.out.println("accept new client: " + i);
new ThreadDNSReloadHandle(incoming,i).start();
i++ ;
}
}
catch (Exception e)
{ System.out.println(e);
}
}
}
class ThreadDNSReloadHandle extends Thread
{ public ThreadDNSReloadHandle(Socket i,int c)
{ incoming= i; counter=c; }
public void run()
{ try
{ BufferedReader in=new BufferedReader(new InputStreamReader(incoming.getInputStream()));
String User="Unkown";
String DNILEPATH="/var/named/";
String DNSFILE="yourdomain.com";
String HOSTIP="127.0.0.1";
boolean USER_VALIDATED=true ;
boolean done=false;
while ( !done )
{ String str=in.readLine();
//validate user;
if ( str ==null ) done=true;
else
{
str=str.trim();
if ( str.substring(0,2).equals("LA") )
{ if (str.length() >2) User=str.substring(2);
}
if ( str.substring(0,2).equals("LB") )
{ if (str.length() >2) DNSFILE=str.substring(2);
}
if ( str.substring(0,2).equals("LC") )
{ if (str.length() >2) HOSTIP=str.substring(2);
}
if ( str.trim().equals("BYE")) done = true;
}
}
incoming.close();
//加入驗證.
//將伺服器中的yourdomain.com.cn.static檔案寫入yourdomain.com.cn中
String DNSTMP =DNSFILEPATH + DNSFILE +".static";
BufferedReader sin=new BufferedReader(new FileReader(DNSTMP));
PrintWriter sout=new PrintWriter(new FileWriter(DNSFILEPATH + DNSFILE) , true);
String s;
while ((s=sin.readLine()) != null)
{
if (s.startsWith("host"))
{ s="host IN A " + HOSTIP;
sout.println(s);
s="@ IN A " + HOSTIP;
}
sout.println(s);
}
//System.out.println("User:" + User );
//System.out.println("DNSFILE:" + DNSFILE );
//System.out.println("HOSTIP:" + HOST);
//ndc reload
String command="ndc reload " + DNSFILE ;
java.lang.Runtime.getRuntime().exec(command);
}
catch ( Exception e)
{ System.out.println(e);
}
}
private Socket incoming;
private int counter;
}
2.客戶機( / linux)
==============================================================
# 客戶端每次啟動時加入到開機啟動(或程式中): SockTest.java
import java.io.*;
import java.net.*;
public class SocketTest
{ public static void main(String[] args)
{ try
{ Socket s=new Socket("A.A.A.A",8189);
BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out=new PrintWriter(s.getOutputStream(),true);
InetAddress localHostAddress =InetAddress.getLocalHost() ; //get LocalHost Ip
out.println("LAguest");
out.println("LByourdomain.com");
out.println("LC" + localHostAddress.getHostAddress() );
out.close();
s.close();
}
catch (IOException e)
{ System.out.println(e);
}
}
}
=========================================================
dns 樣本檔案: ( yourdomain.com.static)
@ ns.dnsserver.com xxxxx
xxxx
......
host IN A 127.0.0.1 // 此處就是要更改的地方
www IN CNAME host
...
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1000217/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 將某一主機域名解析為IP地址。 (轉)
- 將某一主機域名解析為IP地址 (轉)
- HP主機訪問動態IP主機配置
- 如何進行動態ip的域名解析設定?
- canvas實現具有粒子效果的動態進度條Canvas
- 得到計算機的主機名和IP地址 (轉)計算機
- css3實現邊框具有動態環形遮罩效果CSSS3遮罩
- Nginx利用Lua+Redis實現動態封禁IP的方法NginxRedis
- 使用PHP實現動態代理IP的示例程式碼PHP
- 主機掃描程式實現方法 (轉)
- apache(包含虛擬主機)禁止使用IP訪問的實現方法Apache
- SQL 如何實現動態的行列轉置SQL
- 更改solaris IP地址和主機名(轉)
- Nginx 實現動態封禁IP,詳細教程來了Nginx
- 網路安全之IPSG防止DHCP動態主機私自更改IP地址
- 使用iptable實現動態防火牆(轉)防火牆
- BCB中實現動態建立元件 (轉)元件
- 動態IP與靜態IP的主要區別
- 動態主機配置協議DHCP協議
- 動態主機配置協議(DHCP)協議
- 動態棧的實現
- 4.2.13 主備庫實現自動故障轉移
- 在VB中實現窗體的動態效果 (轉)
- 利用模板實現動態的繼承體系 (轉)繼承
- 如何實現Java 設定動態代理ip的具體操作步驟Java
- 蘋果IP-國內最大的動態IP服務商,千萬級動態IP蘋果
- Android 動態佈局實現多主題切換Android
- webwork下面如何實現動態轉發Web
- 運用反射實現ejb動態委派 (轉)反射
- 根據ip列表檢測主機狀態(shell指令碼)指令碼
- DHCP 動態主機設定協議協議
- 如何高效實現掃描區域網IP、主機名、MAC和埠Mac
- 域名繫結動態IP實戰案例
- 【知識分享】動態ip和靜態ip的區別
- 簡單實現Crystal Report的動態載入 (轉)
- 使用動態SQL語句實現簡單的行列轉置(動態產生列)SQL
- solaris 主機修改主機名 ip地址 步驟
- 動態ip代理教你:如何用爬蟲實現前端頁面渲染爬蟲前端