案例目标
(1)了解DNS服务BIND服务的安装配置。
(2)了解DNS服务正向解析与反向解析。
(3)使用DNS服务实现主从切换。
(4)了解DNS检测工具。
(5)了解Email服务Postfix部署安装配置。
(6)了解Postfix外发配置,测试外发邮件。
案例分析
规划节点
部署服务的节点规划
基础准备
使用VMWare Workstation软件安装CentOS 7.5操作系统,镜像使用提供的CentOS-7-x86_64-DVD-1908。最小化CentOS 7.5虚拟机一台,另需要DNS服务器一台,YUM源使用本地系统源。
案例实施
基础配置
- 修改mail节点与dns节点主机名:
[root@controller ~]# hostnamectl set-hostname mail
[root@controller ~]# bash
[root@compute ~]# hostnamectl set-hostname dns
[root@compute ~]# bash
- 为了方便测试,关闭防火墙与安全策略:
[root@mail ~]# systemctl stop firewalld
[root@mail ~]# systemctl disable firewalld
[root@mail ~]# setenforce 0
[root@dns ~]# systemctl stop firewalld
[root@dns ~]# systemctl disable firewalld
[root@dns ~]# setenforce 0 - 测试本地yum源
[root@dns ~]# yum list
[root@mail ~]# yum list
安装与配置DNS服务器
- 使用如下命令安装 DNS服务器(两台都要操作):
#yum -y install bind-chroot bind-utils
- 启动DNS服务(两台机器都要操作)
#systemctl restart named
[root@mail ~]# systemctl status named
- 查看端口是否启动
#netstat -lntp | grep named
- 修改主服务器DNS的配置文件named.conf(记住修改配置每个分号都不能少)
域名解析服务Bind的程序名称叫做named,服务程序的配置文件如下:
修改named.conf以下配置:(两台机器都要配置,从服务器也是一样!)
[root@dns ~]# vim /etc/named.conf
listen-on port 53 { any; }; // 监听所有的53号端口,此处可以根据需要设置需要监听的IP
allow-query { any;}; // 允许所有的查询 - 配置正向解析与反向解析
正向解析和反向解析含义:
● 正向解析:根据主机名(域名)查找对应的IP地址。
● 反向解析:根据IP地址查找对应的主机名(域名)。(反向解析的作用是将用户提交的IP地址解析为对应的域名信息,它一般用于对某个IP地址上绑定的所有域名进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件。也可以判断某虚拟主机上运行了多少个网站。) - 正向区域:
① 创建转发域:
拷贝模板文件named.localhost到testmail.com.zone,示例代码如下:
[root@dns named]# cp -rf /var/named/named.localhost /var/named/testmail.com.zone
② 编辑testmail.com.zone文件,示例代码如下:
[root@dns named]# vi testmail.com.zone
$TTL 1D
@ IN SOA testmail.com. admin.testmail.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS dns.testmail.com.
IN MX 10 mail
dns IN A 192.168.31.148
mail IN A 192.168.31.148
www IN A 192.168.31.148
smtp IN A 192.168.31.148
其中
$ TTL 1D //生存周期为1天
0 ; serial( 定义序列号的值,同步辅助名称服务器数据时使用)
1D ; refresh( 更新时间间隔值。定义该服务器的辅助名称服务器隔多久时间更新一次)
1H ; retry ( 辅助名称服务器更新失败时,重试的间隔时间)
1W ; expire ( 辅助名称服务器一直不能更新时,其数据过期的时间)
3H ) ; minimum ( 最小默认TTL的值,如果第一行没有$TTL,则使用该值)
IN NS dns.testmail.com. // 域名服务器记录
IN MX 10 mail //邮箱交换记录
dns IN A 192.168.31.148 //地址记录
mail IN A 192.168.31.148 //地址记录
smtp IN A 192.168.31.148
③ 赋予test.com.zone所有权限,命令如下:
[root@dns named]# chmod 755 testmail.com.zone
④ 修改区域配置文件/etc/named.rfc1912.zones,在最下面添加解析内容
[root@dns named]# vi /etc/named.rfc1912.zones
zone “testmail.com” IN {
type master;
file “testmail.com.zone”;
};
#正向解析
其中zone “testmail.com” IN { 定义zone文件,这里是定义的根域的文件位置 。 type master;表示主dns解析。 file “testmail.com.zone”; 定义区域解析库文件名字
名词解析:
type:master指的是主dns解析、slave指的是从dns解析、hint指的是根域名解析(根提示域)、forward指的是转发,转发不使用file;
file:定义区域解析库文件名字(位置默认在/var/named下面),file的前缀通常和zone的名字通常对应起来,然后加一个.zone的后缀。
⑤ 检查配置,如下所示:
[root@dns named]# named-checkconf /etc/named.conf //named.conf文件检查工具
[root@dns named]# named-checkzone testmail.com testmail.com.zone //zone文件检测工具
zone testmail.com/IN: loaded serial 0
OK
[root@dns named]# systemctl restart named
[root@dns named]# systemctl status named
⑤ 添加/etc/resolv.conf域名服务器IP,将原有的namserver注释掉。
[root@dns named]# vi /etc/resolv.conf
#Generated by NetworkManager
nameserver 192.168.31.149
nameserver 8.8.8.8
⑥ 测试DNS解析是否正常:
#ping www.testmail.com
- 反向区域:
① 修改区域配置文件/etc/named.rfc1912.zones
#反向解析
zone “31.168.192.in-addr.arpa” IN {
type master;
file “148.31.168.192.in-addr.local”;
};
zone “31.168.192.in-addr.arpa” IN { //区域名称:是网络地址的反写.in-addr.arpa.
② 配置148.31.168.192.in-addr.local:(不需要MX、A、AAAA,要有NS记录,以PTR记录为主。)
cp -p testmail.com.zone 148.31.168.192.in-addr.local
#vi 148.31.168.192.in-addr.local
$TTL 1D
@ IN SOA ns.testmail.com. admin.testmail.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS dns.testmail.com.
148 IN PTR mail.testmail.com.
148 IN PTR www.testmail.com.
③ 检查配置,如下所示:
#named-checkzone mail.testmail.com 148.31.168.192.in-addr.local
④ 重启生效配置:
#systemctl restart named
#dig -x 192.168.31.148
配置主从DNS服务
(1)配置从节点服务器
[root@mail ~]yum -y install bind-chroot bind-utils
(2)修改配置named.conf(与主服务器一致)
listen-on port 53 { any; }; // 监听所有的53号端口,此处可以根据需要设置需要监听的IP
allow-query { any; }; // 允许所有的查询
检测配置文件是否出错
[root@mail ~]# named-checkconf /etc/named.conf
(3)修改区配置文件:
[root@mail ~]vi /etc/named.rfc1912.zones
zone “testmail.com” IN {
type slave; //master为主服务;slave为从服务;
file “slaves/testmail.com.zone”;
masters {192.168.31.149;}; //指定主dns服务器的IP
};
zone “31.168.192.in-addr.arpa” IN {
type slave;
file “slaves/148.31.168.192.in-addr.local”;
masters {192.168.31.149;};
};
(4)修改/etc/reslove.conf
[root@mail ~]vi /etc/resolv.conf
nameserver 192.168.31.149
nameserver 192.168.31.148
(5)重启服务:
[root@mail ~]systemctl restart named
(6)测试:
主服务器那边关闭named服务:
[root@mail ~]systemctl stop named
测试,查看server地址是否正确
[root@dns named]# dig dns.testmail.com
[root@dns named]# dig -x 192.168.31.148
测试dns解析结果:
[root@compute named]# nslookup dns.testmail.com
*显示解析到的服务器目前的位置在192.168.31.149
[root@controller ~]# ll /var/named/slaves/
总用量 8
-rw-r–r-- 1 named named 341 2月 18 09:29 148.31.168.192.in-addr.local
-rw-r–r-- 1 named named 317 2月 18 09:29 slavertestmail.com.zone
DNS检测工具
(1)nslookup命令是常用域名查询工具,就是查DNS信息用的命令。
一般格式:
nslookup [-option] [name | -] [server]
参数说明:
● option:表示一些选项。这些选项可以通过set命令设置修改。
● name:表示查询的域名。
● server:可以指定DNS主机IP。
set命令说明:
● set all:打印当前的选项值。
● set calss=value:设置查询的类型,一般情况下为Internet。
● set debug:设置调试模式。
● set d2:设置详细调试模式。
● set domin=name:设置默认的域名。
● set search:
● set port=value:设置DNS端口。
● set querytype=value:改变查询的信息的类型。默认的类型为A纪录。
● set type=value:和set querytype一样。
● set recurse:设置查询类型为递归;若为set norecurse,查询类型为跌代;缺省为前者。
● set retry=number:设置重试的次数。
● set timeout=number:设置等待应答的限制时间(单位为秒),超出即为超时,如果还可以重试,就会将长超时值加倍,重新查询。
● set vc:通过tcp方式查询。
具体说明可以查看man手册。
格式:nslookup -nameserver/ip。例如:
[root@controller ~]# nslookup 192.168.31.148
(2)dig命令主要用来从dns域名服务器查询主机地址信息,是安装bind自带的工具。
一般格式:
dig [@global-server] [domain] [q-type] [q-class] {q-opt} {d-opt}
参数说明:
● @global-server:默认是以/etc/resolv.conf作为DNS查询的主机,这里可以填入其它DNS主机IP。
● domain:要查询的域名。
● q-type:查询记录的类型,例如a、any、mx、ns、soa、hinfo、axfr、txt等,默认查询a。
● q-class:查询的类别,相当于nslookup中的set class。默认值为in(Internet)。
● q-opt:查询选项,可以有好几种方式,比如:-f file为通过批处理文件解析多个地址;-p port指定另一个端口(缺省的DNS端口为53),等等。
● d-opt:dig特有的选项。使用时要在参数前加上一个“+”号。
● d-opt常用选项:
○ +vc:使用TCP协议查询。
○ +time=###:设置超时时间。
○ +trace:从根域开始跟踪查询结果。
dig nameserver/IP 例如:
[root@controller ~]# dig dns.testmail.com
dig 命令默认的输出信息比较丰富,大概可以分为5个部分。
① 显示dig命令的版本和输入的参数。
② 显示服务返回的一些技术详情,比较重要的是status。如果status的值为NOERROR则说明本次查询成功结束。
③ 中的QUESTION SECTION显示我们要查询的域名。
④ 中的ANSWER SECTION是查询到的结果。
⑤ 则是本次查询的一些统计信息,比如用了多长时间,查询了哪个DNS服务器,在什么时间进行的查询等等。
熟悉常见DNS记录的类型如下图所示:
(3)host查询
hosts文件包含了IP地址和主机名之间的映射,还包括主机名的别名。在没有域名服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址。通常可以将常用的域名和IP地址映射加入到hosts文件中,实现快速访问。
语法:host [ 选项] name [server]
选项列表解释:
● -a:查询所有的信息。
● -c:设置查询类型
● -C:查询完整的SOA记录
● -d | -v:显示详细过程。
● -l:列表模式
● -t:选择查询类型。如CNAME、NS、SOA、SIG、KEY、AXFR。
● -w:永久等待。
● -W:设置等待超时。
例如:
[root@controller ~]# host 192.168.31.148
部署安装 postfix 并配置
1.centos7 版本默认安装 postfix,检测是否安装 postfix: rpm -q postfix 如果没有安装:yum -y install postfix
2.检查 postfix 是否支持 cyrus dovecot 功能: # postconf -a
3.编辑 postfix 的配置文件,查找并修改对应配置项
#vi /etc/postfix/main.cf
myhostname = mail.testmail.com //本机主机名
mydomain = testmail.com //服务器域名
myorigin = $mydomain //初始域名
mail_owner = postfix inet_interfaces = all //监听接口 inet_protocols = all //监听网络版本
mydestination =
m
y
h
o
s
t
n
a
m
e
,
l
o
c
a
l
h
o
s
t
.
myhostname, localhost.
myhostname,localhost.mydomain, localhost //目标域
unknown_local_recipient_reject_code = 550 mynetworks = 192.168.31.0/24, 127.0.0.0/8 //修改可接收邮件的主机名和域名,可被中继 的主机 192.168.100.0 为我自己定义的网段
home_mailbox = Maildir/ //邮件目录,在用户家目录下 mynetworks_style = host //指定信任网段类型
relay_domains = $mydestination //指定允许中转邮件的域名
4.检查配置文件是否有语法错误 # postfix check //没有输出错误,证明配置文件没有问题
其他 postfix 运维命令: newaliases (重建别名数据库)
postalias /etc/postfix/aliases (创建或查询别名数据库)
postcat (显示队列文件内容)
postconf (修改 main.cf 配置文档 )
postqueue (査看 postfix 队列)
postsuper (管理员管理 postfix 队列)
postmap (创建查询表的 DB 数据库或查询查询表内容)
5.重启服务: systemctl restart postfix
6.检测服务进程以及端口是否正常:
#netstat -lntp | grep 25
#ps -ef | grep postfix | grep -v grep