一、dns域名解析介绍
dns,应用层协议
- 作用:域名解析
- 正向解析,将主机名解析成对应的ip地址
- 反向解析,将ip地址解析成对应的主机名
涉及的软件
- 软件: bind
- 服务: named
- 端口: 53/udp (提供解析服务)、53/tcp(提供多个dns间数据同步)
1、dns核心概念
1.1 区域 zone
正向区域
- 一般就是个二级域名, linux.com
反向区域
- x.x.x.in-addr.arpa
- 10.168.192.in-addr.arpa
1.2 记录 record
a记录, 标识主机名和ip地址的对应关系
www.jd.com a 123.45.6.78
ptr记录, 标识ip地址和主机名的对应关系
1.1.1.1 ptr test.linux.com
ns记录, 标识dns服务器自身, 必须配合a记录
ns ns1.jd.com ns1.jd.com a 2.2.2.2
mx记录, 标识邮件服务器, 必须配合a记录
// 数字5:优先级,数字越小优先级越高 mx 5 mail1.linux.com mail1.linux.com a 3.3.3.3 mx 10 mail2.linux.com mail2.linux.com a 4.4.4.4
cname记录, 别名记录
www.baidu.com cname www.a.shifen.com
二、dns服务的配置
1、正向解析的配置
- 关闭selinux,防火墙
[root@node01 ~]# getenforce disabled [root@node01 ~]# systemctl status firewalld.service ● firewalld.service loaded: masked (/dev/null; bad) active: inactive (dead)
- 安装bind软件
[root@node01 ~]# yum install bind -y [root@node01 ~]# rpm -q bind bind-9.11.4-26.p2.el7_9.16.x86_64
- 修改dns主配置文件, named.conf
[root@node01 ~]# ls -l /etc/named.conf -rw-r----- 1 root named 1806 jun 11 22:41 /etc/named.conf [root@node01 ~]# vim /etc/named.conf listen-on port 53 { any; }; // 定义dns服务启动的地址、端口 directory "/var/named"; // 记录文件的存放位置 allow-query { any; }; // 定义dns服务可以为哪些主机提供解析 …………………… include "/etc/named.rfc1912.zones";
- 创建区域
[root@node01 ~]# vim /etc/named.rfc1912.zones zone "linux.com" in { type master; // 指定区域类型为master file "linux.com.zone"; // 指定存放记录的文件名 };
- 创建记录
[root@node01 ~]# cp -a /var/named/named.localhost /var/named/linux.com.zone -a:保留文件权限
[root@node01 ~]# cat /var/named/linux.com.zone $ttl 1d @ in soa linux.com. 454452000.qq.com. ( 0 ; serial 1d ; refresh 1h ; retry 1w ; expire 3h ) ; minimum ns ns01.linux.com. ns01 a 192.168.140.10 www a 192.168.10.1 file a 192.168.10.9 mx 5 mail.linux.com. mail a 192.168.10.7
- 启动named服务
[root@node01 ~]# systemctl enable --now named created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service. [root@node01 ~]# [root@node01 ~]# ps -elf | grep named 5 s named 2911 1 0 80 0 - 171176 sigsus 11:20 ? 00:00:00 /usr/sbin/named -u named -c /etc/named.conf 0 s root 2932 1268 0 80 0 - 28203 pipe_w 11:21 pts/0 00:00:00 grep --color=auto named [root@node01 ~]# [root@node01 ~]# [root@node01 ~]# netstat -tunlp | grep named tcp 0 0 127.0.0.1:953 0.0.0.0:* listen 2911/named tcp6 0 0 ::1:953 :::* listen 2911/named tcp6 0 0 ::1:53 :::* listen 2911/named udp6 0 0 ::1:53 :::* 2911/named
2、测试dns正常工作
c:\users\admin>nslookup 默认服务器: public1.alidns.com address: 223.5.5.5 > server 192.168.140.10 默认服务器: [192.168.140.10] address: 192.168.140.10 > > ns01.linux.com 服务器: [192.168.140.10] address: 192.168.140.10 名称: ns01.linux.com address: 192.168.140.10 > www.linux.com 服务器: [192.168.140.10] address: 192.168.140.10 名称: www.linux.com address: 192.168.10.1 > file.linux.com 服务器: [192.168.140.10] address: 192.168.140.10 名称: file.linux.com address: 192.168.10.9 > mail.linux.com 服务器: [192.168.140.10] address: 192.168.140.10 名称: mail.linux.com address: 192.168.10.7 > 192.168.10.7 服务器: [192.168.140.10] address: 192.168.140.10 > exit
3、配置反向解析
- 创建反向解析区域
[root@node01 ~]# vim /etc/named.rfc1912.zones zone "10.168.192.in-addr.arpa" in { type master; file "192.168.10.zone"; };
- 创建反向区域对应的记录文件
[root@node01 ~]# cd /var/named/ [root@node01 named]# cp -a linux.com.zone 192.168.10.zone
[root@node01 named]# cat 192.168.10.zone $ttl 1d @ in soa linux.com. 454452000.qq.com. ( 0 ; serial 1d ; refresh 1h ; retry 1w ; expire 3h ) ; minimum ns ns01.linux.com. ns01 a 192.168.140.10 1 ptr www.linux.com. 9 ptr file.linux.com. 7 ptr mail.linux.com.
- 重启named服务,测试
[root@node01 ~]# systemctl restart named
c:\users\admin>nslookup 默认服务器: public1.alidns.com address: 223.5.5.5 > server 192.168.140.10 默认服务器: [192.168.140.10] address: 192.168.140.10 > 192.168.10.9 服务器: [192.168.140.10] address: 192.168.140.10 名称: file.linux.com address: 192.168.10.9 > 192.168.10.7 服务器: [192.168.140.10] address: 192.168.140.10 名称: mail.linux.com address: 192.168.10.7 > exit
4、dns复制
作用:保证多个dns间的数据同步,实现备份
环境描述
- 192.168.140.10 ns01.linux.com 主dns
- 192.168.140.11 ns02.linux.com 从dns
- 从dns安装bind软件
[root@localhost ~]# yum install -y bind
- 修改主dns上区域配置文件
[root@node01 ~]# vim /etc/named.rfc1912.zones zone "linux.com" in { type master; allow-transfer { 从dns服务器地址; }; // 允许哪个从来复制数据 file "linux.com.zone"; };
- 修改主dns上记录文件
[root@node01 ~]# vim /var/named/linux.com.zone ns ns01.linux.com. ns ns02.linux.com. ns01 a 192.168.140.10 ns02 a 192.168.140.11 [root@node01 ~]# systemctl restart named
- 修改从dns的主配置文件
[root@node01 ~]# vim /etc/named.conf listen-on port 53 { any; }; allow-query { any; };
- 在从dns上创建和主dns一样的区域
[root@localhost ~]# vim /etc/named.rfc1912.zones zone "linux.com" in { type slave; // 指定区域类型为slave从 masters { 主dns服务器地址; }; file "slaves/linux.com.zone"; };
- 启动从dns服务,验证可以正常复制记录文件
[root@localhost ~]# systemctl enable --now named [root@localhost ~]# [root@localhost ~]# netstat -tunlp | grep named tcp 0 0 192.168.140.11:53 0.0.0.0:* listen 1475/named tcp 0 0 127.0.0.1:53 0.0.0.0:* listen 1475/named tcp 0 0 127.0.0.1:953 0.0.0.0:* listen 1475/named tcp6 0 0 ::1:53 :::* listen 1475/named tcp6 0 0 ::1:953 :::* listen 1475/named udp 0 0 192.168.140.11:53 0.0.0.0:* 1475/named udp 0 0 127.0.0.1:53 0.0.0.0:* 1475/named udp6 0 0 ::1:53 :::* 1475/named [root@localhost ~]#
[root@localhost ~]# ls /var/named/slaves/ linux.com.zone [root@localhost ~]# file /var/named/slaves/linux.com.zone /var/named/slaves/linux.com.zone: data
- 验证使用从dns解析主机名
c:\users\admin>nslookup 默认服务器: public1.alidns.com address: 223.5.5.5 > server 192.168.140.11 默认服务器: [192.168.140.11] address: 192.168.140.11 > www.linux.com 服务器: [192.168.140.11] address: 192.168.140.11 名称: www.linux.com address: 192.168.10.1 > mail.linux.com 服务器: [192.168.140.11] address: 192.168.140.11 名称: mail.linux.com address: 192.168.10.7
- 验证数据同步
主dns修改记录,从dns会根据记录文件中的序列号检测变化,同步复制数据
[root@node01 ~]# vim /var/named/linux.com.zone 添加一条记录,修改序列号 [root@node01 ~]# systemctl restart named 验证使用从dns来解析变化的记录
三、dns查询类型
递归查询
- 只发送一次dns请求,等待结果
- 发生在客户端与dns服务器间
迭代查询
- 发送多次dns请求
- 发生在dns服务器间
四、hosts文件的使用
保存主机名、ip地址对应关系
- linux
[root@node01 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.11.0.254 file.linux.com
- windows
c:\windows\system32\drivers\etc\hosts
- 主机域名解析的流程
1、先找本地的dns缓存
2、再找hosts文件
3、向网卡dns服务器发送查询请求,经过多次迭代过程返回结果
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论