Red Hat -- DNS

Ret Hat -- DNS
Ubuntu Server -- DNS

什么是 DNS ?

DNS (Domain Name System) 用于将域名解析为 ip 地址, 同时也可以将 ip 地址解析为域名(反向解析)。

好处

  • 对于用户,不再需要记住一连串数字(192.168.1.1)
  • 对于管理员,可以更换IP地址,而不影响名称解析

将域名解析为 IP 地址的过程

Red Hat -- DNS_第1张图片
DNS递归查询

当用户想要解析 www.google.com 时,系统会依次执行以下步骤,直到得到结果:

  • 查看本机的 host 文件(Windows:C:\Windows\System32\drivers\etc\host Linux: /etc/hosts
  • 到系统设置的DNS查询 IP 地址(8.8.8.8)
    • 如果该DNS是 google.com 的权威名称服务器,读取 Zone 信息并返回 www.google.com 的IP地址
    • 如果该DNS是非权威名称服务器,则检查缓存;如果缓存中没有 google.comcom,则前往根名称服务器 . 查询 com的地址,再递归查询 www.google.com 的地址,再将结果缓存到内存一段时间

DNS 类型

DNS (Domain Name System) 通常被成为名称服务器 Name Server,有两种类型:

  • authoritative name sever 权威名称服务器,可以再分为两种类型:
    • primary/master name server主名称服务器
    • secondary/salve name server次名称服务器
  • recursive name server 递归名称服务器

权威服务器:Zone 文件保存在该服务器(域名的拥有者)
递归名称服务器:递归地去其他权威服务器中查询域名信息(提供名称解析服务)

将权威和递归服务器部署在不同物理服务器上
  • 权威服务器需要保持24小时在线。
  • 递归服务器解析域名时需要较长时间,需要限制客户端数量,以防御 DDOS 攻击。

Zone

Zone 定义了一个域名下 (example.com) 主机和对应IP地址的信息(由一行资源记录定义)

Red Hat -- DNS_第2张图片
Resource Record 资源记录

Zone 信息保存在主名称服务器的 Zone 文件中,次名称服务器会从主名称服务器获取 Zone 文件

BIND

BIND (Berkeley Internet Name Domain) 用来搭建名称服务器,它包含:

  • named 名称服务器
  • rndc管理工具
  • dig, nslookup 测试工具

Empty Zones

BIND 会为私有IP地址(由 RFC 1918 定义)创建一系列 Empty Zones,阻止递归名称服务器发送无效的名称查询到互联网并立即返回 NXDOMAIN, 而不是SERVFAIL

搭建 DNS

准备

系统: CentOS 7
named 配置文件:/etc/named.conf(全局配置), /etc/named/ (存放辅助配置文件)
Zone 文件目录:/var/named/
Zone 文件模板: /usr/share/doc/bind-9.9.4/sample/var/named/named.localhost

IP地址配置:(为DNS分配一个静态IP地址)
Red Hat -- DNS_第3张图片
防火墙配置

放行端口 53 (一般使用 UDP)


Red Hat -- DNS_第4张图片
备份配置文件
# 安装 BIND
~ sudo yum -y install bind bind-utils

# 备份配置文件
~ cp /etc/named.conf /etc/named.conf~ 
# 复制 Zone 模板文件
~ cp /usr/share/doc/bind-9.9.4/sample/var/named/named.localhost /var/named/

example.com 搭建权威名称服务器

需求
DNS 服务器: dns    - 192.168.1.200
主机1     :host1  - 192.168.1.1
Web 服务器: serve  - 192.168.1.80
      别名: www  - server1
全局配置 named.conf
Red Hat -- DNS_第5张图片
named.conf
Red Hat -- DNS_第6张图片
named.conf
# 创建辅助文件 example.com
~ sudo vim /etc/named/example.com

#下面的 "example.com" 作为变量名 $ORIGIN 的值, example.com. 
~ sudo cat /etc/named/example.com
zone "example.com" IN {
    type master;
    file "example.com.zone";
};

# 修改权限及拥有者
~ sudo chmod 640 /etc/named/example.com
~ sudo chown root:named /etc/named/example.com

~ sudo ls -l  /etc/named/example.com
-rw-r-----. 1 root named 75 May  6 02:03 /etc/named/example.com

Zone 文件

# 创建 Zone 文件 
~ sudo vim /var/named/example.com.zone    

~ sudo cat /var/named/example.com.zone
$TTL 1D
@   IN SOA example.com. root.example.com. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
    NS  dns.example.com.
    A   192.168.1.200
;
;
dns IN  A   192.168.1.200
host1   IN  A   192.168.1.1
server1 IN  A   192.168.1.80
www IN  CNAME   server1

# 修改权限和拥有者
~ sudo chmod 640 /var/named/example.com.zone 
~ sudo chown root:named /var/named/example.com.zone

~ sudo ls -l /var/named/example.com.zone
-rw-r-----. 1 root named 273 May  6 02:50 /var/named/example.com.zone
Red Hat -- DNS_第7张图片
Zone 文件
# 启动 named 或者 重新读取文件
~ sudo systemctl start named 
~ sudo systemctl reload named

~ sudo systemctl status named -l
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2018-05-05 22:53:43 CST; 4h 5min ago
  Process: 3182 ExecReload=/bin/sh -c /usr/sbin/rndc reload > /dev/null 2>&1 || /bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
  Process: 1549 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 1546 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
 Main PID: 1552 (named)
   CGroup: /system.slice/named.service
           └─1552 /usr/sbin/named -u named -c /etc/named.conf

May 06 02:59:19 localhost.localdomain named[1552]: automatic empty zone: 9.E.F.IP6.ARPA
May 06 02:59:19 localhost.localdomain named[1552]: automatic empty zone: A.E.F.IP6.ARPA
May 06 02:59:19 localhost.localdomain named[1552]: automatic empty zone: B.E.F.IP6.ARPA
May 06 02:59:19 localhost.localdomain named[1552]: automatic empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA
May 06 02:59:19 localhost.localdomain named[1552]: reloading configuration succeeded
May 06 02:59:19 localhost.localdomain named[1552]: reloading zones succeeded
May 06 02:59:19 localhost.localdomain named[1552]: zone example.com/IN: loaded serial 0
May 06 02:59:19 localhost.localdomain named[1552]: all zones loaded
May 06 02:59:19 localhost.localdomain named[1552]: running
May 06 02:59:19 localhost.localdomain named[1552]: zone example.com/IN: sending notifies (serial 0
Red Hat -- DNS_第8张图片
测试

你可能感兴趣的:(Red Hat -- DNS)