由于Linux 是一个类Unix 的操作系统,操作系统的管理又是一个烦琐的过程。英特网的发展给我们带来了一个简易的计算作业平台,其应用已经遍布科研教学、企业电子商务及网络生活等各个角落,Web 技术使英特网的信息传输更为快捷迅速,瘦客户机的计算模型在英特网中得到了广泛的应用。如果我们能够把Linux 的系统管理移植到Web 计算平台上,将使Linux 系统管理员的负担大大减轻,方便Linux 的系统管理。同时由于Web 的分布式计算特点,系统的管理不受地域的限制,能够方便的实现Linux 系统的远程管理。
鉴于以上分析,我在这里将实现一个简易的基于Linux Web 平台的Linux DNS域名远程管理系统。由于Sun 的Sparc芯片的服务器性能比PC机优良,而且总线是64位的,因此我们选用Sparc机作服务器,选用刚推出的64位中文Linux Penguin64操作系统,作为系统的硬件环境.
用CGI远程调用DNS原理分析:
1) 这一套系统是Web页面形式的,这样方便用户可以在任何可以连接到服务器的主机上进行配置.我们可以用php或perl进行编写cgi 程序,用php编写起来比较简单,利于上手,但考虑到要用cgi调用DNS的命令,利用perl 更利于操作,因此用perl进行编写.用cgi调用DNS的命令和配置文件,直接对配置文件进行改写然后保存使DNS服务器起作用.
2) 下面可以根据图表和抓图来具体分析一下cgi程序调用DNS进行配置的过程:
首先介绍一下本系统的几个重要的模块:
web-lib.pl:这个模块里直接定义了本系统其他模快需要的函数.
如: PrintHeader 打印HTTP 流的数据头
header(title) 输出一个带标题的页面头部
还有读入,查找,等其他函数.
records-lib.pl:这个模块里存放了有关一些记录信息的处理函数
如 保存记录,创造,删除记录等函数.
bind8-lib.pl: 这个模块里存放了对bind8 中配置文件操作的基本函数
(这里的bind8就是指DNS)
create_master.cgi: 这个模块用于建立一个新的主域.
master_form.cgi : 此模块建立一个新的主域
edit_master_zone.cgi: 此模块编辑已经存在的主域的选项和结构.
save_master.cgi : 此模块保存主域选项的改变到named.conf.
edit_text.cgi: 此模块显示和修改一个用于手工编辑记录文件的表结构.
save_text.cgi: 此模块保存一个手工编辑的域文件.
edit_record.cgi: 此模块编辑某种已经存在的记录类型.
save_record.cgi: 此模块添加或更新某些类型的记录
delete_zone.cgi: 此模块删除一个已经存在的主域、从域或转交域,以及它的记录文件.
dns_boot.cgi: 此模块建立一个空的named.conf 文件并重定向到index.cgi.
start.cgi: 此模块启动bind8
restart.cgi: 此模块重起正在运行的程序named
index.cgi: 这个文件是用户登录的首页,用户可以在此页面选择创建或编辑DNS的域.该文件再调用上面的各模
块进行操作.
系统运行过程:
在index.cgi首页上可以进行创建主域,编辑主域或添加修改SOA信息.用户点击创建一个主域后就进入下一页面master_form.cgi,用户在此页面填写创建的信息:
填完信息后点击保存,此时系统调用create_master.cgi,将用户所填的信息在/etc/named.conf中添加一行信息如:
zone "guhang.com"{
type master;
file "www.guhang.com";
};
(DNS的named.conf文件配置,在上面已经讲到)
同时,create_master.cgi在/var/named/目录里创建www.guhang.com记录文件.详细解释了”guhang.com” 域的的信息.,创建完毕后,系统回到index.cgi页面等待用户进行编辑域信息.
回到主页面后,用户可以点中刚创建的主域,如:www.guhang.com,调入edit_master.cgi页面进行添加主域的信息或修改其内容。
用户可在这一页面点击各选项图标进行配置, 可以添加域内的主机地址,名字服务器的地址,邮件服务器的地址等,
然后调用edit_recs.cgi将所填入的信息创建出来显示在该页面上,并调用save_record.cgi保存到 /var/named/目录下的”www.guhang.com”文件中,生成如下的主域解释信息:
@ IN SOA guhang.com. hostmaster.guhang.com. (
1997022700 ; serial
28800 ; refresh
14400 ; retry
3600000 ; expire
86400 ; default_ttl
)
@ IN NS www.guhang.com.
@ IN MX 10 mj.guhang.com.
localhost IN A 127.0.0.1
mj IN A 192.192.192.35
song IN A 159.226.4.200
zou IN A 159.226.4.211
www IN A 192.192.192.35
#www IN CNAME @
若要保存整个edit_master.cgi页面的信息则调用save_master.cgi进行保存后返回edit_master.cgi页面, 若要删除主域信息则调用delete_zone.cgi将整个主域信息内容全部删除掉,并返回到index.cgi等待用户添加新的信息.
这样修改如同在linux控制台下进行手工配置一样,然后保存重起named就可以起作用了.配置完成之后就可以访问到www.guhang.com这个域了.
总结:
通过CGI调用DNS进行配置的确起到操作简单,配置轻松的好处,而且可以不限制在服务器上,相比较在Linux 控制台下进行手工配置要方便的多,但是这也需要配置人员对DNS的原理有一定的了解,最好是手工配过DNS服务器,因为CGI 还是将你的配置信息写入,BIND8的配置文档里,调用的BIND8的命令而已.我们还可以触类旁通,利用 CGI进行Apache,Sendmail,Dhcp,Ftp,甚至是Linux的用户,文件的配置和管理操作.当然,我们可以用shell,c,等进行编写CGI同样可以调用Linux的命令操作,但由于Perl是超级shell语言功能强大,所以还是用Perl写比较方便一些,但由于Perl的语法规则比较多,尤其是正规表达式和模式匹配这一部分较难理解,所以在编写过程中不免有些漏洞和不解之处,由于时间短,所以对Perl了解不深,难免出错,这在将来的开发中还要进行修改和加强 .
名词解释:
名词 描述
HTML Hypertext Markup Language,超文本链接标示语言。
C/S Client/Server,客户机/服务器模式。
SQL Structured Query Language,结构化查询语言。
Samba 一组程序,可以使你的Linux具备理解SMB协议(Server Message Block,一种在OS/2、WindowsNT、
Windows9x和Windows for workgroups等Windows系列中广泛使用的协议,该协议主要用来实现文件和打印机共
享)的能力。
DNS Domain Name Server,域名服务器,为计算机网络提供名字解析服务。
SMTP Simple Message Transfer Protocol,简单邮件传输协议,用于电子邮件的传输。
POP Post Office Protocol,邮局协议,由与电子邮件的接受。
AppleTalk Mac苹果机所用的网络协议之一。
ISDN Integrated Services Digital Network,综合业务数字网。
PPP Peer-Peer Protocol,端对端协议。
SLIP Serial Line Interface Protocol,串行线路接口协议。
ATM Asynchronous Transfer Mode,异步传输模式。
FTP File Transfer Protocol,文件传输协议。
DHCP Dynamic Host Configuration Protocol,动态主机配置协议,允许主机自动从网络获取本机的基本配
置信息(IP、DNS、…)。
TCP/IP TCP:Transfer Control Protocol,传输控制协议。
IP:Internet Protocol,网际协议。
NFS Network File System,网络文件系统。
CGI Common Gateway Interface,通用网关接口。
Java 一种新型的面向对象计算机编程语言,广泛应用于英特网及嵌入式系统设计。
Perl Practical Extraction and Report Language,Unix系统上的一种编程语言。
POSIX Portable Operating System Interface,可移植操作系统界面。
GUI Graphics User Interface,图形用户界面。