1. 程式人生 > >[App] DNS Bind + MySQL

[App] DNS Bind + MySQL

環境:rhel 7.2

mysql-community-client-5.7.19-1.el7.x86_64.rpm

mysql-community-common-5.7.19-1.el7.x86_64.rpm

mysql-community-devel-5.7.19-1.el7.x86_64.rpm

mysql-community-libs-5.7.19-1.el7.x86_64.rpm

mysql-community-server-5.7.19-1.el7.x86_64.rpm

1、初始化

# systemctl disable firewalld

# hostnamectl set-hostname mysql-0

1

# bash

# vi /etc/selinux/config

SELINUX=disabled

# systemctl disbale firewalld

# reboot

2、安裝 MySQL

# rpm -qa | egrep "mysql|maria"

# rpm -e mariadb-libs-5.5.44-2.el7.x86_64 --nodeps   # 解除安裝舊的

# yum -y install net-tools perl

# cd /usr/local/src/

# rpm -ivh mysql-community-*

# systemctl enable mysqld

# systemctl start mysqld

3MySQL 配置與驗證

# more /var/log/mysqld.log | grep pass       # 檢視初始密碼

# mysql_secure_installation        # 修改密碼

# mysql -uroot -p       # 驗證

4、配置安裝 Bind

# cd /usr/local/src

# tar -zxf bind-9.11.0.tar.gz

# groupadd -r named

# useradd -s /sbin/nologin -M -r -g named named

# yum -y install openssl-devel wget gcc

# ln -s /usr/lib64/mysql/libmysqlclient.so /usr/lib/libmysqlclient.so

# cd bind-9.11.0

# ./configure --with-dlz-mysql --enable-largefile --enable-threads=yes--prefix=/usr/local/bind --with-openssl

# make && make install

# chown -R named:named /usr/local/bind

# echo "exportPATH=${PATH}:/usr/local/bind/sbin/:/usr/local/bind/bin/" >>/etc/profile

# source  /etc/profile

# cd /usr/local/bind/etc/

# rndc-confgen -r /dev/urandom >rndc.conf

# tail -10 rndc.conf  | head -9| sed s/#\ //g >> named.conf

# vi /usr/local/bind/etc/named.conf

options {       

        directory "/var/named/";       

        recursion yes;       

        listen-on port 53    { any; };       

        dump-file "/var/named/data/cache_dump.db";       

        statistics-file "/var/named/data/named_stats.txt";       

        allow-query { any; };       

        blackhole { none; };

};

view "ours_domain" {       

        match-clients           {127.0.0.1; };       

        allow-query-cache           {any; };       

        allow-recursion          {any; };       

        allow-transfer          {none; };        

        dlz "Mysql zone" {              

                database        "mysql              

                {host=127.0.0.1 dbname=bind ssl=false port=3306 user=named pass=MySQL-password}              

                {select zone from 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 dns_records where zone = '$zone$' and host = '$record$'}";

        };       

        zone "."  IN {           

                type hint;           

                file "named.ca";       

        };

};

key "rndc-key" {

        algorithm hmac-md5;

        secret "yp955j6yrX7mWoz5oOoZ0w==";

};

controls {

        inet 127.0.0.1 port 953

                allow { 127.0.0.1; } keys { "rndc-key"; };

};

# mkdir /var/named/

# chown -R named:named /var/named/

5、配置dlz資料庫查詢

# mysql -uroot -p

mysql> create database bind;

mysql> use bind;

mysql> CREATE TABLE IF NOT EXISTS `dns_records` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `zone` varchar(255) NOT NULL,  `host` varchar(255) NOT NULL DEFAULT '@',  `type` enum('A','MX','CNAME','NS','SOA','PTR','TXT','AAAA','SVR','URL') NOT NULL,  `data` varchar(255) DEFAULT NULL,  `ttl` int(11) NOT NULL DEFAULT '3600',  `mx_priority` int(11) DEFAULT NULL,  `view`  enum('any', 'Telecom', 'Unicom', 'CMCC', 'ours') NOT NULL  DEFAULT "any" ,  `priority` tinyint UNSIGNED NOT NULL DEFAULT '255',  `refresh` int(11) NOT NULL DEFAULT '28800',  `retry` int(11) NOT NULL DEFAULT '14400',  `expire` int(11) NOT NULL DEFAULT '86400',  `minimum` int(11) NOT NULL DEFAULT '86400',  `serial` bigint(20) NOT NULL DEFAULT '2015050917',  `resp_person` varchar(64) NOT NULL DEFAULT 'ddns.net',  `primary_ns` varchar(64) NOT NULL DEFAULT 'ns.ddns.net.',  PRIMARY KEY (`id`),  KEY `type` (`type`),  KEY `host` (`host`),  KEY `zone` (`zone`)) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;# view:是區分不同網路區域的欄位.     Priority:是區分不同優先順序的欄位.

mysql> insert into dns_records (zone, host, type, data, ttl) VALUES ('test.info', 'www', 'A', '1.1.1.1', '60');

mysql> insert intodns_records (zone, host, type, data, ttl) VALUES ('test.info', 'mail', 'CNAME', 'www', '60');

mysql> insert into dns_records (zone, host, type, data, ttl) VALUES ('test.info', '@', 'NS', 'ns', '60');

mysql> insert into dns_records (zone, host, type, data, ttl) VALUES ('test.info', 'ns', 'A', '127.0.0.1', '60');

mysql> grant all privileges on bind.* to [email protected]'%' identified by "Ma991218#";

mysql> flush privileges;

# 官網給的mysql驅動模板:

dlz "mysqlzone" {

    database "mysql

    {host=127.0.0.1 dbname=name ssl=falseport=3306 user=user pass=pass}

    {select zone from dns_records where zone ='$zone$' limit 1}

    {select ttl, type, mx_priority, case whenlower(type)='txt' then concat('\"', data, '\"') else data end fromdns_records where zone = '$zone$' and host = '$record$' and not (type = 'SOA'or type = 'NS') and IsLive=1}

    {select ttl, type, mx_priority, data fromdns_records where zone = '$zone$' and (type = 'SOA' or type='NS')}

    {select ttl, type, host, mx_priority, data,resp_person, serial, refresh, retry, expire, minimum from dns_records wherezone = '$zone$' and not (type = 'SOA' or type = 'NS') and IsLive=1}

    {select zone from xfr_table where zone ='$zone$' and client = '$client$'}";

};

6、啟動測試

# vi /etc/rc.d/init.d/named

#!/bin/bash

# named a network name service.

# chkconfig: 345 87 75

# description: a name server

[ -r /etc/rc.d/init.d/functions ] && . /etc/rc.d/init.d/functions

Builddir=/usr/local/bind

PidFile=/usr/local/bind/var/run/named/named.pid

LockFile=/var/lock/subsys/named

Sbindir=${Builddir}/sbin

Configfile=${Builddir}/etc/named.conf

CheckConf=${Builddir}/sbin/named-checkconf

named=named

if [ ! -f ${Configfile} ]

then

    echo "Can't find named.conf "

    exit 1

fi

if [ ! -d /var/run/named/ ]

then

    echo "could not open directory '/var/run/named/': Permission denied "

    exit 1

elif [ ! -w /var/run/named/ ]

    then

        echo "could not open directory '/var/run/named/': Permission denied "

        exit 1

fi

if [ ! -r ${Configfile} ]

then

    echo "Error: ${Configfile} is not readfile!"

    exit 1

else

    $CheckConf

    if [ $? != 0 ]

    then

        echo -e "Please check config file in \033[31m${Configfile} \033[0m!"

        exit 2

    fi

fi

start() {

    [ -x ${Builddir}/sbin/$named ] ||   exit 4

    if [ -f $LockFile ]; then

        echo -n "$named is already running..."

        echo_failure

        echo

        exit 5

    fi

    echo -n "Starting $named: "

    daemon --pidfile "$PidFile" ${Sbindir}/$named -u named -n 1 -c ${Configfile}

    RETVAL=$?

    echo

    if [ $RETVAL -eq 0 ]; then

        touch $LockFile

        return 0

    else

        rm -f $LockFile $PidFile

        return 1

    fi

}

stop() {

    if [ ! -f $LockFile ];then

        echo "$named is not started."

        echo_failure

    fi

    echo -n "Stopping $named: "

    killproc $named

    RETVAL=$?

    echo

    [ $RETVAL -eq 0 ] && rm -f $LockFile

    return 0

}

restart() {

    stop

    sleep 1

    start

}

reload() {

    echo -n "Reloading $named: "

    killproc $named -HUP

    RETVAL=$?

    echo

    return $RETVAL

}

status() {

    if pidof $named > /dev/null && [ -f $PidFile ]; then

        echo "$named is running..."

    else

        echo "$named is stopped..."

    fi

}

case $1 in

start)

    start ;;

stop)

    stop ;;

restart)

    restart ;;

reload)

    reload ;;

status)

    status ;;

*)

    echo "Usage:named {start|stop|status|reload|restart}"

    exit 2;;

esac

# chmod +x /etc/rc.d/init.d/named

# /etc/rc.d/init.d/named start

# tailf /var/log/messages

# ps -ef | grep name

# netstat -tunlp | grep named

# vi /etc/resolv.conf

nameserver 127.0.0.1

# dig mail.test.info @127.0.0.1

正向解析例子:

mysql> insert INTO example  (zone,host,type,data,ttl,retry) values ('example.com','no','A','10.255.1.27',86400,15);     //新增幾條域名解析記錄

mysql> insert INTO example  (zone,host,type,data,ttl,retry) values ('alan.com','no','A','10.255.1.29',86400,15);

mysql> insert INTO example  (zone,host,type,data,ttl,retry) values ('example.com','node','A','10.255.1.252',86400,15);

mysql> insert INTO example  (zone,host,type,data,ttl,retry) values ('example.com','node02','A','192.168.1.250',86400,15);

反向解析例子:

mysql> insert into example (zone,host,type,data,ttl,mx_priority,refresh,retry,expire,minimum,serial,resp_person,primary_ns) values ('1.168.192in-addr.arpa','@','SOA','node02.example.com',86400,NULL,3600,15,86400,3600,2008082700,'node02.example.com','node02.example.com');  

//新增SOA(授權區域定義)記錄

mysql> insert into example (zone,host,type,data)values('example.com','@','NS','node02.example.com.');  

//新增NS(標記區域的域名伺服器以及授權子域)記錄

mysql> insert into example(zone,host,type,data)values('1.168.192.in-addr.arpa','250','PTR','node02.example.com.'),('1.168.192.in-addr.arpa','111','PTR','x.example.com.');     //新增PTR(與A記錄相反,將ip轉換成主機名,反向解析操作)記錄

相關推薦

[App] DNS Bind + MySQL

環境:rhel 7.2 mysql-community-client-5.7.19-1.el7.x86_64.rpm mysql-community-common-5.7.19-1.el7.x86_64.rpm mysql-community-devel-5.7.19-1.el7.x86_64.rpm

DNS-bind

dns 基本原理 bind DNS:Domain Name Service 應用層協議,采用C/S構架 使用端口53/udp用於地址解析, 53/tcp用於主從同步,953/tcp用於rndc(remove netservice domain controler) DNS名稱解析na

生產中DNS BIND客戶端配置優化

bin rotate dns 順序 bind usr 設置 include 配置 1、生產環境建議/etc/reslov.conf中添加的參數: option rotate option timeout:2 option attempts:1 2、參數說明:a)如果不設置r

002.DNS-BIND簡介

一 Linux-BIND伺服器簡介 Bind是Berkeley Internet Name Domain Service的簡寫,它是一款實現DNS伺服器的開放原始碼軟體。已經成為世界上使用最為廣泛的DNS伺服器軟體,目前Internet上半數以上的DNS伺服器有都是用Bind來架設的,已經成為DNS中事實上的

DNS BIND 搭建域名智慧解析DNS伺服器之動態新增解析

上一節我們講了關於bind的智慧解析的chroot配置,本節我們將通過指令碼來實現動態新增域名及解析記錄。 1.安裝bind 2.管理指令碼 指令碼都放在chroot/bin目錄下 管理指令碼./bin/slim-bind ./bin/slim-bind Usage:

DNS BIND之直接域名、泛域名與子域

本節將主要針對常用的幾種特殊(直接域名、泛域名與子域)的域名解析記錄介紹。 一、直接域名 許多使用者有直接使用域名訪問Web網站的習慣,即在瀏覽器中不輸入www等主機名,而是直接使用如http://baidu.com/或http://csdn.net/等域名來訪問。然而,並

DNS BIND之ACL、View、ZONE介紹

BIND主配置檔案由named程序執行時首先讀取,檔名為named.conf,預設在/etc目錄下。該檔案只包括Bind的基本配置,並不包含任何DNS的區域資料。named.conf配置檔案由語句與註釋組成,每一條主配置語句均有自己的選項引數。這些選項引數以子語句的形式組成

利用Bind DLZ MySQL 構建智慧DNS

本文來自: IT運維專家網 作者: NetSeek 日期: 2009-3-8 19:52 閱讀: 742 人 列印 收藏 DNS, Bind, DLZ, 智慧, MySQL 作者:NetSeek  http://www.linuxtone.org 日期:200

在 CentOS7.0 上搭建 Chroot 的 Bind DNS 服務器

n) 地址 授權 dns 部分 soa 自啟 named 就會 BIND(Berkeley internet Name Daemon)也叫做NAMED,是現今互聯網上使用最為廣泛的DNS 服務器程序。這篇文章將要講述如何在 chroot 監牢中運行 BIND,這樣它就無法訪

DNS服務基礎及bind基礎配置和應用

遠程服務 abc time 通過 加載 rac 文件同步 linux. 全局配置 DNS服務基礎及bind基礎配置和應用 DNS服務基礎011.DNS:Domain Name Service, ( 應用層協議)2.tld:Top Level Domain 頂級域(

DNS配置詳解 bind實現正向解析和反向解析

cell 8.4 -s intern 資源記錄 ted borde linux系統 ans DNS是域名服務(Domain Name Service),負責把域名解析成IP地址(正向解析)或者把IP地址解析為域名(反向解析)。 DNS查詢過程: 假設我們要訪問www.a

DNS and BIND

dns and bindDNS and BindBIND:Berkeley internet name Domain, 伯克利互聯網名稱域;名稱域--名字空間: 倒置的樹 根域(.) 頂級域(Top Level Domain, TLD) 組織域: com, org, edu,

DNSBIND)服務搭建

查詢 1-1 left conf con 設置 install ima 修改 一、DNS 1.負責將域名解析為IP(正向解析);將IP解析為域名(反向解析) 2.DNS查詢過程 如客戶端訪問www.baidu.com 1)客戶端查看本地是否存有DNS緩存 2)客戶端查看本地

Linux自學筆記——DNSbind應用

dns 正向區域 反向區域 DNS(Domain Name System,域名系統),因特網上作為域名和ip地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的ip數串。通過主機名,最終得到該主機名對應的ip地址的過程叫做域名解析(或主機名解析)。DNS協

二進制編譯安裝mysql(centos6、7)和源碼編譯bind

編譯安裝 一、二進制編譯安裝mysql centos6、7大體上都是相同的,只是有幾步不同也都標記出來了,具體步驟如下: ①下載安裝包並導入到centos裏進行解壓。 ②創建軟連接或者修改mariadb-10.2.8-linux-x86_64目錄。 centos6:修改軟連接mysql文件夾裏

使用Bind搭建DNS服務

fresh one master 主程 維護 n-1 找到 table systemctl DNS域名解析服務(Domain Name System)是用於解析域名與IP地址對應關系的服務,功能上可以實現正向解析與反向解析:   正向解析:根據主機名(域名)查找對應的IP

DNS解析與Bind的使用(2)

soa a ns 域名解析庫文件 域名解析庫格式 五、區域解析庫文件中主要名詞解釋DNS服務器是依據區域解析庫文件來向外提供服務的,所以區域解析庫文件是非常重要的。一般情況下用戶在查看解析庫文件時就可以了解到區域內主機的相關屬性,但區域解析庫文件是有特定格式的,其中也有很多特定的標識,每一

DNS解析與Bind的使用(3)

bind 緩存名稱服務器 bind配置文件 配置 七、Bind軟件DNS只是一個協議,但是該協議的實現還必須需要軟件的支持,bind軟件就是能夠實現此功能的軟件之一。CentOS中的bind軟件可以通過yum來進行自動化安裝,需要註意的是bind軟件安裝好後服務的程序名是named。◆bind

DNS解析與Bind的使用(7)——子域授權、轉發及訪問控制列表配置

訪問控制 子域授權 轉發 十四、Bind軟件的子域授權全球網絡的DNS服務器都是由多級所構成的,每一臺主機通過域名服務找到所要訪問的主機IP地址都是通過一層層DNS服務器找到的。而這樣的結構就決定了,上級域名服務器必須具備找到子域的能力,例如tianxia.com.這個域名,在頂級域com.下就必

Linux運維實戰之DNSbind)服務器的安裝與配置

tle 同時 文件句柄 服務器端 date bka rync adt 發展 【本次博文的主要內容】 bind服務器簡介(包括客戶端工具dig的介紹) 配置正向解析DNS服務器 配置反向解析DNS服務器 配置輔助DNS服務器並在主輔之間實現區域傳送 一、BIND服務器簡