CentOS7搭建DNS伺服器

来自专栏怎样实现的?

CentOS7搭建DNS伺服器

# 原理

  • 使用开源的Bind服务来配置一个DNS伺服器

机器环境

  • CentOS7

安装Bind服务

  • yum -y install bind*

配置/etc/named.conf

  • 修改如下

options { listen-on port 53 { any; }; 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; }; /* - 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";};logging { channel default_debug { file "data/named.run"; severity dynamic; };};zone "." IN { type hint; file "named.ca";};include "/etc/named.rfc1912.zones";include "/etc/named.root.key";

修改/etc/named.rfc1912.zones添加DNS正反向解析规则

// 正向解析zone "ns2250225.com" IN { type master; file "ns2250225.com.zone"; allow-update { none; };};// 反向解析zone "14.168.192.in-addr.arpa" IN { type master; file "192.168.14.zone"; allow-update { none; };};

创建对应的配置文件

  • 创建/var/named/ns2250225.com.zone

$TTL 3600@ IN SOA ns.ns2250225.com. admin.ns2250225.com. (4 3600 3600 7200 7200) IN NS nsns IN A 192.168.14.250www IN A 192.168.14.251mail IN A 192.168.14.252

  • 创建/var/named/192.168.14.zone

$TTL 3600@ IN SOA ns.ns2250225.com. admin.ns2250225.com. (4 3600 3600 7200 7200) IN NS ns.ns2250225.com.250 IN PTR ns.ns2250225.com.251 IN PTR www.ns2250225.com.252 IN PTR mail.ns2250225.com.

  • 修改文件许可权:chmod 777 ns2250225.com.zone 192.168.14.zone

重启Bind服务

systemctl restart named.service

测试正向解析

nslookup www.ns2250225.com 192.168.14.250

测试反向解析

nslookup 192.168.14.251 192.168.14.250

附录

SOA记录

domain.com. IN SOA ns1.domain.com. admin.domain.com. ( 12083 ; serial number 3h ; refresh interval 30m ; retry interval 3w ; exiry period 1h ; negative TTL)

  • domain.com.: 此处为区域的root所在,负责指定该区域文件指向domain.com域名。一般来讲,大家会在实际文件中看到这部分被@所取代,其属于占位符、指代此前$ORIGIN变数设定的内容。
  • IN SOA: 这里的「IN」部分代表著互联网(多数记录中都包含这部分)。而SOA代表这是一条起始授权记录。
  • ns1.domain.com.: 此处定义该域名的第一主命名伺服器。命名伺服器可为主伺服器或者从伺服器,而且如果动态DNS在配置中要求一台伺服器必须为「第一主伺服器」,那么就是在这里进行体现。如果大家还没有配置动态DNS,则其默认要求伺服器为主命名伺服器。
  • admin.domain.com.: 这里为此区域的管理员邮箱地址。其中的「@」被替换为「.」。如果该邮箱地址原本就使用「.」,则使用「」替换「.」([email protected]转换为yourname.domain.com)。
  • 12083: 此处为该区域文件的序列号。每当编辑一个区域文件时,大家都必须增加该数字以实现正确广播。从伺服器会检查主伺服器的区域序列号以确定后者的数字更大。如果数字确实更大,则请求该新区域文件; 如果数字并非更大,则继续使用原始文件。
  • 3h: 此处为该区域的刷新间隔,负责告知从伺服器等待多久才对主伺服器的区域文件变更进行一次检查。
  • 30m: 此处为该区域的征订间隔。如果从伺服器在刷新时无法接入主伺服器,则其会等待这里设定的时长并再次重试。
  • 3w: 此处为到期期限。如果一台从命名伺服器在此期间始终无法接入主伺服器,则其不再作为该区域的授权响应源。
  • 1h: 此处为命名伺服器在无法从文件内找到所请求域名时,缓存一条命名错误的时长。

A与AAAA记录

这两类记录都负责将一台主机映射至一个IP地址其中的「A」记录用于将一台主机映射至一个IPv4 IP地址而「AAAA」记录则用于将主机映射至IPv6 IP地址如: ns1.domain.com. IN A 111.222.111.222

CNAME记录

CNAME记录负责为我们的伺服器的规范名称定义一条别名举例来说,我们可以使用一条A命名记录定义「server1」主机,而后将「www」作为该主机的别名:server1 IN A 111.111.111.111www IN CNAME server1

MX记录

MX记录用于定义该域名所使用的邮件交换方式,其能够帮助我们的邮件信息能够正确抵达邮件伺服器MX记录一般指向由A或者AAAA记录定义的主机,而非由CNAME定义的主机因此,假设我们有两台邮件伺服器。其记录内容应如下所示: IN MX 10 mail1.domain.com. IN MX 50 mail2.domain.com.mail1 IN A 111.111.111.111mail2 IN A 222.222.222.222在本示例中,「mail1」主机为首选邮件交换伺服器

NS记录

此记录类型用于定义该区域所使用的命名伺服器与MX记录类似,NS记录包含三条全区域参数,因此其同样不需要填写主机。一般来讲,其内容应如下所示: IN NS ns1.domain.com. IN NS ns2.domain.com.

PTR记录

PTR记录用于将一个名称关联至一个IP地址, PTR记录属于A或者AAA记录的倒数下面来看111.222.333.444的PTR记录示例:444.333.222.111.in-addr.arpa. 33692 IN PTR host.example.com.

推荐阅读:

相关文章