智能DNS:

 

1、智能DNS产生的原因:

     在中国随着原中国电信集团按南北地域分家,新的中国电信和网通集团随即成立,互联网的骨干网也被一分为二了,北有网通、南有电信。在企业现有资源有限的情况下,电信用户访问网通线路的服务器或者网通用户访问电信线路的服务器会出现异常缓慢等现象,为了解决在资源有限的情况下,满足各地区用户的需要,产生了让不同地区或不同ISP运营商解析域名时,返回该用户所在ISP运营商线路服务器IP地址的思想,从而产生了智能DNS
 

2、智能DNS的原理:

          智能DNS通过在DNS服务器上应用各种策略解析很好的解决了不同地区或不同ISP运营商之间用户访问缓慢等现象。DNS策略解析最基本的功能是可以智能的判断访问用户的源IP地址是属于那个ISP运营商或那个地区的IP地址,然后根据不同的访问者把网站域名分别解析成不同的IP地址返回给访问用户,从而达到就近访问,提高访问速度。
 
例:    
    访问者是网通用户,DNS策略解析服务器会把你的域名对应的网通IP地址解析给这个访问者。如果用户是电信用户,DNS策略解析服务器会把您域名对应的电信IP地址解析给这个访问者。如果用户是教育网用户,DNS策略解析服务器会把您域名对应的电信IP地址解析给这个访问者。
 

3、智能DNS的作用:

    (1)、双线路的机房:服务本身有两个IP,一个电信IP,一个网通IP或者其他线路。
  (2)、镜象网站:在网通及电信的机房放置多个相同的镜象站点, 让不同的地方客户访问不同的站点。
  (3)、负载均衡:对于流量比较大的网站,可以通过该功能把流量分配到几台不同的服务器上,以提高网站的运行速度。
  (4)、个性化站点服务:比如通过IP表的重新定义, 让国外的客户自动访问英文版的网站; 让国内的客户自动访问中文版的网站。
  (5)、CDN加速器:通过与squid等WEB缓存软件结合实现CDN加速器。
  (6)、防止DDOS***:通过多个线路分散***流量,从而达到抵挡DDOS***。
 

4、实现智能DNS难点:

    保持智能DNS源IP数据库实时,准确!
    

5、智能DNS的实现:

(1)、实验环境:
CentOS 5.6 32bit
 
(2)、安装mysql数据库、系统编译工具、安全组建:
yum install mysql mysql-devel mysql-server openssl openssl-devel gcc gcc-c++
(3)、启动mysql服务:
service mysqld restart
并将mysql随系统启动:
chkconfig mysqld on
(4)、下载bind源代码,编译安装:
a、下载bing源代码:
wget ftp://ftp.isc.org/isc/bind9/9.6.1-P2/bind-9.6.1-P2.tar.gz
b、编译安装:
tar -zxvf bind-9.6.1-P2.tar.gz ; cd bind-9.6.1-P2
a、编译:
./configure --with-dlz-mysql --enable-largefile --enable-threads=no --prefix=/usr/local/bind
b、安装:
make && make install
(5)、配置bind:
a、添加bind运行用户:
useradd -d /dev/null -s /sbin/nologin named
注:named 用户不能通过终端登录。
b、创建bind配置文件:
cd /usr/local/bind/etc
echo 'options {' > named.conf
echo '        directory "/usr/local/bind";           // Working directory' >> named.conf
echo '};' >> named.conf
c、导入bind证书密钥:
../sbin/rndc-confgen >rndc.conf
tail -n10 rndc.conf | head -n9 | sed -e s/#\//g >> named.conf
d、添加源IP数据库:
echo 'include "/usr/local/bind/etc/telecom_acl.conf";' >> named.conf
e、添加智能DNS策略:
echo 'include "/usr/local/bind/etc/view.conf";' >> named.conf
f、生成DNS根路径:
dig > named.root
(6)、配置MySql数据库:
a、下载MySql配置脚本:
wget http://www.wdlinux.cn/conf/bind/bind-dlz.tar.gz
tar zxvf bind-dlz.tar.gz
b、创建智能DNS数据库:
a、创建数据库:
mysqladmin -uroot -p create dnsdata
b、创建记录表并导入数据:
mysql -uroot -p dnsdata < dnsdata.sql.txt
c、配置智能DNS数据库权限:
mysql -u root 
GRANT ALL ON dnsdata.* TO 'dnsuser'@'localhost' IDENTIFIED BY 'dnspass';
Flush privileges;
c、把智能DNS源IP与策略文件移动到/usr/local/bind/etc/目录:
mv  /install/DNS/telecom_acl.conf /usr/local/bind/etc/telecom_acl.conf
mv  /install/DNS/view.conf /usr/local/bind/etc/view.conf
(7)、修改bind进程目录权限:
chmod -R 777 /usr/local/bind/var
or
chown -R named:named /usr/local/bind/var
or
mkdir /usr/local/bind/var/run/named
chown named:named /usr/local/bind/var/run/named
(8)、启动测试:
注:
关闭防火墙
or
开发53端口
 
测试配置文件是否正确生效:
/usr/local/bind/sbin/named -unamed -g -d 9
启动bind服务进程:
/usr/local/bind/sbin/named -unamed -c /usr/local/bind/etc/named.conf
使bind服务随系统启动:
echo '/usr/local/bind/sbin/named -unamed -c /usr/local/bind/etc/named.conf' >> /etc/rc.d/rc.local
 
测试智能DNS:
nslookup ns1.wdlinux.cn
nslookup ns2.wdlinux.cn