日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

bind9+mysql搭建高可用DNS解析服务

發(fā)布時間:2023/12/29 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bind9+mysql搭建高可用DNS解析服务 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

bind9+mysql搭建DNS解析服務(wù)

基本的架構(gòu)圖如下:

安裝步驟:

  • 安裝依賴服務(wù)
  • yum install wget cmake ncurses boost zlib gcc libuv libuv-devel libnghttp2 libnghttp2-devel openssl-devel libcap-devel mysql mysql-devel -y
  • 安裝mysql
    此處省略安裝配置mysql主從~~
    mysql安裝完成后需要添加環(huán)境變量,編譯bind時會用到
  • export CPPFLAGS="-I/usr/lib64/mysql $CPPFLAGS" export LDFLAGS="-L/usr/lib64/mysql $LDFLAGS" export LD_LIBRARY_PATH="/usr/lib64/mysql"

    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 '2022022317',`resp_person` varchar(64) NOT NULL DEFAULT 'localhost',`primary_ns` varchar(64) NOT NULL DEFAULT 'localhost.',PRIMARY KEY (`id`),KEY `type` (`type`),KEY `host` (`host`),KEY `zone` (`zone`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

    后續(xù)添加DNS解析的命令

    insert into dns_bind.dns_records (zone, host, type, data, ttl) VALUES ('testinfo.local', 'aaa', 'A', 'xxx.xxx.xxx.xxx', '600');
  • 編譯安裝bind服務(wù)
    下載安裝包
  • cd /usr/local/src/ wget https://www.cpan.org/src/5.0/perl-5.34.0.tar.gz wget wget https://ftp.isc.org/isc/bind9/9.16.26/bind-9.16.26.tar.xz

    編譯安裝perl , 這里make test的時候會報一個錯誤,無視他,繼續(xù)make install就行

    tar -zxvf perl-5.34.0.tar.gz cd perl-5.34.0 cp configure.gnu configure ./configure -des -Dprefix=/usr/local/perl make make test make install

    編譯安裝bind服務(wù)

    tar -xvf bind-9.16.26.tar.xz cd bind-9.16.26 ./configure --prefix=/data/bind/ --with-dlz-mysql=yes --enable-largefile --with-openssl=no --without-python --disable-ipv6 make make install

    注意:bind9.16是最后支持mysql的版本,9.17開始就移除了mysql模塊

  • 生成rndc.conf和named.conf
  • cd /data/bind/etc/ /data/bind/sbin/rndc-confgen > rndc.conf tail -10 rndc.conf | head -9 | sed s/#\ //g > named.conf ../bin/dig > named.root
  • 配置named.conf
    配置options
  • options {listen-on port 53 { any; };directory "/data/bind";dump-file "/data/bind/data/cache_dump.db";statistics-file "/data/bind/data/named_stats.txt";memstatistics-file "/data/bind/data/named_mem_stats.txt";Pid-file "/data/bind/var/run/named/named.pid";allow-query { any; };recursion yes;version "0";serial-query-rate 1;dnssec-enable no;dnssec-validation no;dnssec-lookaside auto;managed-keys-directory "/data/bind/dynamic";forwarders { 223.5.5.5;223.6.6.6; }; };

    配置zone

    dlz "mysql zone" { database "mysql {host=XXX.XXX.XXX.XXX dbname=dns_bind ssl=false port=3306 user=root pass=XXXXXXXX} {select zone from dns_records where zone = '$zone$' and view = 'any' limit 1} {select ttl,type,if(mx_priority>0,mx_priority,NULL),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 as mydata from dns_records where zone = '$zone$' and host = '$record$' and view = 'any'}"; };

    到這里就安裝完成了。

    附1:bind檢測配置文件命令

    /usr/local/bind/sbin/named -c /usr/local/bind/etc/named.conf -g

    附2:bind啟動腳本

    #!/bin/bash ########################################################################################## # Info: # start dns server ########################################################################################## # Auther: Yin Jiang # Changelog: # 20220223 jiangyin initial create ####################################################################################################################################################################################if [ `id -u` -ne 0 ] then echo "ERROR:Must run as root." exit 1 fifunction start() {/data/bind/sbin/named -c /data/bind/etc/named.conf -4echo . && echo 'DNS server started.' }function stop() {kill `cat /data/bind/var/run/named/named.pid`echo . && echo 'DNS server stopped.' }function reload() {/data/bind/sbin/rndc reload }function status() {/data/bind/sbin/rndc status }case "$1" instart)start;;stop)stop;;restart)stopsleep 2start;;reload)reload;;status)status;;*)echo "Please use these command (start | stop | restart | status | reload)";; esac

    總結(jié)

    以上是生活随笔為你收集整理的bind9+mysql搭建高可用DNS解析服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。