由 bitfire 在 05-27-2004 11:21 发表:
原创:把DNS服务器从windows移植到linux下
最近公司到DNS server总是出问题, 于是下决心转移到linux下,但是里面有200多个域埃想来想去,总结出如下一套办法,供大家参考。如有不足网大家指正。
一、准备工作:
首先进入win2k, DNS 服务管理器,选 查看--列表;
然后导出列表到一个文件: mydomain.txt 反向解析域的列表都要导出,合并到一个文件里,进入 winntsystem32dns 将所有文件打包,和mydomain.txt 一起复制到linux下。
二、开始迁移:
1、生成配置文件:
主域配置文件:
执行如下脚本:
#!/usr/bin/perl
##################################################################
$configfile = "/etc/named.conf";
$dnsfile = "/var/named";
$importfile = "mydomain.txt";
system("/bin/echo > $configfile");
open(OUTFILE,">>$configfile");
flock (OUTFILE,2);
print OUTFILE "options {n";
print OUTFILE " directory "$dnsfile";n";
print OUTFILE " forwarders {n";
print OUTFILE " 202.96.199.133;n";
print OUTFILE " 202.96.209.5;n";
print OUTFILE " };n";
print OUTFILE "};n";
print OUTFILE "zone "." {n";
print OUTFILE " type hint;n";
print OUTFILE " file "named.ca";n";
print OUTFILE "};n";
open(INFILE,$importfile);
@lines =
1<infile>;
2
3$num=0;
4
5foreach $line (@lines) {
6
7chop ($line);
8
9print OUTFILE "zone "$line" {n";
10
11print OUTFILE " type master;n";
12
13print OUTFILE " file "$line.dns";n";
14
15print OUTFILE "};n";
16
17$num ++;
18
19}
20
21close(INFILE);
22
23close (OUTILE);
24
25print "$num Record convert!!n";
26
27
28
29exit;
30
31
32
33
34
35生成备份域配置文件: 执行这个脚本:
36
37
38
39#!/usr/bin/perl
40
41##################################################################
42
43$configfile = "/etc/named.conf";
44
45$dnsfile = "/var/named";
46
47$importfile = "mydomain.txt";
48
49$masterns = "1.1.1.";
50
51system("/bin/echo > $configfile");
52
53open(OUTFILE,">>$configfile");
54
55flock (OUTFILE,2);
56
57print OUTFILE "options {n";
58
59print OUTFILE " directory "$dnsfile";n";
60
61print OUTFILE " forwarders {n";
62
63print OUTFILE " 202.96.199.133;n";
64
65print OUTFILE " 202.96.209.5;n";
66
67print OUTFILE " };n";
68
69print OUTFILE "};n";
70
71print OUTFILE "zone "." {n";
72
73print OUTFILE " type hint;n";
74
75print OUTFILE " file "named.ca";n";
76
77print OUTFILE "};n";
78
79
80
81open(INFILE,$importfile);
82
83@lines = <infile>;
84
85$num=0;
86
87foreach $line (@lines) {
88
89chop ($line);
90
91print OUTFILE "zone "$line" {n";
92
93print OUTFILE</infile></infile>