马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
案例:BIND 安装与设置详解
一、安装 BIND 软件包
- 安装 BIND 软件包
- 通过网络源或挂载的光盘安装 BIND:
- 可能通过 RPM 包安装,条件是挂载体系盘 ISO 镜像:
- rpm -ivh bind-x.x.x-x.el7.x86_64.rpm
复制代码
- 查看 BIND 设置文件路径
该命令显示 BIND 安装后的设置文件路径,紧张的几个解说:
- /etc/named.conf:主设置文件,控制 BIND 服务的全局设置。
该文件用于设置 DNS 服务器的活动,如地区(zones)、转发器(forwarders)、ACL(访问控制列表)等。
- /etc/named.rfc1912.zones - 地区设置文件,控制详细地区。专门用于定义 BIND 服务器中利用的地区(zone)。
- /var/named/named.localhost - 地区数据文件,存储地区信息。
二、设置 BIND 主服务器(正向剖析)
本节环境
主服务器:20.0.0.11
客户端:Windows 10 或 Linux
- 修改主设置文件
编辑 /etc/named.conf 文件,设置监听端口、地区数据存放位置及允许查询的网段:
紧张修改以下几项:
- 监听端口和 IP 地点:指定 BIND 服务监听的端口和 IP 地点。
- 地区数据文件的存储路径:指定地区数据文件的存储目次。
- 允许查询的网段:定义允许访问 DNS 服务的客户端网段。
设置示例:
- options {
- listen-on port 53 { 20.0.0.100; };
- # ☆☆☆修改:监听53端口,指定本地IP,也可用any表示所有IP。
-
- # listen-on-v6 port 53 { ::1; };
- # ipv6行如不使用可以注释掉或者删除。
-
- 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 { 20.0.0.0/24; 172.16.100.0/24; };
- allow-query { any; };
- # ☆☆☆修改:允许访问本DNS解析服务的网段,也可用any表示所有。
- };
复制代码
- 设置根地区
在 named.conf 中定义根地区,根地区用于处理域名剖析的根请求:
- zone "." IN { # 正向解析“."根区域
- type hint; # 类型为根区域(索引)
- file "named.ca"; # 区域数据文件为named.ca
- };
- # named.ca文件记录了13台根域服务器的域名和IP地址等信息
- include "/etc/named.rfc1912.zones";
- # 包含区域配置文件中的所有配置,存储了标准的区域配置。
复制代码 - 设置正向地区
- 编辑地区设置文件 /etc/named.rfc1912.zones,文件里有模版,可复制粘贴后修改,添加正向剖析地区:
- vim /etc/named.rfc1912.zones
复制代码 提示:vim编辑器的利用
- 定位到起始行: j 或 k 上下移动, G 直接跳行
- 进入可视模式: V 进可视行模式,高亮显示当前行
- 选择多行: j 向下选行,按一次选一行
- 复制选中的行:选中,按 y 进行复制到剪贴板
- 移动到粘贴位置:移动到要粘贴的位置
- 粘贴复制的行: p 粘贴。当前行上方利用 P大P。
设置示例:
- zone "my.com" IN {
- # ☆修改:正向解析"benet.com"区域
-
- type master;
- # 声明该区域是主区域
-
- file "my.com.zone";
- # ☆修改:区域数据文件的路径,相对于/var/named路径目录,可以加个.
-
- allow-update { none; };
- # 不允许自动更新区域数据
- };
复制代码
- 设置正向地区数据文件
- 在 /var/named/ 目次下创建或修改地区数据文件,这个文件包括域名与 IP 地点的映射关系,可以直接复制改名原模板:
- cd /var/named/
- cp -p named.localhost my.com.zone
- # 保留源文件的权限和属主的属性复制
- vim my.com.zone
复制代码 数据文件通常包括 SOA 记录、NS 记录、A 记录等。
宏定义$,解释;
设置示例:
- $TTL 1D
- # $-宏定义
- # TTL(Time to Live)-缓存保存时间,表示在 DNS 服务器或客户端的缓存中,有效解析记录的生命周期
- # 1D 表示 1 天,该区域数据在 1 天(1D)内有效
- @ IN SOA my.com. rname.invalid (
- # @-表示该文件定义的根域名,当前的DNS区域名
- # IN-表示“Internet”类的资源记录类型。
- # SOA-第一条解析,起始记录的解析
- ## admin-主机名、服务名
-
- 0 ; serial
- # 序列号,表示该区域文件的版本,每次修改后应增加
-
- 1D ; refresh
- # 刷新时间,告知从服务器多久查询一次主服务器
-
- 1H ; retry
- # 重试时间,从服务器未联系到主服务器后的重试间隔
-
- 1W ; expire
- # 过期时间,从服务器未能更新后,缓存数据的有效期
-
- 3H ) ; minimum
- # 最小TTL值,未命中的缓存记录的保存时间
-
- NS my.com.
- # 定义此区域的名称服务器
- A 20.0.0.11
- # A-将域名映射到IPV4
- # 为域名 my.com 设置IP地址
- ## MX 10 mail.my.com.
- ## 定义邮件交换记录
- www IN A 20.0.0.20
- # 定义子域名 www 的 A 记录
- ## mail IN A 20.0.0.20
- ## 定义子域名 mail 的 A 记录
- ftp IN CNAME www
- # CNAME-别名,将 ftp 子域名设置为 www 子域名的别名
- * IN A 20.0.0.20
- # *-通配符,匹配所有未明确定义的子域名,泛域名
复制代码 内容表明:
- @: 代表当前地区的根域名。
- 在 DNS 地区文件中,@ 代表该文件定义的根域名,也就是当前地区的名称。在现实利用中,@ 将被剖析为文件顶部定义的域名。
- 比方,如果地区文件顶部定义的域名是 example.com., 那么 @ 就代表 example.com.。
- IN: 显示记录的种别,一样平常为互联网(Internet),通常环境下利用 IN。
- 显示“Internet”类(Internet Class)的资源记录类型。在大多数环境下,DNS 记录都利用 IN,由于它显示记录属于互联网的尺度 DNS 记录类型。
- 除了 IN 之外,尚有其他类,如 CH(用于 CHAOS 类),但它们异常少见。
- SOA (Start of Authority): 显示该 DNS 地区的起始记录,包括了该地区的紧张信息,如序列号、刷新时间等。
- SOA 是“Start of Authority”的缩写,显示权势巨子起始记录。每个 DNS 地区文件必须包括一个且只有一个 SOA 记录。
- SOA 记录包括了一些紧张信息,如主服务器的名称、负责人的电子邮件地点、地区的序列号、刷新时间、重试时间、逾期时间和最小 TTL(保存时间)值。
- NS (Name Server): 指定负责该地区的名称服务器。
- A (Address Record): 将域名映射到 IPv4 地点。
- CNAME (Canonical Name Record): 将一个域名作为别名指向另一个域名。
- MX (Mail Exchange Record): 指定处理电子邮件的邮件服务器。
- TTL (Time to Live): 指定 DNS 记录在缓存中保存的时间长度,高出时间后必要重新查询。
- 检查启动文件格式
- named-checkzone my.com /var/named/my.com.zone
- # 输出:
- zone my.com/IN: loaded serial 0
- O
复制代码
- 启动 BIND 服务并关闭防火墙
- systemctl stop firewalld
- setenforce 0 # 关闭 SELinux
复制代码 留意:若服务启动失败,可以查看日记文件排查错误,如果服务卡住,实验第二行命令解决:
- tail -f /var/log/messages
- rndc-confgen -r /dev/urandom -a
复制代码
- netstat -natpul | grep 53
复制代码
- named-checkconf -z /etc/named.conf
复制代码
- 客户端设置和测试DNS剖析(Windows)
启动同网段下的客户端,以Windows为例
- # 以我的网络环境为例,做如下配置
- IP 20.0.0.120 # 同网段即可
- NETMASK 255.255.255.0
- GATEWAY 20.0.0.11 # 指向DNS服务器
- DNS 20.0.0.11
复制代码
- nslookup www.my.com # 解析www域名对应的IP地址
- # 输出:
- 服务器:UnKnown
- Address:20.0.0.11
- 名称:www.my.com
- Address:20.0.0.20
- nslookup ftp.my.com # 解析ftp的别名对应的IP地址
- # 输出:
- 服务器:UnKnown
- Address:20.0.0.11
- 名称:www.my.com
- Address:20.0.0.20
- nslookup aa.my.com # 解析泛域名对应的IP地址
- # 输出:
- 服务器:UnKnown
- Address:20.0.0.11
- 名称:www.my.com
- Address:20.0.0.20
复制代码 都可以看到返回服务器地点,测试乐成
- 客户端设置和测试DNS剖析(Linux)
- 编辑客户端的 /etc/resolv.conf 文件,添加 DNS 服务器地点:
- vim /etc/resolv.conf
- nameserver 20.0.0.11
复制代码
- 可能在网络接口设置文件中添加 DNS 服务器地点,修改后需重启网卡:
- vim /etc/sysconfig/network-scripts/ifcfg-ens33
- DNS1=20.0.0.11
- systemctl restart network
复制代码
- 利用 host 或 nslookup 命令测试 DNS 剖析是否乐成:
- host www.my.com
- nslookup www.my.com
复制代码
三、设置反向剖析
本节环境
主服务器:20.0.0.11
客户端:Windows 10 或 Linux
- 设置反向地区
- 编辑地区设置文件 /etc/named.rfc1912.zones,添加反向剖析地区:
- vim /etc/named.rfc1912.zones
复制代码 在此文件中定义 IP 地点段的地区信息。同样复制模版修改。
设置示例:
- zone "0.0.20.in-addr.arpa" IN {
- # 此处 20.0.0.0 反向为 0.0.20
- # 再如:192.168.10.0 反向则是 10.168.192
- type master;
- # 定义主区域
-
- file "my.com.zone.local";
- # 反向解析的数据文件
-
- allow-update { none; };
- # 禁止自动更新
- };
复制代码
- 设置反向地区数据文件
- cd /var/named/
- cp -p my.com.zone my.com.zone.local
- vim my.com.zone.local
复制代码 数据文件中通常包括 IP 地点与域名的映射。
设置示例:
- $TTL 1D
- @ IN SOA my.com. rname.invalid. (
- # 点.必须加上,否则报错,下同
- 0 ; serial # 序列号
- # 更新序列号,10位以内数字,用于主从同步,主服务器这个数值要大于从服务器否则无法同步
-
- 1D ; refresh # 刷新时间
- 1H ; retry # 重试时间
- 1W ; expire # 过期时间
- 3H ) ; minimum # 最小TTL
- NS my.com.
- 100 IN PTR www.my.com.
- # 将IP地址的最后一段(100)解析为www.my.com
- 200 IN PTR mail.my.com.
- # 将IP地址的最后一段(200)解析为mail.my.com
- # 20是192.168.10.20的意思
- # RTP反向指针 功能:反向解析
复制代码
- 启动 BIND 服务
- 测试反向剖析(Windows)
以Windows为例,确保网卡设置信息无误:
- # 以我的网络环境为例,做如下配置
- IP 20.0.0.120 # 同网段即可
- NETMASK 255.255.255.0
- GATEWAY 20.0.0.11 # 指向DNS服务器
- DNS 20.0.0.11
复制代码- nslookup 20.0.0.100 # 解析末段为 100 IP地址的域名
- # 输出:
- 服务器:UnKnown
- Address:20.0.0.11
- 名称:www.my.com
- Address:20.0.0.100
- nslookup 20.0.0.200 # 解析末段为 200 IP地址的域名
- # 输出:
- 服务器:UnKnown
- Address:20.0.0.11
- 名称:mail.my.com
- Address:20.0.0.200
复制代码 可以看到返回服务器地点和域名信息,测试乐成
- 测试反向剖析(Linux)
- 利用 host 命令测试反向剖析,测试IP地点是否准确剖析为域名:
若没标题将会反向剖析出域名www.my.com。
四、设置主从 DNS 服务器及自动同步
本节环境
主服务器:20.0.0.11
从服务器:20.0.0.12
客户端:Windows 10 或 Linux
- 主服务器设置
- 修改 /etc/named.conf,允许全部网段查询:
- options {
- listen-on port 53 { any; };
- allow-query { any; };
- };
复制代码
- 编辑地区设置文件 /etc/named.rfc1912.zones,添加从服务器地点:
- zone "my.com" IN {
- type master; # 类型为主区域
- file "my.com.zone";
- allow-transfer { 20.0.0.12; };
- }; # 设置从服务器地址
- # 反向解析没有配置,这段关系不大
- zone "0.0.20.in-addr.arpa" IN {
- type master;
- file "my.com.zone.local";
- allow-transfer { 20.0.0.12; };
- };
复制代码
- 设置正向地区数据文件 my.com.zone ,带属性拷贝编辑:
- cd /var/named/
- cp -p name.localhost my.com.zone
- vim /var/named/my.com.zone
复制代码 设置示例(只有正向剖析,无反向剖析)
- $TTL 1D #有效解析记录的保存周期
- @ in SOA my.com. rname.invalid (
- #“@"符号表示当前的DNS区域名
-
- 0 ; serial
- #更新序列号,可以是10位以内的整数
- 1D ; refresh
- #刷新时间,重新下载地址数据的间隔
- 1H ; retry
- #重试延时,下载失败后的重试间隔
- 1W ; expire
- #失效时间,超过该时间仍无法下载则放弃#
- 3H) ; minimum
- #无效解析记录的保存周期
-
- NS my.com.
- #记录当前区域的DNS服务器的名称
-
- A 20.0.0.11
- #记录主机IP地址
- IN MX 10 mail.my.com.
- #MX为邮件交换记录,数字越大优先级越低
- www IN A 20.0.0.11
- #记录正向解析www.benet.com对应的IP
- mail IN A 20.0.0.22
- #MX为邮件交换记录,数字越大优先级低
- ftp IN CNAME www
- #CNAME使用别名,ftp 是www的别名
- * IN A 20.0.0.30
- #泛域名解析,“*"代表任意主机名,给一个不存在的地址
复制代码
- 从服务器设置
- yum install -y bindvim /etc/named.conf
- #编辑后可以利用named-checkconf语法检查,反面参数可省named-checkconf -z /etc/named.conf
复制代码 设置示例:
- options {
- listen-on port 53 { 20.0.0.12; };
- # 监听53端口,ip地址使用提供服务的本地IP,也可用any表示所有
-
- #listen-on-v6 port 53 { ::1; };
- # ipv6行如不使用可以注释掉或者删除
-
- 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; };
- # 允许使用本DNS解析服务的网段,也可用any代表所有
- };
复制代码
- vim /etc/named.rfc1912.zones
复制代码 设置示例:
- zone "my.com" IN {
- type slave; # 类型为从区域
- file "slaves/my.com.zone";
- # 下载的区域数据文件保存到slaves/目录下
-
- #allow-update { none; };
- # 此行必须删掉,用于配置主服务器的动态更新DNS记录
-
- masters { 20.0.0.11; };
- }; # 设置主服务器地址
- zone "0.0.20.in-addr.arpa" IN {
- type slave;
- file "slaves/my.com.zone.local";
- masters { 20.0.0.11; };
- };
-
复制代码
- 启动服务并验证
- 主从都重启 BIND 服务,并检查从服务器的地区数据文件是否乐成下载:
- systemctl restart named
- ls -1 /var/named/slaves/
复制代码
- 测试(Windows)
- nslookup www.my.com # 解析www域名对应的IP地址
- # 输出:
- 服务器:UnKnown
- Address:20.0.0.11
- 名称:www.my.com
- Address:20.0.0.11
- nslookup ftp.my.com # 解析ftp的别名对应的IP地址
- # 输出:
- 服务器:UnKnown
- Address:20.0.0.11
- 名称:www.my.com
- Address:20.0.0.11
- nslookup mail.my.com # 解析mail域名对应的IP地址
- # 输出:
- 服务器:UnKnown
- Address:20.0.0.11
- 名称:mail.my.com
- Address:20.0.0.22
- nslookup aa.my.com # 解析泛域名对应的IP地址
- # 输出:
- 服务器:UnKnown
- Address:20.0.0.11
- 名称:aa.my.com
- Address:20.0.0.30
复制代码 经测试,全部逐一对应,是乐成的
- 测试(Linux)
- 在Linux的域名剖析设置文件中添加从DNS服务器地点
- echo "nameserver 20.0.0.11" >> /etc/resolv.conf
复制代码
- host 20.0.0.12
- host www.my.com
- nslookup 20.0.0.11
复制代码
- 模仿故障
留意:在Windows端需将从DNS服务器IP设置为首选DNS,否则无论是重启照旧制止主DNS服务器网络,Windows体系都只认首选,备选不会选择,临时未解决。Linux未测试。
|