DNS 简介git
网络通讯中,数据链路层使用 MAC 地址,网络层使用 IP 地址,传输层使用端口号;数据库
每台计算机都须要有本身的 IP 地址,这样才能保证信息传输的正确性,可是 IP 地址由数字构成,难以记忆和表达它的实际用途,因此用形象的域名来代替 IP 地址方便交流和记忆;vim
网络通讯中数据包的传输仍是须要靠 IP 地址来进行,IP 地址填写在数据包的头部,才能进行数据的传输,当 www.test.com 向 www.test1.com 发送信息的时候,首先必须将这两个域名转化成实际的 IP 地址;缓存
DNS 服务就是完成域名到 IP 或者 IP 到域名的解析(翻译),而安装了 DNS 服务的计算机就是 DNS 服务器;安全
实现域名解析的方法主要有:服务器
1)hosts 文件,要求全部互相解析的机器必须都配置;网络
2)NIS 集中管理域名,只适合局域网;session
3)DNS 实现域名的层次化,分布式管理;tcp
1、安装 DNS分布式
DNS 服务有 BIND 软件提供:yum install bind bind-utils bind-chroot
2、配置 DNS 服务器
DNS 服务的主要配置有:
/etc/named.conf 主要配置文件,配置端口、安全、日志等
/etc/named.rfc1912.zones 定义正反解区域相关
正向解析:经过域名查找 IP;
反向解析:经过 IP 查找域名;
/var/named/ 正反解数据库
一、配置 /etc/named.conf
cp /etc/named.conf /etc/named.conf.bk
DNS 配置文件中注释为双斜杠 //
vim /etc/named.conf
####################################################################
options {
//listen-on port 53 { 127.0.0.1; };
//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 { any; }; //容许全部的主机进行 DNS 查询
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
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";
};
添加接收到查询请求时,会先转发到forwarders指定的DNS,查不到再执行递归
forward first;
forwarders { //(接上面)固然,在转发以前,还会先查本地缓存
DNS IP1;
DNS IP2;
};
####################################################################
二、配置 /etc/named.rfc1912.zones
cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bk
vim /etc/named.rfc1912.zones
定义 baidu.com 正向解
####################################################################
zone "baidu.com" IN {
type master;
file "baidu.com.zone";
};
####################################################################
定义 zone 文件 baidu.com.zone
三、配置 /var/named/ 数据库文件
建立正向解析数据库文件 /var/named/baidu.com.zone
vim /var/named/baidu.com.zone
####################################################################
$TTL 600
@ IN SOA dns.baidu.com. admin.baidu.com. (
2015091901
1H
5M
3D
12H
)
IN NS dns
dns IN A xxx.xxx.xxx.xxx
www IN A xxx.xxx.xxx.xxx
####################################################################
四、启动服务
systemctl start named ------- 启动 DNS 服务
systemctl status named ------- 查看 DNS 服务状态
systemctl stop named ------- 中止 DNS 服务
systemctl enable named ------ 开机自启 DNS
五、测试
nslookup www.baidu.com
####################################################################
Server: 10.143.22.118
Address: 10.143.22.118#53 ------- DNS 服务器地址
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 220.181.112.244
Name: www.a.shifen.com
Address: 220.181.111.188 ------- DNS 服务器解析的地址
####################################################################
六、端口
DNS 需开启 53 tcp udp 端口
阿里云 Centos 7 上默认使用 firewall 控制防火墙,须要打开 53 端口;
firewall-cmd --add-port=53/tcp
firewall-cmd --add-port=53/udp
须要永久生效添加选项:--permanent
Centos 7 默认没有安装 iptables,若是要使用 iptables:
yum install iptables.services
systemctl enable firewalld
systemctl stop firewalld
默认安装完 iptables 以后,会有下面两条规则:
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A INPUT -j REJECT --reject-with icmp-host-prohibited
会拦截掉转发和接收的 icmp 包;未细研究,注释掉便可;
七、解析文件
vim /etc/resolv.conf