DNS原理相关DNS 为Domain Name System(域名系统)的缩写,它是一种将ip地址转换成对应的主机名或将主机名转换成与之相对应ip地址的一种服务机制。 其中通过域名解析出ip地址的叫做正向解析,通过ip地址解析出域名的叫做反向解析。 DNS使用TCP和UDP, 端口号都是53, 但它主要使用UDP,服务器之间备份使用TCP。 全世界只有13台“根”服务器,1个主根服务器放在美国,其他12台为辅根服务器,DNS服务器根据角色可以分为:主DNS, 从DNS, 缓存DNS服务器,DNS转发服务器v 。
域名:
■ www.magedu.com 这是个主机名(主机名FQDN:Full Qualified Domain Name,完全限定域名)
# .com是个域名,magedu是.com下的一个域
# .magedu.com也是个域名,只不过有的主机叫做www有的叫做ftp、mail等
■ 域名由大到小进行组合,就像外国人写地址,如www.magedu.com.
# www:范围最小,主机名
# .magedu:
# .com:顶级域
# .:全局,表示根域
■ 根域-->顶级域(TLD:Top Level Domain)-->二级域
顶级域分为:
组织域:.com,.org,.net,.cc…
国家域:.cn,.tw,.hk,.iq,.ir,.jp…
反向域:将IP-->FQDN专用的
反向:IP-->FQDN在一个数据库
正向:FQDN-->IP在另一个数据库
■ 主机名称是自底向上的如:www.magedu.com,而授权是自顶向下的
DNS服务器的作用:
1、接受本地客户查询请求,查询方式为递归:
比如st1请求ns服务器,ns服务器给st1进行递归,自己迭代查询
2、外部客户端请求:请求权威答案
如果请求的主机存在,则发送肯定答案和缓存时间(TTL)
如果请求的主机不存在,则发送否定答案和缓存时间(TTL)
3、外部客户端请求非权威答案,比如:
st1想要查询www,但是它没有给ns.ibm.com发送请求反而去请求ns.kernel.org
用自己的话来说就是创建一个DNS服务器,用来给买到的域名解析到自己的ip上去。
DNS的主从结构和类型:
■ DNS服务器如果挂了,通过ip地址可以访问,无法通过域名来访问。为了安全,需要不止一台DNS服务器
二. 使用bind搭建DNS服务器1. 安装bindyum install -y bindcp /etc/named.conf /etc/named.conf.bak >/etc/named.confvim /etc/named.conf 加入如下配置:
options {
directory "/var/named";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
};
保存退出
named-checkconf #检查配置文件有无错误
chown named /etc/named.confcd /var/named/dig -t NS . > named.ca//Dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具。vim localhost.zone //加入
@ IN SOA localhost. admin.localhost. (
2013081601
1H
10M
7D
1D
)
@ IN NS localhost.
localhost. IN A 127.0.0.1
vim named.local //加入
$TTL 86400
@ IN SOA localhost. admin.localhost. (
2013081601
1H
10M
7D
1D
)
@ IN NS localhost.
1 IN PTR localhost
保存退出
检测配置是否有问题: named-checkconf 检测正解析: named-checkzone "localhost" /var/named/localhost.zone 检测反解析: named-checkzone "0.0.127.in-addr.arpa" /var/named/named.localrndc-confgen -r /dev/urandom -a // 这一步是生成 rndc.key, 如果没有这个key namd 是启动不了的。chown named:named /etc/rndc.key/etc/init.d/named startnetstat -lnp|grep named // 查看一下named进程是否监听了53端口首先测试正向解析:dig @127.0.0.1 localhost. 接着测试反解析:dig @127.0.0.1 -x 127.0.0.12. 增加一个域名(zone)vim /etc/named.conf //增加
zone "abc.com" IN {
type master;
file "abc.com.zone";
};
zone "137.168.192.in-addr.arpa" IN {
type master;
file "192.168.zone";
};
保存退出
编辑zone文件: vim /var/named/abc.com.zone//增加
$TTL 600
@ IN SOA abc.com. root.abc.com. (
2013081601
1H
10M
7D
1D
)
IN NS ns.abc.com.
IN MX 10 mail.abc.com.
ns IN A 192.168.0.11
www IN A 192.168.137.73
mail IN A 192.168.137.10
bbs IN CNAME www.abc.com.
编辑反解析文件: vim /var/named/192.168.zone //增加
$TTL 600
@ IN SOA ns.abc.com. root.abc.com. (
2013081601
1H
10M
7D
1D
)
@ IN NS ns.abc.com.
10 IN PTR ns.abc.com.
11 IN PTR mail.abc.com.
73 IN PTR www.abc.com.
保存退出分别检测两个配置文件是否有问题:named-checkzone "abc.com" abc.com.zonenamed-checkzone "137.168.192.in-addr.arpa" 192.168.zone
重启named服务/etc/init.d/named restart
测试 :
dig @127.0.0.1 www.abc.comdig @127.0.0.1 -x 192.168.137.113. 配置DNS转发我们配置的DNS是只能解析我们定义的zone的,我们没有定义的是不能解析的。配置DNS转发就可以解析其他互联网上的域名了,前提是这个域名在互联网中的确在使用,也就是说这个域名已经被某个DNS服务器解析了。vim /etc/named.conf //在options{} 里面增加forward first; forwarders { 8.8.8.8; };这两行就是用来配置转发的,该DNS服务器不能解析的域名会转发到8.8.8.8这个DNS服务器上去解析。4. 配置主从在从服务器上 yum install -y bind拷贝主上的配置文件到从上,其中有/etc/named.conf, /var/named/localhost.zone, /var/named/named.local 拷贝过来后,修改一下从的/etc/named.conf 内容参考:
options {
directory "/var/named";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
};
zone "abc.com" IN {
type slave;
file "slaves/abc.com.zone";
masters { 192.168.0.11; };
};
zone "137.168.192.in-addr.arpa" IN {
type slave;
file "slaves/192.168.zone";
masters { 192.168.0.11; };
};
从上生成rndc.key: rndc-confgen -r /dev/urandom -a
chown named:named /etc/rndc.key从上启动named: /etc/init.d/named start 启动成功后会在 /var/named/下生成一个slaves目录,这个目录下会有192.168.zone, abc.com.zone这两个文件,内容是和主上的一样的在从上测试: dig @127.0.0.1 5. 测试主从同步在主dns上更改文件 /var/named/abc.com.zone // 在最后增加一行:123 IN A 1.1.1.1另外需要修改一下第三行的那个数字串,这个是用来做标记的,只有这个数字变化了,才可以让从自动跟着变,数字只能是变大,不能减小,2013081601 -> 2013081602重启主namd服务: /etc/init.d/named restart经测试我们发现一个问题,就是从经常会同步特别慢,这是很要命的。所以需要我们做一个特殊操作,在主上的/etc/named.conf中,abc.com的zone中增加两行:notify yes;also-notify { 192.168.0.12; };