前言:总结一下bind的域名管理,可能只是简单的总结,理解的也可能不够透彻,如有纰漏望大家批评指正,Linux玩的就是分享,分享无处不在。分下面几个步骤来写:
- BIND的编译安装
- BIND的配置实现域名解析
- BIND利用远程控制
- BIND实现依不同客户端解析为不同域名
- BIND主从协同作业
- BIND子域授权
- BIND实现域名的动态解析
- BIND日志
一.BIND的编译安装
本文的环境的操作系统为 Redhat 5.8,编译的BIND为bind-9.9.2,编译需要的工具Development Tools,编译需要的库Development Libraries已安装,为了简易,请先关闭iptables,SElinux。
1,添加系统用户与组named,并指定shell为/sbin/nologin ##named是以named用户运行的
2,解压bind-9.9.2,并到目录里面
tar xvf bind-9.9.2.tar.gz;cd bind-9.9.2
3,根据需要配置生成Makefile
./configure --prefix=/usr/local/named --sysconfdir=/etc/named --disable-openssl-version-check
说明: --prefix指明程序安装的目录
--sysconfdir指明配置文件安装的目录
--disable-openssl-version-check避免因安装的openssl版本低导致的停止安装
4,编译安装 make&&make install
如果途中没报错,BIND就编译安装完毕了,ls /usr/local/named看看有没有生成的目录与文件
二.BIND的配置实现域名解析
网络环境规划:
域:laoguang.me ns:172.16.1.1 ##主DNS服务器 ns2:172.16.1.2 ##从DNS服务器 www:172.16.1.3 ##web服务器 ftp:172.16.1.4 ##ftp服务器 mail:172.16.1.5 ##mail服务器 子域:linux.laoguang.me ns:172.16.100.1 ##子域DNS服务器 bbs:172.16.100.2 ##子域下面的bbs |
1,在/etc/named/下面建立配置文件named.conf, 如下 ##安装时指定的配置文件存放处
options { directory "/var/named"; ##指定数据目录 }; zone "." IN { ##定义根域数据文件 type hint; file "named.ca"; }; zone "localhost" IN { ##localhost正解区域 type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" IN { ##localhost反解区域 type master; file "0.0.127.zone"; }; zone "laoguang.me" IN { ##laoguang.me正解区域 type master; file "laoguang.me.zone"; }; zone "1.16.172.in-addr.arpa" IN { ##laoguang.me反解区域 type master; file "1.16.172.zone"; }; |
保存退出,更改权限与属主数组; ##named的运行时以named运行的
chmod 640 /etc/named/named.conf
chown root:named /etc/named/named.conf
2,根据主配置文件在/var/named下面分别建立各个区域文件。
1)建立 named.ca 文件;
此文件可以从网上下载,也可以生成,生成方法:
/usr/local/named/bin/dig -t NS . > /var/named/named.ca
说明:dig –t NS . 查看根区域的DNS服务器,重定向到named.ca中
2)建立 localhost.zone 文件,并编辑如下:
$TTL 5000 @ IN SOA @ admin ( ##SOA区域描述 2012102201 ##序列号 2H ##更新时间 5M ##重试时间 7D ##失效时间 5H ) ##否定回答时间 IN NS @ ##NS记录 IN A 127.0.0.1 ##NS 的A记录 |
3)建立 0.0.127.zone文件,并编辑如下
$TTL 86400 @ IN SOA @ admin ( 2012102201 2H 5M 7D 2H ) IN NS localhost. 1 IN PTR localhost. ##反解PTR记录 |
4)建立laoguang.me.zone文件,并编辑如下
$TTL 86400 @ IN SOA ns admin ( 2012102201 2H 5M 7D 2H ) IN NS ns IN NS ns2 IN MX 10 mail ns IN A 172.16.1.1 ns2 IN A 172.16.1.2 www IN A 172.16.1.3 ftp IN A 172.16.1.4 mail IN A 172.16.1.5 |
5)建立 1.16.127.zone文件,并编辑如下
$TTL 86400 @ IN SOA ns admin ( 2012102201 2H 5M 7D 2H ) IN NS ns.laoguang.me. ##各个主机的反解PTR 1 IN PTR ns.laoguang.me. 2 IN PTR ns2.laoguang.me. 3 IN PTR www.laoguang.me. 4 IN PTR ftp.laoguang.me. 5 IN PTR mail.laoguang.me. |
3,更改权限,环境,并测试
1)更改刚才建立文件的权限与属组属主
cd /var/named; chown root:named * chmod 640 * |
2)为了方便管理named重新设定PATH环境变量,设定 /root/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/named/sbin:/usr/local/named/bin source /root/.bash_profile ##使配置文件立刻生效 |
3)以named名义启动named程序,并查看是否启动起来监听53端口,查看是否以named用户运行,查看/var/log/messages有没有错误。
named –u named; netstat –tlnp | grep 53; ps aux | grep named; tail /var/log/messages |
4) 如果没有错误,测试是否能正确解析,正确反向解析
dig –t A localhost ##测试正解 dig –t A www.laoguang.me @127.0.0.1 dig –t NS laoguang.me @127.0.0.1 dig –t MX laoguang.me @127.0.0.1 dig –t A ftp.laoguang.me @127.0.0.1 dig –x 127.0.0.1 ##测试反解 dig –x 172.16.1.1 dig –x 172.16.1.3 |
如果都没问题Ok,DNS构建完毕。
三.BIND利用RNDC远程控制
目标:本地与远程客户端通过rndc控制DNS服务器,启动,停止,重新加载配置文件等等。
被控主机:172.16.1.1 ##刚才建立的DNS服务器
主控客户端:(1) localhost (2) 远程客户端 172.16.1.2 (这是我们将来的从DNS服务器,且DNS及rndc工具已安装,环境安装方法与主一致)
1,利用本机的rndc控制dns服务器
1)利用rndc-keygen生成/etc/named/rndc.conf 配置文件
rndc-confgen >/etc/named/rndc.conf |
2) 查看密钥
cat /etc/named/rndc.conf ##如下所示 # Start of rndc.conf key "rndc-key" { algorithm hmac-md5; secret "cLUy7wY3Al05PhSxZfRnWg=="; }; options { # Use with the following in named.conf, adjusting the allow list as needed: |
3)把下部分区域复制到/etc/named/named.conf的options区域下并去掉开头的#
部分代码如下: options { directory "/var/named"; }; # Use with the following in named.conf, adjusting the allow list as needed:key "rndc-key" { algorithm hmac-md5; secret "cLUy7wY3Al05PhSxZfRnWg=="; }; controls { ......... |
4)重启named服务,rndc reload测试能否正常运行
killall named; named –u named; rndc reload; |
如果有成功的字样表示本机已ok。
2,远程主机通过rndc控制dns服务器
1) 再次生成rndc密钥,不过名字得换一下了
rndc-confgen > /etc/named/rndc2.conf cat /etc/named/rndc2.conf ##如下 # Start of rndc.conf options { |
2) 把刚新生成的下面的key复制到/etc/named/named.conf上个key下,key “rndc-key”改为key “rndc-key2”,修改controls的inet,allow,keys选项
key "rndc-key" { algorithm hmac-md5; secret "cLUy7wY3Al05PhSxZfRnWg=="; }; key "rndc-key2" { ##key名字不能重名对吧 algorithm hmac-md5; secret "0WjLJgZhFlYeltjdrai9gQ=="; }; controls { inet 0.0.0.0 port 953 allow { 172.16.1.2; 127.0.0.1; } keys { "rndc-key"; "rndc-key2"; }; ##允许远程控制吧, 允许的key加进去; }; |
3) 把新生成的rndc.conf2传到客户机/etc/named/目录下,修改名字为rndc.conf,修改key名,并修改其默认控制server如下:
key "rndc-key2" { algorithm hmac-md5; secret "0WjLJgZhFlYeltjdrai9gQ=="; }; options { |
4)重启DNS被控服务器,测试远程能否控制
killall named ; named –u named; 客户端上运行:rndc reload 是否有成功字样 |
到此rndc介绍完毕,远程或本地皆可以通过rndc控制dns服务器。
四,BIND实现依不同客户端解析为不同域名
目标:根据客户端来源不同(主要是IP不同),域名解析的IP也不相同,比如内网IP我解析为www的内网IP,外网访问我解析为外网的IP。或者,中国联通的客户端iP我解析为联通服务器的IP,中国电信的客户端IP解析为电信服务器的IP,如此妙用可解决,中国网络南北互通的问题。以第一个为例,
假设我的ns主机即DNS服务器还有一个公网IP:2.2.2.2,www服务器也有一个公网IP为,2.2.2.3
当内部主机B访问www时,DNS解析为 172.16.1.3
当外部主机A访问www时,DNS解析为 2.2.2.3
1,/etc/named/named.conf创建访问控制列表,创建视图,基于原来的配置文件修改:
acl "intranet" { 172.16.1.0/24; 127.0.0.0/8; }; options { directory "/var/named"; }; key "rndc-key" { algorithm hmac-md5; secret "cLUy7wY3Al05PhSxZfRnWg=="; }; key "rndc-key2" { algorithm hmac-md5; secret "0WjLJgZhFlYeltjdrai9gQ=="; }; controls { inet 0.0.0.0 port 953 allow { 172.16.1.2; 127.0.0.1; } keys { "rndc-key"; "rndc-key2"; }; }; view "lan" { ##创建lan视图 match-clients { intranet; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { |
2,把原来的/var/named/laoguang.me.zone 重命名为laoguang.me.lan,并新建laougang.me.wan
mv /var/named/laoguang.me.zone /var/named/laoguang.me.lan vi /var/named/laoguang.me.wan ##如下 $TTL 86400 @ IN SOA ns admin ( 2012102301 2H 5M 7D 2H ) IN NS ns ns IN A 2.2.2.2 www IN A 2.2.2.3 |
3,测试是否能正确解析。因为我的DNS没在网上注册,所以你懂得,以2.2.2.2为DNS是不行的,那么我们分别在客户机上A:172.16.1.10 B:192.168.1.10上以172.16.1.1为dns测试,是否能正确解析www.laoguang.me 。第一个图为在DNS服务器上测试(172.16.1.1),第二个图在客户机(192.168.0.219)测试
到此基于客户端的分类解析实验完毕,其实在生产环境中,我们一般用来是实现电信联通的分网解析,只要把电信的IP(可网上搜集)写到一个acl表里面,把来自电信客户端的解析请求,回复为电信服务器的IP地址,其它的解析为网通的。
接下一章http://laoguang.blog.51cto.com/6013350/1035272