安装DNS服务named的web端工具
来源:原创
时间:2021-04-11
作者:脚本小站
分类:Linux
工具官方地址:
opsbase.cn/p/django-bind9
yum安装mysql:
scriptjc.com/article/850
创建数据库和赋予权限等操作:
use mysql create database bind9; CREATE USER 'root'@'%' identified by '123456'; GRANT ALL PRIVILEGES ON bind9.* TO 'root'@'%' WITH GRANT OPTION; flush privileges;
docker安装web端工具:
docker run --name bind9 -d --restart=always -p 8000:8000 -e DB_HOST=192.168.0.53 -e DB_PORT=3306 -e DB_USER=root -e DB_PASSWORD='123456' -e DB_NAME=bind9 lghost/bind9
编译安装bind:
安装编译工具:
yum groupinstall "Development Tools" "Server Platform Development"
下载二进制包:
wget -c http://ftp.isc.org/isc/bind9/9.11.2/bind-9.11.2.tar.gz
编译:
./configure --prefix=/usr/local/bind/ --with-dlz-mysql=/usr --enable-threads=no --with-openssl=no --disable-ipv6 --enable-largefile --disable-openssl-version-check
安装:
make make install
配置:
cd /usr/local/bind/etc wget -c ftp://ftp.internic.net/domain/named.root /usr/local/bind/sbin/rndc-confgen -r /dev/urandom -a mkdir -pv /usr/local/bind/var/{logs,zones} ln -s /usr/local/bind/sbin/named /bin/
配置文件/usr/local/bind/etc/named.conf:
acl trust-lan { 10.0.0.0/8; 172.16.0.0/16; 192.168.0.0/16; 127.0.0.1; }; statistics-channels { inet 127.0.0.1 port 8653 allow { 127.0.0.1; }; }; options { listen-on port 53 { any; }; zone-statistics yes; tcp-clients 50000; dnssec-enable no; dnssec-validation no; datasize unlimited; stacksize unlimited; allow-query { trust-lan; }; allow-transfer { 172.20.10.61;}; directory "/usr/local/bind/var/"; pid-file "named.pid"; forwarders { 223.5.5.5; 114.114.114.114; 8.8.8.8; }; recursion yes; max-cache-size 60%; }; zone "." IN { type hint; file "/usr/local/bind/etc/named.root"; }; logging { channel bind_log { file "/usr/local/bind/var/logs/bind.log" versions 3 size 100m; severity debug; print-time yes; print-severity yes; print-category yes; }; channel error_log { file "/usr/local/bind/var/logs/error.log" versions 10 size 32m; severity info; print-time yes; print-severity yes; print-category yes; }; channel query_log { file "/usr/local/bind/var/logs/query.log" versions 10 size 32m; severity info; print-time yes; print-severity yes; print-category yes; }; category default { bind_log; }; category queries { query_log; }; }; dlz "My zone" { database "mysql {host=192.168.0.53 dbname=bind9 ssl=false port=3306 user=root pass=123456} {select zone from dns_zones 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 LEFT JOIN dns_zones ON dns_records.zone_id = dns_zones.id WHERE dns_zones.status=1 and dns_zones.zone='$zone$' and dns_records.host='$record$'}"; };
启动服务:
/usr/local/bind/sbin/named -c /usr/local/bind/etc/named.conf -g
创建用户:
useradd -s /sbin/nologin named chown -R named:named /usr/local/bind/
启动文件:
cat > /etc/systemd/system/named.service <<EOF [Unit] Description=Internet domain name server After=network.target [Service] ExecStart=/usr/local/bind/sbin/named -f -u named -4 -n 2 ExecReload=/usr/local/bind/sbin/rndc reload ExecStop=/usr/local/bind/sbin/rndc stop [Install] WantedBy=multi-user.target Alias=bind.service EOF
编译bind添加支持mysql插件:
问题1:
mysql_driver.c:67:19: fatal error: mysql.h: No such file or directory
解决方法:
yum install mysql-devel
问题2:用c连接mysql 编译参数:-lmysqlclient 出错
/usr/bin/ld: cannot find -lmysqlclient
原因:libmysqlclient.so不在/usr/bin目录下,而是在/usr/lib64/mysql目录下
解决方法:建一个软连接或者复制到/usr/bin目录下
ln -sv /usr/lib64/mysql/libmysqlclient.so /usr/lib/libmysqlclient.so