CentOS7中搭建DNS域名解析服务
DNS系统的作用
DNS系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户机提供正向或反向的地址查询服务。
- 正向解析:根据主机名称(域名)查找对应的IP地址
- 反向解析:根据IP地址查找对应的主机域名
DNS系统类型
缓存域名服务器
- 也称为高速缓存服务器
- 通过向其他域名服务器查询获得域名->IP地址记录
- 将域名查询结果缓存到本地,提高重复查询时的速度
主域名服务器
- 特定DNS区域的官方服务器,具有唯一性
- 负责维护该区域内多有域名->IP地址的映射记录
从域名服务器
- 也称为辅助域名服务器
- 其维护的域名->IP地址记录来源于主域名服务器
BIND域名服务
BIND不是唯一能够提供域名服务的DNS程序,但它却是应用最为广泛的,BIND可以运行在大多数Linux主机中。
安装BIND软件
[root@localhost ~]# yum install bind -y //CentOS 7连接网络,可以直接使用yum安装
BIND服务端程序
- 主要执行程序:
/usr/sbin/named
- 默认监听端口 53
- 主要配置文件
/etc/named.conf
- 保存DNS解析记录的数据文件
/var/named/
主要配置文件
- 全局配置
- 设置DNS服务器的全局参数
- 包括监听地址/端口、数据文件的默认位置
- 使用options{.....};的配置端
options{ listen-on port 53 {本地IP地址} ; //监听地址和端口 directory "/var/named"; //区域数据文件的默认存放位置 allow-query {192.168.1.0/24;173.16.16.0/24;}; //允许使用本DNS服务的网段
区域配置部分
设置本服务器提供域名解析的特定DNS区域
包括域名、服务器角色、数据文件名等
- 使用zone "区域名"IN{。。。};的配置段
正向解析zone "yun.com" IN { //正向"yun.com"区域 type master; //区域类型为主区域 file "yun.com.zone"; //区域数据文件为"yun.com.zone" allow-transfer {173.16.16.2}; //允许下载的从服务器地址};反向解析zone "16.16.173.in-addr.arpa" IN { //反向"173.16.16.0/24"区域 type master; file "173.16.16.arpa"; //区域数据文件为"173.16.16.arpa" allow-update { none; };};
区域数据配置文件
全局TTL配置项及SOA记录 SOA:资源起始记录
$TTL 1D //有效解析记录的生存周期@ IN SOA @ rname.invalid. ( //SOA标记、域名、管理邮箱0 ; serial //更新序列号,可以是10位以内的整数1D ; refresh //刷新时间,重新下载地址数据的间隔1H ; retry //重试延时,下载失败后的重试间隔1W ; expire //失效时间,超过该时间仍无法下载则放弃3H ) ; minimum //无效解析记录的生存周期
域名解析记录
NS:域名服务器记录 (Name Service)MX:邮件交换记录 (Mail Exchange)A:地址记录,只用在正向解析区域中 (Address)CNAME:别名记录(Canonical Name)"*" IN IP:泛域名解析PTR:指针记录,只用反向解析区域中记录的第一列指定IP地址中的主机地址部分即可
DNS配置文件
/etc/named.conf
主要配置文件 控制系统全局 (include 包含)/etc/named.rfc1912.zones
区域配置文件 控制具体单个区域/var/named/named.localhost
区域数据配置文件 区域信息
搭建DNS服务
正向解析配置
1、安装BIND软件
[root@localhost ~]# yum install bind -y已加载插件:fastestmirror, langpacksbase | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/4): base/7/x86_64/group_gz | 166 kB 00:00:00 (2/4): extras/7/x86_64/primary_db | 215 kB 00:00:00 ...//省略部分内容...已安装: bind.x86_64 32:9.9.4-74.el7_6.2 作为依赖被升级: bind-libs.x86_64 32:9.9.4-74.el7_6.2 bind-libs-lite.x86_64 32:9.9.4-74.el7_6.2 bind-license.noarch 32:9.9.4-74.el7_6.2 bind-utils.x86_64 32:9.9.4-74.el7_6.2 完毕!
2、查看配置文件的存放位置,方便我们编辑配置文件
[root@localhost named]# rpm -qc bind/etc/logrotate.d/named/etc/named.conf //主配置文件位置/etc/named.iscdlv.key/etc/named.rfc1912.zones //区域配置文件位置/etc/named.root.key/etc/rndc.conf/etc/rndc.key/etc/sysconfig/named/var/named/named.ca/var/named/named.empty/var/named/named.localhost //区域数据配置文件/var/named/named.loopback
3、更改主配置文件(此处主要修改缉监听地址和权限开发两处)
[root@localhost named]# vim /etc/named.conf ...//省略部分内容...// See the BIND Administrator's Reference Manual (ARM) for details about the// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.htmloptions { listen-on port 53 { 192.168.144.133; }; //修改地址为监听自己的本地地址 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"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { any; }; //权限放开,允许任何的主机都可以使用DNS服务 /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. ...//省略部分内容... 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";
4、修改主配置文件包含的区域配置文件信息
[root@localhost named]# vim /etc/named.rfc1912.zones// named.rfc1912.zones://// Provided by Red Hat caching-nameserver package//// ISC BIND named zone configuration for zones recommended by// RFC 1912 section 4.1 : localhost TLDs and address zones// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt// (c)2007 R W Franks//// See /usr/share/doc/bind*/sample/ for example named configuration files.//zone "localhost.localdomain" IN { type master; //正向解析文件的配置模板 file "named.localhost"; allow-update { none; };}; //正向解析区域配置文件位置zone "localhost" IN { type master; file "named.localhost"; allow-update { none; };};zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { type master; //ipv6解析文件的配置模板 file "named.loopback"; allow-update { none; };}; //反向解析区域配置文件位置zone "1.0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; //反向解析文件的配置模板 allow-update { none; };
...//省略部分内容...// See /usr/share/doc/bind*/sample/ for example named configuration files.//zone "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; };};zone "localhost" IN { type master; file "named.localhost"; allow-update { none; };};zone "kgc.com" IN { //复制模板,更改区域名 type master; file "kgc.com.zone"; //更改区域数据文件名 allow-update { none; };};zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { type master; file "named.loopback"; allow-update { none; };};zone "1.0.0.127.in-addr.arpa" IN { type master; ...//省略部分内容...
5、创建区域数据文件,使区域文件可以读取数据文件
[root@localhost named]# cd /var/named/ //进入区域数据文件存放目录[root@localhost named]# ls //查看目录信息data dynamic named.ca named.empty named.localhost named.loopback slaves[root@localhost named]# cp -p named.localhost kgc.com.zone //递归复制,创建kgc.com.zone文件[root@localhost named]# ls //查看是否创建kgc.com.zone文件data dynamic kgc.com.zone named.ca named.empty named.localhost named.loopback slaves[root@localhost named]# vim kgc.com.zone //编辑区域数据文件$TTL 1D@ IN SOA kgc.com. admin.kgc.com. ( //更改域名、管理邮箱,主要后面的"."不能少 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS kgc.com. //更改域名服务器记录地址 A 192.168.144.133 //更改正向解析条目地址IN MX 10 mail.kgc.com. //添加邮件交换记录地址www IN A 192.168.100.99 //添加www域名的解析地址ftp IN A 192.168.100.88 //添加ftp域名解析地址smtp IN CNAME www //添加别名解析记录* IN A 8.8.8.8 //添加泛域名解析地址~ ~ :wq //保存退出
6、关闭防火墙与增强安全功能,方便客户端访问,然后启动DNS服务。
[root@localhost named]# systemctl stop firewalld.service //关闭防火墙[root@localhost named]# setenforce 0 //关闭增强型安全更能[root@localhost named]# systemctl start named //启动DNS服务[root@localhost named]# systemctl status named //查看服务● named.service - Berkeley Internet Name Domain (DNS) //DNS正常启动 Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled) Active: active (running) since 四 2019-09-05 17:36:31 CST; 11s ago Process: 7425 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS) Process: 7422 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: 7427 (named) CGroup: /system.slice/named.service └─7427 /usr/sbin/named -u named -c /etc/named.conf9月 05 17:36:31 localhost.localdomain named[7427]: managed-keys-zone: loaded serial 09月 05 17:36:31 localhost.localdomain named[7427]: zone 0.in-addr.arpa/IN: loaded serial 09月 05 17:36:31 localhost.localdomain named[7427]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 09月 05 17:36:31 localhost.localdomain named[7427]: zone kgc.com/IN: loaded serial 09月 05 17:36:31 localhost.localdomain named[7427]: zone localhost.localdomain/IN: loaded serial 09月 05 17:36:31 localhost.localdomain named[7427]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0...ial 09月 05 17:36:31 localhost.localdomain named[7427]: zone localhost/IN: loaded serial 09月 05 17:36:31 localhost.localdomain named[7427]: all zones loaded9月 05 17:36:31 localhost.localdomain named[7427]: running9月 05 17:36:31 localhost.localdomain systemd[1]: Started Berkeley Internet Name Domain (DNS).Hint: Some lines were ellipsized, use -l to show in full.[root@localhost named]# echo "nameserver 192.168.144.133" > /etc/resolv.conf //覆盖域名解析地址文件信息,因为我们自己搭建的DNS服务器就要解析我们自己的地址,所以这边直接覆盖掉域名解析地址文件[root@localhost named]# cat /etc/resolv.conf nameserver 192.168.144.133 //以覆盖原信息
7、使用host命令常看DNS解析服务是否搭建成功
[root@localhost named]# host www.kgc.com //解析域名www.kgc.comwww.kgc.com has address 192.168.100.99 //成功解析IP地址[root@localhost named]# host ftp.kgc.com //解析域名ftp.kgc.com ftp.kgc.com has address 192.168.100.88 //成功解析IP地址[root@localhost named]# host aaa.kgc.com //泛域名解析aaa.kgc.com has address 8.8.8.8 //成功解析IP地址[root@localhost named]# host smtp.kgc.com //别名解析smtp.kgc.com is an alias for www.kgc.com. www.kgc.com has address 192.168.100.99 //成功解析IP地址
反向解析配置
1、继续上面的配置,进入区域配置文件中更改区域配置反向解析区域模板
[root@localhost named]# vim /etc/named.rfc1912.zones...//省略部分内容...zone "kgc.com" IN { type master; file "kgc.com.zone"; allow-update { none; };};zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { type master; file "named.loopback"; allow-update { none; };};zone "1.0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; //复制此处模板 allow-update { none; };};zone "100.168.192.in-addr.arpa" IN { //更改区域地址,反向填写 type master; file "yun.com.local"; //更改区域数据文件名 allow-update { none; };};zone "0.in-addr.arpa" IN { type master; file "named.empty";...//省略部分内容...
2、进入区域数据文件存放目录建立区域数据文件,与区域文件中更给的区域数据文件名保持一致,并进入更改区域数据文件
[root@localhost named]# cd /var/named/ //进入目录[root@localhost named]# ls //查看data dynamic kgc.com.zone named.ca named.empty named.localhost named.loopback slaves[root@localhost named]# cp -p kgc.com.zone yun.com.local //递归复制[root@localhost named]# vim yun.com.local //进入编辑数据信息$TTL 1D @ IN SOA yun.com. admin.yun.com. ( //此处kgc改为yun 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS yun.com. //此处kgc改为yun A 192.168.144.133 99 IN PTR www.yun.com. //更改为方向解析地址88 IN PTR ftp.yun.com. //更改为方向解析地址 ...//省略部分内容...
3、重启DNS服务,并检测反向解析是否创建成功
[root@localhost named]# systemctl restart named //重启服务[root@localhost named]# host 192.168.100.99 //解析IP地址99.100.168.192.in-addr.arpa domain name pointer www.yun.com. //成功解析出域名[root@localhost named]# host 192.168.100.88 //解析IP地址 88.100.168.192.in-addr.arpa domain name pointer ftp.yun.com. //成功解析出域名
配置从域名服务器
1、上面我们成功创建了主服务器,这个时候我们重新开启一台CentOS 7系统,作为DNS的从服务器,查看从服务器的IP地址,并关闭防火墙功能与增强性安全功能,使此服务器方便客户机与主服务器连接
[root@localhost ~]# ifconfig //查看网卡信息ens33: flags=4163 mtu 1500 inet 192.168.144.135 netmask 255.255.255.0 broadcast 192.168.144.255 inet6 fe80::a85a:c203:e2e:3f3c prefixlen 64 scopeid 0x20 inet6 fe80::ad78:663f:1f02:22e4 prefixlen 64 scopeid 0x20 ether 00:0c:29:75:9f:c8 txqueuelen 1000 (Ethernet) RX packets 1049 bytes 1282518 (1.2 MiB) RX errors 0 dropped 0 overruns 0 frame 0 ...//省略部分内容...[root@localhost ~]# systemctl stop firewalld.service //关闭防火墙[root@localhost ~]# setenforce 0 //关闭增强性安全功能
2、在从服务器中安装BIND软件,并更改DNS配置文件信息
[root@localhost ~]# yum install bind -y //安装DNS服务软件BIND已加载插件:fastestmirror, langpacksbase | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/4): base/7/x86_64/group_gz | 166 kB 00:00:00 (2/4): extras/7/x86_64/primary_db | 215 kB 00:00:00 ...//省略部分内容...[root@localhost ~]# vim /etc/named.conf //进入编辑主配置文件//// named.conf//// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS// server as a caching only nameserver (as a localhost DNS resolver only).//// See /usr/share/doc/bind*/sample/ for example named configuration files.//// See the BIND Administrator's Reference Manual (ARM) for details about the// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.htmloptions { listen-on port 53 { 192.168.144.135; }; //更改监听地址为本机地址 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"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { any; }; //权限放开,允许任何的主机都可以使用DNS服务 /* - 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. ...//省略部分内容...[root@localhost ~]# vim /etc/named.rfc1912.zones //修改区域配置文件// RFC 1912 section 4.1 : localhost TLDs and address zones// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt// (c)2007 R W Franks//// See /usr/share/doc/bind*/sample/ for example named configuration files.//zone "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; };};zone "localhost" IN { type master; file "named.localhost"; //复制此模板 allow-update { none; };};zone "kgc.com" IN { //粘贴并更新域名与主服务器相同 type slave; //设置类型为slave file "slaves/kgc.com.zone"; //区域数据文件地址我们将从主服务器同步到slaves目录中 masters { 192.168.144.133; }; //删除原条目更改为指向主服务器的地址};zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { type master; file "named.loopback"; allow-update { none; };};...//省略部分内容...[root@localhost ~]# cd /var/named //进入区域数据文件存放目录[root@localhost named]# ls //查看确定目录内是否有slaves命令data dynamic named.ca named.empty named.localhost named.loopback slaves[root@localhost named]# ls slaves/ //进入目录,查看是否有内容[root@localhost named]# //目前还没有内容
3、回到主服务器,更改配置文件,使主服务器与从服务器同步,完成后重启DNS服务
[root@localhost named]# vim /etc/named.rfc1912.zones //编辑主服务区域配置文件//zone "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; };};zone "localhost" IN { type master; file "named.localhost"; allow-update { none; };};zone "kgc.com" IN { type master; file "kgc.com.zone"; allow-transfer { 192.168.144.135; }; //此处更改为指向从服务器的地址};zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { type master; file "named.loopback"; allow-update { none; };};zone "1.0.0.127.in-addr.arpa" IN { type master;...//省略部分内容...[root@localhost named]# systemctl restart named //重启DNS服务
4、回到从服务器,启动DNS服务,查看slaves目录内是否有同步的区域数据文件,然后与主服务一样编辑内容覆盖域名解析地址文件信息。
[root@localhost named]# systemctl restart named //启动DNS服务[root@localhost named]# ls slaves/kgc.com.zone[root@localhost named]# echo "nameserver 192.168.144.135" > /etc/resolv.conf [root@localhost named]# cat /etc/resolv.confnameserver 192.168.144.135
5、使用从服务解析域名,看是否可以解析、解析结果是否相同,如果相同表示我们建立的主从服务器成功。
[root@localhost named]# host www.kgc.com //解析域名www.kgc.comwww.kgc.com has address 192.168.100.99 //解析地址与主服务器相同[root@localhost named]# host ftp.kgc.com //解析域名ftp.kgc.comftp.kgc.com has address 192.168.100.88 //解析地址与主服务器相同[root@localhost named]# host aaa.kgc.com //反域名解析aaa.kgc.com has address 8.8.8.8 //解析地址与主服务器相同[root@localhost named]# host smtp.kgc.com //别名解析smtp.kgc.com is an alias for www.kgc.com.www.kgc.com has address 192.168.100.99 //解析地址与主服务器相同