【原创】嵌入式GPS监控系统网络解决方案
0赞当前时代是一个构筑在网络基础之上的信息化时代,基于IP的各种新应用如网络多媒体视频、架设WEB、FTP服务器、邮件系统、远程控制、游戏平台等等,也表现出强大的市场需求。作为以上应用的完整解决方案,目前带宽问题已经基本得到了解决,但仍有一个我们不得不考虑的问题:如何处理动态IP地址。
无论是普通电话线拨号,还是ISDN、ADSL,只要采用了动态IP接入方式,都会遇到这个问题。所谓动态IP接入方式是指用户通过虚拟拨号技术动态地获得IP地址来开展上网业务。每次用户通过普通MODEM或者通过ISDN、ADSL拨号连接Internet时,ISP通常会分配给用户一个公共IP地址,这时候Internet上的其他用户就可以通过这个IP地址访问该计算机。但是,因为这个IP地址是动态的,也就是说一旦断线,下次再连接Internet的时候,ISP将会分配另一个不同的公共IP地址。如果是监控前端采用了动态IP接入方式,在通信的时候,只要监控方能够预先知道监控前端的IP地址,就能够在双方之间建立握手进行通信。但静态IP的昂贵租金仍是困扰用户广泛使用的关键问题。
动态域名解析系统的出现为广大用户彻底解决了这一问题。动态域名解析系统连接internet时,ISP会分配一个动态的IP地址,动态域名解析服务就是把域名与这个动态的IP地址对应起来。动态域名解析服务依赖于动态域名解析系统。域名解析服务系统能提供DNS服务,实现实时、动态地更新DNS;同时拥有客户端程序,可以自动查询本地拨号上网计算机的IP地址,并对域名服务器上登记的IP地址,进行自动更新。而且,它是真正的域名解析服务器,而不是URL重定位器。通过域名服务器的解析,可以提供真正的域名解析服务,提供给访问者网上合法的IP地址(这个IP地址是通过拨号上网的计算机用户从ISP那里租用的合法IP)。
同现行网上免费的域名相比,动态域名解析系统实现了域名解析。动态域名解析在广域网视频监控中的应用 动态域名解析系统基于软件技术实现动态IP与所指定域名的绑定,从而使用户相当于拥有了“静态”IP地址。真正使用户享受到投入宽带、享受专线的超值惊喜。
一、申请域名
1、在我们的方案中选择希网免费动态域名解析服务。首先我们在希网上申请一个域名,具体方法如下:
由上图所示:主机名------域名的主机名,域名的主机名称,长度为3到63个字符。必须是字母、数字和横线(-),以字母开头,不以横线结尾。
IP-----域名指向的IP地址。(默认是用户当前的IP地址)
邮件服务器(mx)--------填入的服务器名称将作为您的域名的邮件服务器。
注意必须填入正确的域名,如果是填入了错误的域名或者邮件服务器的IP地址,会使邮件发送错误。
备份服务器----------填入的服务器为您的服务器的备份邮件服务器。如您的服务器的地址是my.3322.org,而邮件服务器(mx)填入了 mx.myisp.com, 则发往 myname@my.3322.org的邮件,将优先发往 my.3322.org,如果不成功再尝试向 mx.myisp.com发送。
通配符------------如果选择了该选项,则 xxx.my.3322.org的域名,将指向my.3322.org对应的计算机。如www.my.3322.org, ftp.my.3322.org, mail.my.3322.org等都会指向my.3322.org。您就拥有了很多类似的域名!
2、建立子域名方法:
子域名--------建立您的子域名,如果您建了一个abc.3322.org则以后,*.abc.3322.org则全为您的自己域名。
IP地址1-------指向您的域名服务器。
IP地址2-------指向您的另一台域名服务器。
3、建立域名转向服务:
主机名--------建立您自己的域名前缀。您可以根据您的需要建立,域名的主机名称,长度为3到63个字符。必须是字母、数字和横线(-),以字母开头,不以横线结尾。
指向地址-------添入您的域名所对应的页面或是要转向的地址。
主页名称-------为您的主页起一个名子。
使用Frame封装-------选择该选项,将您的主页封装在一个Frame里面,看起来更加整洁。
二、客户端使用
下在客户端软件源代码,进行相应移植,在设备上使用
动态域名
首先去http://www.3322.org/ 申请动态域名。申请之后,
http://www.3322.org/dyndnspage/ez-ipupdate-3.0.10-freebsd4.4-i386.tgz下载他的客户端。然后解压缩,我是解压缩到 /usr/local/bin下的。在里面找到qdns.conf, 那个就是3322.org动态域名的配置文件。在配置文件里面写入:
user=hefish:xxxxxxx #hefish是你申请时的用户名,xxxxxxx是密码
host=web.3322.org #这是你申请的动态域名。
interface=tun0 #这是域名所要指向的IP所在的设备,我们是ADSL拨号,设备就是tun0
写完保存后,就可以启动动态域名了,我是这样启动的
/usr/local/bin/ez-ipupdate -c /usr/local/bin/qdns.conf
之后我们可以用nslookup来看一下,是不是已经把我们注册的动态域名指向了我们刚刚拨号所分配地址。
如果我们不想每次拨号都输入这个命令,你可以把他写到/etc/ppp/ppp.linkup文件中,每次拨号完毕的时候就可以自动运行域名信息更新程序。我的ppp.linkup文件是这样的:
adsl:
iface clear
!bg /usr/local/bin/ez-ipupdate -c /usr/local/bin/qdns.conf
adsl是拨号的配置标号, !bg表示在后台运行ez-ipupdate,注意每一行都是以空格开始的。
使用这种方法可以成功解析到IP,但是问题时解析到的是设备局域网内网IP,我们的方案是采用ADSL+路由的方法,由域名解析服务网站解析外网IP,然后通过路由端口映射将远程的web请求80端口映射到我们设备的web服务器上,所以这里需要的是解析ADSL公网IP。
我们在希网上发现另一种简单域名解析方法,经过测试,可以解析到公网IP,这种方式是直接使用shell命令登陆进行IP与域名的绑定,方法如下:
lynx -mime_header -auth=user : pass http://www.3322.org/dyndns/update?system=dyndns&hostname=myhost.3322.org
可以使用perl脚本来实现这种功能,脚本代码如下:
#!/usr/bin/perl
require LWP::UserAgent;
$user="username";
$pass="password";
$domain="domain.3322.org";
$url="http://".$user.":".$pass."\@members.3322.org/dyndns/update?system=dyndns&hostname=".$domain."&wildcard=OFF";
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;
my $response = $ua->get($url);
If ($response->is_success) {
print $response->content; # or whatever
}
else {
die $response->status_line;
}
使用这种方法需要在板子上移植perl解析器,而perl的移植方法比较复杂,并且移植增加了整个系统的体积,所以应该寻求更为简便的方法,理由系统现有资源实现功能。