一、原理
DNS策略解析最基本的功能是可以智能的判斷訪問您網站的用戶,然後根據不同的訪問者把您的域名分別解析成不同的IP地址。如訪問者是網通用戶,DNS策略解析服務器會把你的域名對應的網通IP地址解析給這個訪問者。DNS策略解析服務器會把您域名對應的電信IP地址解析給這個訪問者。
二、設計案例:
1、案例環境
dns服務器搭建在vmware10虛擬機下CentOS6.4-32(最小化安裝)操作系統下,一臺防火牆(H3C secpath F100C)。注意:在我們當前最小化安裝的操作系統下,會在安裝配置過程中出現一些錯誤,請注意!
拓撲結構
配置命令
數據庫mysql的安裝配置:
[root@ahao ~]#tar zxvf mysql-5.5.15-linux2.6-i686.tar.gz –C /usr/local
[root@ahaolocal]# ln -s mysql-5.5.15-linux2.6-i686 mysql
[root@ahaolocal]# cd mysql
[root@ahaomysql]# groupadd mysql
[root@ahaomysql]# useradd -r -g mysql mysql
[root@ahaomysql]# chown -R mysql .
[root@ahaomysql]# chgrp -R mysql.
[root@ahao mysql]# scripts/mysql_install_db --user=mysql //執行之後會發現有錯誤缺少libaio文件,解決方法:我們在在光盤上找到這個庫文件,安裝就可以了
[root@ahao mysql]# chown -R root .
[root@ahao mysql]# chown -R mysql data
[root@ahao mysql]# cp support-files/my-medium.cnf /etc/my.cnf
[root@ahao mysql]# cpsupport-files/mysql.server /etc/init.d/mysqld
[root@ahao mysql]# chmod a+x /etc/init.d/mysqld
[root@ahao mysql]# service mysqld start
Starting MySQL.. SUCCESS!
[root@ahao mysql]# chkconfig --add mysqld //將mysql添加到chkconfig的管理中
[root@ahao mysql]# chkconfig mysqld on // 系統開機mysql自動啓動
[root@ahao mysql]# vim /etc/profile
//在文件中添加PATH=$PATH:/usr/local/mysql/bin/ 重寫環境變量將mysql的庫文件添加上去
[root@ahaomysql]# . /etc/profile //重新加載文件,才能讓mysql庫文件生效,或者重啓系統
[root@ahao ~]#mysqladmin -u root -p password '123' //配置mysql的管理員密碼
Bind安裝配置:
[root@ahao~]tar zxvf bind-9.8.6-P1.tar.gz –C /usr/local
[root@ahao~]# cd /usr/local/bind-9.8.6-P1/
[[email protected]]#./configure--prefix=/usr/local/bind9--with-dlz-mysql=/usr/local/mysql--enable-threads=no --disable-openssl-version-check//到這裏出現錯誤:OpenSSLwas not found ,所以我們還需要安裝這個openssl
[[email protected]]#mak&&make install
[[email protected]]# cd /usr/local/bind9/sbin/
[root@ahaosbin]# ./rndc-confgen –a //會產生密鑰文件和dns配置文件
[root@ahao sbin]# cd ../etc
[root@ahao etc]#ll
total 8
-rw-r--r--. 1root root 2389 Jan 16 23:21 bind.keys
-rw-------. 1root root 77 Jan 16 23:25 rndc.key
[root@ahao sbin]#./rndc-confgen > named.conf
//在named.conf文件中添加相應語句
options {
directory"/usr/local/bind9/etc/";
pid-file "/usr/local/bind9/var/run/named.pid";
allow-query {any; };
recursion no;
version"gaint-d1";
allow-query-cache{ any; };
};
應用以下語句:
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys {"rndc-key"; };
};
view "lan-view"{ //添加域
match-clients {lan;};
dlz "Mysql zone" {
database "mysql
{host=127.0.0.1 dbname=mydata ssl=false user=root pass=123}
{select zone from lan_dns_records where zone='$zone$'}
{select ttl,type, mx_priority, case when lower(type)='txt' then concat('\"', data,'\"')
when lower(type)= 'soa' then concat_ws(' ', data, resp_person, serial, refresh, retry, expire,minimum)
elsedata end from lan_dns_records where zone='$zone$' and host='$record$'}";
};
};
//登錄mysql數據庫創建相關信息
ysql> createdatabase mydata;//創建數據庫
mysql> usemydata;
mysql> createtable lan_dns_records ( //創建表
-> zone varchar (255),
-> host varchar (255),
-> type varchar (255),
-> data varchar (255),
-> ttl int(11),
-> mx_priority varchar (255),
-> refresh int(11),
-> retry int(11),
-> expire int(11),
-> minimum int(11),
-> serial bigint(20),
-> resp_person varchar (255),
-> primary_ns varchar (255)
-> );
mysql> createtable wan_dns_records (//創建表
-> zone varchar (255),
-> host varchar (255),
-> type varchar (255),
-> data varchar (255),
-> ttl int(11),
-> mx_priority varchar (255),
-> refresh int(11),
-> retry int(11),
-> expire int(11),
-> minimum int(11),
-> serial bigint(20),
-> resp_person varchar (255),
-> primary_ns varchar (255)
-> );
mysql> insertinto lan_dns_records (zone,host,type,data,ttl,retry) values('abc.com','www','A','192.168.1.159','86400','15'); //插入記錄
Query OK, 1 rowaffected (0.01 sec)
mysql> insertinto wan_dns_records (zone,host,type,data,ttl,retry) values('abc.com','www','A','61.130.130.1','86400','15');
[root@ahao ~]/usr/local/bind9/sbin/named-g -d 1 -c /usr/local/bind9/etc/named.conf
//啓動
防火牆配置:
[H3C]int eth0/0
[H3C-Ethernet0/0]ipadd 192.168.1.0 24
[H3C]int eth0/4
[H3C-Ethernet0/4]ipadd 61.130.130.1 24
[H3C-Ethernet0/4]nat server protocol udp global 61.130.130.1 53inside 192.168.1.159 53
[H3C]firewallzone untrust
[H3C]addinterface eth0/4
實驗結果
本地用戶驗證:
外網用戶驗證: