0x01 DNS介绍
0x011 什么是域名
域名(Domain Name)又称网域,是一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在传输时标识计算机的电子方位。具有独一无二,不可复制的特性。
基于C/S模式的域名解析服务,应用层协议
监听在53/udp,53/tcp端口
- TCP用来区域传送
- UDP用来解析
0x012 什么时DNS
域名系统(Domain Name System,简写DNS) 是互联网的一项服务。域名解析是把域名指向网站空间IP,让人们通过注册域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址转换的过程:域名的解析在DNS服务器上完成。
- 正向解析: 域名 –》 IP地址
- 逆向解析: IP地址 –》 域名
0x013 域名的组成和分类
常见格式:www.baozouzhugan.com
完整格式www.baozouzhugan.com.
.为根域(可忽略不屑)
com: 顶级域,由ICANN组织指定和管理
分类:
国家级域名:CN,HK,SG等
通用顶级域名: com(商业机构) org(非营利性组织) edu(教育机构)等
新通用顶级域名: red,top
baozouzhugan: 二级域名(注册域),由个人或者组织申请
www: 三级域名
主机名: test.www.baozouzhugan.com.
中test就是主机名。一般用来表示具体某一台机子
扩展:com.cn
属于”二级域名” 是cn的子域
0x02 DNS解析过程
0x021 DNS查询解析的简单过程
- 客户端访问
www.baozouzhugan.com
- 客户端首先查询自己的host文件,查找是否有
www.baozouzhugan.com
的解析记录,如果有就直接返回给游览器 - 客户端继续在本机内查询DNS的解析缓存,如果有则直接返回给游览器
- 客户端查看网卡上的DNS服务器地址,访问DNS服务器,查询域名的解析(同23)结果,若DNS服务器有解析记录,则将IP地址返回给客户机
详细步骤4的下在下方
0x03 DNS搭建
0x031 软件准备
软件名: bind
服务器名称: named
端口:
UDP 53 数据通信(域名解析)
TCP 53 数据同步(主从同步)
配置文件:
主配置文件: /etc/named.conf
(主服务器运行参数)
options {
listen-on port 53 { 127.0.0.1; }; //设置服务器监听网卡(可以写具体一个IP,也可以写成any,DNS服务器一般写any 测试只要本地就可以了)
listen-on-v6 port 53 { ::1; }; //同上这个是IPV6
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
上面一大部分都是数据文件位置
allow-query { localhost; }; //设置可以访问这台服务器的IP(一般为any)
区域配置文件: /etc/named.rfc1912.zone
(服务器解析的区域配置,正反向域定义信息)
//正向配置文件
zone "localhost.localdomain" IN { #正向区域配置文件标签,修改为要解析的域
type master; #DNS服务器类型(Master/Slave)
file "named.localhost"; #正向数据配置文件名称(默认保存在/var/name/下)
allow-update { none; }; #允许数据更新的列表(填写IP地址)
};
//反向配置文件
zone "59.168.192.in-addr.arpa" IN { #反向区域配置文件标签,仅修改IP位置,并将IP反写
#如: 111.0.111.222...in-addr.arpa
type master;
file "named.loopback";
allow-update { none; };
};
数据解析配置文件: `/var/named/xxx(主机名和IP对应关系)
$/var/named/named.localhost #正向配置文件信息 反向类似
$TTL 1D #域名有效解析生存周期(一般指缓存时间)
@ IN SOA @ rname.invalid. (
@:代表域名本身 0 ; serial 配置文件修改版本(如:20191220)
SOA:SOA标记(起始授权机构的资源记录 1D ; refresh 更新频率(主从查询周期)
描述了域名的管理员,电子邮箱地址,和一些时间参数) 1H ; retry 更新失败的重试时间周期
1W ; expire 无法更新时的失效周期
3H ) ; minimum 缓存服务器无法更新时的失效时间
NS @ #设置DNS服务器的域名
A 127.0.0.1 #IPv4的域名IP解析记录
AAAA ::1 #IPv6的域名IP解析记录
记录类型 | 记录 |
---|---|
A | Address地址 IPv4 |
AAAA | Address地址 IPv6 |
NS | Name Server域名服务器 如果有下一级需要添加Name server |
SOA | Start of Authority起始授权机构 |
MX | Mail Exchanger 邮件交换记录,如果需要设置邮箱,让邮箱能收到邮件,需要添加MX记录 |
CNAME | Canonical Name 将域名指向下一个域名 |
PTR | Pointer指针 |
TXT | 可以填写任何东西,长度限制255,绝大多数TXT记录时用来做SPE(反垃圾邮件) |
SRV | Service |