[Linux服务器] Linux系统——dns域名解析

853 0
Honkers 2025-7-20 20:57:17 | 显示全部楼层 |阅读模式

一、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地址的对应关系

  1. www.jd.com A 123.45.6.78
复制代码

PTR记录, 标识IP地址和主机名的对应关系

  1. 1.1.1.1 PTR test.linux.com
复制代码

NS记录, 标识DNS服务器自身, 必须配合A记录

  1. NS ns1.jd.com
  2. ns1.jd.com A 2.2.2.2
复制代码

MX记录, 标识邮件服务器, 必须配合A记录

  1. // 数字5:优先级,数字越小优先级越高
  2. MX 5 mail1.linux.com
  3. mail1.linux.com A 3.3.3.3
  4. MX 10 mail2.linux.com
  5. mail2.linux.com A 4.4.4.4
复制代码

CNAME记录, 别名记录

  1. www.baidu.com CNAME www.a.shifen.com
复制代码

二、DNS服务的配置

1、正向解析的配置

  • 关闭selinux,防火墙
  1. [root@node01 ~]# getenforce
  2. Disabled
  3. [root@node01 ~]# systemctl status firewalld.service
  4. ● firewalld.service
  5. Loaded: masked (/dev/null; bad)
  6. Active: inactive (dead)
复制代码
  • 安装bind软件
  1. [root@node01 ~]# yum install bind -y
  2. [root@node01 ~]# rpm -q bind
  3. bind-9.11.4-26.P2.el7_9.16.x86_64
复制代码
  • 修改dns主配置文件, named.conf
  1. [root@node01 ~]# ls -l /etc/named.conf
  2. -rw-r----- 1 root named 1806 Jun 11 22:41 /etc/named.conf
  3. [root@node01 ~]# vim /etc/named.conf
  4. listen-on port 53 { any; }; // 定义dns服务启动的地址、端口
  5. directory "/var/named"; // 记录文件的存放位置
  6. allow-query { any; }; // 定义dns服务可以为哪些主机提供解析
  7. ……………………
  8. include "/etc/named.rfc1912.zones";
复制代码
  • 创建区域
  1. [root@node01 ~]# vim /etc/named.rfc1912.zones
  2. zone "linux.com" IN {
  3. type master; // 指定区域类型为master
  4. file "linux.com.zone"; // 指定存放记录的文件名
  5. };
复制代码
  • 创建记录
  1. [root@node01 ~]# cp -a /var/named/named.localhost /var/named/linux.com.zone
  2. -a:保留文件权限
复制代码
  1. [root@node01 ~]# cat /var/named/linux.com.zone
  2. $TTL 1D
  3. @ IN SOA linux.com. 454452000.qq.com. (
  4. 0 ; serial
  5. 1D ; refresh
  6. 1H ; retry
  7. 1W ; expire
  8. 3H ) ; minimum
  9. NS ns01.linux.com.
  10. ns01 A 192.168.140.10
  11. www A 192.168.10.1
  12. file A 192.168.10.9
  13. MX 5 mail.linux.com.
  14. mail A 192.168.10.7
复制代码
  • 启动named服务
  1. [root@node01 ~]# systemctl enable --now named
  2. Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
  3. [root@node01 ~]#
  4. [root@node01 ~]# ps -elf | grep named
  5. 5 S named 2911 1 0 80 0 - 171176 sigsus 11:20 ? 00:00:00 /usr/sbin/named -u named -c /etc/named.conf
  6. 0 S root 2932 1268 0 80 0 - 28203 pipe_w 11:21 pts/0 00:00:00 grep --color=auto named
  7. [root@node01 ~]#
  8. [root@node01 ~]#
  9. [root@node01 ~]# netstat -tunlp | grep named
  10. tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 2911/named
  11. tcp6 0 0 ::1:953 :::* LISTEN 2911/named
  12. tcp6 0 0 ::1:53 :::* LISTEN 2911/named
  13. udp6 0 0 ::1:53 :::* 2911/named
复制代码

2、测试dns正常工作

  1. C:\Users\admin>nslookup
  2. 默认服务器: public1.alidns.com
  3. Address: 223.5.5.5
  4. > server 192.168.140.10
  5. 默认服务器: [192.168.140.10]
  6. Address: 192.168.140.10
  7. >
  8. > ns01.linux.com
  9. 服务器: [192.168.140.10]
  10. Address: 192.168.140.10
  11. 名称: ns01.linux.com
  12. Address: 192.168.140.10
  13. > www.linux.com
  14. 服务器: [192.168.140.10]
  15. Address: 192.168.140.10
  16. 名称: www.linux.com
  17. Address: 192.168.10.1
  18. > file.linux.com
  19. 服务器: [192.168.140.10]
  20. Address: 192.168.140.10
  21. 名称: file.linux.com
  22. Address: 192.168.10.9
  23. > mail.linux.com
  24. 服务器: [192.168.140.10]
  25. Address: 192.168.140.10
  26. 名称: mail.linux.com
  27. Address: 192.168.10.7
  28. > 192.168.10.7
  29. 服务器: [192.168.140.10]
  30. Address: 192.168.140.10
  31. > exit
复制代码

3、配置反向解析

  • 创建反向解析区域
  1. [root@node01 ~]# vim /etc/named.rfc1912.zones
  2. zone "10.168.192.in-addr.arpa" IN {
  3. type master;
  4. file "192.168.10.zone";
  5. };
复制代码
  • 创建反向区域对应的记录文件
  1. [root@node01 ~]# cd /var/named/
  2. [root@node01 named]# cp -a linux.com.zone 192.168.10.zone
复制代码
  1. [root@node01 named]# cat 192.168.10.zone
  2. $TTL 1D
  3. @ IN SOA linux.com. 454452000.qq.com. (
  4. 0 ; serial
  5. 1D ; refresh
  6. 1H ; retry
  7. 1W ; expire
  8. 3H ) ; minimum
  9. NS ns01.linux.com.
  10. ns01 A 192.168.140.10
  11. 1 PTR www.linux.com.
  12. 9 PTR file.linux.com.
  13. 7 PTR mail.linux.com.
复制代码
  • 重启named服务,测试
  1. [root@node01 ~]# systemctl restart named
复制代码
  1. C:\Users\admin>nslookup
  2. 默认服务器: public1.alidns.com
  3. Address: 223.5.5.5
  4. > server 192.168.140.10
  5. 默认服务器: [192.168.140.10]
  6. Address: 192.168.140.10
  7. > 192.168.10.9
  8. 服务器: [192.168.140.10]
  9. Address: 192.168.140.10
  10. 名称: file.linux.com
  11. Address: 192.168.10.9
  12. > 192.168.10.7
  13. 服务器: [192.168.140.10]
  14. Address: 192.168.140.10
  15. 名称: mail.linux.com
  16. Address: 192.168.10.7
  17. > exit
复制代码

4、dns复制

作用:保证多个dns间的数据同步,实现备份

  • 环境描述
    192.168.140.10 ns01.linux.com 主DNS
    192.168.140.11 ns02.linux.com 从DNS

  • 从DNS安装bind软件

  1. [root@localhost ~]# yum install -y bind
复制代码
  • 修改主DNS上区域配置文件
  1. [root@node01 ~]# vim /etc/named.rfc1912.zones
  2. zone "linux.com" IN {
  3. type master;
  4. allow-transfer { 从DNS服务器地址; }; // 允许哪个从来复制数据
  5. file "linux.com.zone";
  6. };
复制代码
  • 修改主DNS上记录文件
  1. [root@node01 ~]# vim /var/named/linux.com.zone
  2. NS ns01.linux.com.
  3. NS ns02.linux.com.
  4. ns01 A 192.168.140.10
  5. ns02 A 192.168.140.11
  6. [root@node01 ~]# systemctl restart named
复制代码
  • 修改从DNS的主配置文件
  1. [root@node01 ~]# vim /etc/named.conf
  2. listen-on port 53 { any; };
  3. allow-query { any; };
复制代码
  • 在从dns上创建和主dns一样的区域
  1. [root@localhost ~]# vim /etc/named.rfc1912.zones
  2. zone "linux.com" IN {
  3. type slave; // 指定区域类型为slave从
  4. masters { 主DNS服务器地址; };
  5. file "slaves/linux.com.zone";
  6. };
复制代码
  • 启动从DNS服务,验证可以正常复制记录文件
  1. [root@localhost ~]# systemctl enable --now named
  2. [root@localhost ~]#
  3. [root@localhost ~]# netstat -tunlp | grep named
  4. tcp 0 0 192.168.140.11:53 0.0.0.0:* LISTEN 1475/named
  5. tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1475/named
  6. tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 1475/named
  7. tcp6 0 0 ::1:53 :::* LISTEN 1475/named
  8. tcp6 0 0 ::1:953 :::* LISTEN 1475/named
  9. udp 0 0 192.168.140.11:53 0.0.0.0:* 1475/named
  10. udp 0 0 127.0.0.1:53 0.0.0.0:* 1475/named
  11. udp6 0 0 ::1:53 :::* 1475/named
  12. [root@localhost ~]#
复制代码
  1. [root@localhost ~]# ls /var/named/slaves/
  2. linux.com.zone
  3. [root@localhost ~]# file /var/named/slaves/linux.com.zone
  4. /var/named/slaves/linux.com.zone: data
复制代码
  • 验证使用从dns解析主机名
  1. C:\Users\admin>nslookup
  2. 默认服务器: public1.alidns.com
  3. Address: 223.5.5.5
  4. > server 192.168.140.11
  5. 默认服务器: [192.168.140.11]
  6. Address: 192.168.140.11
  7. > www.linux.com
  8. 服务器: [192.168.140.11]
  9. Address: 192.168.140.11
  10. 名称: www.linux.com
  11. Address: 192.168.10.1
  12. > mail.linux.com
  13. 服务器: [192.168.140.11]
  14. Address: 192.168.140.11
  15. 名称: mail.linux.com
  16. Address: 192.168.10.7
复制代码
  • 验证数据同步
    主DNS修改记录,从DNS会根据记录文件中的序列号检测变化,同步复制数据
  1. [root@node01 ~]# vim /var/named/linux.com.zone
  2. 添加一条记录,修改序列号
  3. [root@node01 ~]# systemctl restart named
  4. 验证使用从dns来解析变化的记录
复制代码

三、DNS查询类型

  • 递归查询
    只发送一次DNS请求,等待结果
    发生在客户端与DNS服务器间

  • 迭代查询
    发送多次DNS请求
    发生在DNS服务器间

四、hosts文件的使用

保存主机名、IP地址对应关系

  • Linux
  1. [root@node01 ~]# cat /etc/hosts
  2. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  3. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  4. 10.11.0.254 file.linux.com
复制代码
  • Windows
  1. C:\Windows\System32\drivers\etc\hosts
复制代码
  • 主机域名解析的流程
    1、先找本地的DNS缓存
    2、再找hosts文件
    3、向网卡DNS服务器发送查询请求,经过多次迭代过程返回结果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行