3322.org动态DNS

2009-05-13 00:47:44来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

在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_success) {
      print $res->content;
  }
  else {

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:my require

下一篇:FreeBSD 4.5 下Squid 代理服务器配置心得