昨天有一个兄弟找我研究DNS服务器,答应他了,给他写一篇关于DNS的服务搭建的例子,这个DNS服务器是基于bind的,这个玩意在linux服务器上,配置了nameserver就好使,在window系统配置上服务器dns,不能立即好使,得过一会儿才好使,还没研究明白。
简介
DNS系统的作用:
1、正向解析:根据主机名称(域名)查找对应的IP地址(实际应用中最多的)
2、反向解析:根据IP地址查找对应的主机域名(不常用,一般用于搭建邮件服务器时。)
安装
#安装bind
yum install -y bind bind-libs bind-utils bind.x86_64
#检查安装情况
rpm -qa bind*
查看安装情况
配置named服务
修改named.conf
通过修改named.conf 来配置dns绑定的ip,可以访问的人等。
#修改named.conf配置
vim /etc/named.conf
#可以复制粘贴以下配置,修改绑定的主机ip即可
//
// named.conf
//
options {
//listen-on port 53 { 127.0.0.1; };
//本机
listen-on port 53 { 192.168.100.10; };
//取消ip6
//listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
//allow-query { localhost; };
//修改为所有人都可以访问这台dns服务器
allow-query { any; };
//指定上一层的dns服务器
//设定了这个,如果访问外网的网站,咋们dns主机也能解析
forwarders { 114.114.114.114; };
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
*/
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
#测试配置是否正确
named-checkconf /etc/named.conf
#如果没有报错,就表示正确
测试配置正确性
配置named.rfc1912.zones
在这个文件里面配置正向解析和反向解析
#修改named.rfc1912.zones 添加正向解析
vim /etc/named.rfc1912.zones
#添加下面配置
//正向解析
zone "yellowcong.com" IN {
type master;
file "yellowcong.com.zone";
};
//反向解析
//我的目标ip是 192.168.100.xx
//反响解析的时候,就需要反过来命名 100.168.192.in-addr.arpa
//in-addr.arpa 这个是固定的,不可以瞎改哦
zone "100.168.192.in-addr.arpa" IN {
type master;
file "100.168.192.zone";
};
配置解析
配置正向
配置正向解析的时候,必须配置dns的解析,然后给dns添加一条a记录
我这个地方都是测的本机的ip,搭建也可以 拿局域网的其他机器进行测试
#创建空文件
touch /var/named/yellowcong.com.zone
#修改文件所属组
chown root:named /var/named/yellowcong.com.zone
chmod 640 /var/named/yellowcong.com.zone
#编辑文件
vim /var/named/yellowcong.com.zone
#添加如下配置
$TTL 1D
@ IN SOA dns.yellowcong.com admin.yellowcong.com. (
123 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
#配置ns 管理这个领域名的dns服务(不用修改,默认这个即可)
@ IN NS dns
#邮件服务需要指定数字
@ IN MX 5 mail
#解析上面的dns
dns IN A 192.168.100.10
#解析上面的mail
mail IN A 192.168.100.10
#添加域名 www.yellowcong.com,指向192.168.100.10
www IN A 192.168.100.10
#配置完了,监测是否配置正确
#第一个参数:yellowcong.com.zone 这个是文件名
#第二个参数:/var/named/yellowcong.com.zone 路径
named-checkzone "yellowcong.com.zone" /var/named/yellowcong.com.zone
测试配置是否正确,下图可以看到配置完犊子了,有问题,自己检查一下
测试通过
修改文件的权限,需要将用户组修改为named,以及修改权限为640
配置规则
[domain] | IN | [[RR type] | [RR data]] |
主机名. | IN | A | IPv4 的 IP 地址 |
主机名. | IN | AAAA | IPv6 的 IP 地址 |
区域名. | IN | NS | 管理这个领域名的服务器主机名字. |
区域名. | IN | SOA | 管理这个领域名的七个重要参数(如上说明) |
区域名. | IN | MX | 顺序数字 |
主机别名. | IN | CNAME | 实际代表这个主机别名的主机名字. |
配置反向
配置反向解析的时候,需要注意域名后面有一个点 .
,而且反向需要和正向配置对上,不然就会 报错。。。
#创建空文件
touch /var/named/100.168.192.zone
#修改文件所属组
chown root:named /var/named/100.168.192.zone
chmod 640 /var/named/100.168.192.zone
#编辑文件
vim /var/named/100.168.192.zone
#添加一下配置
$TTL 1D
@ IN SOA dns.yellowcong.com. admin.yellowcong.com. (
124 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS dns.yellowcong.com.
10 IN PTR dns.yellowcong.com.
10 IN PTR mail.yellowcong.com.
10 IN PTR www.yellowcong.com.
#配置完了,监测是否配置正确
named-checkzone "100.168.192.zone" /var/named/100.168.192.zone
修改文件的所在组
配置文件
测试是否添加成功
启动服务
#启动服务
service named start
#添加到开机启动
systemctl enable named
linux测试
dig -t A www.yellowcong.com @192.168.100.10
#查看反向解析
dig -x 192.168.100.10 @192.168.100.10
查看A 记录
查看ns记录
反向代理测试
window客户端测试
#进入window的测试端口
nslookup
#登录ns服务
server 192.168.100.10
#域名解析
set q=NS
#PTR反向解析,输入ip,查看所表示的域名
set q=PTR
#解析A记录,输入域名查看ip
set q=A
#别名解析,输入域名查看ip
set q=CNAME
解析a记录
解析NS记录
反向解析,没有问题啊
添加DNS到系统
1、linux添加DNS
这种,直接修改resolv.conf的方法,会被网卡的默认配置给刷新掉,所以建议使用更改网卡默认的dns的方式进行修改。
第一种方法:修改resolv.conf
这种方式是临时的,重启网卡后,就刷新掉了
vim /etc/resolv.conf
#服务的地址
nameserver 192.168.100.10
curl www.yellowcong.com
curl
访问网页
没有更改nameserver之前
更改nameserver之后
第二种方法:修改网卡的dns的方式
这种方式是比较靠谱的,会永久设定dns,不会像第一种,别顶掉
#直接修改网卡的 dns
vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
#UUID=e84159d1-62e6-4937-9c91-08a2f6adeda1
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.100.11
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
DNS1=192.168.100.10
#DNS1=119.29.29.29
DNS2=182.254.116.116
#重启网卡
systemctl restart network
重启网卡后,自动将dns刷新到了/etc/resolv.conf
上
添加到window
如果遇到不能立即生效的问题,可以手动刷新dns缓存,自动生效得等半个多点。
配置到了window平台
刷新dns缓存
俺刷新了,就是不好用,坑
ipconfig /flushdns
#这个后面跟的是 一级域名yellowcong.com
nslookup -qt=ns yellowcong.com
更新window上的dns
配置文件打包
如果配置任然不成功,可以用我配置好的,修改修改
http://yellowcong.qiniudn.com/%E9%85%8D%E7%BD%AE-named.zip
错误集合
/etc/named.conf:59: missing ‘;’ before ‘include’
这个错虽然是/etc/named.conf报的错,但是有可能是named.rfc1912.zones配置有问题导致的
#执行,查看named.rfc1912.zones 是否存在问题
named-checkconf /etc/named.rfc1912.zones
100.168.192.zone:2: SOA record not at top of zone (100.168.192.in-addr.arpa.100.168.192.zone)
配置反向解析的有问题,是文件配置问题,仔细检查
has no address records (A or AAAA)
这个是没有记录,所以我赶紧查看了一下正向解析的地址,发现尼玛 ,ip给弄串了。
#查看正向解析,是否存在dns的配置
vim /var/named/yellowcong.com.zone
#修改记录
大家发现192.168.100.10的记录部不存在,我写的是11,尴尬了
修改后
执行测试
named-checkzone "100.168.192.zone" /var/named/100.168.192.zone
参考文章
http://blog.51cto.com/yueyuanyuan/360317