阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS环境下实现DNS的智能解析

117次阅读
没有评论

共计 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

网络拓扑图如下:

CentOS 环境下实现 DNS 的智能解析

试验结果预期:内网用户解析出来的地址是 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 文件,这是个安装帮助文档,可以看到如下步骤介绍:

CentOS 环境下实现 DNS 的智能解析

[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。

发现出现错误:

CentOS 环境下实现 DNS 的智能解析

如果出现此错误的话,就把刚才做的命令重新执行一遍:

[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 端口是否打开

CentOS 环境下实现 DNS 的智能解析

 

端口已经打开。

[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

CentOS 环境下实现 DNS 的智能解析

执行此命令会在 /usr/local/bind9/etc/ 下产生一个 rndc.key 文件

[root@localhost sbin]# ./rndc-confgen >../etc/named.conf

生成 named.conf 文件

以上两步最好不要在终端中做,因为在终端中做文件生的特别慢,最好是直接在系统中执行命令。

现在进入 /usr/local/bind9/etc/ 目录会发现其中有三个文件:

CentOS 环境下实现 DNS 的智能解析

 

进入 named.conf 文件:

去掉第 20 行至 23 行前边的 #:

CentOS 环境下实现 DNS 的智能解析

 

修改 option 如下:

directory “/usr/local/bind9/etc/”;

pid-file “/usr/local/bind9/var/run/named.pid”;

allow-query {any;};

recursion no;

version “gaint-d1”

CentOS 环境下实现 DNS 的智能解析

 

在此文件中创建“lan”和“wan”两个访问控制链表:

CentOS 环境下实现 DNS 的智能解析

 

并在此文件中添加以下内容:

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)

);

可以看到现在数据库中有如下表:

CentOS 环境下实现 DNS 的智能解析

 

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’)

两表格中各插入一条记录。

此时可看到数据库中的两个表中有如下数据:

CentOS 环境下实现 DNS 的智能解析

 

使用 /usr/local/bind9/sbin/named -g -d 1 -c /usr/local/bind9/etc/named.conf 指令测试:

CentOS 环境下实现 DNS 的智能解析

发现出错,缺少一个 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

测试结果如下:

CentOS 环境下实现 DNS 的智能解析

CentOS 环境下实现 DNS 的智能解析

 

 

然后进入防火墙配置:

[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 环境下实现 DNS 的智能解析

 

测试成功!

更多 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

网络拓扑图如下:

CentOS 环境下实现 DNS 的智能解析

试验结果预期:内网用户解析出来的地址是 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 文件,这是个安装帮助文档,可以看到如下步骤介绍:

CentOS 环境下实现 DNS 的智能解析

[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。

发现出现错误:

CentOS 环境下实现 DNS 的智能解析

如果出现此错误的话,就把刚才做的命令重新执行一遍:

[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 端口是否打开

CentOS 环境下实现 DNS 的智能解析

 

端口已经打开。

[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

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计8490字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中