共计 8490 个字符,预计需要花费 22 分钟才能阅读完成。
DNS 智能解析的实质:基于不同的来源,dns 服务器返回不同的结果
DNS 策略解析最基本的功能是可以智能的判断访问您网站的用户,然后根据不同的访问者把您的域名分别解析成不同的 IP 地址。如访问者是网通用户,DNS 策略解析服务器会把你的域名对应的网通 IP 地址解析给这个访问者。DNS 策略解析服务器会把您域名对应的电信 IP 地址解析给这个访问者。
实验环境:dns 服务器是在 CentOS6.4 32 位操作系统上实现的,中间用了一台 H3C 的防火墙。Internet 用的是一台电脑 pc 模拟的。
实验中用到的 mysql-5.5.15-linux2.6-i686.tar.gz 可以到 mysql 的官方网站 www.mysql.com 下载,bind-9.8.6-P1.tar.gz
网络拓扑图如下:
试验结果预期:内网用户解析出来的地址是 192.168.80.12,外网地址解析出来的地址是 61.130.130.1.
[root@localhost ~]# tar -zxvf mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local/
把源码解压到 /usr/local/ 目录下
[root@localhost ~]# cd /usr/local/
[root@localhost local]# ln -s mysql-5.5.15-linux2.6-i686 mysql
进入解压好的目录,为了方便访问给此目录创建一个快捷方式
[root@localhost local]# cd mysql
[root@localhost mysql]# vim INSTALL-BINARY
进入 mysql 目录,里边有一个 INSTALL-BINARY 文件,这是个安装帮助文档,可以看到如下步骤介绍:
[root@localhost ~]# groupadd mysqlsts
[root@localhost ~]# useradd -r -g mysql mysql
创建一个 mysql 组并添加一个账号 mysql
[root@localhost mysql]# chown -R mysql .
[root@localhost mysql]# chgrp -R mysql .
改变所有文件的所有者和所有组都改为 mysql
[root@localhost mysql]# scripts/mysql_install_db –user=mysql
以 sql 的身份来初始化数据库
[root@localhost mysql]# chown -R root .
[root@localhost mysql]# chown -R mysql data
再把所有者和所有组改回来
[root@localhost mysql]# cp support-files/my-medium.cnf /etc/my.cnf
将 support-files/my-medium.cnf 拷贝到 /etc/my.cnf,是否覆盖选择 y。
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql]# chmod a+x /etc/init.d/mysqld
给 mysqld 执行权限
[root@localhost mysql]# service mysqld start
启动服务 mysqld。
发现出现错误:
如果出现此错误的话,就把刚才做的命令重新执行一遍:
[root@localhost mysql]# chown -R mysql .
[root@localhost mysql]# chgrp -R mysql .
[root@localhost mysql]# scripts/mysql_install_db –user=mysql
[root@localhost mysql]# chown -R root .
[root@localhost mysql]# chown -R mysql data
后边拷贝的那两步就不用重做了,然后再次开始 mysqld 服务,运行成功!
[root@localhost mysql]# netstat -tupln |grep 3306
查看 mysqld 端口是否打开
端口已经打开。
[root@localhost mysql]# chkconfig –add mysqld
[root@localhost mysql]# chkconfig mysqld on
将 mysqld 设为开机自动启动。
[root@localhost mysql]# vim /etc/profile
PATH=$PATH:/usr/local/mysql/bin
为了方便使用目录下的 bin 文件,将它加入到系统文件中:
[root@localhost mysql]# . /etc/profile
重新读取 profile 文件:(重新登录也可以)
[root@localhost mysql]# mysqladmin -u root -p password ‘123’ 然后直接回车
给 mysql 创建一个管理员用户,密码为 123
到这里,mysql 已经安装完毕。
相关阅读 :
RHEL6 服务器搭建 DNS 服务器 http://www.linuxidc.com/Linux/2013-10/91256.htm
精解 Linux RHEL 6.x DNS 服务器 http://www.linuxidc.com/Linux/2013-08/88986.htm
Ubuntu DNS 服务器配置 http://www.linuxidc.com/Linux/2013-07/87181.htm
Solaris 中配置 DNS 服务器 http://www.linuxidc.com/Linux/2013-06/86724.htm
CentOS 6.3 x64 下借助 MySQL 和 DNS view 实现智能 DNS http://www.linuxidc.com/Linux/2013-06/86430.htm
接下里安装 bind:
[root@localhost ~]# tar -zxvf bind-9.8.6-P1.tar.gz -C /usr/local/src/
解压 bind 安装包
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# ll
total 4
drwxrwxr-x. 12 10132 wheel 4096 Oct 16 08:09 bind-9.8.6-P1
[root@localhost src]# cd bind-9.8.6-P1/
切换到 bind 目录
[root@localhost bind-9.8.6-P1]# ./configure –prefix=/usr/local/bind9 –with-dlz-mysql=/usr/local/mysql –enable-threads=no –disable-openssl-version-check
[root@localhost bind-9.8.6-P1]# make && make install 执行 make 命令已经 make install
[root@localhost bin]# cd /usr/local/bind9/
进入此目录,此目录为 bind 的安装目录
[root@localhost bind9]# cd sbin/
[root@localhost sbin]# ./rndc-confgen -a
执行此命令会在 /usr/local/bind9/etc/ 下产生一个 rndc.key 文件
[root@localhost sbin]# ./rndc-confgen >../etc/named.conf
生成 named.conf 文件
以上两步最好不要在终端中做,因为在终端中做文件生的特别慢,最好是直接在系统中执行命令。
现在进入 /usr/local/bind9/etc/ 目录会发现其中有三个文件:
进入 named.conf 文件:
去掉第 20 行至 23 行前边的 #:
修改 option 如下:
directory “/usr/local/bind9/etc/”;
pid-file “/usr/local/bind9/var/run/named.pid”;
allow-query {any;};
recursion no;
version “gaint-d1”
在此文件中创建“lan”和“wan”两个访问控制链表:
并在此文件中添加以下内容:
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, ‘\”‘) 32 when lower(type) = ‘soa’ then concat_ws(‘ ‘, data, resp_person, serial, refresh, retry, expire, minimum) 33 else data end from lan_dns_records where zone=’$zone$’ and host=’$record$’}”;
};
};
view “wan-view” {
match-clients {wan;};
dlz “Mysql zone” {
database “mysql
{host=127.0.0.1 dbname=mydata ssl=false user=root pass=123}
{select zone from wan_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)
else data end from wan_dns_records where zone=’$zone$’ and host=’$record$’}”;
};
到此处为止,bind 也基本安装完成。
接下来给数据库中添加内容:
[root@localhost etc]# mysql -u root -p
Enter password:
以管理员身份登录 mysql
mysql> create database mydata;
创建数据库 mydate
mysql> use mydata;
打开 mydate
创建 lan 表:
create table 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)
);
创建 wan 表:
create table 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> insert into lan_dns_records (zone,host,type,data,ttl,retry) values (‘abc.com’,’www’,’A’,’192.168.80.12′,’86400′,’15’);
mysql> insert into wan_dns_records (zone,host,type,data,ttl,retry) values (‘abc.com’,’www’,’A’,’61.130.130.1′,’86400′,’15’)
两表格中各插入一条记录。
此时可看到数据库中的两个表中有如下数据:
使用 /usr/local/bind9/sbin/named -g -d 1 -c /usr/local/bind9/etc/named.conf 指令测试:
发现出错,缺少一个 libmysqlclient.so.18 库文件
其实这个文件时存在的,在 /usr/local/mysql/lib/ 目录下,
[root@localhost sbin]# vim /etc/ld.so.conf.d/mysql.conf
在 /etc/ld.so.conf.d/ 下随便建一个文件,比如叫做 mysql.conf 然后将此库文件的路径写入:
/usr/local/mysql/lib/
[root@localhost sbin]# ldconfig
执行 ldconfig 刷新缓存。
[root@localhost etc]# ifconfig eth0:0 61.130.130.10 netmask 255.255.255.0
给网卡 eth0 再加个地址 61.130.130.0/24 网段内的,以便测试之用。
[root@localhost etc]# dig www.abc.com @192.168.80.12
[root@localhost etc]# dig www.abc.com @61.130.130.10
测试结果如下:
然后进入防火墙配置:
[H3C]int eth0/0
[H3C-Ethernet0/0]ip add 192.168.80.254 255.255.255.0
[H3C-Ethernet0/0]int eth0/4
[H3C-Ethernet0/4]ip add 61.130.130.100 255.255.255.0
[H3C-Ethernet0/0]quit
[H3C]firewall zone trust
[H3C-zone-trust]add int eth0/4
[H3C-zone-trust]quit
[H3C]firewall zone untrust
[H3C-zone-untrust]add int eth0/0
[H3C-Ethernet0/4]nat server protocol udp global 61.130.130.1 53 inside 192.168.80.12 53
配置完成后可以测试一下:
测试成功!
更多 CentOS 相关信息见 CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14
DNS 智能解析的实质:基于不同的来源,dns 服务器返回不同的结果
DNS 策略解析最基本的功能是可以智能的判断访问您网站的用户,然后根据不同的访问者把您的域名分别解析成不同的 IP 地址。如访问者是网通用户,DNS 策略解析服务器会把你的域名对应的网通 IP 地址解析给这个访问者。DNS 策略解析服务器会把您域名对应的电信 IP 地址解析给这个访问者。
实验环境:dns 服务器是在 CentOS6.4 32 位操作系统上实现的,中间用了一台 H3C 的防火墙。Internet 用的是一台电脑 pc 模拟的。
实验中用到的 mysql-5.5.15-linux2.6-i686.tar.gz 可以到 mysql 的官方网站 www.mysql.com 下载,bind-9.8.6-P1.tar.gz
网络拓扑图如下:
试验结果预期:内网用户解析出来的地址是 192.168.80.12,外网地址解析出来的地址是 61.130.130.1.
[root@localhost ~]# tar -zxvf mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local/
把源码解压到 /usr/local/ 目录下
[root@localhost ~]# cd /usr/local/
[root@localhost local]# ln -s mysql-5.5.15-linux2.6-i686 mysql
进入解压好的目录,为了方便访问给此目录创建一个快捷方式
[root@localhost local]# cd mysql
[root@localhost mysql]# vim INSTALL-BINARY
进入 mysql 目录,里边有一个 INSTALL-BINARY 文件,这是个安装帮助文档,可以看到如下步骤介绍:
[root@localhost ~]# groupadd mysqlsts
[root@localhost ~]# useradd -r -g mysql mysql
创建一个 mysql 组并添加一个账号 mysql
[root@localhost mysql]# chown -R mysql .
[root@localhost mysql]# chgrp -R mysql .
改变所有文件的所有者和所有组都改为 mysql
[root@localhost mysql]# scripts/mysql_install_db –user=mysql
以 sql 的身份来初始化数据库
[root@localhost mysql]# chown -R root .
[root@localhost mysql]# chown -R mysql data
再把所有者和所有组改回来
[root@localhost mysql]# cp support-files/my-medium.cnf /etc/my.cnf
将 support-files/my-medium.cnf 拷贝到 /etc/my.cnf,是否覆盖选择 y。
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql]# chmod a+x /etc/init.d/mysqld
给 mysqld 执行权限
[root@localhost mysql]# service mysqld start
启动服务 mysqld。
发现出现错误:
如果出现此错误的话,就把刚才做的命令重新执行一遍:
[root@localhost mysql]# chown -R mysql .
[root@localhost mysql]# chgrp -R mysql .
[root@localhost mysql]# scripts/mysql_install_db –user=mysql
[root@localhost mysql]# chown -R root .
[root@localhost mysql]# chown -R mysql data
后边拷贝的那两步就不用重做了,然后再次开始 mysqld 服务,运行成功!
[root@localhost mysql]# netstat -tupln |grep 3306
查看 mysqld 端口是否打开
端口已经打开。
[root@localhost mysql]# chkconfig –add mysqld
[root@localhost mysql]# chkconfig mysqld on
将 mysqld 设为开机自动启动。
[root@localhost mysql]# vim /etc/profile
PATH=$PATH:/usr/local/mysql/bin
为了方便使用目录下的 bin 文件,将它加入到系统文件中:
[root@localhost mysql]# . /etc/profile
重新读取 profile 文件:(重新登录也可以)
[root@localhost mysql]# mysqladmin -u root -p password ‘123’ 然后直接回车
给 mysql 创建一个管理员用户,密码为 123
到这里,mysql 已经安装完毕。
相关阅读 :
RHEL6 服务器搭建 DNS 服务器 http://www.linuxidc.com/Linux/2013-10/91256.htm
精解 Linux RHEL 6.x DNS 服务器 http://www.linuxidc.com/Linux/2013-08/88986.htm
Ubuntu DNS 服务器配置 http://www.linuxidc.com/Linux/2013-07/87181.htm
Solaris 中配置 DNS 服务器 http://www.linuxidc.com/Linux/2013-06/86724.htm
CentOS 6.3 x64 下借助 MySQL 和 DNS view 实现智能 DNS http://www.linuxidc.com/Linux/2013-06/86430.htm