| 
 | 
 
| 
 
 1. 首先做好网络架构的规划: 
 
 
2 DNS轮询的配置 
 
 
在万网域名管理里添加4个A记录,分别为4台squid的公网IP。然后在PC机上解析域名:nslookup ds.object.com.cn 如果反馈的IP不一样的话说明DNS轮询成功了。 
 
 
这里需要说明的是万网的DNS服务器不支持智能DNS解析的,如果需要这个功能的话 DNS服务器需要我们自己来做。 
 
3 squid反向代理的安装配置 
 
 
a下载squid for win 2.7,解压缩后到sbin目录下,创建squid.exe的快捷方式,然后在squid.exe属性里输入 squid.exe 
-i,注册成系统服务。 
 
 
b 设置环境变量,把c:\squid\sbin 路径加入PATH里。 
 
 
c 修改squid.conf 
 
 
http_port 80 accel vhost vport 
 
 
cache_mem 128 MB 
 
 
maximum_object_size_in_memory 512 KB 
 
 
cache_peer web1  parent 81 0 no-query originserver round-robin name=webserver1 
 
cache_peer web2  parent 81 0 no-query originserver round-robin name=webserver2 
 
cache_peer web3  parent 81 0 no-query originserver round-robin name=webserver3 
 
cache_peer_domain webserver1 webserver2 webserver3 www.xx.com 
 
 
acl localnet src web1 web2 web3 
 
icp_access allow localnet 
 
cache_log c:/squid/var/logs/cache.log 
 
cache_dir ufs c:/squid/var/cache 1000 16 256 
 
maximum_object_size 10240 KB 
 
dns_nameservers dns7.hichina.com 
 
http_access deny all 改成 http_access allow all 
 
d 启动squid。 先检测squid语法 squid –k parse ,接着初始化squid,建立缓存 squid –z,最后启动squid系统服务。 
 
 
e 修改安全策略和防火墙,对外网开放80端口,对web1 web2 web3开放3130,81端口 
 
 
f IIS网站端口改成81 
 
4 网站同步设置 
 
 
a 下载cwrsync安装包,在61.152.109.50安装服务器端,其他安装客户端。 
 
 
b 在服务器端修改配置文件rsyncd.conf 
 
use chroot = false 
 
uid=0 
 
gid=0 
 
strict modes = false 
 
log file = rsyncd.log 
 
# Module definitions 
 
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work 
 
# 
 
[web] 
 
path = /cygdrive/d/web 
 
read only = false 
 
transfer logging = yes 
 
hosts allow = web1 web2 web3 
 
 
hosts deny = * 
 
   
 
 
c 在其他服务器安装客户端后,创建个同步服务器的web.bat文件: 
 
 
rsync -vzrtopg --progress --delete 61.152.109.50::web3 /cygdrive/d/web 
 
 
然后创建计划任务,定时5分钟执行一次web.bat。 
 
 
 
                                   利用BIND的view功能实现智能DNS 
 
一  首先把解析域名的DNS服务器指向自己的服务器,在域名管理商修改,一般有个主DNS和辅DNS。 
 
二  主DNS的配置 
 
1. 
下载bind for win 9.8.0 zip,解压后点bindinstall.exe,安装到D:\dns. 
 
2. 
生成rndc配置文件rndc.conf 
 
Cmd下 
d:\dns\bin\ rndc-confgen 
-a 
 
d:\dns\bin\ rndc-confgen > ..\etc\rndc.conf 
 
3. 
生成key,用于主从view同步验证 
 
 
dnssec-keygen -a hmac-md5 -b 128 -n HOST cnc 
 
dnssec-keygen -a hmac-md5 -b 128 -n HOST any 
 
查看一下key的具体内容,其中key的值是需要添加到bind的主配置文件 
 
4. 
生产主配置文件named.conf 
 
在etc目录下新建named.conf, 
注意把rndc.conf中# Use with the following in named.conf, adjusting the allow list as needed: 以后的内容复制到named.conf文件中,去掉全面的#。 
 
options { 
 
 
directory "d:\dns\etc"; 
 
 
allow-transfer { none; }; 
 
 
recursion no; 
 
}; 
 
#这一段内容拷贝来自rndc.conf 
 
key "rndc-key" { 
 
 
 
algorithm hmac-md5; 
 
 
 
secret "dLXNez+ppJ1ITa0a9OMs1w=="; 
 
 
}; 
 
 
controls { 
 
 
 
inet 127.0.0.1 port 953 
 
 
 
allow { 127.0.0.1; } keys { "rndc-key"; }; 
 
 
}; 
 
logging { 
 
 
channel warning { 
 
 
file "d:\dns\log\dns_warnings.txt" versions 3 size 1240k; 
 
 
severity warning; 
 
 
print-category yes; 
 
 
print-severity yes; 
 
 
print-time yes; 
}; 
 
channel general_dns { 
 
 
file "d:\dns\log\dns_logs.txt" versions 3 size 1240k; 
 
 
severity info; 
 
 
print-category yes; 
 
 
print-severity yes; 
 
 
print-time yes; }; 
 
category default { warning; }; 
 
category queries { general_dns; }; 
 
}; 
 
key cnc-key { 
 
 
algorithm hmac-md5; 
 
 
secret "9TyHvUmn7QwBt1H4D7FCzA=="; 
 
 
}; 
 
key any-key { 
 
 
algorithm hmac-md5; 
 
 
secret "SyO+xmT/9YicDgLdbemgxQ=="; 
 
 
}; 
 
#将网通的地址范围数据装载 
 
include "acl.conf"; 
 
# 判断如果是网通的地址范围,则会执行此处,调用网通的解析 
 
view "view_cnc" { 
 
 
match-clients {key cnc-key ; cnc; }; 
 
 
allow-transfer { key cnc-key; }; 
 
 
server cnc1 { keys {cnc-key;}; }; 
 
 
zone "." { 
 
 
type hint; 
 
 
file "named.root"; 
 
 
}; 
 
 
zone "woq.com" { 
 
 
type master; 
 
 
file "cnc.woq.com.txt"; 
 
 
allow-transfer { cnc1; } ; 
 
 
notify yes ; 
 
 
 
also-notify { 60.28.225.60 ; } ; 
 
 
}; 
 
}; 
 
# 如果不是网通的则进行电信的解析 
 
view "view_any" { 
 
 
match-clients { key any-key; any; }; 
 
 
allow-transfer { key any-key; }; 
 
 
 
server cnc1 { keys {any-key;}; }; 
 
 
zone "." { 
 
 
type hint; 
 
 
file "named.root"; 
 
 
}; 
 
 
 
zone "woq.com" { 
 
 
type master; 
 
 
file "tel.woq2.com.txt"; 
 
 
allow-transfer { cnc1; } ; 
 
 
notify yes ; 
 
 
 
also-notify { cnc1 ; } ; 
 
 
}; 
 
}; 
 
5. 
修改域名文件 
 
tel.woq.com.txt 
 
 
$TTL 6h 
 
@ 
IN SOA 
dns11.woq.com. 
dns11.woq.com. ( 
 
 
2011042520 
 
 
10800 
 
 
3600 
 
 
900 
 
 
86400 ) 
 
@ 
NS 
dns11.woq.com. 
 
dns11 
IN 
 
A      tel1 
 
 
dns12 
IN 
 
A       cnc1 
 
www 
IN 
A 
web1 
 
cnc.woq.com.txt 
 
 
$TTL 6h 
 
@ 
IN SOA 
dns11.woq.com. 
dns11.woq.com. ( 
 
 
2011042520 
 
 
10800 
 
 
3600 
 
 
900 
 
 
86400 ) 
 
@ 
NS 
dns11.woq.com. 
 
dns11 
IN 
 
A       tel1 
 
dns12 
IN 
A 
cnc1 
 
www 
IN 
A       web2 
 
6 获取cnc IP地址段。 
 
在linux环境下 ,安装whois3,然后输入 
 
whois3 -h whois.apnic.net -l -i mb MAINT-CNCGROUP |grep "descr" | grep "Reverse" |awk -F "for" '{if($2!="") print $2}' | sort -n | awk 'BEGIN{print "acl\"CNC\"' {'"}{print $1";"}END{print "'}'"}' > /var/local/cnc.conf 
 
完成之后放在主DNS服务器d:\dns\etc\acl.conf,格式如下: 
 
Acl “cnc” { 
 
IP; 
 
}; 
 
三 辅DNS的配置 
 
1. 
下载bind for win 9.8.0 zip,解压后点bindinstall.exe,安装到D:\dns. 
 
2. 
生成rndc配置文件rndc.conf 
 
Cmd下 
d:\dns\bin\ rndc-confgen 
-a 
 
d:\dns\bin\ rndc-confgen > ..\etc\rndc.conf 
 
3. 
将主DNS服务器上的d:\dns\etc整个目录拷贝到辅DNS服务器的d:\dns\etc目录下。 
 
4. 
设置配置文件named.conf 
 
     options { 
 
 
directory "d:\dns\etc"; 
 
 
allow-transfer { none; }; 
 
 
recursion no; 
 
}; 
 
#这一段内容拷贝来自rndc.conf 
 
key "rndc-key" { 
 
 
 
algorithm hmac-md5; 
 
 
 
secret "X3u0giuo+R7LOdxS9W7V7A=="; 
 
 
}; 
 
 
 
controls { 
 
 
 
inet 127.0.0.1 port 953 
 
 
 
allow { 127.0.0.1; } keys { "rndc-key"; }; 
 
 
}; 
 
logging { 
 
 
channel warning { 
 
 
file "d:\dns\log\dns_warnings.txt" versions 3 size 1240k; 
 
 
severity warning; 
 
 
print-category yes; 
 
 
print-severity yes; 
 
 
print-time yes; 
}; 
 
channel general_dns { 
 
 
file "d:\dns\log\dns_logs.txt" versions 3 size 1240k; 
 
 
severity info; 
 
 
print-category yes; 
 
 
print-severity yes; 
 
 
print-time yes; }; 
 
 
category default { warning; }; 
 
 
category queries { general_dns; }; 
 
}; 
 
key 
cnc-key { 
 
 
algorithm hmac-md5; 
 
 
secret "9TyHvUmn7QwBt1H4D7FCzA=="; 
 
 
}; 
 
key 
any-key { 
 
 
algorithm hmac-md5; 
 
 
secret "SyO+xmT/9YicDgLdbemgxQ=="; 
 
 
}; 
 
#将网通的地址范围数据装载 
 
include "acl.conf"; 
 
# 判断如果是网通的地址范围,则会执行此处,调用网通的解析 
 
view "view_cnc" { 
 
 
match-clients { key cnc-key; cnc; }; 
 
 
allow-transfer { none; }; 
 
 
server masterip { keys {cnc-key;}; }; 
 
 
zone "." { 
 
 
type hint; 
 
 
file "named.root"; 
 
 
}; 
 
 
zone "woq.com" { 
 
 
type slave; 
 
 
file "cnc.woq.com.txt"; 
 
 
masters { masterip; } ; 
 
 
}; 
 
}; 
 
# 如果不是网通的则进行电信的解析 
 
view "view_any" { 
 
 
match-clients { key any-key; any; }; 
 
 
allow-transfer { none; }; 
 
 
server masterip { keys {any-key;}; }; 
 
 
zone "." { 
 
 
type hint; 
 
 
file "named.root"; 
 
 
}; 
 
 
zone "woq.com" { 
 
 
type slave; 
 
 
file "tel.woq.com.txt"; 
 
 
masters { masterip ; } ; 
 
 
}; 
 
}; 
 
四 测试 
 
1、故障转移测试 
 
在同一时间,两台DNS断掉任何一台都可以提供解析 
 
2、view功能测试 
 
找全国各地用户,然后去ping域名www.woq.com,看联通用户得到的解析结果是否是web2,看电信用户得到是否是web1 
 
 
 
3、主从同步测试 
 
在主服务器上添加/删除A记录,然后增大serai值,然后重启DNS服务或者执行rndc reload,看从服务器是否能得到同步 
 
4、性能压力测试 
 
使用bind自带工具queryperf进行性能测试 
 
# ./queryperf -d test -s masterip 
 
五 注意事项 
 
1、确保两台DNS服务器时钟同步,如两台服务器时间相差5分钟则无法实现同步 
 
2、虽然通过bind-view功能实现智能DNS,但在用户访问时会面临如下情况 
 
杭州电信用户à杭州电信DNSà联通DNS -> ------智能DNS,将用户请求解析到联通IP上 
 
。那么这种情况是我们不可控制的 
 
3、要定时清空DNS缓存,以免当缓存中毒时被他人恶意利用 
 
4、防火墙要开启TCP/53、UDP/53,TCP/53用于主从DNS间的数据传输,UDP/53用于用户到DNS服务器之间的查询 |   
 
 
 
 |