歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> 3322.org動態DNS

3322.org動態DNS

日期:2017/3/6 14:28:09   编辑:關於Unix
在Linux or FreeBSD平台下,用Perl腳本實現3322.org動態DNS的功能 基本情況描述 先看一下拓撲 在Linux or FreeBSD的平台下在上面的拓撲的時候可能回出現 從3322.org下的軟件不能用的情況。 具體情況如下。 上面的路由器向SP 通過PPPoE的撥號後,得到一個公網

  在Linux or FreeBSD平台下,用Perl腳本實現3322.org動態DNS的功能

  基本情況描述

  先看一下拓撲

  在Linux or FreeBSD的平台下在上面的拓撲的時候可能回出現 從3322.org下的軟件不能用的情況。

  具體情況如下。

  上面的路由器向SP 通過PPPoE的撥號後,得到一個公網的IP地址。並且配置NAT使下面的LAN上網。這樣下面的這個服務器是沒有公網IP地址的。

  但是這個時候可能需要這個服務器來提供一個3322.org的動態DNS的更新。

  但是在 ez-ipupdate 的配置文件裡面一定要制訂一個interface的參數。如果在配置文件中,制定一個接口,那麼在 3322.org上看到的就是一個Private的IP。

  思路

  看了3322.org上面關於DDNS的協議標准(http://www.3322.org/dyndnspage/protocol.html),然後有看了google上一些人的一些文章。

  其實,他就是通過訪問members.3322.org的web服務器,然後通過URL來傳遞一些參數來實現DDNS的更新。並且,

  ==================================================================================

  myip=ipaddr System:All Optional: Yes

  域名對應的IP。如果不指定,則服務器將選擇最佳的IP(一些Proxy會傳遞客戶端的IP,

  這會被服務器檢測到)。如果傳遞的地址格式錯誤,則忽略這個參數,而用服務器檢測

  到的IP。

  ==================================================================================

  這個部分和有用。原來的程序是通過在配置文件中指定interface來拿到這個myip的參數的。其實,我現在不想讓他拿到這個IPaddr。

  很久以前還在大學的時候看過一些Perl的東西,可以通過Perl來實現 DDNS的更新。

  由於編程水平有限,下面的script是沒有一點錯誤處理的。畢竟是想自己用麼。不想形成一個Perl的軟件。(也沒有必要寫的太完美)。

  Perl的腳本如下:

  #!/usr/bin/perl

  use LWP::UserAgent;

  $ua = LWP::UserAgent->new;

  $ua->agent("MyApp/0.1 ");

  # Create a request

  my $req = HTTP::Request->new(POST => 'http://username:password\@members.3322.org/dyndns/update');

  $req->content_type('application/x-www-form-urlencoded');

  $req->content('system=dyndns&hostname=host.3322.org&myip=abc&wildcard=OFF');

  # Pass request to the user agent and get a response back

  my $res = $ua->request($req);

  # Check the outcome of the response

  if ($res->is_suclearcase/" target="_blank" >ccess) {

  print $res->content;

  }

  else {

  print $res->status_line, "\n";

  }

  腳本裡面的username and password 還有host.3322.org可以根據你自己的情況來修改。

  著先寫到這裡,以後要用到就可以用了。

Copyright © Linux教程網 All Rights Reserved